Skip to content

Commit a87f1da

Browse files
committed
Make this project excutable binary file
1 parent 7c0f004 commit a87f1da

File tree

1 file changed

+66
-7
lines changed

1 file changed

+66
-7
lines changed

bin/acli

100644100755
Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1+
#!/usr/bin/env node
2+
13
/**
24
* @author Jade Yeom
35
* @email ysw0094@gmail.com
46
*/
5-
var commander = require('commander'), fs = require('fs'), path = require('path'), chalk = require('chalk'), walk = require('walk'), inquirer = require('inquirer'), xml2js = require('xml2js'), changeCase = require('change-case');
7+
var commander = require('commander'), fs = require('fs'), path = require('path'), chalk = require('chalk'), walk = require('walk'), inquirer = require('inquirer'), xml2js = require('xml2js'), changeCase = require('change-case'), gjs = require('gradlejs'), shell = require('shelljs');
8+
var xmlParser = new xml2js.Parser();
9+
var xmlBuilder = new xml2js.Builder();
610
commander.arguments('<name>')
711
.version('0.0.1')
812
.option('-g, --generate [name]', 'component (e.g activity, fragment etc..)')
9-
.option('-p, --permission [name]', 'add uses-permission to manifest file(e.g INTERNET)')
10-
.option('--adb-reset', 'kill server adb (required environment variable for ADB_PATH)')
13+
.option('-p, --permission <permission>', 'add uses-permission to manifest file(e.g INTERNET)')
14+
.option('-d, --dependency <dependency>', 'add dependency to build.gradle and sync gradle')
1115
.action(function (name) {
1216
var selectedPackage;
1317
var parsedJavaContent;
@@ -31,19 +35,71 @@ commander.arguments('<name>')
3135
});
3236
}
3337
}).parse(process.argv);
38+
if (commander.permission) {
39+
console.log(commander.permission);
40+
addPermissionToManifest(commander.permission, function (xml) {
41+
try {
42+
fs.writeFileSync('./app/src/main/AndroidManifest.xml', xml);
43+
console.log(chalk.green("Successful adding permission"));
44+
}
45+
catch (err) {
46+
console.log(chalk.red("Failed to adding permission"));
47+
console.log(chalk.red(err));
48+
}
49+
});
50+
}
51+
if (commander.dependency) {
52+
console.log(commander.dependency);
53+
var gradlePath_1 = "./app/build.gradle";
54+
gjs.parseFile(gradlePath_1).then(function (representation) {
55+
representation.dependencies.compile.push("'" + commander.dependency + "'");
56+
fs.writeFile(gradlePath_1, gjs.makeGradleText(representation), function (err) {
57+
if (!err) {
58+
var gradleSyncCommand = "";
59+
if (isWindows())
60+
gradleSyncCommand = "gradlew.bat build";
61+
else
62+
gradleSyncCommand = "./gradlew build";
63+
shell.exec(gradleSyncCommand, function (code, stdout, stderr) {
64+
console.log('Exit code:', code);
65+
console.log('Program output:', stdout);
66+
console.log('Program stderr:', stderr);
67+
});
68+
}
69+
});
70+
});
71+
}
72+
/**
73+
* @desc Add permission to Manfest
74+
*
75+
* @param {string} permissionName - To add permission of name
76+
*/
77+
function addPermissionToManifest(permissionName, callback) {
78+
xmlParser.parseString(getManifestContent(), function (err, result) {
79+
if (!Array.isArray(result.manifest['uses-permission']))
80+
result.manifest['uses-permission'] = [];
81+
result.manifest['uses-permission'].push({
82+
'$': {
83+
'android:name': "android.permission." + changeCase.upperCase(permissionName)
84+
}
85+
});
86+
callback(xmlBuilder.buildObject(result));
87+
});
88+
}
3489
/**
3590
* @desc Parse package name by AndroidManifest.xml
3691
*
3792
* @param {function} callback - Call anonymous function when complete xml parse
3893
*/
3994
function getApplicationPackage(callback) {
4095
// TODO GET REAL PATH
41-
var manifestContent = fs.readFileSync('./app/src/main/AndroidManifest.xml');
42-
var parser = new xml2js.Parser();
43-
parser.parseString(manifestContent, function (err, result) {
96+
xmlParser.parseString(getManifestContent(), function (err, result) {
4497
callback(result.manifest.$.package);
4598
});
4699
}
100+
function getManifestContent() {
101+
return fs.readFileSync('./app/src/main/AndroidManifest.xml');
102+
}
47103
/**
48104
* @desc Parse package name list by walk module
49105
*
@@ -113,7 +169,7 @@ function generateRenderedOutFile(componentType, componentName, targetPkg) {
113169
console.log(chalk.red(err));
114170
}
115171
try {
116-
fs.writeFileSync("" + xmlFileName /*TODO GET REAL PATH*/, parsedXMLContent);
172+
fs.writeFileSync("./app/src/main/res/layout/" + xmlFileName /*TODO GET REAL PATH*/, parsedXMLContent);
117173
console.log(chalk.green("Successful generate layout file " + xmlFileName));
118174
}
119175
catch (err) {
@@ -129,3 +185,6 @@ function presentInitialMessage() {
129185
console.log(chalk.cyan("Welcome to Android CLI TOOL 0.0.1"));
130186
console.log(chalk.cyan("================================="));
131187
}
188+
function isWindows() {
189+
return /^win/.test(process.platform);
190+
}

0 commit comments

Comments
 (0)