@@ -26,50 +26,90 @@ export default class Export extends Command {
2626 * Entrypoint of the `twe export` command
2727 */
2828 async run ( ) {
29- const utils = new ExportUtils ( )
30- const validator = new ExportValidator ( )
29+ const tools = {
30+ utils : new ExportUtils ( ) ,
31+ validator : new ExportValidator ( )
32+ }
33+
34+ // Step 1 - check requirements
35+ this . checkRequirements ( tools )
36+
37+ // Step 2 - Prepare parsing
38+ let {
39+ flags, availableFlags, missingFlags, availableFlagsValues
40+ } = this . prepareCommandParsing ( tools )
41+
42+ // Step 3 - check flags values (or exit)
43+ if ( missingFlags . length !== 0 ) {
44+ const missingFlagsData = await this . askMissingFlags (
45+ flags . interactive , missingFlags , availableFlagsValues
46+ )
47+ flags = { ...flags , ...missingFlagsData }
48+ }
49+
50+ // Step 3 - Verify params
51+ const { interactive, ...params } = flags
52+ this . checkParams ( tools , params , availableFlagsValues )
53+
54+ // (FIXME) Step 4 - Extract data
55+ // (FIXME) Step 5 - Filter data
56+ // (FIXME) Step 6 - Aggregate data
57+ // (FIXME) Step 7 - Save data
58+ }
3159
60+ /**
61+ * Check system requirements
62+ */
63+ private checkRequirements ( tools : any ) {
3264 // Step 1 - check requirements
33- const invalidRequirements = validator . checkRequirements ( )
65+ const invalidRequirements = tools . validator . checkRequirements ( )
3466 if ( invalidRequirements . length !== 0 ) {
3567 this . error (
36- utils . errorMessage ( 'missing requirement' , invalidRequirements ) ,
68+ tools . utils . errorMessage ( 'missing requirement' , invalidRequirements ) ,
3769 { exit : 2 }
3870 )
3971 }
72+ return true
73+ }
4074
75+ /**
76+ * Prepare some stuff
77+ */
78+ private prepareCommandParsing ( tools : any ) {
4179 // Prepare information
42- let { flags } = this . parse ( Export )
43- const availableFlags = utils . availableFlags ( FLAGS )
80+ const { flags } = this . parse ( Export )
81+ const availableFlags = tools . utils . availableFlags ( FLAGS )
4482 const missingFlags = availableFlags . filter ( el => ! ( el in flags ) )
4583 const availableFlagsValues = { formats : FORMATS , projects : PROJECTS }
84+ return { flags, availableFlags, missingFlags, availableFlagsValues }
85+ }
4686
47- // Step 2 - check flags values (or exit)
48- if ( missingFlags . length !== 0 ) {
49- if ( ! flags . interactive ) {
50- this . error ( 'Missing parameters' , { exit : 3 } )
51- }
52- const missingFlagsData = await new ExportUi ( ) . askMissingFlags (
53- missingFlags , availableFlagsValues
54- )
55- flags = { ...flags , ...missingFlagsData }
87+ /**
88+ * Ask for missing flags when interactive mode
89+ */
90+ private async askMissingFlags (
91+ interactive : boolean , missingFlags : Array < string > , availableFlagsValues : any
92+ ) {
93+ if ( ! interactive ) {
94+ this . error ( 'Missing parameters' , { exit : 3 } )
5695 }
96+ const missingFlagsData = await new ExportUi ( ) . askMissingFlags (
97+ missingFlags , availableFlagsValues
98+ )
99+ return missingFlagsData
100+ }
57101
58- // Step 2.1 - remove 'interactive' flag
59- const { interactive , ... params } = flags
60-
61- // Step 3 - Verify params
62- const invalidParams = validator . checkParams ( params , availableFlagsValues )
102+ /**
103+ * Check validity of every params
104+ */
105+ private checkParams ( tools : any , params : any , availableFlagsValues : any ) {
106+ const invalidParams = tools . validator . checkParams ( params , availableFlagsValues )
63107 if ( invalidParams . length !== 0 ) {
64108 this . error (
65- utils . errorMessage ( 'invalid param' , invalidParams ) ,
109+ tools . utils . errorMessage ( 'invalid param' , invalidParams ) ,
66110 { exit : 2 }
67111 )
68112 }
69-
70- // (FIXME) Step 4 - Extract data
71- // (FIXME) Step 5 - Filter data
72- // (FIXME) Step 6 - Aggregate data
73- // (FIXME) Step 7 - Save data
113+ return true
74114 }
75115}
0 commit comments