Skip to content

Commit b43fb57

Browse files
author
Schmidely Stéphane
committed
Split main function into small ones
1 parent 3cff2df commit b43fb57

1 file changed

Lines changed: 66 additions & 26 deletions

File tree

src/commands/export.ts

Lines changed: 66 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)