Skip to content

Commit c40c1f0

Browse files
committed
Fix control flow of both platforms:
- replace fs.stat with actual readFile and agvtool usage - handle their errors instead - check for Xcode CLI tools before using agvtool
1 parent 79220e7 commit c40c1f0

File tree

1 file changed

+75
-83
lines changed

1 file changed

+75
-83
lines changed

index.js

Lines changed: 75 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -48,104 +48,96 @@ function version(program) {
4848

4949
if (!targets.length || targets.indexOf('android') > -1) {
5050
android = new Promise(function(resolve, reject) {
51-
fs.stat(programOpts.android, function(err) {
52-
if (err) {
53-
reject([
54-
{
55-
style: 'red',
56-
text: 'No gradle file found at ' + programOpts.android
57-
},
58-
{
59-
style: 'yellow',
60-
text: 'Use the "--android" option to specify the path manually'
61-
}
62-
]);
63-
} else {
64-
const androidFile = fs.readFileSync(programOpts.android, 'utf8');
65-
var newAndroidFile = androidFile;
66-
67-
if (!programOpts.incrementBuild) {
68-
newAndroidFile = newAndroidFile.replace(
69-
/versionName "(.*)"/, 'versionName "' + appPkg.version + '"'
70-
);
51+
var gradleFile;
52+
53+
try {
54+
gradleFile = fs.readFileSync(programOpts.android, 'utf8');
55+
} catch (err) {
56+
reject([
57+
{
58+
style: 'red',
59+
text: 'No gradle file found at ' + programOpts.android
60+
},
61+
{
62+
style: 'yellow',
63+
text: 'Use the "--android" option to specify the path manually'
7164
}
65+
]);
66+
}
7267

73-
newAndroidFile = newAndroidFile
74-
.replace(/versionCode (\d+)/, function(match, cg1) {
75-
const newVersionCodeNumber = parseInt(cg1, 10) + 1;
76-
return 'versionCode ' + newVersionCodeNumber;
77-
});
68+
if (!programOpts.incrementBuild) {
69+
gradleFile = gradleFile.replace(
70+
/versionName "(.*)"/, 'versionName "' + appPkg.version + '"'
71+
);
72+
}
7873

79-
fs.writeFileSync(programOpts.android, newAndroidFile);
80-
resolve();
81-
}
74+
gradleFile = gradleFile
75+
.replace(/versionCode (\d+)/, function(match, cg1) {
76+
const newVersionCodeNumber = parseInt(cg1, 10) + 1;
77+
return 'versionCode ' + newVersionCodeNumber;
8278
});
79+
80+
fs.writeFileSync(programOpts.android, gradleFile);
81+
resolve();
8382
});
8483
}
8584

8685
if (!targets.length || targets.indexOf('ios') > -1) {
8786
ios = new Promise(function(resolve, reject) {
88-
fs.stat(programOpts.ios, function(err) {
89-
if (err) {
90-
reject([
91-
{
92-
style: 'red',
93-
text: 'No project folder found at ' + programOpts.ios
94-
},
95-
{
96-
style: 'yellow',
97-
text: 'Use the "--ios" option to specify the path manually'
98-
}
99-
]);
100-
} else {
101-
try {
102-
child.execSync('xcode-select --print-path', {
103-
stdio: ['ignore', 'ignore', 'pipe']
104-
});
105-
} catch (err) {
106-
reject([
107-
{
108-
style: 'red',
109-
text: err
110-
},
111-
{
112-
style: 'yellow',
113-
text: 'Looks like Xcode Command Line Tools aren\'t installed'
114-
},
115-
{
116-
text: '\n Install:\n\n $ xcode-select --install\n'
117-
}
118-
]);
87+
try {
88+
child.execSync('xcode-select --print-path', {
89+
stdio: ['ignore', 'ignore', 'pipe']
90+
});
91+
} catch (err) {
92+
reject([
93+
{
94+
style: 'red',
95+
text: err
96+
},
97+
{
98+
style: 'yellow',
99+
text: 'Looks like Xcode Command Line Tools aren\'t installed'
100+
},
101+
{
102+
text: '\n Install:\n\n $ xcode-select --install\n'
119103
}
104+
]);
120105

121-
const agvtoolOpts = {
122-
cwd: programOpts.ios
123-
};
124-
125-
try {
126-
child.execSync('agvtool what-version', agvtoolOpts);
127-
} catch (err) {
128-
reject({
129-
style: 'red',
130-
text: err.stdout
131-
});
132-
}
106+
return;
107+
}
133108

134-
if (!programOpts.incrementBuild) {
135-
child.spawnSync(
136-
'agvtool', ['new-marketing-version', appPkg.version], agvtoolOpts
137-
);
109+
const agvtoolOpts = {
110+
cwd: programOpts.ios
111+
};
112+
113+
try {
114+
child.execSync('agvtool what-version', agvtoolOpts);
115+
} catch (err) {
116+
reject([
117+
{
118+
style: 'red',
119+
text: 'No project folder found at ' + programOpts.ios
120+
},
121+
{
122+
style: 'yellow',
123+
text: 'Use the "--ios" option to specify the path manually'
138124
}
125+
]);
139126

140-
if (programOpts.resetBuild) {
141-
child.execSync('agvtool new-version -all 1', agvtoolOpts);
142-
} else {
143-
child.execSync('agvtool next-version -all', agvtoolOpts);
144-
}
127+
return;
128+
}
145129

146-
resolve();
147-
}
148-
});
130+
if (!programOpts.incrementBuild) {
131+
child.spawnSync('agvtool', ['new-marketing-version', appPkg.version], agvtoolOpts);
132+
}
133+
134+
if (programOpts.resetBuild) {
135+
child.execSync('agvtool new-version -all 1', agvtoolOpts);
136+
} else {
137+
child.execSync('agvtool next-version -all', agvtoolOpts);
138+
}
139+
140+
resolve();
149141
});
150142
}
151143

0 commit comments

Comments
 (0)