-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.ts
70 lines (65 loc) · 2.96 KB
/
app.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import * as changeCase from "change-case";
import * as inquirer from "inquirer";
import * as fs from "fs";
import {PermissionController} from "./scripts/controllers/PermissionController";
import {GenerateController} from "./scripts/controllers/GenerateController";
import {MANIFEST_PATH} from "./scripts/constants/ManifestPath";
import {DependencyController} from "./scripts/controllers/DependencyController";
import {PackageManager} from "./scripts/utils/PackageManager";
// import * as pkg from "./scripts/constants/Package";
const chalk = require('chalk'),
figlet = require('figlet'),
commander = require('commander'),
pkg = require('./package.json');
commander.arguments('<name>')
.version(pkg.version)
.option('-g, --generate [name]', 'component (e.g activity, fragment etc..)')
.option('-p, --permission <permission>', 'add uses-permission to manifest file(e.g INTERNET)')
.option('-d, --dependency <dependency>', 'add dependency to build.gradle and sync gradle')
.action((name: string) => {
if (commander.generate) {
const generateController: GenerateController = new GenerateController();
console.log(chalk.yellow(`${changeCase.pascalCase(commander.generate)} will generated by Android CLI`));
PackageManager.getApplicationPackage(packageName => {
PackageManager.getPackages(packageName, packageList => {
let questions = [{
type: 'list',
name: 'package',
message: "Choose your target package path",
choices: packageList,
}];
inquirer.prompt(questions).then(answers => {
generateController.generateRenderedOutFile(commander.generate, name, answers.package);
});
})
})
}
}).parse(process.argv);
presentInitialMessage();
if (commander.permission) {
const permissionController: PermissionController = new PermissionController();
permissionController.addPermissionToManifest(commander.permission, xml => {
try {
fs.writeFileSync(MANIFEST_PATH, xml);
console.log(chalk.green(`Successful adding permission`));
} catch (err) {
console.log(chalk.red(`Failed to adding permission`));
console.log(chalk.red(err))
}
});
} else if (commander.dependency) {
const dependencyController: DependencyController = new DependencyController();
dependencyController.addDependency(commander.dependency, (code, stdout, stderr) => {
if (stderr) {
console.log(chalk.red(`Complete with some error. Please check gradle sync result.`));
} else {
console.log(chalk.green(`Successful adding dependency with gradle sync`));
}
});
}
/**
* @desc Just present initial message
*/
function presentInitialMessage() {
console.log(chalk.cyan("WELCOME TO ANDROID CLI!"));
}