1- import { getEnv , rebuildTypes , recursiveUpdate } from "@inrixia/helpers/object" ;
1+ import { getEnv , recursiveUpdate , rebuildTypes } from "@inrixia/helpers/object" ;
22import { defaultArgs , defaultSettings } from "../defaults.js" ;
33import { Histogram } from "prom-client" ;
44import db from "@inrixia/db" ;
@@ -22,9 +22,33 @@ import type { PartialArgs, Settings } from "../types.js";
2222
2323import { FileCookieStore } from "tough-cookie-file-store" ;
2424import { CookieJar } from "tough-cookie" ;
25- export const cookieJar = new CookieJar ( new FileCookieStore ( "./db/cookies.json" ) ) ;
2625
2726import { Floatplane } from "floatplane" ;
27+
28+ const argv = ARGV ( process . argv . slice ( 2 ) ) < PartialArgs > ( { } ) ;
29+ const env = getEnv ( ) ;
30+
31+ export const args = { ...defaultArgs } ;
32+ recursiveUpdate ( args , env , { setUndefined : false , setDefined : true } ) ;
33+ recursiveUpdate ( args , argv , { setUndefined : false , setDefined : true } ) ;
34+ rebuildTypes ( args , defaultArgs ) ;
35+
36+ const settingsPath = args . settingsPath || `${ args . dbPath } /settings.json` ;
37+
38+ export const settings = { ...defaultSettings } ;
39+ const newSettings = db < Settings > ( settingsPath , { template : defaultSettings , pretty : true , forceCreate : true , updateOnExternalChanges : true } ) ;
40+ recursiveUpdate ( settings , newSettings , { setUndefined : true , setDefined : true } ) ;
41+ recursiveUpdate ( settings , argv , { setUndefined : false , setDefined : true } ) ;
42+ rebuildTypes ( settings , defaultSettings ) ;
43+
44+ if ( env . __FPDSettings !== undefined ) {
45+ if ( typeof env . __FPDSettings !== "string" ) throw new Error ( "The __FPDSettings environment variable cannot be parsed!" ) ;
46+ recursiveUpdate ( settings , parse ( env . __FPDSettings . replaceAll ( '\\"' , '"' ) ) , { setUndefined : false , setDefined : true } ) ;
47+ }
48+
49+ recursiveUpdate ( settings , env , { setUndefined : false , setDefined : true } ) ;
50+
51+ export const cookieJar = new CookieJar ( new FileCookieStore ( `${ args . dbPath } /cookies.json` ) ) ;
2852export const fApi = new Floatplane (
2953 cookieJar ,
3054 `Floatplane-Downloader/${ DownloaderVersion } (Inrix, +https://github.com/Inrixia/Floatplane-Downloader), CFNetwork` ,
@@ -58,25 +82,6 @@ fApi.extend({
5882 } ,
5983} ) ;
6084
61- export const settings = db < Settings > ( "./db/settings.json" , { template : defaultSettings , pretty : true , forceCreate : true , updateOnExternalChanges : true } ) ;
62- recursiveUpdate ( settings , defaultSettings ) ;
63-
64- const argv = ARGV ( process . argv . slice ( 2 ) ) < PartialArgs > ( { } ) ;
65- rebuildTypes ( argv , { ...defaultSettings , ...defaultArgs } ) ;
66- recursiveUpdate ( settings , argv , { setUndefined : false , setDefined : true } ) ;
67-
68- const env = getEnv ( ) ;
69- rebuildTypes ( env , { ...defaultSettings , ...defaultArgs } ) ;
70-
71- if ( env . __FPDSettings !== undefined ) {
72- if ( typeof env . __FPDSettings !== "string" ) throw new Error ( "The __FPDSettings environment variable cannot be parsed!" ) ;
73- recursiveUpdate ( settings , parse ( env . __FPDSettings . replaceAll ( '\\"' , '"' ) ) , { setUndefined : false , setDefined : true } ) ;
74- }
75-
76- recursiveUpdate ( settings , env , { setUndefined : false , setDefined : true } ) ;
77-
78- export const args = { ...argv , ...env } ;
79-
8085// eslint-disable-next-line no-control-regex
8186const headlessStdoutRegex = / [ \u001b \u009b ] [ [ ( ) # ; ? ] * (?: [ 0 - 9 ] { 1 , 4 } (?: ; [ 0 - 9 ] { 0 , 4 } ) * ) ? [ 0 - 9 A - O R Z c f - n q r y = > < ] / g;
8287// Override stdout if headless to not include formatting tags
0 commit comments