@lamantin/fastpush
Version:
Typed fastlane frontend for pushing builds to store
100 lines • 4.4 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IOSPlatform = void 0;
const shelljs_1 = __importDefault(require("shelljs"));
const jetpack = require("fs-jetpack");
const ui_1 = require("../../ui");
class IOSPlatform {
constructor(projectDirectory = jetpack.cwd(), iosDirectory = jetpack
.cwd(projectDirectory)
.cwd('ios')
.cwd()) {
this.type = 'ios';
this.projectDirectory = projectDirectory;
this.iosDirectory = iosDirectory;
ui_1.ui.message(`Setup ios project at: ${iosDirectory}`);
// move back
jetpack.cwd(projectDirectory);
}
/**
* Execute `xcrun agvtool new-marketing-version ${newVersion}`
* @param newVersion your version in format `number.number.number` (ex: 1.2.3)
*/
setVersionName(newVersion) {
return __awaiter(this, void 0, void 0, function* () {
const oldVersion = yield this.getVersionName();
this.exec(`xcrun agvtool new-marketing-version ${newVersion}`);
const updatedVersion = yield this.getVersionName();
return [oldVersion, updatedVersion];
});
}
/**
* Execute `xcrun agvtool next-version -all` for increment build number
* @returns [oldBuildNumber, newBuildNumber]
*/
incrementBuildNumber() {
return __awaiter(this, void 0, void 0, function* () {
const oldBuildNumber = yield this.getBuildNumber();
this.exec('xcrun agvtool next-version -all');
const newBuildNumber = yield this.getBuildNumber();
return [oldBuildNumber, newBuildNumber];
});
}
/**
* Execute `xcrun agvtool next-version -all` for increment build number
* @returns [oldBuildNumber, newBuildNumber]
*/
setBuildNumber(buildNumber) {
return __awaiter(this, void 0, void 0, function* () {
const oldBuildNumber = yield this.getBuildNumber();
this.exec(`xcrun agvtool new-version -all ${buildNumber}`);
return [oldBuildNumber, buildNumber];
});
}
/**
* Execute `xcrun agvtool what-version` inside ios directory and get parsed result.
* Be sure, that you enable `agvtool` for your project https://dzone.com/articles/agvtool-automating-ios-build-and-version-numbers
*/
getBuildNumber() {
return __awaiter(this, void 0, void 0, function* () {
const result = this.exec('xcrun agvtool what-version');
const buildNumber = Number.parseInt(result.stdout.match(/\d+/g).join());
return buildNumber;
});
}
/**
* Execute `xcrun agvtool what-marketing-version` and parse returned value
* @returns version name like "1.2.3"
*/
getVersionName() {
return __awaiter(this, void 0, void 0, function* () {
const result = this.exec('xcrun agvtool what-marketing-version');
const phrase = 'Found CFBundleShortVersionString of "';
const startIndex = result.indexOf(phrase);
const endIndex = result.indexOf('"', startIndex + phrase.length + 1);
const version = result.substring(startIndex + phrase.length, endIndex);
return version;
});
}
exec(command) {
const result = shelljs_1.default.cd(this.iosDirectory).exec(command, { silent: true, fatal: true });
if (result.code != 0) {
throw result.stdout;
}
return result;
}
}
exports.IOSPlatform = IOSPlatform;
//# sourceMappingURL=IOSPlatform.js.map