expo-release-it 1.0.0 → 1.0.2

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.
Files changed (76) hide show
  1. package/build/{CredentialVault-DJK55Brb.js → CredentialVault-f3Q-GQiW.js} +3 -3
  2. package/build/{CredentialVault-DJK55Brb.js.map → CredentialVault-f3Q-GQiW.js.map} +1 -1
  3. package/build/{FastlaneOption-D4A4hWrQ.js → FastlaneOption-DTV-RPG_.js} +3 -3
  4. package/build/{FastlaneOption-D4A4hWrQ.js.map → FastlaneOption-DTV-RPG_.js.map} +1 -1
  5. package/build/{InqueryInputs-C7bgU4_P.js → InqueryInputs-CQCIPjvq.js} +2 -2
  6. package/build/{InqueryInputs-C7bgU4_P.js.map → InqueryInputs-CQCIPjvq.js.map} +1 -1
  7. package/build/{MetadataSyncUtil-D8LnTqSH.js → MetadataSyncUtil-DSi5YMM1.js} +3 -3
  8. package/build/{MetadataSyncUtil-D8LnTqSH.js.map → MetadataSyncUtil-DSi5YMM1.js.map} +1 -1
  9. package/build/{NativeEnvironment-CQn7erIC.js → NativeEnvironment-oSy4DL9W.js} +4 -4
  10. package/build/{NativeEnvironment-CQn7erIC.js.map → NativeEnvironment-oSy4DL9W.js.map} +1 -1
  11. package/build/{OptionHolder-DCm-Anf0.js → OptionHolder-Ci01mA57.js} +2 -2
  12. package/build/{OptionHolder-DCm-Anf0.js.map → OptionHolder-Ci01mA57.js.map} +1 -1
  13. package/build/{RubyEnvironment-CPq_9yPd.js → RubyEnvironment-BUsGpWfG.js} +5 -5
  14. package/build/{RubyEnvironment-CPq_9yPd.js.map → RubyEnvironment-BUsGpWfG.js.map} +1 -1
  15. package/build/{VersionUtil-Io9Zx_Fc.js → VersionUtil-DJcMTY2B.js} +3 -3
  16. package/build/{VersionUtil-Io9Zx_Fc.js.map → VersionUtil-DJcMTY2B.js.map} +1 -1
  17. package/build/{build-DPBOtXRM.js → build-Dl9olKkk.js} +12 -12
  18. package/build/{build-DPBOtXRM.js.map → build-Dl9olKkk.js.map} +1 -1
  19. package/build/{bump-BoN6SXri.js → bump-DKVq38lK.js} +8 -8
  20. package/build/{bump-BoN6SXri.js.map → bump-DKVq38lK.js.map} +1 -1
  21. package/build/command/build.js +17 -17
  22. package/build/command/bump.js +10 -10
  23. package/build/command/init.js +9 -9
  24. package/build/command/pull.js +14 -14
  25. package/build/command/submit.js +14 -14
  26. package/build/command/upload.js +14 -14
  27. package/build/{execShellScript-5FcHM7dZ.js → execShellScript-B6HHcv77.js} +3 -3
  28. package/build/{execShellScript-5FcHM7dZ.js.map → execShellScript-B6HHcv77.js.map} +1 -1
  29. package/build/{generateAppStoreConnectApiKeyFile-Deww9U-5.js → generateAppStoreConnectApiKeyFile-JftlEOVB.js} +3 -3
  30. package/build/{generateAppStoreConnectApiKeyFile-Deww9U-5.js.map → generateAppStoreConnectApiKeyFile-JftlEOVB.js.map} +1 -1
  31. package/build/index.js +23 -23
  32. package/build/{init-BKcVizS6.js → init-BElBKnwN.js} +6 -6
  33. package/build/{init-BKcVizS6.js.map → init-BElBKnwN.js.map} +1 -1
  34. package/build/{logger-BLZBLDnp.js → logger-BY1_5Qm4.js} +2 -2
  35. package/build/{logger-BLZBLDnp.js.map → logger-BY1_5Qm4.js.map} +1 -1
  36. package/build/{parseConfigFile-BGBx_tJj.js → parseConfigFile-N2627e-u.js} +2 -2
  37. package/build/{parseConfigFile-BGBx_tJj.js.map → parseConfigFile-N2627e-u.js.map} +1 -1
  38. package/build/{prepareAndroid-4S_Vq9Zn.js → prepareAndroid-BV53rhQ3.js} +3 -3
  39. package/build/{prepareAndroid-4S_Vq9Zn.js.map → prepareAndroid-BV53rhQ3.js.map} +1 -1
  40. package/build/{prepareFastlane-ns6kCOjb.js → prepareFastlane-7Zg3N5Fy.js} +4 -4
  41. package/build/{prepareFastlane-ns6kCOjb.js.map → prepareFastlane-7Zg3N5Fy.js.map} +1 -1
  42. package/build/{prepareIos-CXqNQ40Q.js → prepareIos-Cigqnhe8.js} +3 -3
  43. package/build/{prepareIos-CXqNQ40Q.js.map → prepareIos-Cigqnhe8.js.map} +1 -1
  44. package/build/{pull-BiLvHoN9.js → pull-B1FwsQ16.js} +8 -8
  45. package/build/{pull-BiLvHoN9.js.map → pull-B1FwsQ16.js.map} +1 -1
  46. package/build/{setup-q_SlIP_M.js → setup-ChAxYljZ.js} +5 -5
  47. package/build/{setup-q_SlIP_M.js.map → setup-ChAxYljZ.js.map} +1 -1
  48. package/build/{submit-BLq6epKd.js → submit-CPQB-EF-.js} +7 -7
  49. package/build/{submit-BLq6epKd.js.map → submit-CPQB-EF-.js.map} +1 -1
  50. package/build/{throwError-CjtFnSTp.js → throwError-CagLBtkh.js} +2 -2
  51. package/build/{throwError-CjtFnSTp.js.map → throwError-CagLBtkh.js.map} +1 -1
  52. package/build/{upload-DyMky8Rn.js → upload-BwMMiyA5.js} +7 -7
  53. package/build/{upload-DyMky8Rn.js.map → upload-BwMMiyA5.js.map} +1 -1
  54. package/build/util/CredentialVault.js +3 -3
  55. package/build/util/FastlaneOption.js +4 -4
  56. package/build/util/MetadataSyncUtil.js +3 -3
  57. package/build/util/OptionHolder.js +1 -1
  58. package/build/util/generateAppStoreConnectApiKeyFile.js +4 -4
  59. package/build/util/injectTemplatePlaceHolders.js +1 -1
  60. package/build/util/input/InqueryInputs.js +2 -2
  61. package/build/util/logger.js +2 -2
  62. package/build/util/parseConfigFile.js +2 -2
  63. package/build/util/setup/NativeEnvironment.js +5 -5
  64. package/build/util/setup/RubyEnvironment.js +5 -5
  65. package/build/util/setup/VersionUtil.js +4 -4
  66. package/build/util/setup/execShellScript.js +4 -4
  67. package/build/util/setup/prepareAndroid.js +4 -4
  68. package/build/util/setup/prepareFastlane.js +7 -7
  69. package/build/util/setup/prepareIos.js +4 -4
  70. package/build/util/setup/setup.js +7 -7
  71. package/build/util/throwError.js +3 -3
  72. package/package.json +19 -18
  73. package/template/android/fastlane/Fastfile +6 -2
  74. package/template/ios/fastlane/Fastfile +25 -4
  75. package/template/ruby/Gemfile +1 -1
  76. package/template/ruby/Gemfile.lock +126 -79
