@@ -67,7 +67,7 @@ export default abstract class ThemeCommand extends Command {
6767
6868 async command (
6969 _flags : FlagValues ,
70- _session : AdminSession ,
70+ _session ? : AdminSession ,
7171 _multiEnvironment = false ,
7272 _context ?: { stdout ?: Writable ; stderr ?: Writable } ,
7373 ) : Promise < void > { }
@@ -84,18 +84,17 @@ export default abstract class ThemeCommand extends Command {
8484 }
8585 const requiredFlags = klass . multiEnvironmentsFlags
8686 const { flags} = await this . parse ( klass )
87-
87+ const commandRequiresAuth = 'password' in klass . flags
8888 const environments = ( Array . isArray ( flags . environment ) ? flags . environment : [ flags . environment ] ) . filter ( Boolean )
8989
9090 // Single environment or no environment
9191 if ( environments . length <= 1 ) {
92- const session = await this . createSession ( flags )
92+ const session = commandRequiresAuth ? await this . createSession ( flags ) : undefined
9393 const commandName = this . constructor . name . toLowerCase ( )
9494
9595 recordEvent ( `theme-command:${ commandName } :single-env:authenticated` )
9696
9797 await this . command ( flags , session )
98- await this . logAnalyticsData ( session )
9998 return
10099 }
101100
@@ -112,7 +111,7 @@ export default abstract class ThemeCommand extends Command {
112111 }
113112
114113 const environmentsMap = await this . loadEnvironments ( environments , flags , flagsWithoutDefaults )
115- const validationResults = await this . validateEnvironments ( environmentsMap , requiredFlags )
114+ const validationResults = await this . validateEnvironments ( environmentsMap , requiredFlags , commandRequiresAuth )
116115
117116 const commandAllowsForceFlag = 'force' in klass . flags
118117
@@ -160,13 +159,15 @@ export default abstract class ThemeCommand extends Command {
160159 * Split environments into valid and invalid based on flags
161160 * @param environmentMap - The map of environments to validate
162161 * @param requiredFlags - The required flags to check for
162+ * @param requiresAuth - Whether the command requires authentication
163163 * @returns An object containing valid and invalid environment arrays
164164 */
165165 private async validateEnvironments (
166166 environmentMap : Map < EnvironmentName , FlagValues > ,
167167 requiredFlags : Exclude < RequiredFlags , null > ,
168+ requiresAuth : boolean ,
168169 ) {
169- const valid : { environment : EnvironmentName ; flags : FlagValues } [ ] = [ ]
170+ const valid : { environment : EnvironmentName ; flags : FlagValues ; requiresAuth : boolean } [ ] = [ ]
170171 const invalid : { environment : EnvironmentName ; reason : string } [ ] = [ ]
171172
172173 for ( const [ environmentName , environmentFlags ] of environmentMap ) {
@@ -176,8 +177,7 @@ export default abstract class ThemeCommand extends Command {
176177 invalid . push ( { environment : environmentName , reason : `Missing flags: ${ missingFlagsText } ` } )
177178 continue
178179 }
179-
180- valid . push ( { environment : environmentName , flags : environmentFlags } )
180+ valid . push ( { environment : environmentName , flags : environmentFlags , requiresAuth} )
181181 }
182182
183183 return { valid, invalid}
@@ -194,7 +194,7 @@ export default abstract class ThemeCommand extends Command {
194194 commandName : string ,
195195 requiredFlags : Exclude < RequiredFlags , null > ,
196196 validationResults : {
197- valid : { environment : string ; flags : FlagValues } [ ]
197+ valid : { environment : string ; flags : FlagValues ; requiresAuth : boolean } [ ]
198198 invalid : { environment : string ; reason : string } [ ]
199199 } ,
200200 ) {
@@ -234,7 +234,9 @@ export default abstract class ThemeCommand extends Command {
234234 * Run the command in each valid environment concurrently
235235 * @param validEnvironments - The valid environments to run the command in
236236 */
237- private async runConcurrent ( validEnvironments : { environment : EnvironmentName ; flags : FlagValues } [ ] ) {
237+ private async runConcurrent (
238+ validEnvironments : { environment : EnvironmentName ; flags : FlagValues ; requiresAuth : boolean } [ ] ,
239+ ) {
238240 const abortController = new AbortController ( )
239241
240242 const stores = validEnvironments . map ( ( env ) => env . flags . store as string )
@@ -245,13 +247,13 @@ export default abstract class ThemeCommand extends Command {
245247 for ( const runGroup of runGroups ) {
246248 // eslint-disable-next-line no-await-in-loop
247249 await renderConcurrent ( {
248- processes : runGroup . map ( ( { environment, flags} ) => ( {
250+ processes : runGroup . map ( ( { environment, flags, requiresAuth } ) => ( {
249251 prefix : environment ,
250252 action : async ( stdout : Writable , stderr : Writable , _signal ) => {
251253 try {
252254 const store = flags . store as string
253255 await useThemeStoreContext ( store , async ( ) => {
254- const session = await this . createSession ( flags )
256+ const session = requiresAuth ? await this . createSession ( flags ) : undefined
255257
256258 const commandName = this . constructor . name . toLowerCase ( )
257259 recordEvent ( `theme-command:${ commandName } :multi-env:authenticated` )
@@ -280,8 +282,10 @@ export default abstract class ThemeCommand extends Command {
280282 * @param environments - The environments to group
281283 * @returns The environment groups
282284 */
283- private createSequentialGroups ( environments : { environment : EnvironmentName ; flags : FlagValues } [ ] ) {
284- const groups : { environment : EnvironmentName ; flags : FlagValues } [ ] [ ] = [ ]
285+ private createSequentialGroups (
286+ environments : { environment : EnvironmentName ; flags : FlagValues ; requiresAuth : boolean } [ ] ,
287+ ) {
288+ const groups : { environment : EnvironmentName ; flags : FlagValues ; requiresAuth : boolean } [ ] [ ] = [ ]
285289
286290 environments . forEach ( ( environment ) => {
287291 const groupWithoutStore = groups . find ( ( arr ) => ! arr . some ( ( env ) => env . flags . store === environment . flags . store ) )
0 commit comments