expo-release-it 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,33 +1,39 @@
1
- import { select } from '@inquirer/prompts';
2
- import { prepareAndroid } from '../util/setup/prepareAndroid';
3
- import { setup } from '../util/setup/setup';
4
- import { prepareIos } from '../util/setup/prepareIos';
5
- import { logger } from '../util/logger';
6
- import { OptionHolder } from '../util/OptionHolder';
7
- import { spinner, $ } from 'zx';
8
- import { resolve, remove } from '../util/FileUtil';
9
- import chalk from 'chalk';
10
- import { calculateElapsed } from '../util/calculateElapsed';
11
- import { isWin } from '../util/EnvUtil';
12
- export async function build({ options }) {
13
- Object.assign(OptionHolder.build, options);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.build = build;
7
+ const prompts_1 = require("@inquirer/prompts");
8
+ const prepareAndroid_1 = require("../util/setup/prepareAndroid");
9
+ const setup_1 = require("../util/setup/setup");
10
+ const prepareIos_1 = require("../util/setup/prepareIos");
11
+ const logger_1 = require("../util/logger");
12
+ const OptionHolder_1 = require("../util/OptionHolder");
13
+ const zx_1 = require("zx");
14
+ const FileUtil_1 = require("../util/FileUtil");
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ const calculateElapsed_1 = require("../util/calculateElapsed");
17
+ const EnvUtil_1 = require("../util/EnvUtil");
18
+ async function build({ options }) {
19
+ Object.assign(OptionHolder_1.OptionHolder.build, options);
14
20
  const startTime = Date.now();
15
- await setup();
21
+ await (0, setup_1.setup)();
16
22
  await promptInputs();
17
- logger.info('Build Started');
18
- logger.info(`Version: ${OptionHolder.versionName}(${OptionHolder.versionCode})`);
19
- if (OptionHolder.build.platform === 'ios') {
23
+ logger_1.logger.info('Build Started');
24
+ logger_1.logger.info(`Version: ${OptionHolder_1.OptionHolder.versionName}(${OptionHolder_1.OptionHolder.versionCode})`);
25
+ if (OptionHolder_1.OptionHolder.build.platform === 'ios') {
20
26
  await buildIos();
21
- logger.success(`iOS Build ${chalk.bold.inverse(calculateElapsed(startTime))}`);
27
+ logger_1.logger.success(`iOS Build ${chalk_1.default.bold.inverse((0, calculateElapsed_1.calculateElapsed)(startTime))}`);
22
28
  }
23
29
  else {
24
30
  await buildAndroid();
25
- logger.success(`Android Build ${chalk.bold.inverse(calculateElapsed(startTime))}`);
31
+ logger_1.logger.success(`Android Build ${chalk_1.default.bold.inverse((0, calculateElapsed_1.calculateElapsed)(startTime))}`);
26
32
  }
27
33
  }
28
34
  async function promptInputs() {
29
- if (!OptionHolder.build.platform) {
30
- OptionHolder.build.platform = await select({
35
+ if (!OptionHolder_1.OptionHolder.build.platform) {
36
+ OptionHolder_1.OptionHolder.build.platform = await (0, prompts_1.select)({
31
37
  message: 'Platform to release',
32
38
  choices: [
33
39
  { name: 'ios', value: 'ios', description: 'Release ios' },
@@ -35,8 +41,8 @@ async function promptInputs() {
35
41
  ],
36
42
  });
37
43
  }
38
- if (OptionHolder.build.platform === 'ios') {
39
- OptionHolder.build.pod = await select({
44
+ if (OptionHolder_1.OptionHolder.build.platform === 'ios') {
45
+ OptionHolder_1.OptionHolder.build.pod = await (0, prompts_1.select)({
40
46
  message: 'Install Cocoapods',
41
47
  choices: [
42
48
  { name: 'yes', value: true, description: 'Install pods before release' },
@@ -46,36 +52,36 @@ async function promptInputs() {
46
52
  }
47
53
  }
48
54
  async function buildIos() {
49
- const iosDir = resolve(OptionHolder.rootDir, 'ios');
50
- const $$ = $({
55
+ const iosDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'ios');
56
+ const $$ = (0, zx_1.$)({
51
57
  verbose: false,
52
58
  cwd: iosDir,
53
59
  env: {
54
- MATCH_PASSWORD: OptionHolder.keyholderFileValueMap.ios_match_password,
60
+ MATCH_PASSWORD: OptionHolder_1.OptionHolder.keyholderFileValueMap.ios_match_password,
55
61
  },
56
62
  });
57
- await prepareIos();
63
+ await (0, prepareIos_1.prepareIos)();
58
64
  await fastlane();
59
65
  async function fastlane() {
60
- await spinner('Bundler Install', () => $$ `bundle install`);
61
- logger.success('Bundler Install');
62
- if (OptionHolder.build.pod) {
63
- await spinner('Pod Install', () => $$ `bundle exec pod install`);
64
- logger.success('Pod Install');
66
+ await (0, zx_1.spinner)('Bundler Install', () => $$ `bundle install`);
67
+ logger_1.logger.success('Bundler Install');
68
+ if (OptionHolder_1.OptionHolder.build.pod) {
69
+ await (0, zx_1.spinner)('Pod Install', () => $$ `bundle exec pod install`);
70
+ logger_1.logger.success('Pod Install');
65
71
  }
66
- remove(resolve(iosDir, '.xcode.env.local'));
67
- await spinner('Fastlane', () => $$ `bundle exec fastlane build version_name:${OptionHolder.versionName} version_code:${OptionHolder.versionCode}`);
72
+ (0, FileUtil_1.remove)((0, FileUtil_1.resolve)(iosDir, '.xcode.env.local'));
73
+ await (0, zx_1.spinner)('Fastlane', () => $$ `bundle exec fastlane build version_name:${OptionHolder_1.OptionHolder.versionName} version_code:${OptionHolder_1.OptionHolder.versionCode}`);
68
74
  }
69
75
  }
70
76
  async function buildAndroid() {
71
- const $$ = $({
77
+ const $$ = (0, zx_1.$)({
72
78
  verbose: false,
73
- cwd: resolve(OptionHolder.rootDir, 'android'),
79
+ cwd: (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'android'),
74
80
  });
75
- await prepareAndroid();
81
+ await (0, prepareAndroid_1.prepareAndroid)();
76
82
  await fastlane();
77
83
  async function fastlane() {
78
- await spinner('Bundler Install', () => $$ `bundle install`);
79
- await spinner('Bundle AAB', () => $$ `${isWin ? 'gradle.bat' : './gradlew'} app:bundleRelease`);
84
+ await (0, zx_1.spinner)('Bundler Install', () => $$ `bundle install`);
85
+ await (0, zx_1.spinner)('Bundle AAB', () => $$ `${EnvUtil_1.isWin ? 'gradle.bat' : './gradlew'} app:bundleRelease`);
80
86
  }
81
87
  }
@@ -1,38 +1,44 @@
1
- import { injectBinaryVersions } from '../util/VersionUtil';
2
- import { throwError } from '../util/throwError';
3
- import { logger } from '../util/logger';
4
- import { OptionHolder } from '../util/OptionHolder';
5
- import semver from 'semver';
6
- import { isDev } from '../util/EnvUtil';
7
- import { $ } from 'zx';
8
- import { setup } from '../util/setup/setup';
9
- export async function bump({ options }) {
10
- Object.assign(OptionHolder.bump, options);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.bump = bump;
7
+ const VersionUtil_1 = require("../util/VersionUtil");
8
+ const throwError_1 = require("../util/throwError");
9
+ const logger_1 = require("../util/logger");
10
+ const OptionHolder_1 = require("../util/OptionHolder");
11
+ const semver_1 = __importDefault(require("semver"));
12
+ const EnvUtil_1 = require("../util/EnvUtil");
13
+ const zx_1 = require("zx");
14
+ const setup_1 = require("../util/setup/setup");
15
+ async function bump({ options }) {
16
+ Object.assign(OptionHolder_1.OptionHolder.bump, options);
11
17
  await preCheck();
12
- await setup();
13
- logger.info(`current version: ${OptionHolder.versionName}(${OptionHolder.versionCode})`);
14
- const nextVersionName = semver.inc(OptionHolder.versionName, 'patch');
15
- const nextVersionCode = Number(OptionHolder.versionCode) + 1 + '';
16
- logger.info(`next version: ${nextVersionName}(${nextVersionCode})`);
17
- await injectBinaryVersions({ versionName: nextVersionName, versionCode: nextVersionCode });
18
- logger.success('Binary versions have been bumped in expo config file');
18
+ await (0, setup_1.setup)();
19
+ logger_1.logger.info(`current version: ${OptionHolder_1.OptionHolder.versionName}(${OptionHolder_1.OptionHolder.versionCode})`);
20
+ const nextVersionName = semver_1.default.inc(OptionHolder_1.OptionHolder.versionName, 'patch');
21
+ const nextVersionCode = Number(OptionHolder_1.OptionHolder.versionCode) + 1 + '';
22
+ logger_1.logger.info(`next version: ${nextVersionName}(${nextVersionCode})`);
23
+ await (0, VersionUtil_1.injectBinaryVersions)({ versionName: nextVersionName, versionCode: nextVersionCode });
24
+ logger_1.logger.success('Binary versions have been bumped in expo config file');
19
25
  }
20
26
  async function preCheck() {
21
- if (isDev)
27
+ if (EnvUtil_1.isDev)
22
28
  return;
23
29
  try {
24
30
  let hasChange = false;
25
31
  try {
26
- await $ `git diff --quiet HEAD`;
32
+ await (0, zx_1.$) `git diff --quiet HEAD`;
27
33
  }
28
34
  catch (_) {
29
35
  hasChange = true;
30
36
  }
31
37
  if (hasChange) {
32
- throwError('Workspace is not clean. Before bump version, you should commit all changes.');
38
+ (0, throwError_1.throwError)('Workspace is not clean. Before bump version, you should commit all changes.');
33
39
  }
34
40
  }
35
41
  catch (e) {
36
- throwError('Precheck Failed', e);
42
+ (0, throwError_1.throwError)('Precheck Failed', e);
37
43
  }
38
44
  }
@@ -1,100 +1,106 @@
1
- import { OptionHolder } from '../util/OptionHolder';
2
- import { logger } from '../util/logger';
3
- import chalk from 'chalk';
4
- import { input } from '@inquirer/prompts';
5
- import { iterateAllFilesInGeneratedTemplate } from '../util/iterateAllFilesInGeneratedTemplate';
6
- import { isDev } from '../util/EnvUtil';
7
- import { parseBinaryVersions } from '../util/VersionUtil';
8
- import { promptCommonInputs } from '../util/setup/promptCommonInputs';
9
- import { exist, remove, copy, read, write, join, writeJson } from '../util/FileUtil';
10
- import { path } from 'zx';
11
- export async function init({ options }) {
12
- Object.assign(OptionHolder.init, options);
13
- logger.info(`${chalk.inverse('expo-local-build')}`);
14
- await promptCommonInputs();
15
- await parseBinaryVersions();
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.init = init;
7
+ const OptionHolder_1 = require("../util/OptionHolder");
8
+ const logger_1 = require("../util/logger");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const prompts_1 = require("@inquirer/prompts");
11
+ const iterateAllFilesInGeneratedTemplate_1 = require("../util/iterateAllFilesInGeneratedTemplate");
12
+ const EnvUtil_1 = require("../util/EnvUtil");
13
+ const VersionUtil_1 = require("../util/VersionUtil");
14
+ const promptCommonInputs_1 = require("../util/setup/promptCommonInputs");
15
+ const FileUtil_1 = require("../util/FileUtil");
16
+ const zx_1 = require("zx");
17
+ async function init({ options }) {
18
+ Object.assign(OptionHolder_1.OptionHolder.init, options);
19
+ logger_1.logger.info(`${chalk_1.default.inverse('expo-local-build')}`);
20
+ await (0, promptCommonInputs_1.promptCommonInputs)();
21
+ await (0, VersionUtil_1.parseBinaryVersions)();
16
22
  await promptInputs();
17
23
  await copyTemplates();
18
24
  await injectPlaceHolders();
19
- logger.success('expo-local-build init success');
25
+ logger_1.logger.success('expo-local-build init success');
20
26
  }
21
27
  async function promptInputs() {
22
28
  /* ios */
23
- OptionHolder.iosBundleIdentifier = OptionHolder.templateValuePlaceholderMap.ios_app_identifier =
24
- await input({
29
+ OptionHolder_1.OptionHolder.iosBundleIdentifier = OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_app_identifier =
30
+ await (0, prompts_1.input)({
25
31
  message: 'IOS Bundle Identifier',
26
32
  required: true,
27
- default: isDev ? 'ios_app_identifier' : undefined,
33
+ default: EnvUtil_1.isDev ? 'ios_app_identifier' : undefined,
28
34
  });
29
- OptionHolder.templateValuePlaceholderMap.ios_app_store_connect_team_id = await input({
35
+ OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_app_store_connect_team_id = await (0, prompts_1.input)({
30
36
  message: 'IOS App Store Connect Team Id',
31
- default: isDev ? 'ios_app_store_connect_team_id' : undefined,
37
+ default: EnvUtil_1.isDev ? 'ios_app_store_connect_team_id' : undefined,
32
38
  });
33
- OptionHolder.templateValuePlaceholderMap.ios_developer_team_id = await input({
39
+ OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_developer_team_id = await (0, prompts_1.input)({
34
40
  message: 'IOS Developer Portal Team Id',
35
- default: isDev ? 'ios_developer_team_id' : undefined,
41
+ default: EnvUtil_1.isDev ? 'ios_developer_team_id' : undefined,
36
42
  });
37
- OptionHolder.templateValuePlaceholderMap.ios_match_git_url = await input({
43
+ OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_match_git_url = await (0, prompts_1.input)({
38
44
  message: 'IOS Match Key Storage Github URL',
39
- default: isDev ? 'ios_match_git_url' : undefined,
45
+ default: EnvUtil_1.isDev ? 'ios_match_git_url' : undefined,
40
46
  });
41
- OptionHolder.keyholderFileValueMap.ios_match_password = await input({
47
+ OptionHolder_1.OptionHolder.keyholderFileValueMap.ios_match_password = await (0, prompts_1.input)({
42
48
  message: 'IOS Match Password',
43
- default: isDev ? 'ios_match_password' : undefined,
49
+ default: EnvUtil_1.isDev ? 'ios_match_password' : undefined,
44
50
  });
45
- OptionHolder.templateValuePlaceholderMap.ios_app_store_connect_api_key_id = await input({
51
+ OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_app_store_connect_api_key_id = await (0, prompts_1.input)({
46
52
  message: 'IOS App Store Connect Api Key Id',
47
- default: isDev ? 'ios_app_store_connect_api_key_id' : undefined,
53
+ default: EnvUtil_1.isDev ? 'ios_app_store_connect_api_key_id' : undefined,
48
54
  });
49
- OptionHolder.templateValuePlaceholderMap.ios_app_store_connect_api_key_issuer_id = await input({
55
+ OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_app_store_connect_api_key_issuer_id = await (0, prompts_1.input)({
50
56
  message: 'IOS App Store Connect Api Key Issuer Id',
51
- default: isDev ? 'ios_app_store_connect_api_key_issuer_id' : undefined,
57
+ default: EnvUtil_1.isDev ? 'ios_app_store_connect_api_key_issuer_id' : undefined,
52
58
  });
53
- OptionHolder.templateValuePlaceholderMap.ios_xcode_project_target = await input({
59
+ OptionHolder_1.OptionHolder.templateValuePlaceholderMap.ios_xcode_project_target = await (0, prompts_1.input)({
54
60
  message: 'IOS Xcode Target Name',
55
61
  default: 'app',
56
62
  });
57
63
  /* android */
58
- OptionHolder.androidPackageName = OptionHolder.templateValuePlaceholderMap.android_package_name =
59
- await input({
64
+ OptionHolder_1.OptionHolder.androidPackageName = OptionHolder_1.OptionHolder.templateValuePlaceholderMap.android_package_name =
65
+ await (0, prompts_1.input)({
60
66
  message: 'Android Package Name',
61
- default: isDev ? 'android_package_name' : undefined,
67
+ default: EnvUtil_1.isDev ? 'android_package_name' : undefined,
62
68
  });
63
- OptionHolder.keyholderFileValueMap.android_keystore_store_password = await input({
69
+ OptionHolder_1.OptionHolder.keyholderFileValueMap.android_keystore_store_password = await (0, prompts_1.input)({
64
70
  message: 'Android Keystore Store Password',
65
- default: isDev ? 'android_keystore_store_password' : undefined,
71
+ default: EnvUtil_1.isDev ? 'android_keystore_store_password' : undefined,
66
72
  });
67
- OptionHolder.keyholderFileValueMap.android_keystore_key_alias = await input({
73
+ OptionHolder_1.OptionHolder.keyholderFileValueMap.android_keystore_key_alias = await (0, prompts_1.input)({
68
74
  message: 'Android Keystore Key Alias',
69
- default: isDev ? 'android_keystore_key_alias' : undefined,
75
+ default: EnvUtil_1.isDev ? 'android_keystore_key_alias' : undefined,
70
76
  });
71
- OptionHolder.keyholderFileValueMap.android_keystore_key_password = await input({
77
+ OptionHolder_1.OptionHolder.keyholderFileValueMap.android_keystore_key_password = await (0, prompts_1.input)({
72
78
  message: 'Android Keystore Key Password',
73
- default: isDev ? 'android_keystore_key_password' : undefined,
79
+ default: EnvUtil_1.isDev ? 'android_keystore_key_password' : undefined,
74
80
  });
75
- writeJson(OptionHolder.keyholderFilePath, OptionHolder.keyholderFileValueMap);
81
+ (0, FileUtil_1.writeJson)(OptionHolder_1.OptionHolder.keyholderFilePath, OptionHolder_1.OptionHolder.keyholderFileValueMap);
76
82
  }
77
83
  async function copyTemplates() {
78
- for (const dir of OptionHolder.templateDirNames) {
84
+ for (const dir of OptionHolder_1.OptionHolder.templateDirNames) {
79
85
  await copyDirRecursively(dir);
80
86
  }
81
87
  async function copyDirRecursively(dir) {
82
- const sourceDirPath = join(OptionHolder.cli.templateDir, dir);
83
- const destDirPath = join(OptionHolder.outDir, dir);
84
- if (exist(destDirPath)) {
85
- remove(destDirPath);
88
+ const sourceDirPath = (0, FileUtil_1.join)(OptionHolder_1.OptionHolder.cli.templateDir, dir);
89
+ const destDirPath = (0, FileUtil_1.join)(OptionHolder_1.OptionHolder.outDir, dir);
90
+ if ((0, FileUtil_1.exist)(destDirPath)) {
91
+ (0, FileUtil_1.remove)(destDirPath);
86
92
  }
87
- copy(sourceDirPath, destDirPath);
93
+ (0, FileUtil_1.copy)(sourceDirPath, destDirPath);
88
94
  }
89
95
  }
90
96
  async function injectPlaceHolders() {
91
- await iterateAllFilesInGeneratedTemplate(async (filePath) => {
92
- let content = read(filePath);
93
- for (const [key, value] of Object.entries(OptionHolder.templateValuePlaceholderMap)) {
97
+ await (0, iterateAllFilesInGeneratedTemplate_1.iterateAllFilesInGeneratedTemplate)(async (filePath) => {
98
+ let content = (0, FileUtil_1.read)(filePath);
99
+ for (const [key, value] of Object.entries(OptionHolder_1.OptionHolder.templateValuePlaceholderMap)) {
94
100
  content = content.replaceAll(`{{${key}}}`, value);
95
101
  }
96
102
  // dynamic replace
97
- content = content.replaceAll('{{key_dir_relative_path}}', path.relative(filePath, OptionHolder.keyDir));
98
- write(filePath, content);
103
+ content = content.replaceAll('{{key_dir_relative_path}}', zx_1.path.relative(filePath, OptionHolder_1.OptionHolder.keyDir));
104
+ (0, FileUtil_1.write)(filePath, content);
99
105
  });
100
106
  }
@@ -1,32 +1,38 @@
1
- import { setup } from '../util/setup/setup';
2
- import { select } from '@inquirer/prompts';
3
- import { logger } from '../util/logger';
4
- import { OptionHolder } from '../util/OptionHolder';
5
- import chalk from 'chalk';
6
- import { calculateElapsed } from '../util/calculateElapsed';
7
- import { spinner, $ } from 'zx';
8
- import { prepareAndroid } from '../util/setup/prepareAndroid';
9
- import { remove, resolve } from '../util/FileUtil';
10
- import { prepareIos } from '../util/setup/prepareIos';
11
- export async function submit({ options }) {
12
- Object.assign(OptionHolder.submit, options);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.submit = submit;
7
+ const setup_1 = require("../util/setup/setup");
8
+ const prompts_1 = require("@inquirer/prompts");
9
+ const logger_1 = require("../util/logger");
10
+ const OptionHolder_1 = require("../util/OptionHolder");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const calculateElapsed_1 = require("../util/calculateElapsed");
13
+ const zx_1 = require("zx");
14
+ const prepareAndroid_1 = require("../util/setup/prepareAndroid");
15
+ const FileUtil_1 = require("../util/FileUtil");
16
+ const prepareIos_1 = require("../util/setup/prepareIos");
17
+ async function submit({ options }) {
18
+ Object.assign(OptionHolder_1.OptionHolder.submit, options);
13
19
  const startTime = Date.now();
14
- await setup();
20
+ await (0, setup_1.setup)();
15
21
  await promptInputs();
16
- logger.info('Submit Started');
17
- logger.info(`Version: ${OptionHolder.versionName}(${OptionHolder.versionCode})`);
18
- if (OptionHolder.submit.platform === 'ios') {
22
+ logger_1.logger.info('Submit Started');
23
+ logger_1.logger.info(`Version: ${OptionHolder_1.OptionHolder.versionName}(${OptionHolder_1.OptionHolder.versionCode})`);
24
+ if (OptionHolder_1.OptionHolder.submit.platform === 'ios') {
19
25
  await submitIos();
20
- logger.success(`Appstore Review Submitted ${chalk.bold.inverse(calculateElapsed(startTime))}`);
26
+ logger_1.logger.success(`Appstore Review Submitted ${chalk_1.default.bold.inverse((0, calculateElapsed_1.calculateElapsed)(startTime))}`);
21
27
  }
22
28
  else {
23
29
  await submitAndroid();
24
- logger.success(`Playstore Review Submitted ${chalk.bold.inverse(calculateElapsed(startTime))}`);
30
+ logger_1.logger.success(`Playstore Review Submitted ${chalk_1.default.bold.inverse((0, calculateElapsed_1.calculateElapsed)(startTime))}`);
25
31
  }
26
32
  }
27
33
  async function promptInputs() {
28
- if (!OptionHolder.submit.platform) {
29
- OptionHolder.submit.platform = await select({
34
+ if (!OptionHolder_1.OptionHolder.submit.platform) {
35
+ OptionHolder_1.OptionHolder.submit.platform = await (0, prompts_1.select)({
30
36
  message: 'Platform to submit',
31
37
  choices: [
32
38
  { name: 'ios', value: 'ios', description: 'Release ios' },
@@ -36,30 +42,30 @@ async function promptInputs() {
36
42
  }
37
43
  }
38
44
  async function submitAndroid() {
39
- const $$ = $({
45
+ const $$ = (0, zx_1.$)({
40
46
  verbose: false,
41
- cwd: resolve(OptionHolder.rootDir, 'android'),
47
+ cwd: (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'android'),
42
48
  });
43
- await prepareAndroid();
49
+ await (0, prepareAndroid_1.prepareAndroid)();
44
50
  await fastlane();
45
51
  async function fastlane() {
46
- await spinner('Bundler Install', () => $$ `bundle install`);
47
- logger.success('Bundler Install');
48
- await spinner('Fastlane', () => $$ `bundle exec fastlane submit_playstore_review version_name:${OptionHolder.versionName} version_code:${OptionHolder.versionCode}`);
52
+ await (0, zx_1.spinner)('Bundler Install', () => $$ `bundle install`);
53
+ logger_1.logger.success('Bundler Install');
54
+ await (0, zx_1.spinner)('Fastlane', () => $$ `bundle exec fastlane submit_playstore_review version_name:${OptionHolder_1.OptionHolder.versionName} version_code:${OptionHolder_1.OptionHolder.versionCode}`);
49
55
  }
50
56
  }
51
57
  async function submitIos() {
52
- const iosDir = resolve(OptionHolder.rootDir, 'ios');
53
- const $$ = $({
58
+ const iosDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'ios');
59
+ const $$ = (0, zx_1.$)({
54
60
  verbose: false,
55
61
  cwd: iosDir,
56
62
  });
57
- await prepareIos();
63
+ await (0, prepareIos_1.prepareIos)();
58
64
  await fastlane();
59
65
  async function fastlane() {
60
- await spinner('Bundler Install', () => $$ `bundle install`);
61
- logger.success('Bundler Install');
62
- remove(resolve(iosDir, '.xcode.env.local'));
63
- await spinner('Fastlane', () => $$ `bundle exec fastlane submit_appstore_review version_name:${OptionHolder.versionName} version_code:${OptionHolder.versionCode}`);
66
+ await (0, zx_1.spinner)('Bundler Install', () => $$ `bundle install`);
67
+ logger_1.logger.success('Bundler Install');
68
+ (0, FileUtil_1.remove)((0, FileUtil_1.resolve)(iosDir, '.xcode.env.local'));
69
+ await (0, zx_1.spinner)('Fastlane', () => $$ `bundle exec fastlane submit_appstore_review version_name:${OptionHolder_1.OptionHolder.versionName} version_code:${OptionHolder_1.OptionHolder.versionCode}`);
64
70
  }
65
71
  }
@@ -1,32 +1,38 @@
1
- import { select } from '@inquirer/prompts';
2
- import { prepareAndroid } from '../util/setup/prepareAndroid';
3
- import { setup } from '../util/setup/setup';
4
- import { prepareIos } from '../util/setup/prepareIos';
5
- import { logger } from '../util/logger';
6
- import { OptionHolder } from '../util/OptionHolder';
7
- import { spinner, $ } from 'zx';
8
- import { resolve } from '../util/FileUtil';
9
- import chalk from 'chalk';
10
- import { calculateElapsed } from '../util/calculateElapsed';
11
- export async function upload({ options }) {
12
- Object.assign(OptionHolder.upload, options);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.upload = upload;
7
+ const prompts_1 = require("@inquirer/prompts");
8
+ const prepareAndroid_1 = require("../util/setup/prepareAndroid");
9
+ const setup_1 = require("../util/setup/setup");
10
+ const prepareIos_1 = require("../util/setup/prepareIos");
11
+ const logger_1 = require("../util/logger");
12
+ const OptionHolder_1 = require("../util/OptionHolder");
13
+ const zx_1 = require("zx");
14
+ const FileUtil_1 = require("../util/FileUtil");
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ const calculateElapsed_1 = require("../util/calculateElapsed");
17
+ async function upload({ options }) {
18
+ Object.assign(OptionHolder_1.OptionHolder.upload, options);
13
19
  const startTime = Date.now();
14
- await setup();
20
+ await (0, setup_1.setup)();
15
21
  await promptInputs();
16
- logger.info('Build & Upload Started');
17
- logger.info(`Version: ${OptionHolder.versionName}(${OptionHolder.versionCode})`);
18
- if (OptionHolder.upload.platform === 'ios') {
22
+ logger_1.logger.info('Build & Upload Started');
23
+ logger_1.logger.info(`Version: ${OptionHolder_1.OptionHolder.versionName}(${OptionHolder_1.OptionHolder.versionCode})`);
24
+ if (OptionHolder_1.OptionHolder.upload.platform === 'ios') {
19
25
  await uploadIos();
20
- logger.success(`iOS Upload ${chalk.bold.inverse(calculateElapsed(startTime))}`);
26
+ logger_1.logger.success(`iOS Upload ${chalk_1.default.bold.inverse((0, calculateElapsed_1.calculateElapsed)(startTime))}`);
21
27
  }
22
28
  else {
23
29
  await uploadAndroid();
24
- logger.success(`Android Upload ${chalk.bold.inverse(calculateElapsed(startTime))}`);
30
+ logger_1.logger.success(`Android Upload ${chalk_1.default.bold.inverse((0, calculateElapsed_1.calculateElapsed)(startTime))}`);
25
31
  }
26
32
  }
27
33
  async function promptInputs() {
28
- if (!OptionHolder.upload.platform) {
29
- OptionHolder.upload.platform = await select({
34
+ if (!OptionHolder_1.OptionHolder.upload.platform) {
35
+ OptionHolder_1.OptionHolder.upload.platform = await (0, prompts_1.select)({
30
36
  message: 'Platform to release',
31
37
  choices: [
32
38
  { name: 'ios', value: 'ios', description: 'Release ios' },
@@ -36,32 +42,32 @@ async function promptInputs() {
36
42
  }
37
43
  }
38
44
  async function uploadIos() {
39
- const iosDir = resolve(OptionHolder.rootDir, 'ios');
40
- const $$ = $({
45
+ const iosDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'ios');
46
+ const $$ = (0, zx_1.$)({
41
47
  verbose: false,
42
48
  cwd: iosDir,
43
49
  env: {
44
- MATCH_PASSWORD: OptionHolder.keyholderFileValueMap.ios_match_password,
50
+ MATCH_PASSWORD: OptionHolder_1.OptionHolder.keyholderFileValueMap.ios_match_password,
45
51
  },
46
52
  });
47
- await prepareIos();
53
+ await (0, prepareIos_1.prepareIos)();
48
54
  await fastlane();
49
55
  async function fastlane() {
50
- await spinner('Bundler Install', () => $$ `bundle install`);
51
- logger.success('Bundler Install');
52
- await spinner('Fastlane', () => $$ `bundle exec fastlane upload version_name:${OptionHolder.versionName} version_code:${OptionHolder.versionCode}`);
56
+ await (0, zx_1.spinner)('Bundler Install', () => $$ `bundle install`);
57
+ logger_1.logger.success('Bundler Install');
58
+ await (0, zx_1.spinner)('Fastlane', () => $$ `bundle exec fastlane upload version_name:${OptionHolder_1.OptionHolder.versionName} version_code:${OptionHolder_1.OptionHolder.versionCode}`);
53
59
  }
54
60
  }
55
61
  async function uploadAndroid() {
56
- const $$ = $({
62
+ const $$ = (0, zx_1.$)({
57
63
  verbose: false,
58
- cwd: resolve(OptionHolder.rootDir, 'android'),
64
+ cwd: (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'android'),
59
65
  });
60
- await prepareAndroid();
66
+ await (0, prepareAndroid_1.prepareAndroid)();
61
67
  await fastlane();
62
68
  async function fastlane() {
63
- await spinner('Bundler Install', () => $$ `bundle install`);
64
- logger.success('Bundler Install');
65
- await spinner('Fastlane Supply', () => $$ `bundle exec fastlane deploy version_name:${OptionHolder.versionName} version_code:${OptionHolder.versionCode}`);
69
+ await (0, zx_1.spinner)('Bundler Install', () => $$ `bundle install`);
70
+ logger_1.logger.success('Bundler Install');
71
+ await (0, zx_1.spinner)('Fastlane Supply', () => $$ `bundle exec fastlane deploy version_name:${OptionHolder_1.OptionHolder.versionName} version_code:${OptionHolder_1.OptionHolder.versionCode}`);
66
72
  }
67
73
  }
package/build/index.js CHANGED
@@ -1,28 +1,30 @@
1
- import { Command, Option } from 'commander';
2
- import { init } from './command/init';
3
- import { OptionHolder } from './util/OptionHolder';
4
- import { logger } from './util/logger';
5
- import { bump } from './command/bump';
6
- import { upload } from './command/upload';
7
- import { submit } from './command/submit';
8
- const platformOption = new Option('-p --platform <platform>', 'Platform').choices([
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const commander_1 = require("commander");
4
+ const init_1 = require("./command/init");
5
+ const OptionHolder_1 = require("./util/OptionHolder");
6
+ const logger_1 = require("./util/logger");
7
+ const bump_1 = require("./command/bump");
8
+ const upload_1 = require("./command/upload");
9
+ const submit_1 = require("./command/submit");
10
+ const platformOption = new commander_1.Option('-p --platform <platform>', 'Platform').choices([
9
11
  'android',
10
12
  'ios',
11
13
  ]);
12
- const program = new Command();
14
+ const program = new commander_1.Command();
13
15
  program
14
16
  .name('expo-release-it')
15
17
  .description('Build & Upload & Submit locally for Expo project')
16
- .version(OptionHolder.cli.version);
18
+ .version(OptionHolder_1.OptionHolder.cli.version);
17
19
  program
18
20
  .command('init')
19
21
  .description('Initialize CLI utilities')
20
22
  .action(async (options) => {
21
23
  try {
22
- await init({ options });
24
+ await (0, init_1.init)({ options });
23
25
  }
24
26
  catch (e) {
25
- logger.error(e);
27
+ logger_1.logger.error(e);
26
28
  }
27
29
  });
28
30
  program
@@ -32,27 +34,27 @@ program
32
34
  // new Option('-i --increment <type>', 'increment type').choices(['major', 'minor', 'patch']),
33
35
  // )
34
36
  .action(async (options) => {
35
- await bump({ options });
37
+ await (0, bump_1.bump)({ options });
36
38
  });
37
39
  program
38
40
  .command('build')
39
41
  .description('Build binary')
40
42
  .addOption(platformOption)
41
43
  .action(async (options) => {
42
- await upload({ options });
44
+ await (0, upload_1.upload)({ options });
43
45
  });
44
46
  program
45
47
  .command('upload')
46
48
  .description('Upload artifact to play console internal test track(android) and testflight(ios)')
47
49
  .addOption(platformOption)
48
50
  .action(async (options) => {
49
- await upload({ options });
51
+ await (0, upload_1.upload)({ options });
50
52
  });
51
53
  program
52
54
  .command('submit')
53
55
  .description('Submit Google Play Console & App Store Connect Review with latest testing track')
54
56
  .addOption(platformOption)
55
57
  .action(async (options) => {
56
- await submit({ options });
58
+ await (0, submit_1.submit)({ options });
57
59
  });
58
60
  program.parse();
@@ -1,2 +1,5 @@
1
- export const isDev = process.env.NODE_ENV === 'development';
2
- export const isWin = process.platform.startsWith('win');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isWin = exports.isDev = void 0;
4
+ exports.isDev = process.env.NODE_ENV === 'development';
5
+ exports.isWin = process.platform.startsWith('win');
@@ -1,56 +1,106 @@
1
- import fs from 'fs-extra';
2
- import * as path from 'path';
3
- export const join = path.join;
4
- export const resolve = path.resolve;
5
- export const filename = path.basename(__filename);
6
- export function exist(path) {
7
- return fs.existsSync(path);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.filename = exports.resolve = exports.join = void 0;
40
+ exports.exist = exist;
41
+ exports.isDir = isDir;
42
+ exports.isFile = isFile;
43
+ exports.read = read;
44
+ exports.readdir = readdir;
45
+ exports.readJsonSlow = readJsonSlow;
46
+ exports.write = write;
47
+ exports.copy = copy;
48
+ exports.writeJson = writeJson;
49
+ exports.remove = remove;
50
+ exports.iterateDir = iterateDir;
51
+ const fs_extra_1 = __importDefault(require("fs-extra"));
52
+ const path = __importStar(require("path"));
53
+ exports.join = path.join;
54
+ exports.resolve = path.resolve;
55
+ exports.filename = path.basename(__filename);
56
+ function exist(path) {
57
+ return fs_extra_1.default.existsSync(path);
8
58
  }
9
- export function isDir(path) {
10
- return exist(path) && fs.lstatSync(path).isDirectory();
59
+ function isDir(path) {
60
+ return exist(path) && fs_extra_1.default.lstatSync(path).isDirectory();
11
61
  }
12
- export function isFile(path) {
13
- return exist(path) && fs.lstatSync(path).isFile();
62
+ function isFile(path) {
63
+ return exist(path) && fs_extra_1.default.lstatSync(path).isFile();
14
64
  }
15
- export function read(path) {
16
- return fs.readFileSync(path, { encoding: 'utf8' });
65
+ function read(path) {
66
+ return fs_extra_1.default.readFileSync(path, { encoding: 'utf8' });
17
67
  }
18
- export function readdir(path) {
19
- return fs.readdirSync(path);
68
+ function readdir(path) {
69
+ return fs_extra_1.default.readdirSync(path);
20
70
  }
21
71
  // you should require when possible(optimized in js)
22
- export function readJsonSlow(path) {
23
- return fs.readJSONSync(path);
72
+ function readJsonSlow(path) {
73
+ return fs_extra_1.default.readJSONSync(path);
24
74
  }
25
- export function write(p, content) {
75
+ function write(p, content) {
26
76
  const dir = path.dirname(p);
27
77
  if (!exist(dir)) {
28
- fs.mkdirSync(dir, { recursive: true });
78
+ fs_extra_1.default.mkdirSync(dir, { recursive: true });
29
79
  }
30
- return fs.writeFileSync(p, content);
80
+ return fs_extra_1.default.writeFileSync(p, content);
31
81
  }
32
- export function copy(src, dest) {
33
- fs.copySync(src, dest);
82
+ function copy(src, dest) {
83
+ fs_extra_1.default.copySync(src, dest);
34
84
  }
35
- export function writeJson(path, json) {
85
+ function writeJson(path, json) {
36
86
  return write(path, JSON.stringify(json, null, 2));
37
87
  }
38
- export function remove(path) {
88
+ function remove(path) {
39
89
  if (!exist(path)) {
40
90
  return;
41
91
  }
42
- if (fs.lstatSync(path).isDirectory()) {
43
- return fs.rmSync(path, { force: true, recursive: true });
92
+ if (fs_extra_1.default.lstatSync(path).isDirectory()) {
93
+ return fs_extra_1.default.rmSync(path, { force: true, recursive: true });
44
94
  }
45
95
  else {
46
- return fs.rmSync(path, { force: true });
96
+ return fs_extra_1.default.rmSync(path, { force: true });
47
97
  }
48
98
  }
49
- export async function iterateDir(path, fn) {
99
+ async function iterateDir(path, fn) {
50
100
  if (!isDir(path)) {
51
101
  return;
52
102
  }
53
- for (const file of fs.readdirSync(path)) {
103
+ for (const file of fs_extra_1.default.readdirSync(path)) {
54
104
  await fn(file);
55
105
  }
56
106
  }
@@ -1,9 +1,15 @@
1
- import chalk from 'chalk';
2
- export const logger = {
3
- success: (...msg) => console.log(chalk.green(`✔ ${msg.join(', ')}`)),
4
- error: (...msg) => console.log(chalk.red(`✖ ${msg.join(', ')}`)),
5
- warn: (...msg) => console.log(chalk.yellow(`⚠ ${msg.join(', ')}`)),
6
- info: (...msg) => console.log(chalk.cyan(`ℹ ${msg.join(', ')}`)),
7
- title: (...msg) => console.log(chalk.bold.blue(`\n${msg.join(', ')}`)),
8
- dim: (...msg) => console.log(chalk.dim(msg.join(', '))),
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logger = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ exports.logger = {
9
+ success: (...msg) => console.log(chalk_1.default.green(`✔ ${msg.join(', ')}`)),
10
+ error: (...msg) => console.log(chalk_1.default.red(`✖ ${msg.join(', ')}`)),
11
+ warn: (...msg) => console.log(chalk_1.default.yellow(`⚠ ${msg.join(', ')}`)),
12
+ info: (...msg) => console.log(chalk_1.default.cyan(`ℹ ${msg.join(', ')}`)),
13
+ title: (...msg) => console.log(chalk_1.default.bold.blue(`\n${msg.join(', ')}`)),
14
+ dim: (...msg) => console.log(chalk_1.default.dim(msg.join(', '))),
9
15
  };
@@ -1,15 +1,20 @@
1
- import pkgJson from '../../package.json';
2
- import { fileURLToPath } from 'url';
3
- import { resolve } from './FileUtil';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OptionHolder = void 0;
7
+ const package_json_1 = __importDefault(require("../../package.json"));
8
+ const FileUtil_1 = require("./FileUtil");
4
9
  /**
5
10
  * CLI Comprehensive options
6
11
  * Each values can be empty by command and timing.
7
12
  */
8
- export const OptionHolder = {
13
+ exports.OptionHolder = {
9
14
  cli: {
10
- version: pkgJson.version,
11
- rootDir: resolve(fileURLToPath(import.meta.url), '../../..'),
12
- templateDir: resolve(fileURLToPath(import.meta.url), '../../../template'),
15
+ version: package_json_1.default.version,
16
+ rootDir: (0, FileUtil_1.resolve)(__dirname, '../..'),
17
+ templateDir: (0, FileUtil_1.resolve)(__dirname, '../../template'),
13
18
  },
14
19
  init: {},
15
20
  bump: {},
@@ -1,9 +1,16 @@
1
- import { OptionHolder } from './OptionHolder';
2
- import { throwError } from './throwError';
3
- import semver from 'semver';
4
- import { readdir, read, readJsonSlow, write, writeJson, resolve } from './FileUtil';
5
- export async function parseBinaryVersions() {
6
- const files = readdir(OptionHolder.rootDir);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseBinaryVersions = parseBinaryVersions;
7
+ exports.injectBinaryVersions = injectBinaryVersions;
8
+ const OptionHolder_1 = require("./OptionHolder");
9
+ const throwError_1 = require("./throwError");
10
+ const semver_1 = __importDefault(require("semver"));
11
+ const FileUtil_1 = require("./FileUtil");
12
+ async function parseBinaryVersions() {
13
+ const files = (0, FileUtil_1.readdir)(OptionHolder_1.OptionHolder.rootDir);
7
14
  const jsConfigFiles = ['app.config.ts', 'app.config.js', 'app.config.cjs', 'app.config.mjs'];
8
15
  const jsonConfigFile = 'app.json';
9
16
  for (const jsConfigFile of jsConfigFiles) {
@@ -16,48 +23,48 @@ export async function parseBinaryVersions() {
16
23
  await parseFromJsonConfigFile(jsonConfigFile);
17
24
  return;
18
25
  }
19
- throwError('expo config file not found');
26
+ (0, throwError_1.throwError)('expo config file not found');
20
27
  async function parseFromJsConfigFile(filename) {
21
- const filePath = resolve(OptionHolder.rootDir, filename);
22
- const content = read(filePath);
28
+ const filePath = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, filename);
29
+ const content = (0, FileUtil_1.read)(filePath);
23
30
  const VERSION_NAME = /const VERSION_NAME = '(.*?)';/.exec(content)?.[1];
24
31
  const VERSION_CODE = /const VERSION_CODE = (.*?);/.exec(content)?.[1];
25
32
  if (!VERSION_NAME) {
26
- throwError('cannot parse version name');
33
+ (0, throwError_1.throwError)('cannot parse version name');
27
34
  }
28
35
  if (!VERSION_CODE) {
29
- throwError('cannot parse version code');
36
+ (0, throwError_1.throwError)('cannot parse version code');
30
37
  }
31
- if (!semver.valid(VERSION_NAME)) {
32
- throwError('VERSION_NAME is not a valid semver format');
38
+ if (!semver_1.default.valid(VERSION_NAME)) {
39
+ (0, throwError_1.throwError)('VERSION_NAME is not a valid semver format');
33
40
  }
34
- OptionHolder.versionName = VERSION_NAME;
35
- OptionHolder.versionCode = VERSION_CODE;
41
+ OptionHolder_1.OptionHolder.versionName = VERSION_NAME;
42
+ OptionHolder_1.OptionHolder.versionCode = VERSION_CODE;
36
43
  }
37
44
  async function parseFromJsonConfigFile(filename) {
38
- const filePath = resolve(OptionHolder.rootDir, filename);
39
- const json = readJsonSlow(filePath);
45
+ const filePath = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, filename);
46
+ const json = (0, FileUtil_1.readJsonSlow)(filePath);
40
47
  const versionName = json.expo?.version + '';
41
48
  const iosVersionCode = json.expo?.ios?.buildNumber + '';
42
49
  const androidVersionCode = json.expo?.android?.versionCode + '';
43
50
  if (!/\d+/.test(iosVersionCode)) {
44
- throwError('app.json expo.ios.buildNumber is not an integer');
51
+ (0, throwError_1.throwError)('app.json expo.ios.buildNumber is not an integer');
45
52
  }
46
53
  if (!/\d+/.test(androidVersionCode)) {
47
- throwError('app.json expo.android.versionCode is not an integer');
54
+ (0, throwError_1.throwError)('app.json expo.android.versionCode is not an integer');
48
55
  }
49
56
  if (iosVersionCode !== androidVersionCode) {
50
- throwError('app.json expo.ios.buildNumber is not equal with expo.android.versionCode');
57
+ (0, throwError_1.throwError)('app.json expo.ios.buildNumber is not equal with expo.android.versionCode');
51
58
  }
52
- if (!semver.valid(versionName)) {
53
- throwError('VERSION_NAME is not a valid semver format');
59
+ if (!semver_1.default.valid(versionName)) {
60
+ (0, throwError_1.throwError)('VERSION_NAME is not a valid semver format');
54
61
  }
55
- OptionHolder.versionName = versionName;
56
- OptionHolder.versionCode = iosVersionCode;
62
+ OptionHolder_1.OptionHolder.versionName = versionName;
63
+ OptionHolder_1.OptionHolder.versionCode = iosVersionCode;
57
64
  }
58
65
  }
59
- export async function injectBinaryVersions({ versionCode, versionName, }) {
60
- const files = readdir(OptionHolder.rootDir);
66
+ async function injectBinaryVersions({ versionCode, versionName, }) {
67
+ const files = (0, FileUtil_1.readdir)(OptionHolder_1.OptionHolder.rootDir);
61
68
  const jsConfigFiles = ['app.config.ts', 'app.config.js', 'app.config.cjs', 'app.config.mjs'];
62
69
  const jsonConfigFile = 'app.json';
63
70
  for (const jsConfigFile of jsConfigFiles) {
@@ -70,20 +77,20 @@ export async function injectBinaryVersions({ versionCode, versionName, }) {
70
77
  await injectToJsonConfigFile(jsonConfigFile);
71
78
  return;
72
79
  }
73
- throwError('expo config file not found');
80
+ (0, throwError_1.throwError)('expo config file not found');
74
81
  async function injectToJsConfigFile(filename) {
75
- const filePath = resolve(OptionHolder.rootDir, filename);
76
- let content = read(filePath);
82
+ const filePath = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, filename);
83
+ let content = (0, FileUtil_1.read)(filePath);
77
84
  content = content.replace(/const VERSION_NAME = '(.*?)';/, `const VERSION_NAME = '${versionName}';`);
78
85
  content = content.replace(/const VERSION_CODE = (.*?);/, `const VERSION_CODE = ${versionCode};`);
79
- write(filePath, content);
86
+ (0, FileUtil_1.write)(filePath, content);
80
87
  }
81
88
  async function injectToJsonConfigFile(filename) {
82
- const filePath = resolve(OptionHolder.rootDir, filename);
83
- const json = readJsonSlow(filePath);
89
+ const filePath = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, filename);
90
+ const json = (0, FileUtil_1.readJsonSlow)(filePath);
84
91
  json.expo.version = versionName;
85
92
  json.expo.ios.buildNumber = versionCode;
86
93
  json.expo.android.versionCode = +versionCode;
87
- writeJson(filePath, json);
94
+ (0, FileUtil_1.writeJson)(filePath, json);
88
95
  }
89
96
  }
@@ -1,7 +1,10 @@
1
- import { padZero } from '@mj-studio/js-util';
2
- export function calculateElapsed(t) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateElapsed = calculateElapsed;
4
+ const js_util_1 = require("@mj-studio/js-util");
5
+ function calculateElapsed(t) {
3
6
  let seconds = Math.floor((Date.now() - t) / 1000);
4
7
  const minutes = Math.floor(seconds / 60);
5
8
  seconds = seconds % 60;
6
- return `${minutes}:${padZero(seconds)}`;
9
+ return `${minutes}:${(0, js_util_1.padZero)(seconds)}`;
7
10
  }
@@ -1,5 +1,8 @@
1
- import { OptionHolder } from './OptionHolder';
2
- import { readJsonSlow } from './FileUtil';
3
- export async function hydrateKeyholderFileValues() {
4
- Object.assign(OptionHolder.keyholderFileValueMap, readJsonSlow(OptionHolder.keyholderFilePath));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hydrateKeyholderFileValues = hydrateKeyholderFileValues;
4
+ const OptionHolder_1 = require("./OptionHolder");
5
+ const FileUtil_1 = require("./FileUtil");
6
+ async function hydrateKeyholderFileValues() {
7
+ Object.assign(OptionHolder_1.OptionHolder.keyholderFileValueMap, (0, FileUtil_1.readJsonSlow)(OptionHolder_1.OptionHolder.keyholderFilePath));
5
8
  }
@@ -1,16 +1,19 @@
1
- import { OptionHolder } from './OptionHolder';
2
- import { readdir, isFile, isDir, join } from './FileUtil';
3
- export async function iterateAllFilesInGeneratedTemplate(callback) {
4
- for (const dir of OptionHolder.templateDirNames) {
5
- await go(join(OptionHolder.outDir, dir));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.iterateAllFilesInGeneratedTemplate = iterateAllFilesInGeneratedTemplate;
4
+ const OptionHolder_1 = require("./OptionHolder");
5
+ const FileUtil_1 = require("./FileUtil");
6
+ async function iterateAllFilesInGeneratedTemplate(callback) {
7
+ for (const dir of OptionHolder_1.OptionHolder.templateDirNames) {
8
+ await go((0, FileUtil_1.join)(OptionHolder_1.OptionHolder.outDir, dir));
6
9
  }
7
10
  async function go(dirPath) {
8
- const paths = readdir(dirPath).map((f) => join(dirPath, f));
11
+ const paths = (0, FileUtil_1.readdir)(dirPath).map((f) => (0, FileUtil_1.join)(dirPath, f));
9
12
  for (const p of paths) {
10
- if (isFile(p)) {
13
+ if ((0, FileUtil_1.isFile)(p)) {
11
14
  await callback(p);
12
15
  }
13
- else if (isDir(p)) {
16
+ else if ((0, FileUtil_1.isDir)(p)) {
14
17
  await go(p);
15
18
  }
16
19
  }
@@ -1,34 +1,37 @@
1
- import { spinner, $, path } from 'zx';
2
- import { resolve, remove, iterateDir, copy, read, write } from '../FileUtil';
3
- import { OptionHolder } from '../OptionHolder';
4
- import { logger } from '../logger';
5
- export async function prepareAndroid() {
6
- const androidDir = resolve(OptionHolder.rootDir, 'android');
7
- const fastlaneSrcDir = resolve(OptionHolder.outDir, 'fastlane-android');
8
- const fastlaneDestDir = resolve(OptionHolder.rootDir, 'android', 'fastlane');
9
- await spinner('Prebuild Android', () => $ `cd ${OptionHolder.rootDir} && expo prebuild -p android --no-install`);
10
- remove(fastlaneDestDir);
11
- await iterateDir(fastlaneSrcDir, async (file) => {
12
- const filePath = resolve(fastlaneSrcDir, file);
13
- remove(resolve(androidDir, file));
14
- copy(filePath, resolve(androidDir, file));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareAndroid = prepareAndroid;
4
+ const zx_1 = require("zx");
5
+ const FileUtil_1 = require("../FileUtil");
6
+ const OptionHolder_1 = require("../OptionHolder");
7
+ const logger_1 = require("../logger");
8
+ async function prepareAndroid() {
9
+ const androidDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'android');
10
+ const fastlaneSrcDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.outDir, 'fastlane-android');
11
+ const fastlaneDestDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'android', 'fastlane');
12
+ await (0, zx_1.spinner)('Prebuild Android', () => (0, zx_1.$) `cd ${OptionHolder_1.OptionHolder.rootDir} && expo prebuild -p android --no-install`);
13
+ (0, FileUtil_1.remove)(fastlaneDestDir);
14
+ await (0, FileUtil_1.iterateDir)(fastlaneSrcDir, async (file) => {
15
+ const filePath = (0, FileUtil_1.resolve)(fastlaneSrcDir, file);
16
+ (0, FileUtil_1.remove)((0, FileUtil_1.resolve)(androidDir, file));
17
+ (0, FileUtil_1.copy)(filePath, (0, FileUtil_1.resolve)(androidDir, file));
15
18
  });
16
- logger.success('Inject Android Fastlane files');
19
+ logger_1.logger.success('Inject Android Fastlane files');
17
20
  await replaceAndroidSigningConfig();
18
21
  async function replaceAndroidSigningConfig() {
19
- const buildGradlePath = resolve(androidDir, 'app', 'build.gradle');
20
- const { android_keystore_store_password, android_keystore_key_alias, android_keystore_key_password, } = OptionHolder.keyholderFileValueMap;
21
- const content = read(buildGradlePath).replace(/signingConfigs.*?{.*?debug.*?{.*?}.*?}/s, `
22
+ const buildGradlePath = (0, FileUtil_1.resolve)(androidDir, 'app', 'build.gradle');
23
+ const { android_keystore_store_password, android_keystore_key_alias, android_keystore_key_password, } = OptionHolder_1.OptionHolder.keyholderFileValueMap;
24
+ const content = (0, FileUtil_1.read)(buildGradlePath).replace(/signingConfigs.*?{.*?debug.*?{.*?}.*?}/s, `
22
25
  signingConfigs {
23
26
  debug {
24
- storeFile file('${path.relative(buildGradlePath, resolve(OptionHolder.outDir, 'key', 'android_release_keystore.jks'))}')
27
+ storeFile file('${zx_1.path.relative(buildGradlePath, (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.outDir, 'key', 'android_release_keystore.jks'))}')
25
28
  storePassword '${android_keystore_store_password}'
26
29
  keyAlias '${android_keystore_key_alias}'
27
30
  keyPassword '${android_keystore_key_password}'
28
31
  }
29
32
  }
30
33
  `);
31
- write(buildGradlePath, content);
32
- logger.success('Replace Android Signing Config');
34
+ (0, FileUtil_1.write)(buildGradlePath, content);
35
+ logger_1.logger.success('Replace Android Signing Config');
33
36
  }
34
37
  }
@@ -1,17 +1,20 @@
1
- import { $, spinner } from 'zx';
2
- import { remove, resolve, iterateDir, copy } from '../FileUtil';
3
- import { OptionHolder } from '../OptionHolder';
4
- import { logger } from '../logger';
5
- export async function prepareIos() {
6
- const iosDir = resolve(OptionHolder.rootDir, 'ios');
7
- const fastlaneSrcDir = resolve(OptionHolder.outDir, 'fastlane-ios');
8
- const fastlaneDestDir = resolve(OptionHolder.rootDir, 'ios', 'fastlane');
9
- await spinner('Prebuild iOS', () => $ `cd ${OptionHolder.rootDir} && expo prebuild -p ios --no-install`);
10
- remove(fastlaneDestDir);
11
- await iterateDir(fastlaneSrcDir, async (file) => {
12
- const filePath = resolve(fastlaneSrcDir, file);
13
- remove(resolve(iosDir, file));
14
- copy(filePath, resolve(iosDir, file));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareIos = prepareIos;
4
+ const zx_1 = require("zx");
5
+ const FileUtil_1 = require("../FileUtil");
6
+ const OptionHolder_1 = require("../OptionHolder");
7
+ const logger_1 = require("../logger");
8
+ async function prepareIos() {
9
+ const iosDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'ios');
10
+ const fastlaneSrcDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.outDir, 'fastlane-ios');
11
+ const fastlaneDestDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'ios', 'fastlane');
12
+ await (0, zx_1.spinner)('Prebuild iOS', () => (0, zx_1.$) `cd ${OptionHolder_1.OptionHolder.rootDir} && expo prebuild -p ios --no-install`);
13
+ (0, FileUtil_1.remove)(fastlaneDestDir);
14
+ await (0, FileUtil_1.iterateDir)(fastlaneSrcDir, async (file) => {
15
+ const filePath = (0, FileUtil_1.resolve)(fastlaneSrcDir, file);
16
+ (0, FileUtil_1.remove)((0, FileUtil_1.resolve)(iosDir, file));
17
+ (0, FileUtil_1.copy)(filePath, (0, FileUtil_1.resolve)(iosDir, file));
15
18
  });
16
- logger.success('Inject iOS Fastlane files');
19
+ logger_1.logger.success('Inject iOS Fastlane files');
17
20
  }
@@ -1,22 +1,25 @@
1
- import { OptionHolder } from '../OptionHolder';
2
- import { input } from '@inquirer/prompts';
3
- import { isDev } from '../EnvUtil';
4
- import { exist, resolve } from '../FileUtil';
5
- export async function promptCommonInputs() {
6
- OptionHolder.rootDir = isDev
7
- ? resolve('example')
8
- : resolve(await input({
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promptCommonInputs = promptCommonInputs;
4
+ const OptionHolder_1 = require("../OptionHolder");
5
+ const prompts_1 = require("@inquirer/prompts");
6
+ const EnvUtil_1 = require("../EnvUtil");
7
+ const FileUtil_1 = require("../FileUtil");
8
+ async function promptCommonInputs() {
9
+ OptionHolder_1.OptionHolder.rootDir = EnvUtil_1.isDev
10
+ ? (0, FileUtil_1.resolve)('example')
11
+ : (0, FileUtil_1.resolve)(await (0, prompts_1.input)({
9
12
  message: 'react native project root directory path',
10
- default: isDev ? 'example' : '.',
13
+ default: EnvUtil_1.isDev ? 'example' : '.',
11
14
  validate: (value) => {
12
- const p = resolve(value, 'package.json');
13
- if (!exist(p)) {
15
+ const p = (0, FileUtil_1.resolve)(value, 'package.json');
16
+ if (!(0, FileUtil_1.exist)(p)) {
14
17
  return "package.json hasn\'t been detected. provider valid project root.";
15
18
  }
16
19
  return true;
17
20
  },
18
21
  }));
19
- OptionHolder.outDir = resolve(OptionHolder.rootDir, 'expo-local-build');
20
- OptionHolder.keyDir = resolve(OptionHolder.outDir, 'key');
21
- OptionHolder.keyholderFilePath = resolve(OptionHolder.outDir, 'keyholder.json');
22
+ OptionHolder_1.OptionHolder.outDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.rootDir, 'expo-local-build');
23
+ OptionHolder_1.OptionHolder.keyDir = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.outDir, 'key');
24
+ OptionHolder_1.OptionHolder.keyholderFilePath = (0, FileUtil_1.resolve)(OptionHolder_1.OptionHolder.outDir, 'keyholder.json');
22
25
  }
@@ -1,8 +1,11 @@
1
- import { promptCommonInputs } from './promptCommonInputs';
2
- import { hydrateKeyholderFileValues } from '../hydrateKeyholderFileValues';
3
- import { parseBinaryVersions } from '../VersionUtil';
4
- export async function setup() {
5
- await promptCommonInputs();
6
- await hydrateKeyholderFileValues();
7
- await parseBinaryVersions();
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setup = setup;
4
+ const promptCommonInputs_1 = require("./promptCommonInputs");
5
+ const hydrateKeyholderFileValues_1 = require("../hydrateKeyholderFileValues");
6
+ const VersionUtil_1 = require("../VersionUtil");
7
+ async function setup() {
8
+ await (0, promptCommonInputs_1.promptCommonInputs)();
9
+ await (0, hydrateKeyholderFileValues_1.hydrateKeyholderFileValues)();
10
+ await (0, VersionUtil_1.parseBinaryVersions)();
8
11
  }
@@ -1,10 +1,13 @@
1
- import { logger } from './logger';
2
- export function throwError(message, e) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.throwError = throwError;
4
+ const logger_1 = require("./logger");
5
+ function throwError(message, e) {
3
6
  if (e) {
4
- logger.error(message, e);
7
+ logger_1.logger.error(message, e);
5
8
  }
6
9
  else {
7
- logger.error(message);
10
+ logger_1.logger.error(message);
8
11
  }
9
12
  process.exit(1);
10
13
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "expo-release-it",
3
3
  "module": "src/index.ts",
4
- "type": "module",
5
- "version": "0.0.8",
4
+ "type": "commonjs",
5
+ "version": "0.0.9",
6
6
  "license": "MIT",
7
7
  "scripts": {
8
8
  "build": "tsc",