@@ -1,9 +1,9 @@
1
- import { OptionHolder } from "./OptionHolder-DCm-Anf0.js";
1
+ import { OptionHolder } from "./OptionHolder-Ci01mA57.js";
2
2
  import { resolve } from "./FileUtil-Dq8PORna.js";
3
- import { getEncryptionKey, loadRuntimeCredentials, warnPlaintextCredentials } from "./CredentialVault-DJK55Brb.js";
3
+ import { getEncryptionKey, loadRuntimeCredentials, warnPlaintextCredentials } from "./CredentialVault-f3Q-GQiW.js";
4
4
  import { isDev } from "./EnvUtil-bT6jh2Up.js";
5
- import { parseConfigFile } from "./parseConfigFile-BGBx_tJj.js";
6
- import { parseBinaryVersions } from "./VersionUtil-Io9Zx_Fc.js";
5
+ import { parseConfigFile } from "./parseConfigFile-N2627e-u.js";
6
+ import { parseBinaryVersions } from "./VersionUtil-DJcMTY2B.js";
7
7
 
8
8
  //#region src/util/setup/setup.ts
9
9
  async function setup({ credentials = true } = {}) {
@@ -22,4 +22,4 @@ async function setup({ credentials = true } = {}) {
22
22
 
23
23
  //#endregion
24
24
  export { setup };
25
- //# sourceMappingURL=setup-q_SlIP_M.js.map
25
+ //# sourceMappingURL=setup-ChAxYljZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-q_SlIP_M.js","names":[],"sources":["../src/util/setup/setup.ts"],"sourcesContent":["import {\n getEncryptionKey,\n loadRuntimeCredentials,\n warnPlaintextCredentials,\n} from '../CredentialVault';\nimport { isDev } from '../EnvUtil';\nimport { resolve } from '../FileUtil';\nimport { OptionHolder } from '../OptionHolder';\nimport { parseConfigFile } from '../parseConfigFile';\nimport { parseBinaryVersions } from './VersionUtil';\n\nexport async function setup({ credentials = true } = {}) {\n OptionHolder.projectDir = isDev ? resolve('examples/sdk-57') : resolve('.');\n OptionHolder.resourcesDir = resolve(OptionHolder.projectDir, 'expo-release-it');\n OptionHolder.keyDir = resolve(OptionHolder.resourcesDir, 'key');\n OptionHolder.keyholderFilePath = resolve(OptionHolder.resourcesDir, 'keyholder.json');\n OptionHolder.tempDir = resolve(OptionHolder.resourcesDir, '.temp');\n const key = getEncryptionKey();\n await parseConfigFile();\n if (credentials) loadRuntimeCredentials(key);\n else warnPlaintextCredentials();\n await parseBinaryVersions();\n return key;\n}\n"],"mappings":";;;;;;;;AAWA,eAAsB,MAAM,EAAE,cAAc,MAAM,GAAG,CAAE,GAAE;AACvD,cAAa,aAAa,QAAQ,QAAQ,kBAAkB,GAAG,QAAQ,IAAI;AAC3E,cAAa,eAAe,QAAQ,aAAa,YAAY,kBAAkB;AAC/E,cAAa,SAAS,QAAQ,aAAa,cAAc,MAAM;AAC/D,cAAa,oBAAoB,QAAQ,aAAa,cAAc,iBAAiB;AACrF,cAAa,UAAU,QAAQ,aAAa,cAAc,QAAQ;CAClE,MAAM,MAAM,kBAAkB;AAC9B,OAAM,iBAAiB;AACvB,KAAI,YAAa,wBAAuB,IAAI;KACvC,2BAA0B;AAC/B,OAAM,qBAAqB;AAC3B,QAAO;AACR"}
1
+ {"version":3,"file":"setup-ChAxYljZ.js","names":[],"sources":["../src/util/setup/setup.ts"],"sourcesContent":["import {\n getEncryptionKey,\n loadRuntimeCredentials,\n warnPlaintextCredentials,\n} from '../CredentialVault';\nimport { isDev } from '../EnvUtil';\nimport { resolve } from '../FileUtil';\nimport { OptionHolder } from '../OptionHolder';\nimport { parseConfigFile } from '../parseConfigFile';\nimport { parseBinaryVersions } from './VersionUtil';\n\nexport async function setup({ credentials = true } = {}) {\n OptionHolder.projectDir = isDev ? resolve('examples/sdk-57') : resolve('.');\n OptionHolder.resourcesDir = resolve(OptionHolder.projectDir, 'expo-release-it');\n OptionHolder.keyDir = resolve(OptionHolder.resourcesDir, 'key');\n OptionHolder.keyholderFilePath = resolve(OptionHolder.resourcesDir, 'keyholder.json');\n OptionHolder.tempDir = resolve(OptionHolder.resourcesDir, '.temp');\n const key = getEncryptionKey();\n await parseConfigFile();\n if (credentials) loadRuntimeCredentials(key);\n else warnPlaintextCredentials();\n await parseBinaryVersions();\n return key;\n}\n"],"mappings":";;;;;;;;AAWA,eAAsB,MAAM,EAAE,cAAc,MAAM,GAAG,CAAE,GAAE;AACvD,cAAa,aAAa,QAAQ,QAAQ,kBAAkB,GAAG,QAAQ,IAAI;AAC3E,cAAa,eAAe,QAAQ,aAAa,YAAY,kBAAkB;AAC/E,cAAa,SAAS,QAAQ,aAAa,cAAc,MAAM;AAC/D,cAAa,oBAAoB,QAAQ,aAAa,cAAc,iBAAiB;AACrF,cAAa,UAAU,QAAQ,aAAa,cAAc,QAAQ;CAClE,MAAM,MAAM,kBAAkB;AAC9B,OAAM,iBAAiB;AACvB,KAAI,YAAa,wBAAuB,IAAI;KACvC,2BAA0B;AAC/B,OAAM,qBAAqB;AAC3B,QAAO;AACR"}
@@ -1,10 +1,10 @@
1
1
  import { calculateElapsed } from "./calculateElapsed-DORWymX3.js";
2
- import { OptionHolder } from "./OptionHolder-DCm-Anf0.js";
3
- import { logger } from "./logger-BLZBLDnp.js";
4
- import { runFastlane } from "./FastlaneOption-D4A4hWrQ.js";
5
- import { InqueryInputs } from "./InqueryInputs-C7bgU4_P.js";
6
- import { prepareFastlane } from "./prepareFastlane-ns6kCOjb.js";
7
- import { setup } from "./setup-q_SlIP_M.js";
2
+ import { OptionHolder } from "./OptionHolder-Ci01mA57.js";
3
+ import { logger } from "./logger-BY1_5Qm4.js";
4
+ import { runFastlane } from "./FastlaneOption-DTV-RPG_.js";
5
+ import { InqueryInputs } from "./InqueryInputs-CQCIPjvq.js";
6
+ import { prepareFastlane } from "./prepareFastlane-7Zg3N5Fy.js";
7
+ import { setup } from "./setup-ChAxYljZ.js";
8
8
  import chalk from "chalk";
9
9
 
10
10
  //#region src/command/submit.ts
@@ -25,4 +25,4 @@ async function promptInputs() {
25
25
 
26
26
  //#endregion
27
27
  export { submit };
28
- //# sourceMappingURL=submit-BLq6epKd.js.map
28
+ //# sourceMappingURL=submit-CPQB-EF-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit-BLq6epKd.js","names":[],"sources":["../src/command/submit.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { calculateElapsed } from '../util/calculateElapsed';\nimport { runFastlane } from '../util/FastlaneOption';\nimport { InqueryInputs } from '../util/input/InqueryInputs';\nimport { logger } from '../util/logger';\nimport { OptionHolder } from '../util/OptionHolder';\nimport { prepareFastlane } from '../util/setup/prepareFastlane';\nimport { setup } from '../util/setup/setup';\n\nexport async function submit({ options }: { options: any }) {\n Object.assign(OptionHolder.input, options);\n const startTime = Date.now();\n await setup();\n await promptInputs();\n\n logger.info('Submit Started');\n\n await runFastlane(await prepareFastlane(), 'submit');\n logger.success(\n `${OptionHolder.input.platform} Submit ${chalk.bold.inverse(calculateElapsed(startTime))}`,\n );\n}\n\nasync function promptInputs() {\n await InqueryInputs.platform();\n await InqueryInputs.uploadMetadata();\n await InqueryInputs.uploadScreenshot();\n}\n"],"mappings":";;;;;;;;;;AAUA,eAAsB,OAAO,EAAE,SAA2B,EAAE;AAC1D,QAAO,OAAO,aAAa,OAAO,QAAQ;CAC1C,MAAM,YAAY,KAAK,KAAK;AAC5B,OAAM,OAAO;AACb,OAAM,cAAc;AAEpB,QAAO,KAAK,iBAAiB;AAE7B,OAAM,YAAY,MAAM,iBAAiB,EAAE,SAAS;AACpD,QAAO,SACJ,EAAE,aAAa,MAAM,SAAS,UAAU,MAAM,KAAK,QAAQ,iBAAiB,UAAU,CAAC,CAAC,EAC1F;AACF;AAED,eAAe,eAAe;AAC5B,OAAM,cAAc,UAAU;AAC9B,OAAM,cAAc,gBAAgB;AACpC,OAAM,cAAc,kBAAkB;AACvC"}
1
+ {"version":3,"file":"submit-CPQB-EF-.js","names":[],"sources":["../src/command/submit.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { calculateElapsed } from '../util/calculateElapsed';\nimport { runFastlane } from '../util/FastlaneOption';\nimport { InqueryInputs } from '../util/input/InqueryInputs';\nimport { logger } from '../util/logger';\nimport { OptionHolder } from '../util/OptionHolder';\nimport { prepareFastlane } from '../util/setup/prepareFastlane';\nimport { setup } from '../util/setup/setup';\n\nexport async function submit({ options }: { options: any }) {\n Object.assign(OptionHolder.input, options);\n const startTime = Date.now();\n await setup();\n await promptInputs();\n\n logger.info('Submit Started');\n\n await runFastlane(await prepareFastlane(), 'submit');\n logger.success(\n `${OptionHolder.input.platform} Submit ${chalk.bold.inverse(calculateElapsed(startTime))}`,\n );\n}\n\nasync function promptInputs() {\n await InqueryInputs.platform();\n await InqueryInputs.uploadMetadata();\n await InqueryInputs.uploadScreenshot();\n}\n"],"mappings":";;;;;;;;;;AAUA,eAAsB,OAAO,EAAE,SAA2B,EAAE;AAC1D,QAAO,OAAO,aAAa,OAAO,QAAQ;CAC1C,MAAM,YAAY,KAAK,KAAK;AAC5B,OAAM,OAAO;AACb,OAAM,cAAc;AAEpB,QAAO,KAAK,iBAAiB;AAE7B,OAAM,YAAY,MAAM,iBAAiB,EAAE,SAAS;AACpD,QAAO,SACJ,EAAE,aAAa,MAAM,SAAS,UAAU,MAAM,KAAK,QAAQ,iBAAiB,UAAU,CAAC,CAAC,EAC1F;AACF;AAED,eAAe,eAAe;AAC5B,OAAM,cAAc,UAAU;AAC9B,OAAM,cAAc,gBAAgB;AACpC,OAAM,cAAc,kBAAkB;AACvC"}
@@ -1,4 +1,4 @@
1
- import { logger } from "./logger-BLZBLDnp.js";
1
+ import { logger } from "./logger-BY1_5Qm4.js";
2
2
  import { isTest } from "./EnvUtil-bT6jh2Up.js";
3
3
 
4
4
  //#region src/util/throwError.ts
@@ -11,4 +11,4 @@ function throwError(message, e) {
11
11
 
12
12
  //#endregion
13
13
  export { throwError };
14
- //# sourceMappingURL=throwError-CjtFnSTp.js.map
14
+ //# sourceMappingURL=throwError-CagLBtkh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throwError-CjtFnSTp.js","names":["message: string","e?: any"],"sources":["../src/util/throwError.ts"],"sourcesContent":["import { isTest } from './EnvUtil';\nimport { logger } from './logger';\n\nexport function throwError(message: string, e?: any): never {\n if (e) {\n logger.error(message, e);\n } else {\n logger.error(message);\n }\n if (isTest) {\n throw new Error('throwError');\n }\n process.exit(1);\n}\n"],"mappings":";;;;AAGA,SAAgB,WAAWA,SAAiBC,GAAgB;AAC1D,KAAI,EACF,QAAO,MAAM,SAAS,EAAE;KAExB,QAAO,MAAM,QAAQ;AAEvB,KAAI,OACF,OAAM,IAAI,MAAM;AAElB,SAAQ,KAAK,EAAE;AAChB"}
1
+ {"version":3,"file":"throwError-CagLBtkh.js","names":["message: string","e?: any"],"sources":["../src/util/throwError.ts"],"sourcesContent":["import { isTest } from './EnvUtil';\nimport { logger } from './logger';\n\nexport function throwError(message: string, e?: any): never {\n if (e) {\n logger.error(message, e);\n } else {\n logger.error(message);\n }\n if (isTest) {\n throw new Error('throwError');\n }\n process.exit(1);\n}\n"],"mappings":";;;;AAGA,SAAgB,WAAWA,SAAiBC,GAAgB;AAC1D,KAAI,EACF,QAAO,MAAM,SAAS,EAAE;KAExB,QAAO,MAAM,QAAQ;AAEvB,KAAI,OACF,OAAM,IAAI,MAAM;AAElB,SAAQ,KAAK,EAAE;AAChB"}
@@ -1,10 +1,10 @@
1
1
  import { calculateElapsed } from "./calculateElapsed-DORWymX3.js";
2
- import { OptionHolder } from "./OptionHolder-DCm-Anf0.js";
3
- import { logger } from "./logger-BLZBLDnp.js";
4
- import { runFastlane } from "./FastlaneOption-D4A4hWrQ.js";
5
- import { InqueryInputs } from "./InqueryInputs-C7bgU4_P.js";
6
- import { prepareFastlane } from "./prepareFastlane-ns6kCOjb.js";
7
- import { setup } from "./setup-q_SlIP_M.js";
2
+ import { OptionHolder } from "./OptionHolder-Ci01mA57.js";
3
+ import { logger } from "./logger-BY1_5Qm4.js";
4
+ import { runFastlane } from "./FastlaneOption-DTV-RPG_.js";
5
+ import { InqueryInputs } from "./InqueryInputs-CQCIPjvq.js";
6
+ import { prepareFastlane } from "./prepareFastlane-7Zg3N5Fy.js";
7
+ import { setup } from "./setup-ChAxYljZ.js";
8
8
  import chalk from "chalk";
9
9
 
10
10
  //#region src/command/upload.ts
@@ -29,4 +29,4 @@ async function promptInputs() {
29
29
 
30
30
  //#endregion
31
31
  export { upload };
32
- //# sourceMappingURL=upload-DyMky8Rn.js.map
32
+ //# sourceMappingURL=upload-BwMMiyA5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-DyMky8Rn.js","names":[],"sources":["../src/command/upload.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { calculateElapsed } from '../util/calculateElapsed';\nimport { runFastlane } from '../util/FastlaneOption';\nimport { InqueryInputs } from '../util/input/InqueryInputs';\nimport { logger } from '../util/logger';\nimport { OptionHolder } from '../util/OptionHolder';\nimport { prepareFastlane } from '../util/setup/prepareFastlane';\nimport { setup } from '../util/setup/setup';\n\nexport async function upload({ options }: { options: any }) {\n Object.assign(OptionHolder.input, options);\n const startTime = Date.now();\n await setup();\n await promptInputs();\n\n logger.info('Upload Testing Track Started');\n\n await runFastlane(await prepareFastlane(), 'upload');\n logger.success(\n `${OptionHolder.input.platform} Upload ${chalk.bold.inverse(calculateElapsed(startTime))}`,\n );\n}\n\nasync function promptInputs() {\n await InqueryInputs.platform();\n await InqueryInputs.androidBuildOutput();\n if (OptionHolder.input.platform !== 'ios') {\n await InqueryInputs.uploadMetadata();\n await InqueryInputs.uploadScreenshot();\n }\n if (\n OptionHolder.input.platform === 'ios' &&\n (OptionHolder.input.uploadMetadata || OptionHolder.input.uploadScreenshot)\n ) {\n logger.warn(\"ios upload command doesn't support uploading metadatas and screenshots\");\n }\n}\n"],"mappings":";;;;;;;;;;AAUA,eAAsB,OAAO,EAAE,SAA2B,EAAE;AAC1D,QAAO,OAAO,aAAa,OAAO,QAAQ;CAC1C,MAAM,YAAY,KAAK,KAAK;AAC5B,OAAM,OAAO;AACb,OAAM,cAAc;AAEpB,QAAO,KAAK,+BAA+B;AAE3C,OAAM,YAAY,MAAM,iBAAiB,EAAE,SAAS;AACpD,QAAO,SACJ,EAAE,aAAa,MAAM,SAAS,UAAU,MAAM,KAAK,QAAQ,iBAAiB,UAAU,CAAC,CAAC,EAC1F;AACF;AAED,eAAe,eAAe;AAC5B,OAAM,cAAc,UAAU;AAC9B,OAAM,cAAc,oBAAoB;AACxC,KAAI,aAAa,MAAM,aAAa,OAAO;AACzC,QAAM,cAAc,gBAAgB;AACpC,QAAM,cAAc,kBAAkB;CACvC;AACD,KACE,aAAa,MAAM,aAAa,UAC/B,aAAa,MAAM,kBAAkB,aAAa,MAAM,kBAEzD,QAAO,KAAK,yEAAyE;AAExF"}
1
+ {"version":3,"file":"upload-BwMMiyA5.js","names":[],"sources":["../src/command/upload.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { calculateElapsed } from '../util/calculateElapsed';\nimport { runFastlane } from '../util/FastlaneOption';\nimport { InqueryInputs } from '../util/input/InqueryInputs';\nimport { logger } from '../util/logger';\nimport { OptionHolder } from '../util/OptionHolder';\nimport { prepareFastlane } from '../util/setup/prepareFastlane';\nimport { setup } from '../util/setup/setup';\n\nexport async function upload({ options }: { options: any }) {\n Object.assign(OptionHolder.input, options);\n const startTime = Date.now();\n await setup();\n await promptInputs();\n\n logger.info('Upload Testing Track Started');\n\n await runFastlane(await prepareFastlane(), 'upload');\n logger.success(\n `${OptionHolder.input.platform} Upload ${chalk.bold.inverse(calculateElapsed(startTime))}`,\n );\n}\n\nasync function promptInputs() {\n await InqueryInputs.platform();\n await InqueryInputs.androidBuildOutput();\n if (OptionHolder.input.platform !== 'ios') {\n await InqueryInputs.uploadMetadata();\n await InqueryInputs.uploadScreenshot();\n }\n if (\n OptionHolder.input.platform === 'ios' &&\n (OptionHolder.input.uploadMetadata || OptionHolder.input.uploadScreenshot)\n ) {\n logger.warn(\"ios upload command doesn't support uploading metadatas and screenshots\");\n }\n}\n"],"mappings":";;;;;;;;;;AAUA,eAAsB,OAAO,EAAE,SAA2B,EAAE;AAC1D,QAAO,OAAO,aAAa,OAAO,QAAQ;CAC1C,MAAM,YAAY,KAAK,KAAK;AAC5B,OAAM,OAAO;AACb,OAAM,cAAc;AAEpB,QAAO,KAAK,+BAA+B;AAE3C,OAAM,YAAY,MAAM,iBAAiB,EAAE,SAAS;AACpD,QAAO,SACJ,EAAE,aAAa,MAAM,SAAS,UAAU,MAAM,KAAK,QAAQ,iBAAiB,UAAU,CAAC,CAAC,EAC1F;AACF;AAED,eAAe,eAAe;AAC5B,OAAM,cAAc,UAAU;AAC9B,OAAM,cAAc,oBAAoB;AACxC,KAAI,aAAa,MAAM,aAAa,OAAO;AACzC,QAAM,cAAc,gBAAgB;AACpC,QAAM,cAAc,kBAAkB;CACvC;AACD,KACE,aAAa,MAAM,aAAa,UAC/B,aAAa,MAAM,kBAAkB,aAAa,MAAM,kBAEzD,QAAO,KAAK,yEAAyE;AAExF"}
@@ -1,6 +1,6 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import "../logger-BLZBLDnp.js";
4
- import { appStoreApiFilename, cleanupCredentials, credentialFilenames, credentialKeyPath, credentialProcessEnvironment, credentialVaultFilename, encryptionKeyEnvironment, getEncryptionKey, loadRuntimeCredentials, readCredentialFile, readCredentialVault, readLegacyCredentials, warnPlaintextCredentials, writeCredentialTemporaryFile, writeCredentialVault } from "../CredentialVault-DJK55Brb.js";
3
+ import "../logger-BY1_5Qm4.js";
4
+ import { appStoreApiFilename, cleanupCredentials, credentialFilenames, credentialKeyPath, credentialProcessEnvironment, credentialVaultFilename, encryptionKeyEnvironment, getEncryptionKey, loadRuntimeCredentials, readCredentialFile, readCredentialVault, readLegacyCredentials, warnPlaintextCredentials, writeCredentialTemporaryFile, writeCredentialVault } from "../CredentialVault-f3Q-GQiW.js";
5
5
 
6
6
  export { appStoreApiFilename, cleanupCredentials, credentialFilenames, credentialKeyPath, credentialProcessEnvironment, credentialVaultFilename, encryptionKeyEnvironment, getEncryptionKey, loadRuntimeCredentials, readCredentialFile, readCredentialVault, readLegacyCredentials, warnPlaintextCredentials, writeCredentialTemporaryFile, writeCredentialVault };
@@ -1,7 +1,7 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import "../logger-BLZBLDnp.js";
4
- import "../CredentialVault-DJK55Brb.js";
5
- import { runFastlane } from "../FastlaneOption-D4A4hWrQ.js";
3
+ import "../logger-BY1_5Qm4.js";
4
+ import "../CredentialVault-f3Q-GQiW.js";
5
+ import { runFastlane } from "../FastlaneOption-DTV-RPG_.js";
6
6
 
7
7
  export { runFastlane };
@@ -1,6 +1,6 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import "../logger-BLZBLDnp.js";
4
- import { copyAndroidMetadata, copyIosMetadata } from "../MetadataSyncUtil-D8LnTqSH.js";
3
+ import "../logger-BY1_5Qm4.js";
4
+ import { copyAndroidMetadata, copyIosMetadata } from "../MetadataSyncUtil-DSi5YMM1.js";
5
5
 
6
6
  export { copyAndroidMetadata, copyIosMetadata };
@@ -1,4 +1,4 @@
1
- import { OptionHolder } from "../OptionHolder-DCm-Anf0.js";
1
+ import { OptionHolder } from "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
3
 
4
4
  export { OptionHolder };
@@ -1,7 +1,7 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import "../logger-BLZBLDnp.js";
4
- import "../CredentialVault-DJK55Brb.js";
5
- import { generateAppStoreConnectApiKeyFile } from "../generateAppStoreConnectApiKeyFile-Deww9U-5.js";
3
+ import "../logger-BY1_5Qm4.js";
4
+ import "../CredentialVault-f3Q-GQiW.js";
5
+ import { generateAppStoreConnectApiKeyFile } from "../generateAppStoreConnectApiKeyFile-JftlEOVB.js";
6
6
 
7
7
  export { generateAppStoreConnectApiKeyFile };
@@ -1,4 +1,4 @@
1
- import { OptionHolder } from "../OptionHolder-DCm-Anf0.js";
1
+ import { OptionHolder } from "../OptionHolder-Ci01mA57.js";
2
2
  import { read, write } from "../FileUtil-Dq8PORna.js";
3
3
  import { iterateAllFiles } from "../iterateAllFiles-Cofs0nGH.js";
4
4
 
@@ -1,5 +1,5 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import { InqueryInputs, constructInquirerFormattedMessage } from "../../InqueryInputs-C7bgU4_P.js";
3
+ import { InqueryInputs, constructInquirerFormattedMessage } from "../../InqueryInputs-CQCIPjvq.js";
4
4
 
5
5
  export { InqueryInputs, constructInquirerFormattedMessage };
@@ -1,5 +1,5 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import { logger, redact, registerSecrets } from "../logger-BLZBLDnp.js";
3
+ import { logger, redact, registerSecrets } from "../logger-BY1_5Qm4.js";
4
4
 
5
5
  export { logger, redact, registerSecrets };
@@ -1,5 +1,5 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import { parseConfigFile } from "../parseConfigFile-BGBx_tJj.js";
3
+ import { parseConfigFile } from "../parseConfigFile-N2627e-u.js";
4
4
 
5
5
  export { parseConfigFile };
@@ -1,8 +1,8 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
5
- import "../../execShellScript-5FcHM7dZ.js";
6
- import { inspectNativeEnvironment } from "../../NativeEnvironment-CQn7erIC.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
+ import "../../execShellScript-B6HHcv77.js";
6
+ import { inspectNativeEnvironment } from "../../NativeEnvironment-oSy4DL9W.js";
7
7
 
8
8
  export { inspectNativeEnvironment };
@@ -1,8 +1,8 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
5
- import "../../execShellScript-5FcHM7dZ.js";
6
- import { inspectRubyEnvironment, rubyProcessEnvironment, rubyRequirement } from "../../RubyEnvironment-CPq_9yPd.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
+ import "../../execShellScript-B6HHcv77.js";
6
+ import { inspectRubyEnvironment, rubyProcessEnvironment, rubyRequirement } from "../../RubyEnvironment-BUsGpWfG.js";
7
7
 
8
8
  export { inspectRubyEnvironment, rubyProcessEnvironment, rubyRequirement };
@@ -1,8 +1,8 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
4
  import "../../EnvUtil-bT6jh2Up.js";
5
- import "../../throwError-CjtFnSTp.js";
6
- import { checkVersionCodeIsTiedWithVersionName, generateVersionCodeTiedWithVersionName, injectBinaryVersions, parseBinaryVersions } from "../../VersionUtil-Io9Zx_Fc.js";
5
+ import "../../throwError-CagLBtkh.js";
6
+ import { checkVersionCodeIsTiedWithVersionName, generateVersionCodeTiedWithVersionName, injectBinaryVersions, parseBinaryVersions } from "../../VersionUtil-DJcMTY2B.js";
7
7
 
8
8
  export { checkVersionCodeIsTiedWithVersionName, generateVersionCodeTiedWithVersionName, injectBinaryVersions, parseBinaryVersions };
@@ -1,7 +1,7 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
5
- import { exe, printRedactedOutput } from "../../execShellScript-5FcHM7dZ.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
+ import { exe, printRedactedOutput } from "../../execShellScript-B6HHcv77.js";
6
6
 
7
7
  export { exe, printRedactedOutput };
@@ -1,7 +1,7 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
5
- import { androidSigningEnvironment, prepareAndroid } from "../../prepareAndroid-4S_Vq9Zn.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
+ import { androidSigningEnvironment, prepareAndroid } from "../../prepareAndroid-BV53rhQ3.js";
6
6
 
7
7
  export { androidSigningEnvironment, prepareAndroid };
@@ -1,10 +1,10 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
5
- import "../../execShellScript-5FcHM7dZ.js";
6
- import "../../MetadataSyncUtil-D8LnTqSH.js";
7
- import "../../RubyEnvironment-CPq_9yPd.js";
8
- import { prepareFastlane } from "../../prepareFastlane-ns6kCOjb.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
+ import "../../execShellScript-B6HHcv77.js";
6
+ import "../../MetadataSyncUtil-DSi5YMM1.js";
7
+ import "../../RubyEnvironment-BUsGpWfG.js";
8
+ import { prepareFastlane } from "../../prepareFastlane-7Zg3N5Fy.js";
9
9
 
10
10
  export { prepareFastlane };
@@ -1,7 +1,7 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
5
- import { prepareIos, selectIosCandidate } from "../../prepareIos-CXqNQ40Q.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
+ import { prepareIos, selectIosCandidate } from "../../prepareIos-Cigqnhe8.js";
6
6
 
7
7
  export { prepareIos, selectIosCandidate };
@@ -1,11 +1,11 @@
1
- import "../../OptionHolder-DCm-Anf0.js";
1
+ import "../../OptionHolder-Ci01mA57.js";
2
2
  import "../../FileUtil-Dq8PORna.js";
3
- import "../../logger-BLZBLDnp.js";
4
- import "../../CredentialVault-DJK55Brb.js";
3
+ import "../../logger-BY1_5Qm4.js";
4
+ import "../../CredentialVault-f3Q-GQiW.js";
5
5
  import "../../EnvUtil-bT6jh2Up.js";
6
- import "../../parseConfigFile-BGBx_tJj.js";
7
- import "../../throwError-CjtFnSTp.js";
8
- import "../../VersionUtil-Io9Zx_Fc.js";
9
- import { setup } from "../../setup-q_SlIP_M.js";
6
+ import "../../parseConfigFile-N2627e-u.js";
7
+ import "../../throwError-CagLBtkh.js";
8
+ import "../../VersionUtil-DJcMTY2B.js";
9
+ import { setup } from "../../setup-ChAxYljZ.js";
10
10
 
11
11
  export { setup };
@@ -1,7 +1,7 @@
1
- import "../OptionHolder-DCm-Anf0.js";
1
+ import "../OptionHolder-Ci01mA57.js";
2
2
  import "../FileUtil-Dq8PORna.js";
3
- import "../logger-BLZBLDnp.js";
3
+ import "../logger-BY1_5Qm4.js";
4
4
  import "../EnvUtil-bT6jh2Up.js";
5
- import { throwError } from "../throwError-CjtFnSTp.js";
5
+ import { throwError } from "../throwError-CagLBtkh.js";
6
6
 
7
7
  export { throwError };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-release-it",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "homepage": "https://expo-release-it.mjstudio.net/",
5
5
  "license": "MIT",
6
6
  "repository": "https://github.com/mym0404/expo-release-it",
@@ -14,6 +14,21 @@
14
14
  ],
15
15
  "type": "module",
16
16
  "module": "src/index.ts",
17
+ "scripts": {
18
+ "build": "pnpm build:json-schema-type && tsdown --silent",
19
+ "build:json-schema-type": "json2ts --input expo-release-it.schema.json --output src/type/ExpoReleaseItConfiguration.d.ts && oxfmt --write src/type/ExpoReleaseItConfiguration.d.ts",
20
+ "dev": "pnpm build && NODE_ENV=development node bin/expo-release-it.mjs",
21
+ "release": "pnpm build && pnpm run t && changeset publish",
22
+ "t": "lefthook run check",
23
+ "lint": "oxlint --deny-warnings .",
24
+ "lint:fix": "oxlint --fix .",
25
+ "format": "oxfmt --write .",
26
+ "format:check": "oxfmt --check .",
27
+ "changeset": "changeset",
28
+ "version-packages": "changeset version && pnpm install --lockfile-only --ignore-scripts",
29
+ "test:e2e": "node test/e2e.mjs",
30
+ "test:ruby": "node test/ruby.mjs"
31
+ },
17
32
  "dependencies": {
18
33
  "@inquirer/prompts": "^7.4.1",
19
34
  "@mj-studio/js-util": "^1.1.20",
@@ -36,7 +51,7 @@
36
51
  "oxlint": "1.90.0",
37
52
  "tiny-glob": "^0.2.9",
38
53
  "tsdown": "^0.12.7",
39
- "typescript": "^5",
54
+ "typescript": "catalog:",
40
55
  "vitest": "^3.1.2"
41
56
  },
42
57
  "commitlint": {
@@ -44,19 +59,5 @@
44
59
  "@commitlint/config-conventional"
45
60
  ]
46
61
  },
47
- "scripts": {
48
- "build": "pnpm build:json-schema-type && tsdown --silent",
49
- "build:json-schema-type": "json2ts --input expo-release-it.schema.json --output src/type/ExpoReleaseItConfiguration.d.ts && oxfmt --write src/type/ExpoReleaseItConfiguration.d.ts",
50
- "dev": "pnpm build && NODE_ENV=development node bin/expo-release-it.mjs",
51
- "release": "pnpm build && pnpm run t && changeset publish",
52
- "t": "lefthook run check",
53
- "lint": "oxlint --deny-warnings .",
54
- "lint:fix": "oxlint --fix .",
55
- "format": "oxfmt --write .",
56
- "format:check": "oxfmt --check .",
57
- "changeset": "changeset",
58
- "version-packages": "changeset version && pnpm install --lockfile-only --ignore-scripts",
59
- "test:e2e": "node test/e2e.mjs",
60
- "test:ruby": "node test/ruby.mjs"
61
- }
62
- }
62
+ "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
63
+ }
@@ -6,6 +6,10 @@ def to_b(str)
6
6
  str == true || str.to_s.downcase == "true"
7
7
  end
8
8
 
9
+ def android_metadata_path
10
+ File.expand_path("metadata/android", __dir__)
11
+ end
12
+
9
13
  platform :android do
10
14
  before_all do
11
15
  ENV['SUPPLY_UPLOAD_MAX_RETRIES']='3'
@@ -13,7 +17,7 @@ platform :android do
13
17
  lane :upload do
14
18
  options = JSON.parse(ENV.fetch("EXPO_RELEASE_IT_OPTIONS"), symbolize_names: true)
15
19
  supply(
16
- metadata_path: File.join(__dir__, "metadata", "android"),
20
+ metadata_path: android_metadata_path,
17
21
  root_url: "https://androidpublisher.googleapis.com/",
18
22
  json_key: options[:json_key],
19
23
  package_name: options[:android_package_name],
@@ -34,7 +38,7 @@ platform :android do
34
38
  lane :submit do
35
39
  options = JSON.parse(ENV.fetch("EXPO_RELEASE_IT_OPTIONS"), symbolize_names: true)
36
40
  supply(
37
- metadata_path: File.join(__dir__, "metadata", "android"),
41
+ metadata_path: android_metadata_path,
38
42
  root_url: "https://androidpublisher.googleapis.com/",
39
43
  json_key: options[:json_key],
40
44
  package_name: options[:android_package_name],
@@ -1,4 +1,6 @@
1
1
  require "json"
2
+ require "openssl"
3
+ require "tmpdir"
2
4
 
3
5
  default_platform(:ios)
4
6
 
@@ -10,6 +12,11 @@ def release_options
10
12
  JSON.parse(ENV.fetch("EXPO_RELEASE_IT_OPTIONS"), symbolize_names: true)
11
13
  end
12
14
 
15
+ def profile_contains_certificate?(path, certificate)
16
+ profile = FastlaneCore::ProvisioningProfile.parse(path)
17
+ profile.fetch("DeveloperCertificates").any? { |item| OpenSSL::X509::Certificate.new(item.string).to_der == certificate.to_der }
18
+ end
19
+
13
20
  platform :ios do
14
21
  private_lane :authenticate do |options|
15
22
  api_key = app_store_connect_api_key(
@@ -23,15 +30,29 @@ platform :ios do
23
30
  private_lane :sign do |options|
24
31
  authenticate(options)
25
32
  setup_ci
26
- match(
33
+ match_options = {
27
34
  api_key: lane_context[:API_KEY],
28
35
  storage_mode: "git",
29
36
  git_url: options[:ios_match_git_url],
30
37
  type: "appstore",
31
38
  app_identifier: [options[:ios_app_identifier]],
39
+ renew_expired_certs: true,
40
+ readonly: false,
32
41
  verbose: false,
33
42
  team_id: options[:ios_developer_team_id]
34
- )
43
+ }
44
+ Dir.mktmpdir("expo-release-it-match-") do |directory|
45
+ match_options[:output_path] = directory
46
+ match(match_options)
47
+ certificate_pattern = File.join(directory, "*.cer")
48
+ match(match_options) if Dir[certificate_pattern].empty?
49
+ certificate = OpenSSL::X509::Certificate.new(File.binread(Dir[certificate_pattern].fetch(0)))
50
+ profile_key = "sigh_#{options[:ios_app_identifier]}_appstore_profile-path"
51
+ unless profile_contains_certificate?(ENV.fetch(profile_key), certificate)
52
+ match(match_options.merge(force: true))
53
+ raise "Provisioning profile does not contain the selected distribution certificate" unless profile_contains_certificate?(ENV.fetch(profile_key), certificate)
54
+ end
55
+ end
35
56
 
36
57
  update_code_signing_settings(
37
58
  use_automatic_signing: false,
@@ -120,8 +141,8 @@ platform :ios do
120
141
  api_key: lane_context[:API_KEY],
121
142
  app_identifier: options[:ios_app_identifier],
122
143
  app_version: options[:version_name],
123
- metadata_path: File.join(__dir__, "metadata"),
124
- screenshots_path: File.join(__dir__, "screenshots"),
144
+ metadata_path: File.expand_path("metadata", __dir__),
145
+ screenshots_path: File.expand_path("screenshots", __dir__),
125
146
  force: true, # Set to true to skip verification of HTML preview
126
147
  skip_binary_upload: true,
127
148
  submit_for_review: true,
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "fastlane", "2.227.1"
3
+ gem "fastlane", "2.241.2"
4
4
  gem "abbrev", "0.1.2"
5
5
  gem "csv", "3.3.7"
6
6
  gem "ostruct", "0.6.3"