UNPKG

@lamantin/fastpush

Version:

Typed fastlane frontend for pushing builds to store

148 lines 6.82 kB
"use strict"; 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.publish = exports.defaultHooks = void 0; const shelljs_1 = __importDefault(require("shelljs")); const utils_1 = require("./cli/utils"); const fastlane_1 = require("./fastlane"); const android_1 = require("./fastlane/android"); const gym_1 = require("./fastlane/ios/gym"); const match_1 = require("./fastlane/ios/match"); const pilot_1 = require("./fastlane/ios/pilot"); const incrementPackageJson_1 = require("./utils/increment/incrementPackageJson"); const platform_1 = require("./utils/platform"); const AndroidPlatform_1 = require("./utils/platform/AndroidPlatform"); const ui_1 = require("./ui"); const utils_2 = require("./utils"); const git_1 = require("./utils/git/git"); exports.defaultHooks = { onFinish: null, onStart: (options) => __awaiter(void 0, void 0, void 0, function* () { if (options.env) { if (!options.silent) { ui_1.ui.message('Add environment file:' + options.env); } utils_2.env.add(options.env); } if (options.silent) { // don't assert clean // don't assert environment } else { yield git_1.git.assertClean(); yield utils_2.env.assert(); } }), provideAndroidLanes: (options) => { const buildPayload = { build_type: 'Release', }; if (options.flavor) { // const flavorCapitalized = options.flavor.charAt(0).toUpperCase() + options.flavor.substring(1) buildPayload.flavor = options.flavor; } return [ android_1.gradle('clean'), // todo: validate GradleArgTask android_1.gradle(options.build, buildPayload), android_1.supply({ track: options.track, skip_upload_changelogs: options.skip, skip_upload_images: options.skip, skip_upload_metadata: options.skip, skip_upload_screenshots: options.skip, }), ]; }, provideIOSLanes: (options) => { return [ match_1.match('appstore'), gym_1.gym({ clean: true, scheme: options.scheme }), pilot_1.pilot({ skip_waiting_for_build_processing: true, skip_submission: true }), ]; }, onPostPublish: (platform, versions, buildNumbers) => __awaiter(void 0, void 0, void 0, function* () { const [oldVersion, version] = versions; const [oldBuild, build] = buildNumbers; const tag = `${platform.type}/${version}-${build}`; const whoami = process.env.USER || ''; git_1.git.commit(`Up version ${tag}`); git_1.git.tag(tag, `Up version by ${whoami}`); git_1.git.push(); }), }; function publish(options, passedHooks) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function* () { ui_1.ui.success('==fastpush=='); ui_1.ui.success('Setup for project: ' + options.project); shelljs_1.default.cd(options.project); // child_process.execSync('cd ' + options.project) const hooks = Object.assign(Object.assign({}, exports.defaultHooks), passedHooks); yield ((_a = hooks.onStart) === null || _a === void 0 ? void 0 : _a.call(hooks, options)); let platforms = []; if (options.android) { platforms.push('android'); } if (options.ios) { platforms.push('ios'); } ui_1.ui.success(`Publishing for: [${platforms.join(', ')}]`); try { if (options.silent) { // don't apply changes to platforms if (!platforms || platforms.length <= 0) { throw 'You should specify at least 1 platform for processing: ' + platform_1.platformTypes; } } else { platforms = yield utils_1.assertPlatforms(platforms); } const [oldVersion, newVersion] = yield incrementPackageJson_1.incrementPackageJson(options.increment, `${options.project}/package.json`); ui_1.ui.success(`Up package.json version from [${oldVersion}] -> [${newVersion}]`); if (platforms.includes('android')) { const androidPlatform = new AndroidPlatform_1.AndroidPlatform(options.project); yield distribute(options, androidPlatform, newVersion, hooks); } if (platforms.includes('ios')) { yield distribute(options, new platform_1.IOSPlatform(options.project), newVersion, hooks); } yield ((_b = hooks.onFinish) === null || _b === void 0 ? void 0 : _b.call(hooks)); } catch (e) { yield ((_c = hooks.onError) === null || _c === void 0 ? void 0 : _c.call(hooks, e)); } }); } exports.publish = publish; function distribute(options, platform, version, hooks) { var _a; return __awaiter(this, void 0, void 0, function* () { const [oldBuildNumber, newBuildNumber] = yield platform.incrementBuildNumber(); ui_1.ui.success(`Update ${platform.type} versionCode [${oldBuildNumber}] -> [${newBuildNumber}]`); const [oldVersion, newVersion] = yield platform.setVersionName(version); ui_1.ui.success(`Update ${platform.type} versionName [${oldVersion}] -> [${newVersion}]`); if (platform.type === 'ios') { yield fastlane_1.ios(hooks.provideIOSLanes(options), options.project); } else if (platform.type === 'android') { yield android_1.android(hooks.provideAndroidLanes(options), options.project); } else { throw `Unexpected platform type ${platform.type}`; } yield ((_a = hooks.onPostPublish) === null || _a === void 0 ? void 0 : _a.call(hooks, platform, [oldVersion, newVersion], [oldBuildNumber, newBuildNumber])); }); } //# sourceMappingURL=publish.js.map