Skip to content

Commit 9a966a3

Browse files
committed
[Draft] Packaging overall
1 parent 0c85c70 commit 9a966a3

File tree

3 files changed

+49
-29
lines changed

3 files changed

+49
-29
lines changed

app.ts

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,55 @@
1+
import * as changeCase from "change-case";
2+
import * as inquirer from "inquirer";
3+
import * as fs from "fs";
4+
import {PermissionManager} from "./scripts/PermissionManager";
15
import {GenerateManager} from "./scripts/GenerateManager";
6+
import {MANIFAST_PATH} from "./scripts/constants/ManifestPath";
7+
import {DependencyManager} from "./scripts/DependencyManager";
28

39
const chalk = require('chalk'),
410
figlet = require('figlet'),
511
commander = require('commander');
612

7-
const generateManager: GenerateManager = new GenerateManager();
8-
913
commander.arguments('<name>')
1014
.version('0.0.1')
1115
.option('-g, --generate [name]', 'component (e.g activity, fragment etc..)')
1216
.option('-p, --permission <permission>', 'add uses-permission to manifest file(e.g INTERNET)')
1317
.option('-d, --dependency <dependency>', 'add dependency to build.gradle and sync gradle')
1418
.action((name: string) => {
19+
console.log(name);
1520
presentInitialMessage(() => {
1621
if (commander.generate) {
17-
generateManager.generateByScaffold();
22+
const generateManager: GenerateManager = new GenerateManager();
23+
console.log(chalk.yellow(`${changeCase.pascalCase(commander.generate)} will generated by Android CLI`));
24+
generateManager.getApplicationPackage(packageName => {
25+
this.getPackages(packageName, packageList => {
26+
let questions = [{
27+
type: 'list',
28+
name: 'package',
29+
message: "Choose your target package path",
30+
choices: packageList,
31+
}];
32+
inquirer.prompt(questions).then(answers => {
33+
generateManager.generateRenderedOutFile(commander.generate, name, answers.package);
34+
});
35+
})
36+
})
37+
} else if (commander.permission) {
38+
const permissionManager: PermissionManager = new PermissionManager();
39+
permissionManager.addPermissionToManifest(commander.permission, xml => {
40+
try {
41+
fs.writeFileSync(MANIFAST_PATH, xml);
42+
console.log(chalk.green(`Successful adding permission`));
43+
} catch (err) {
44+
console.log(chalk.red(`Failed to adding permission`));
45+
console.log(chalk.red(err))
46+
}
47+
});
48+
} else if (commander.dependency) {
49+
const dependencyManager: DependencyManager = new DependencyManager();
50+
dependencyManager.addDependency(commander.dependency, () => {
51+
console.log(chalk.green(`Successful adding dependency`));
52+
});
1853
}
1954
});
2055
}).parse(process.argv);
@@ -25,7 +60,11 @@ commander.arguments('<name>')
2560
*/
2661
function presentInitialMessage(callback) {
2762
figlet('Android CLI', (err, data) => {
28-
console.log(chalk.cyan(data));
29-
callback();
63+
if (!err) {
64+
console.log(chalk.cyan(data));
65+
callback();
66+
} else {
67+
console.log(err);
68+
}
3069
})
3170
}

scripts/DependencyManager.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export class DependencyManager {
2323
console.log('Exit code:', code);
2424
console.log('Program output:', stdout);
2525
console.log('Program stderr:', stderr);
26+
callback();
2627
})
2728
}
2829
});

scripts/GenerateManager.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import * as inquirer from "inquirer";
21
import * as changeCase from "change-case";
32
import * as fs from "fs";
43
import {PermissionManager} from "./PermissionManager";
@@ -17,33 +16,14 @@ export class GenerateManager {
1716
this.xmlParser = new xml2js.Parser();
1817
}
1918

20-
public generateByScaffold() {
21-
22-
console.log(chalk.yellow(`${changeCase.pascalCase(commander.generate)} will generated by Android CLI`));
23-
24-
this.getApplicationPackage(pacakge => {
25-
this.getPackages(pacakge, packageList => {
26-
let questions = [{
27-
type: 'list',
28-
name: 'package',
29-
message: "Choose your target package path",
30-
choices: packageList,
31-
}];
32-
inquirer.prompt(questions).then(answers => {
33-
this.generateRenderedOutFile(commander.generate, name, answers.package);
34-
});
35-
});
36-
});
37-
}
38-
3919
/**
4020
* @desc Generate rendered out file
4121
*
4222
* @param {string} componentType - Type of component
4323
* @param {string} componentName - Name of component
4424
* @param {string} targetPkg - Targeted package name
4525
*/
46-
private generateRenderedOutFile(componentType: string, componentName: string, targetPkg: string) {
26+
public generateRenderedOutFile(componentType: string, componentName: string, targetPkg: string) {
4727

4828
let boilerplatesPath = `./boilerplates/${componentType}`;
4929
let boilerplateNameOfJAVA = `index.ac.src`;
@@ -85,7 +65,7 @@ export class GenerateManager {
8565
*
8666
* @return {string} - Content of rendered file
8767
*/
88-
private renderAcFile(fileContent: string, pkgName: string, componentName: string) {
68+
public renderAcFile(fileContent: string, pkgName: string, componentName: string) {
8969
return fileContent
9070
.replace(/{%packageName%}/gi, pkgName)
9171
.replace(/{%activityName%}/gi, changeCase.pascalCase(componentName))
@@ -98,7 +78,7 @@ export class GenerateManager {
9878
* @param {string} packageName - Name of targeted package name
9979
* @param {function} callback - Call anonymous function when walker had end event
10080
*/
101-
private getPackages(packageName, callback) {
81+
public getPackages(packageName, callback) {
10282
let packageList = [];
10383

10484
let options = {
@@ -126,7 +106,7 @@ export class GenerateManager {
126106
});
127107
}
128108

129-
private getApplicationPackage(callback) {
109+
public getApplicationPackage(callback) {
130110
this.xmlParser.parseString(PermissionManager.getManifestContent(), (err, result) => {
131111
callback(result.manifest.$.package);
132112
});

0 commit comments

Comments
 (0)