@@ -15,6 +15,24 @@ export type CoreConfigMiddlewareOptions = GeneralCliOptions &
1515 CoreConfigCliOptions &
1616 FilterOptions ;
1717
18+ function buildPersistConfig (
19+ cliPersist : CoreConfigCliOptions [ 'persist' ] ,
20+ rcPersist : CoreConfig [ 'persist' ] ,
21+ ) : Required < CoreConfig [ 'persist' ] > {
22+ return {
23+ outputDir :
24+ cliPersist ?. outputDir ??
25+ rcPersist ?. outputDir ??
26+ DEFAULT_PERSIST_OUTPUT_DIR ,
27+ filename :
28+ cliPersist ?. filename ?? rcPersist ?. filename ?? DEFAULT_PERSIST_FILENAME ,
29+ format : normalizeFormats (
30+ cliPersist ?. format ?? rcPersist ?. format ?? DEFAULT_PERSIST_FORMAT ,
31+ ) ,
32+ skipReports : cliPersist ?. skipReports ?? rcPersist ?. skipReports ?? false ,
33+ } ;
34+ }
35+
1836export async function coreConfigMiddleware <
1937 T extends CoreConfigMiddlewareOptions ,
2038> ( processArgs : T ) : Promise < GeneralCliOptions & CoreConfig & FilterOptions > {
@@ -43,22 +61,23 @@ export async function coreConfigMiddleware<
4361 } ) ;
4462 return {
4563 ...( config != null && { config } ) ,
46- persist : {
47- outputDir :
48- cliPersist ?. outputDir ??
49- rcPersist ?. outputDir ??
50- DEFAULT_PERSIST_OUTPUT_DIR ,
51- filename :
52- cliPersist ?. filename ?? rcPersist ?. filename ?? DEFAULT_PERSIST_FILENAME ,
53- format : normalizeFormats (
54- cliPersist ?. format ?? rcPersist ?. format ?? DEFAULT_PERSIST_FORMAT ,
55- ) ,
56- } ,
64+ persist : buildPersistConfig ( cliPersist , rcPersist ) ,
5765 ...( upload != null && { upload } ) ,
5866 ...remainingRcConfig ,
5967 ...remainingCliOptions ,
6068 } ;
6169}
6270
71+ export const normalizeBooleanWithNegation = < T extends string > (
72+ propertyName : T ,
73+ cliOptions ?: Record < T , unknown > ,
74+ rcOptions ?: Record < T , unknown > ,
75+ ) : boolean =>
76+ propertyName in ( cliOptions ?? { } )
77+ ? ( cliOptions ?. [ propertyName ] as boolean )
78+ : `no-${ propertyName } ` in ( cliOptions ?? { } )
79+ ? false
80+ : ( ( rcOptions ?. [ propertyName ] as boolean ) ?? true ) ;
81+
6382export const normalizeFormats = ( formats ?: string [ ] ) : Format [ ] =>
6483 ( formats ?? [ ] ) . flatMap ( format => format . split ( ',' ) as Format [ ] ) ;
0 commit comments