Skip to content

Commit 77ac9aa

Browse files
committed
Restructuring overall
1 parent 5ebc46c commit 77ac9aa

10 files changed

+192
-185
lines changed

app.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import * as changeCase from "change-case";
22
import * as inquirer from "inquirer";
33
import * as fs from "fs";
4-
import {PermissionManager} from "./scripts/PermissionManager";
5-
import {GenerateManager} from "./scripts/GenerateManager";
4+
import {PermissionController} from "./scripts/controllers/PermissionController";
5+
import {GenerateController} from "./scripts/controllers/GenerateController";
66
import {MANIFAST_PATH} from "./scripts/constants/ManifestPath";
7-
import {DependencyManager} from "./scripts/DependencyManager";
7+
import {DependencyController} from "./scripts/controllers/DependencyController";
8+
import {PackageManager} from "./scripts/utils/PackageManager";
89

910
const chalk = require('chalk'),
1011
figlet = require('figlet'),
@@ -17,10 +18,10 @@ commander.arguments('<name>')
1718
.option('-d, --dependency <dependency>', 'add dependency to build.gradle and sync gradle')
1819
.action((name: string) => {
1920
if (commander.generate) {
20-
const generateManager: GenerateManager = new GenerateManager();
21+
const generateManager: GenerateController = new GenerateController();
2122
console.log(chalk.yellow(`${changeCase.pascalCase(commander.generate)} will generated by Android CLI`));
22-
generateManager.getApplicationPackage(packageName => {
23-
generateManager.getPackages(packageName, packageList => {
23+
PackageManager.getApplicationPackage(packageName => {
24+
PackageManager.getPackages(packageName, packageList => {
2425
let questions = [{
2526
type: 'list',
2627
name: 'package',
@@ -38,7 +39,7 @@ commander.arguments('<name>')
3839
presentInitialMessage();
3940

4041
if (commander.permission) {
41-
const permissionManager: PermissionManager = new PermissionManager();
42+
const permissionManager: PermissionController = new PermissionController();
4243
permissionManager.addPermissionToManifest(commander.permission, xml => {
4344
try {
4445
fs.writeFileSync(MANIFAST_PATH, xml);
@@ -49,7 +50,7 @@ if (commander.permission) {
4950
}
5051
});
5152
} else if (commander.dependency) {
52-
const dependencyManager: DependencyManager = new DependencyManager();
53+
const dependencyManager: DependencyController = new DependencyController();
5354
dependencyManager.addDependency(commander.dependency, (code, stdout, stderr) => {
5455
if (stderr) {
5556
console.log(chalk.red(`Complete with some error. Please check gradle sync result.`));

scripts/GenerateManager.ts

Lines changed: 0 additions & 119 deletions
This file was deleted.

scripts/PermissionManager.ts

Lines changed: 0 additions & 55 deletions
This file was deleted.

scripts/controllers/Controller.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export class Controller {
2+
constructor() {
3+
4+
}
5+
}

scripts/DependencyManager.ts renamed to scripts/controllers/DependencyController.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import {GRADLE_PATH} from "./constants/GradlePath";
1+
import {GRADLE_PATH} from "../constants/GradlePath";
22
import * as fs from "fs";
33
import * as shell from "shelljs";
4+
import {Controller} from "./Controller";
45

56
// const gradle = require('gradlejs');
67

7-
export class DependencyManager {
8+
export class DependencyController extends Controller{
89

910
public addDependency(dependency: string, callback) {
1011
//TODO FIX BUG GRADLE PARSE
@@ -15,7 +16,7 @@ export class DependencyManager {
1516
let gradleSyncCommand: string = "";
1617
const gradleOption: string = "clean build assemble";
1718

18-
if (DependencyManager.isWindows())
19+
if (DependencyController.isWindows())
1920
gradleSyncCommand = `gradlew.bat ${gradleOption}`;
2021
else
2122
gradleSyncCommand = `./gradlew ${gradleOption}`;
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import * as changeCase from "change-case";
2+
import * as fs from "fs";
3+
4+
const chalk = require("chalk"),
5+
commander = require("commander"),
6+
walk = require('walk');
7+
8+
export class GenerateController {
9+
10+
11+
/**
12+
* @desc Generate rendered out file
13+
*
14+
* @param {string} componentType - Type of component
15+
* @param {string} componentName - Name of component
16+
* @param {string} targetPkg - Targeted package name
17+
*/
18+
public generateRenderedOutFile(componentType: string, componentName: string, targetPkg: string) {
19+
20+
console.log(process.argv[1]);
21+
22+
//TODO GET REAL BOILERPLATES PATH
23+
const boilerplatesPath = `../../boilerplates/${componentType}`,
24+
boilerplateNameOfJAVA = `index.ac.src`,
25+
boilerplateNameOfXML = `index.ac.layout`,
26+
27+
javaFileName: string = `${changeCase.pascalCase(componentName)}${changeCase.pascalCase(componentType)}.java`,
28+
xmlFileName: string = `${changeCase.lowerCase(componentType)}_${changeCase.lowerCase(componentName)}.xml`,
29+
30+
javaContent: string = fs.readFileSync(`${boilerplatesPath}/${boilerplateNameOfJAVA}`, 'utf-8').toString(),
31+
xmlContent: string = fs.readFileSync(`${boilerplatesPath}/${boilerplateNameOfXML}`, 'utf-8').toString(),
32+
33+
parsedJavaContent: string = this.renderAcFile(javaContent, targetPkg, componentName),
34+
parsedXMLContent: string = this.renderAcFile(xmlContent, targetPkg, componentName);
35+
36+
try {
37+
fs.writeFileSync(`./app/src/main/java/${targetPkg.replace(/\./gi, '/')}/${javaFileName}`, parsedJavaContent);
38+
console.log(chalk.green(`Successful generate ${componentType} ${javaFileName}`))
39+
} catch (err) {
40+
console.log(chalk.red(`Failed to generate ${componentType} ${javaFileName}`));
41+
console.log(chalk.red(err))
42+
}
43+
44+
try {
45+
fs.writeFileSync(`./app/src/main/res/layout/${xmlFileName}`/*TODO GET REAL PATH*/, parsedXMLContent);
46+
console.log(chalk.green(`Successful generate layout file ${xmlFileName}`))
47+
} catch (err) {
48+
console.log(chalk.red(`Failed to generate layout file ${xmlFileName}`));
49+
console.log(chalk.red(err))
50+
}
51+
52+
}
53+
54+
/**
55+
* @desc Render boilerplate file by our specific format
56+
*
57+
* @param {string} fileContent - Content of boilerplate file
58+
* @param {string} pkgName - Targeted package name
59+
* @param {string} componentName - Name of componentName
60+
*
61+
* @return {string} - Content of rendered file
62+
*/
63+
public renderAcFile(fileContent: string, pkgName: string, componentName: string) {
64+
return fileContent
65+
.replace(/{%packageName%}/gi, pkgName)
66+
.replace(/{%activityName%}/gi, changeCase.pascalCase(componentName))
67+
.replace(/{%activityNameLowerCase%}/gi, changeCase.lowerCase(componentName));
68+
}
69+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import * as changeCase from "change-case";
2+
import {ManifestManager} from "../utils/ManifestManager";
3+
import {XMLParser} from "../utils/XMLParser";
4+
5+
6+
export class PermissionController {
7+
8+
/**
9+
* @desc Add permission to Manifest
10+
*
11+
* @param {string} permissionName - To add permission of name
12+
* @param callback
13+
*/
14+
public addPermissionToManifest(permissionName: string, callback) {
15+
XMLParser.getInstance().xmlParser.parseString(ManifestManager.getManifestContent(), (err, result) => {
16+
if (!Array.isArray(result.manifest['uses-permission']))
17+
result.manifest['uses-permission'] = [];
18+
result.manifest['uses-permission'].push({
19+
'$': {
20+
'android:name': `android.permission.${changeCase.upperCase(permissionName)}`
21+
}
22+
});
23+
callback(XMLParser.getInstance().xmlBuilder.buildObject(result));
24+
})
25+
}
26+
}

scripts/utils/ManifestManager.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {MANIFAST_PATH} from "../constants/ManifestPath";
2+
import * as fs from "fs";
3+
4+
export class ManifestManager {
5+
public static getManifestContent() {
6+
return fs.readFileSync(MANIFAST_PATH);
7+
}
8+
}

0 commit comments

Comments
 (0)