@@ -22,6 +22,8 @@ export const command = 'diff'
2222export const aliases = 'df'
2323export const describe = 'Diff locale messages between local and localization service'
2424
25+ class DiffError extends Error { }
26+
2527export const builder = ( args : Argv ) : Argv < DiffOptions > => {
2628 return args
2729 . option ( 'provider' , {
@@ -60,6 +62,19 @@ export const builder = (args: Argv): Argv<DiffOptions> => {
6062 alias : 'n' ,
6163 describe : 'option for the locale messages structure, you can specify the option, if you hope to normalize for the provider.'
6264 } )
65+ . fail ( ( msg , err ) => {
66+ if ( msg ) {
67+ console . error ( msg )
68+ process . exit ( 1 )
69+ } else {
70+ if ( err instanceof DiffError ) {
71+ console . warn ( err . message )
72+ process . exit ( 1 )
73+ } else {
74+ if ( err ) throw err
75+ }
76+ }
77+ } )
6378}
6479
6580export const handler = async ( args : Arguments < DiffOptions > ) : Promise < unknown > => {
@@ -90,15 +105,15 @@ export const handler = async (args: Arguments<DiffOptions>): Promise<unknown> =>
90105 return
91106 }
92107
93- try {
94- const provider = ProviderFactory ( conf )
95- const locales = Object . keys ( localeMessages ) as Locale [ ]
96- const serviceMessages = await provider . pull ( { locales , dryRun : false , normalize , format } )
97- console . log ( diffString ( localeMessages , serviceMessages ) )
98- } catch ( e ) {
99- // TODO: should refactor console message
100- console . error ( 'diff fail' , e )
101- }
108+ const provider = ProviderFactory ( conf )
109+ const locales = Object . keys ( localeMessages ) as Locale [ ]
110+ const serviceMessages = await provider . pull ( { locales , dryRun : false , normalize , format } )
111+ const ret = diffString ( localeMessages , serviceMessages )
112+ console . log ( ret )
113+
114+ return ! ret
115+ ? Promise . reject ( new DiffError ( 'There are differences!' ) )
116+ : Promise . resolve ( 'No difference!' )
102117}
103118
104119export default {
0 commit comments