@learnpack/learnpack 2.1.39 → 2.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +370 -35
- package/bin/run +17 -17
- package/bin/run.cmd +3 -3
- package/lib/commands/audit.d.ts +6 -6
- package/lib/commands/audit.js +342 -342
- package/lib/commands/clean.d.ts +8 -8
- package/lib/commands/clean.js +25 -25
- package/lib/commands/download.d.ts +13 -13
- package/lib/commands/download.js +55 -55
- package/lib/commands/init.d.ts +9 -9
- package/lib/commands/init.js +123 -123
- package/lib/commands/login.d.ts +14 -14
- package/lib/commands/login.js +37 -37
- package/lib/commands/logout.d.ts +14 -14
- package/lib/commands/logout.js +37 -37
- package/lib/commands/publish.d.ts +14 -14
- package/lib/commands/publish.js +82 -82
- package/lib/commands/start.d.ts +7 -7
- package/lib/commands/start.js +239 -208
- package/lib/commands/test.d.ts +6 -6
- package/lib/commands/test.js +62 -62
- package/lib/index.d.ts +1 -1
- package/lib/index.js +4 -4
- package/lib/managers/config/allowed_files.d.ts +5 -5
- package/lib/managers/config/allowed_files.js +30 -30
- package/lib/managers/config/defaults.d.ts +41 -41
- package/lib/managers/config/defaults.js +44 -44
- package/lib/managers/config/exercise.d.ts +36 -36
- package/lib/managers/config/exercise.js +236 -236
- package/lib/managers/config/index.d.ts +3 -3
- package/lib/managers/config/index.js +337 -337
- package/lib/managers/file.d.ts +14 -14
- package/lib/managers/file.js +153 -153
- package/lib/managers/gitpod.d.ts +3 -3
- package/lib/managers/gitpod.js +67 -67
- package/lib/managers/server/index.d.ts +6 -6
- package/lib/managers/server/index.js +58 -58
- package/lib/managers/server/routes.d.ts +4 -4
- package/lib/managers/server/routes.js +219 -219
- package/lib/managers/session.d.ts +3 -3
- package/lib/managers/session.js +125 -125
- package/lib/managers/socket.d.ts +3 -3
- package/lib/managers/socket.js +176 -176
- package/lib/managers/telemetry.d.ts +74 -74
- package/lib/managers/telemetry.js +206 -206
- package/lib/managers/test.js +84 -84
- package/lib/models/action.d.ts +2 -2
- package/lib/models/action.js +2 -2
- package/lib/models/audit.d.ts +15 -15
- package/lib/models/audit.js +2 -2
- package/lib/models/config-manager.d.ts +21 -21
- package/lib/models/config-manager.js +2 -2
- package/lib/models/config.d.ts +68 -67
- package/lib/models/config.js +2 -2
- package/lib/models/counter.d.ts +11 -11
- package/lib/models/counter.js +2 -2
- package/lib/models/errors.d.ts +15 -15
- package/lib/models/errors.js +2 -2
- package/lib/models/exercise-obj.d.ts +30 -30
- package/lib/models/exercise-obj.js +2 -2
- package/lib/models/file.d.ts +5 -5
- package/lib/models/file.js +2 -2
- package/lib/models/findings.d.ts +17 -17
- package/lib/models/findings.js +2 -2
- package/lib/models/flags.d.ts +10 -10
- package/lib/models/flags.js +2 -2
- package/lib/models/front-matter.d.ts +11 -11
- package/lib/models/front-matter.js +2 -2
- package/lib/models/gitpod-data.d.ts +16 -16
- package/lib/models/gitpod-data.js +2 -2
- package/lib/models/language.d.ts +4 -4
- package/lib/models/language.js +2 -2
- package/lib/models/package.d.ts +7 -7
- package/lib/models/package.js +2 -2
- package/lib/models/plugin-config.d.ts +16 -16
- package/lib/models/plugin-config.js +2 -2
- package/lib/models/session.d.ts +31 -31
- package/lib/models/session.js +2 -2
- package/lib/models/socket.d.ts +36 -32
- package/lib/models/socket.js +2 -2
- package/lib/models/status.d.ts +1 -1
- package/lib/models/status.js +2 -2
- package/lib/models/success-types.d.ts +1 -1
- package/lib/models/success-types.js +2 -2
- package/lib/plugin/command/compile.d.ts +6 -6
- package/lib/plugin/command/compile.js +18 -18
- package/lib/plugin/command/test.d.ts +6 -6
- package/lib/plugin/command/test.js +25 -25
- package/lib/plugin/index.d.ts +27 -27
- package/lib/plugin/index.js +7 -7
- package/lib/plugin/plugin.d.ts +8 -8
- package/lib/plugin/plugin.js +68 -68
- package/lib/plugin/utils.d.ts +16 -16
- package/lib/plugin/utils.js +58 -58
- package/lib/ui/download.d.ts +5 -5
- package/lib/ui/download.js +61 -61
- package/lib/utils/BaseCommand.d.ts +8 -8
- package/lib/utils/BaseCommand.js +41 -41
- package/lib/utils/SessionCommand.d.ts +10 -10
- package/lib/utils/SessionCommand.js +43 -43
- package/lib/utils/api.d.ts +14 -14
- package/lib/utils/api.js +255 -255
- package/lib/utils/audit.d.ts +16 -16
- package/lib/utils/audit.js +303 -303
- package/lib/utils/checkNotInstalled.d.ts +2 -0
- package/lib/utils/checkNotInstalled.js +36 -0
- package/lib/utils/console.d.ts +12 -12
- package/lib/utils/console.js +19 -19
- package/lib/utils/errors.d.ts +17 -17
- package/lib/utils/errors.js +100 -100
- package/lib/utils/exercisesQueue.d.ts +9 -9
- package/lib/utils/exercisesQueue.js +38 -38
- package/lib/utils/fileQueue.d.ts +40 -40
- package/lib/utils/fileQueue.js +168 -168
- package/lib/utils/misc.d.ts +1 -1
- package/lib/utils/misc.js +23 -23
- package/lib/utils/osOperations.d.ts +5 -5
- package/lib/utils/osOperations.js +72 -72
- package/lib/utils/validators.d.ts +5 -5
- package/lib/utils/validators.js +17 -17
- package/lib/utils/watcher.d.ts +2 -2
- package/lib/utils/watcher.js +25 -25
- package/oclif.manifest.json +1 -1
- package/package.json +139 -139
- package/src/commands/audit.ts +443 -443
- package/src/commands/clean.ts +29 -29
- package/src/commands/download.ts +61 -61
- package/src/commands/init.ts +170 -170
- package/src/commands/login.ts +42 -42
- package/src/commands/logout.ts +43 -43
- package/src/commands/publish.ts +107 -107
- package/src/commands/start.ts +53 -23
- package/src/commands/test.ts +85 -85
- package/src/index.ts +1 -1
- package/src/managers/config/allowed_files.ts +29 -29
- package/src/managers/config/defaults.ts +42 -42
- package/src/managers/config/exercise.ts +311 -311
- package/src/managers/config/index.ts +455 -455
- package/src/managers/file.ts +196 -196
- package/src/managers/gitpod.ts +84 -84
- package/src/managers/server/index.ts +78 -78
- package/src/managers/server/routes.ts +330 -330
- package/src/managers/session.ts +145 -145
- package/src/managers/socket.ts +250 -250
- package/src/managers/telemetry.ts +346 -346
- package/src/managers/test.ts +83 -83
- package/src/models/action.ts +10 -10
- package/src/models/audit.ts +16 -16
- package/src/models/config-manager.ts +23 -23
- package/src/models/config.ts +5 -3
- package/src/models/counter.ts +11 -11
- package/src/models/errors.ts +22 -22
- package/src/models/exercise-obj.ts +29 -29
- package/src/models/file.ts +5 -5
- package/src/models/findings.ts +18 -18
- package/src/models/flags.ts +10 -10
- package/src/models/front-matter.ts +11 -11
- package/src/models/gitpod-data.ts +19 -19
- package/src/models/language.ts +4 -4
- package/src/models/package.ts +7 -7
- package/src/models/plugin-config.ts +17 -17
- package/src/models/session.ts +34 -34
- package/src/models/socket.ts +5 -0
- package/src/models/status.ts +16 -16
- package/src/models/success-types.ts +1 -1
- package/src/plugin/command/compile.ts +17 -17
- package/src/plugin/command/test.ts +30 -30
- package/src/plugin/index.ts +6 -6
- package/src/plugin/plugin.ts +94 -94
- package/src/plugin/utils.ts +87 -87
- package/src/types/node-fetch.d.ts +1 -1
- package/src/ui/download.ts +71 -71
- package/src/utils/BaseCommand.ts +48 -48
- package/src/utils/SessionCommand.ts +43 -43
- package/src/utils/api.ts +303 -303
- package/src/utils/audit.ts +393 -393
- package/src/utils/checkNotInstalled.ts +46 -0
- package/src/utils/console.ts +24 -24
- package/src/utils/errors.ts +117 -117
- package/src/utils/exercisesQueue.ts +51 -51
- package/src/utils/fileQueue.ts +198 -198
- package/src/utils/misc.ts +23 -23
- package/src/utils/osOperations.ts +79 -79
- package/src/utils/templates/gitignore.txt +19 -19
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
- package/src/utils/templates/incremental/README.ejs +4 -4
- package/src/utils/templates/incremental/README.es.ejs +4 -4
- package/src/utils/templates/isolated/01-hello-world/README.es.md +26 -26
- package/src/utils/templates/isolated/01-hello-world/README.md +26 -26
- package/src/utils/templates/isolated/README.ejs +4 -4
- package/src/utils/templates/isolated/README.es.ejs +4 -4
- package/src/utils/templates/no-grading/README.ejs +4 -4
- package/src/utils/templates/no-grading/README.es.ejs +4 -4
- package/src/utils/validators.ts +18 -18
- package/src/utils/watcher.ts +27 -27
package/src/ui/download.ts
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
import {prompt} from 'enquirer'
|
|
2
|
-
import Console from '../utils/console'
|
|
3
|
-
import api from '../utils/api'
|
|
4
|
-
// import fetch from 'node-fetch'
|
|
5
|
-
|
|
6
|
-
import {ILanguage} from '../models/language'
|
|
7
|
-
import {IPackage} from '../models/package'
|
|
8
|
-
|
|
9
|
-
export const askPackage = async () => {
|
|
10
|
-
Console.info('No package was specified')
|
|
11
|
-
const languages = await api.getLangs()
|
|
12
|
-
|
|
13
|
-
return new Promise((resolve, reject) => {
|
|
14
|
-
if (languages.length === 0) {
|
|
15
|
-
// reject(new Error('No categories available'))
|
|
16
|
-
reject('No categories available')
|
|
17
|
-
// return null;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// let packages = []
|
|
21
|
-
prompt([
|
|
22
|
-
{
|
|
23
|
-
type: 'select',
|
|
24
|
-
name: 'lang',
|
|
25
|
-
message: 'What language do you want to practice?',
|
|
26
|
-
choices: languages.map((l: ILanguage) => ({
|
|
27
|
-
message: l.title,
|
|
28
|
-
name: l.slug,
|
|
29
|
-
})),
|
|
30
|
-
},
|
|
31
|
-
])
|
|
32
|
-
.then(({lang}: any) => {
|
|
33
|
-
return (async () => {
|
|
34
|
-
const response = await api.getAllPackages({lang})
|
|
35
|
-
const packages = response.results
|
|
36
|
-
if (packages.length === 0) {
|
|
37
|
-
const error = new Error(`No packages found for language ${lang}`)
|
|
38
|
-
Console.error(error.message) // TODO: Look this
|
|
39
|
-
return error
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return prompt([
|
|
43
|
-
{
|
|
44
|
-
type: 'select',
|
|
45
|
-
name: 'pack',
|
|
46
|
-
message: 'Choose one of the packages available',
|
|
47
|
-
choices: packages.map((l: IPackage) => ({
|
|
48
|
-
message: `${l.title}, difficulty: ${l.difficulty}, downloads: ${
|
|
49
|
-
l.downloads
|
|
50
|
-
} ${
|
|
51
|
-
l.skills.length > 0 ? `(Skills: ${l.skills.join(',')})` : ''
|
|
52
|
-
}`,
|
|
53
|
-
name: l.slug,
|
|
54
|
-
})),
|
|
55
|
-
},
|
|
56
|
-
])
|
|
57
|
-
})()
|
|
58
|
-
})
|
|
59
|
-
.then((resp: any) => {
|
|
60
|
-
if (!resp)
|
|
61
|
-
reject(resp.message || resp)
|
|
62
|
-
else
|
|
63
|
-
resolve(resp.pack)
|
|
64
|
-
})
|
|
65
|
-
.catch(error => {
|
|
66
|
-
Console.error(error.message || error)
|
|
67
|
-
})
|
|
68
|
-
})
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export default {askPackage}
|
|
1
|
+
import {prompt} from 'enquirer'
|
|
2
|
+
import Console from '../utils/console'
|
|
3
|
+
import api from '../utils/api'
|
|
4
|
+
// import fetch from 'node-fetch'
|
|
5
|
+
|
|
6
|
+
import {ILanguage} from '../models/language'
|
|
7
|
+
import {IPackage} from '../models/package'
|
|
8
|
+
|
|
9
|
+
export const askPackage = async () => {
|
|
10
|
+
Console.info('No package was specified')
|
|
11
|
+
const languages = await api.getLangs()
|
|
12
|
+
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
if (languages.length === 0) {
|
|
15
|
+
// reject(new Error('No categories available'))
|
|
16
|
+
reject('No categories available')
|
|
17
|
+
// return null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// let packages = []
|
|
21
|
+
prompt([
|
|
22
|
+
{
|
|
23
|
+
type: 'select',
|
|
24
|
+
name: 'lang',
|
|
25
|
+
message: 'What language do you want to practice?',
|
|
26
|
+
choices: languages.map((l: ILanguage) => ({
|
|
27
|
+
message: l.title,
|
|
28
|
+
name: l.slug,
|
|
29
|
+
})),
|
|
30
|
+
},
|
|
31
|
+
])
|
|
32
|
+
.then(({lang}: any) => {
|
|
33
|
+
return (async () => {
|
|
34
|
+
const response = await api.getAllPackages({lang})
|
|
35
|
+
const packages = response.results
|
|
36
|
+
if (packages.length === 0) {
|
|
37
|
+
const error = new Error(`No packages found for language ${lang}`)
|
|
38
|
+
Console.error(error.message) // TODO: Look this
|
|
39
|
+
return error
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return prompt([
|
|
43
|
+
{
|
|
44
|
+
type: 'select',
|
|
45
|
+
name: 'pack',
|
|
46
|
+
message: 'Choose one of the packages available',
|
|
47
|
+
choices: packages.map((l: IPackage) => ({
|
|
48
|
+
message: `${l.title}, difficulty: ${l.difficulty}, downloads: ${
|
|
49
|
+
l.downloads
|
|
50
|
+
} ${
|
|
51
|
+
l.skills.length > 0 ? `(Skills: ${l.skills.join(',')})` : ''
|
|
52
|
+
}`,
|
|
53
|
+
name: l.slug,
|
|
54
|
+
})),
|
|
55
|
+
},
|
|
56
|
+
])
|
|
57
|
+
})()
|
|
58
|
+
})
|
|
59
|
+
.then((resp: any) => {
|
|
60
|
+
if (!resp)
|
|
61
|
+
reject(resp.message || resp)
|
|
62
|
+
else
|
|
63
|
+
resolve(resp.pack)
|
|
64
|
+
})
|
|
65
|
+
.catch(error => {
|
|
66
|
+
Console.error(error.message || error)
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export default {askPackage}
|
package/src/utils/BaseCommand.ts
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Command } from "@oclif/command"
|
|
2
|
-
import Console from "./console"
|
|
3
|
-
import { createInterface } from "readline"
|
|
4
|
-
// import SessionManager from '../managers/session'
|
|
5
|
-
|
|
6
|
-
class BaseCommand extends Command {
|
|
7
|
-
async catch(err: any) {
|
|
8
|
-
Console.debug("COMMAND CATCH", err)
|
|
9
|
-
|
|
10
|
-
throw err
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async init() {
|
|
14
|
-
const { flags, args } = this.parse(BaseCommand)
|
|
15
|
-
Console.debug("COMMAND INIT")
|
|
16
|
-
Console.debug("These are your flags: ", flags)
|
|
17
|
-
Console.debug("These are your args: ", args)
|
|
18
|
-
|
|
19
|
-
// quick fix for listening to the process termination on windows
|
|
20
|
-
if (process.platform === "win32") {
|
|
21
|
-
const rl = createInterface({
|
|
22
|
-
input: process.stdin,
|
|
23
|
-
output: process.stdout,
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
rl.on("SIGINT", function () {
|
|
27
|
-
// process.emit('SIGINT')
|
|
28
|
-
// process.emit('SIGINT')
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
process.on("SIGINT", function () {
|
|
33
|
-
Console.debug("Terminated (SIGINT)")
|
|
34
|
-
process.exit()
|
|
35
|
-
})
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async finally() {
|
|
39
|
-
Console.debug("COMMAND FINALLY")
|
|
40
|
-
// called after run and catch regardless of whether or not the command errored
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async run() {
|
|
44
|
-
// console.log('running my command')
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export default BaseCommand
|
|
1
|
+
import { Command } from "@oclif/command"
|
|
2
|
+
import Console from "./console"
|
|
3
|
+
import { createInterface } from "readline"
|
|
4
|
+
// import SessionManager from '../managers/session'
|
|
5
|
+
|
|
6
|
+
class BaseCommand extends Command {
|
|
7
|
+
async catch(err: any) {
|
|
8
|
+
Console.debug("COMMAND CATCH", err)
|
|
9
|
+
|
|
10
|
+
throw err
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async init() {
|
|
14
|
+
const { flags, args } = this.parse(BaseCommand)
|
|
15
|
+
Console.debug("COMMAND INIT")
|
|
16
|
+
Console.debug("These are your flags: ", flags)
|
|
17
|
+
Console.debug("These are your args: ", args)
|
|
18
|
+
|
|
19
|
+
// quick fix for listening to the process termination on windows
|
|
20
|
+
if (process.platform === "win32") {
|
|
21
|
+
const rl = createInterface({
|
|
22
|
+
input: process.stdin,
|
|
23
|
+
output: process.stdout,
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
rl.on("SIGINT", function () {
|
|
27
|
+
// process.emit('SIGINT')
|
|
28
|
+
// process.emit('SIGINT')
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
process.on("SIGINT", function () {
|
|
33
|
+
Console.debug("Terminated (SIGINT)")
|
|
34
|
+
process.exit()
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async finally() {
|
|
39
|
+
Console.debug("COMMAND FINALLY")
|
|
40
|
+
// called after run and catch regardless of whether or not the command errored
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async run() {
|
|
44
|
+
// console.log('running my command')
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default BaseCommand
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
// import { flags } from "@oclif/command";
|
|
2
|
-
import BaseCommand from "./BaseCommand"
|
|
3
|
-
import Console from "./console"
|
|
4
|
-
import SessionManager from "../managers/session"
|
|
5
|
-
import configManager from "../managers/config/index"
|
|
6
|
-
import { AuthError } from "./errors"
|
|
7
|
-
import { IConfigManager } from "../models/config-manager"
|
|
8
|
-
|
|
9
|
-
export default class SessionCommand extends BaseCommand {
|
|
10
|
-
session: any = null
|
|
11
|
-
configManager: IConfigManager | null = null
|
|
12
|
-
static flags: any
|
|
13
|
-
|
|
14
|
-
async initSession(flags: any, _private = false) {
|
|
15
|
-
try {
|
|
16
|
-
if (!this.configManager) {
|
|
17
|
-
await this.buildConfig(flags)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
this.session = await SessionManager.get(this.configManager?.get())
|
|
21
|
-
if (this.session) {
|
|
22
|
-
Console.debug(`Session open for ${this.session.payload.email}.`)
|
|
23
|
-
} else {
|
|
24
|
-
if (_private)
|
|
25
|
-
throw AuthError(
|
|
26
|
-
"You need to log in, run the following command to continue: $ learnpack login"
|
|
27
|
-
)
|
|
28
|
-
Console.debug("No active session available", _private)
|
|
29
|
-
}
|
|
30
|
-
} catch (error) {
|
|
31
|
-
Console.error((error as TypeError).message)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async buildConfig(flags: any) {
|
|
36
|
-
this.configManager = await configManager(flags)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async catch(err: any) {
|
|
40
|
-
Console.debug("COMMAND CATCH", err)
|
|
41
|
-
throw err
|
|
42
|
-
}
|
|
43
|
-
}
|
|
1
|
+
// import { flags } from "@oclif/command";
|
|
2
|
+
import BaseCommand from "./BaseCommand"
|
|
3
|
+
import Console from "./console"
|
|
4
|
+
import SessionManager from "../managers/session"
|
|
5
|
+
import configManager from "../managers/config/index"
|
|
6
|
+
import { AuthError } from "./errors"
|
|
7
|
+
import { IConfigManager } from "../models/config-manager"
|
|
8
|
+
|
|
9
|
+
export default class SessionCommand extends BaseCommand {
|
|
10
|
+
session: any = null
|
|
11
|
+
configManager: IConfigManager | null = null
|
|
12
|
+
static flags: any
|
|
13
|
+
|
|
14
|
+
async initSession(flags: any, _private = false) {
|
|
15
|
+
try {
|
|
16
|
+
if (!this.configManager) {
|
|
17
|
+
await this.buildConfig(flags)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
this.session = await SessionManager.get(this.configManager?.get())
|
|
21
|
+
if (this.session) {
|
|
22
|
+
Console.debug(`Session open for ${this.session.payload.email}.`)
|
|
23
|
+
} else {
|
|
24
|
+
if (_private)
|
|
25
|
+
throw AuthError(
|
|
26
|
+
"You need to log in, run the following command to continue: $ learnpack login"
|
|
27
|
+
)
|
|
28
|
+
Console.debug("No active session available", _private)
|
|
29
|
+
}
|
|
30
|
+
} catch (error) {
|
|
31
|
+
Console.error((error as TypeError).message)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async buildConfig(flags: any) {
|
|
36
|
+
this.configManager = await configManager(flags)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async catch(err: any) {
|
|
40
|
+
Console.debug("COMMAND CATCH", err)
|
|
41
|
+
throw err
|
|
42
|
+
}
|
|
43
|
+
}
|