@@ -46,99 +46,97 @@ export async function main(argv: string[], context?: {logger: SoloLogger}) {
46
46
47
47
const logger = container . resolve < SoloLogger > ( InjectTokens . SoloLogger ) ;
48
48
49
- try {
50
- if ( context ) {
51
- // save the logger so that solo.ts can use it to properly flush the logs and exit
52
- context . logger = logger ;
53
- }
54
- process . on ( 'unhandledRejection' , ( reason , promise ) => {
55
- logger . logAndExitError (
56
- new SoloError ( `Unhandled Rejection at: ${ JSON . stringify ( promise ) } , reason: ${ JSON . stringify ( reason ) } ` ) ,
57
- ) ;
58
- } ) ;
59
- process . on ( 'uncaughtException' , ( err , origin ) => {
60
- logger . logAndExitError ( new SoloError ( `Uncaught Exception: ${ err } , origin: ${ origin } ` ) ) ;
61
- } ) ;
49
+ if ( context ) {
50
+ // save the logger so that solo.ts can use it to properly flush the logs and exit
51
+ context . logger = logger ;
52
+ }
53
+ process . on ( 'unhandledRejection' , ( reason , promise ) => {
54
+ logger . showUserError (
55
+ new SoloError ( `Unhandled Rejection at: ${ JSON . stringify ( promise ) } , reason: ${ JSON . stringify ( reason ) } ` ) ,
56
+ ) ;
57
+ } ) ;
58
+ process . on ( 'uncaughtException' , ( err , origin ) => {
59
+ logger . showUserError ( new SoloError ( `Uncaught Exception: ${ err } , origin: ${ origin } ` ) ) ;
60
+ } ) ;
62
61
63
- logger . debug ( 'Initializing Solo CLI' ) ;
64
- constants . LISTR_DEFAULT_RENDERER_OPTION . logger = new ListrLogger ( { processOutput : new CustomProcessOutput ( logger ) } ) ;
65
- if ( argv . length >= 3 && [ '-version' , '--version' , '-v' , '--v' ] . includes ( argv [ 2 ] ) ) {
66
- logger . showUser (
67
- chalk . cyan ( '\n******************************* Solo *********************************************' ) ,
68
- ) ;
69
- logger . showUser ( chalk . cyan ( 'Version\t\t\t:' ) , chalk . yellow ( helpers . getSoloVersion ( ) ) ) ;
70
- logger . showUser ( chalk . cyan ( '**********************************************************************************' ) ) ;
71
- logger . logAndExitSuccess ( 'displayed version information, exiting' ) ;
72
- }
62
+ logger . debug ( 'Initializing Solo CLI' ) ;
63
+ constants . LISTR_DEFAULT_RENDERER_OPTION . logger = new ListrLogger ( { processOutput : new CustomProcessOutput ( logger ) } ) ;
64
+ if ( argv . length >= 3 && [ '-version' , '--version' , '-v' , '--v' ] . includes ( argv [ 2 ] ) ) {
65
+ logger . showUser ( chalk . cyan ( '\n******************************* Solo *********************************************' ) ) ;
66
+ logger . showUser ( chalk . cyan ( 'Version\t\t\t:' ) , chalk . yellow ( helpers . getSoloVersion ( ) ) ) ;
67
+ logger . showUser ( chalk . cyan ( '**********************************************************************************' ) ) ;
68
+ logger . info ( 'displayed version information, exiting' ) ;
69
+ }
73
70
74
- // prepare dependency manger registry
75
- const downloader : PackageDownloader = container . resolve ( InjectTokens . PackageDownloader ) ;
76
- const depManager : DependencyManager = container . resolve ( InjectTokens . DependencyManager ) ;
77
- const helm : Helm = container . resolve ( InjectTokens . Helm ) ;
78
- const chartManager : ChartManager = container . resolve ( InjectTokens . ChartManager ) ;
79
- const configManager : ConfigManager = container . resolve ( InjectTokens . ConfigManager ) ;
80
- const k8Factory : K8Factory = container . resolve ( InjectTokens . K8Factory ) ;
81
- const accountManager : AccountManager = container . resolve ( InjectTokens . AccountManager ) ;
82
- const platformInstaller : PlatformInstaller = container . resolve ( InjectTokens . PlatformInstaller ) ;
83
- const keyManager : KeyManager = container . resolve ( InjectTokens . KeyManager ) ;
84
- const profileManager : ProfileManager = container . resolve ( InjectTokens . ProfileManager ) ;
85
- const leaseManager : LeaseManager = container . resolve ( InjectTokens . LeaseManager ) ;
86
- const certificateManager : CertificateManager = container . resolve ( InjectTokens . CertificateManager ) ;
87
- const localConfig : LocalConfig = container . resolve ( InjectTokens . LocalConfig ) ;
88
- const remoteConfigManager : RemoteConfigManager = container . resolve ( InjectTokens . RemoteConfigManager ) ;
71
+ // prepare dependency manger registry
72
+ const downloader : PackageDownloader = container . resolve ( InjectTokens . PackageDownloader ) ;
73
+ const depManager : DependencyManager = container . resolve ( InjectTokens . DependencyManager ) ;
74
+ const helm : Helm = container . resolve ( InjectTokens . Helm ) ;
75
+ const chartManager : ChartManager = container . resolve ( InjectTokens . ChartManager ) ;
76
+ const configManager : ConfigManager = container . resolve ( InjectTokens . ConfigManager ) ;
77
+ const k8Factory : K8Factory = container . resolve ( InjectTokens . K8Factory ) ;
78
+ const accountManager : AccountManager = container . resolve ( InjectTokens . AccountManager ) ;
79
+ const platformInstaller : PlatformInstaller = container . resolve ( InjectTokens . PlatformInstaller ) ;
80
+ const keyManager : KeyManager = container . resolve ( InjectTokens . KeyManager ) ;
81
+ const profileManager : ProfileManager = container . resolve ( InjectTokens . ProfileManager ) ;
82
+ const leaseManager : LeaseManager = container . resolve ( InjectTokens . LeaseManager ) ;
83
+ const certificateManager : CertificateManager = container . resolve ( InjectTokens . CertificateManager ) ;
84
+ const localConfig : LocalConfig = container . resolve ( InjectTokens . LocalConfig ) ;
85
+ const remoteConfigManager : RemoteConfigManager = container . resolve ( InjectTokens . RemoteConfigManager ) ;
89
86
90
- const opts : Opts = {
91
- logger,
92
- helm,
93
- k8Factory,
94
- downloader,
95
- platformInstaller,
96
- chartManager,
97
- configManager,
98
- depManager,
99
- keyManager,
100
- accountManager,
101
- profileManager,
102
- leaseManager,
103
- remoteConfigManager,
104
- certificateManager,
105
- localConfig,
106
- } ;
87
+ const opts : Opts = {
88
+ logger,
89
+ helm,
90
+ k8Factory,
91
+ downloader,
92
+ platformInstaller,
93
+ chartManager,
94
+ configManager,
95
+ depManager,
96
+ keyManager,
97
+ accountManager,
98
+ profileManager,
99
+ leaseManager,
100
+ remoteConfigManager,
101
+ certificateManager,
102
+ localConfig,
103
+ } ;
107
104
108
- logger . debug ( 'Initializing middlewares' ) ;
109
- const middlewares = new Middlewares ( opts ) ;
105
+ logger . debug ( 'Initializing middlewares' ) ;
106
+ const middlewares = new Middlewares ( opts ) ;
110
107
111
- logger . debug ( 'Initializing commands' ) ;
112
- const rootCmd = yargs ( hideBin ( argv ) )
113
- . scriptName ( '' )
114
- . usage ( 'Usage:\n solo <command> [options]' )
115
- . alias ( 'h' , 'help' )
116
- . alias ( 'v' , 'version' )
117
- // @ts -expect-error - TS2769: No overload matches this call.
118
- . command ( commands . Initialize ( opts ) )
119
- . strict ( )
120
- . demand ( 1 , 'Select a command' )
108
+ logger . debug ( 'Initializing commands' ) ;
109
+ const rootCmd = yargs ( hideBin ( argv ) )
110
+ . scriptName ( '' )
111
+ . usage ( 'Usage:\n solo <command> [options]' )
112
+ . alias ( 'h' , 'help' )
113
+ . alias ( 'v' , 'version' )
114
+ // @ts -expect-error - TS2769: No overload matches this call.
115
+ . command ( commands . Initialize ( opts ) )
116
+ . strict ( )
117
+ . demand ( 1 , 'Select a command' )
121
118
122
- . middleware (
123
- // @ts -expect-error - TS2322: To assign middlewares
124
- [ middlewares . processArgumentsAndDisplayHeader ( ) , middlewares . loadRemoteConfig ( ) ] ,
125
- false , // applyBeforeValidate is false as otherwise middleware is called twice
126
- ) ;
119
+ . middleware (
120
+ // @ts -expect-error - TS2322: To assign middlewares
121
+ [ middlewares . processArgumentsAndDisplayHeader ( ) , middlewares . loadRemoteConfig ( ) ] ,
122
+ false , // applyBeforeValidate is false as otherwise middleware is called twice
123
+ ) ;
127
124
128
- rootCmd . fail ( ( msg , err ) => {
129
- logger . logAndExitError (
130
- new SoloError ( `Error running Solo CLI, failure occurred: ${ msg ? msg : '' } ${ err . message } ` , err ) ,
131
- ) ;
132
- } ) ;
125
+ rootCmd . fail ( ( msg , error ) => {
126
+ if ( msg ) {
127
+ if ( msg . includes ( 'Unknown argument' ) ) {
128
+ logger . showUser ( msg ) ;
129
+ rootCmd . showHelp ( ) ;
130
+ } else {
131
+ logger . showUserError ( new SoloError ( `Error running Solo CLI, failure occurred: ${ msg ? msg : '' } ` ) ) ;
132
+ }
133
+ rootCmd . exit ( 0 , error ) ;
134
+ }
135
+ } ) ;
133
136
134
- logger . debug ( 'Setting up flags' ) ;
135
- // set root level flags
136
- flags . setCommandFlags ( rootCmd , ...[ flags . devMode , flags . forcePortForward ] ) ;
137
- logger . debug ( 'Parsing root command (executing the commands)' ) ;
138
- return rootCmd . parse ( ) ;
139
- } catch ( e ) {
140
- logger . logAndExitError ( new SoloError ( `Error running Solo CLI: ${ e . message } ` , e ) ) ;
141
- // technically unreachable, but helps TS understand that we're exiting
142
- throw e ;
143
- }
137
+ logger . debug ( 'Setting up flags' ) ;
138
+ // set root level flags
139
+ flags . setCommandFlags ( rootCmd , ...[ flags . devMode , flags . forcePortForward ] ) ;
140
+ logger . debug ( 'Parsing root command (executing the commands)' ) ;
141
+ return rootCmd . parse ( ) ;
144
142
}
0 commit comments