@expo/steps 0.0.3 → 0.0.5

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 (88) hide show
  1. package/README.md +4 -0
  2. package/bin/set-output +2 -0
  3. package/bin/upload-artifact +12 -0
  4. package/dist_commonjs/BuildArtifacts.cjs +9 -0
  5. package/dist_commonjs/BuildArtifacts.d.ts +5 -0
  6. package/dist_commonjs/BuildArtifacts.js.map +1 -0
  7. package/dist_commonjs/BuildConfig.cjs +85 -27
  8. package/dist_commonjs/BuildConfig.d.ts +41 -13
  9. package/dist_commonjs/BuildConfig.js.map +1 -1
  10. package/dist_commonjs/BuildConfigParser.cjs +94 -27
  11. package/dist_commonjs/BuildConfigParser.d.ts +7 -2
  12. package/dist_commonjs/BuildConfigParser.js.map +1 -1
  13. package/dist_commonjs/BuildFunction.cjs +40 -0
  14. package/dist_commonjs/BuildFunction.d.ts +32 -0
  15. package/dist_commonjs/BuildFunction.js.map +1 -0
  16. package/dist_commonjs/BuildPlatform.cjs +9 -0
  17. package/dist_commonjs/BuildPlatform.d.ts +4 -0
  18. package/dist_commonjs/BuildPlatform.js.map +1 -0
  19. package/dist_commonjs/BuildStep.cjs +9 -7
  20. package/dist_commonjs/BuildStep.js.map +1 -1
  21. package/dist_commonjs/BuildStepInput.cjs +1 -1
  22. package/dist_commonjs/BuildStepInput.d.ts +1 -0
  23. package/dist_commonjs/BuildStepInput.js.map +1 -1
  24. package/dist_commonjs/BuildStepOutput.d.ts +1 -0
  25. package/dist_commonjs/BuildStepOutput.js.map +1 -1
  26. package/dist_commonjs/BuildTemporaryFiles.cjs +100 -0
  27. package/dist_commonjs/BuildTemporaryFiles.d.ts +8 -0
  28. package/dist_commonjs/BuildTemporaryFiles.js.map +1 -0
  29. package/dist_commonjs/BuildWorkflow.cjs +18 -1
  30. package/dist_commonjs/BuildWorkflow.d.ts +9 -1
  31. package/dist_commonjs/BuildWorkflow.js.map +1 -1
  32. package/dist_commonjs/bin/uploadArtifact.cjs +30 -0
  33. package/dist_commonjs/bin/uploadArtifact.d.ts +1 -0
  34. package/dist_commonjs/bin/uploadArtifact.js.map +1 -0
  35. package/dist_commonjs/cli/cli.cjs +4 -0
  36. package/dist_commonjs/cli/cli.js.map +1 -1
  37. package/dist_commonjs/errors/BuildInternalError.cjs +7 -0
  38. package/dist_commonjs/errors/BuildInternalError.d.ts +2 -0
  39. package/dist_commonjs/errors/BuildInternalError.js.map +1 -0
  40. package/dist_commonjs/index.cjs +3 -1
  41. package/dist_commonjs/index.d.ts +1 -0
  42. package/dist_commonjs/index.js.map +1 -1
  43. package/dist_esm/BuildArtifacts.d.ts +5 -0
  44. package/dist_esm/BuildArtifacts.js +6 -0
  45. package/dist_esm/BuildArtifacts.js.map +1 -0
  46. package/dist_esm/BuildConfig.d.ts +41 -13
  47. package/dist_esm/BuildConfig.js +79 -25
  48. package/dist_esm/BuildConfig.js.map +1 -1
  49. package/dist_esm/BuildConfigParser.d.ts +7 -2
  50. package/dist_esm/BuildConfigParser.js +95 -28
  51. package/dist_esm/BuildConfigParser.js.map +1 -1
  52. package/dist_esm/BuildFunction.d.ts +32 -0
  53. package/dist_esm/BuildFunction.js +36 -0
  54. package/dist_esm/BuildFunction.js.map +1 -0
  55. package/dist_esm/BuildPlatform.d.ts +4 -0
  56. package/dist_esm/BuildPlatform.js +6 -0
  57. package/dist_esm/BuildPlatform.js.map +1 -0
  58. package/dist_esm/BuildStep.js +7 -5
  59. package/dist_esm/BuildStep.js.map +1 -1
  60. package/dist_esm/BuildStepInput.d.ts +1 -0
  61. package/dist_esm/BuildStepInput.js +1 -1
  62. package/dist_esm/BuildStepInput.js.map +1 -1
  63. package/dist_esm/BuildStepOutput.d.ts +1 -0
  64. package/dist_esm/BuildStepOutput.js.map +1 -1
  65. package/dist_esm/BuildTemporaryFiles.d.ts +8 -0
  66. package/dist_esm/BuildTemporaryFiles.js +88 -0
  67. package/dist_esm/BuildTemporaryFiles.js.map +1 -0
  68. package/dist_esm/BuildWorkflow.d.ts +9 -1
  69. package/dist_esm/BuildWorkflow.js +18 -1
  70. package/dist_esm/BuildWorkflow.js.map +1 -1
  71. package/dist_esm/bin/uploadArtifact.d.ts +1 -0
  72. package/dist_esm/bin/uploadArtifact.js +25 -0
  73. package/dist_esm/bin/uploadArtifact.js.map +1 -0
  74. package/dist_esm/cli/cli.js +4 -0
  75. package/dist_esm/cli/cli.js.map +1 -1
  76. package/dist_esm/errors/BuildInternalError.d.ts +2 -0
  77. package/dist_esm/errors/BuildInternalError.js +3 -0
  78. package/dist_esm/errors/BuildInternalError.js.map +1 -0
  79. package/dist_esm/index.d.ts +1 -0
  80. package/dist_esm/index.js +1 -0
  81. package/dist_esm/index.js.map +1 -1
  82. package/package.json +3 -2
  83. package/dist_commonjs/utils/shell/temporaryFiles.cjs +0 -42
  84. package/dist_commonjs/utils/shell/temporaryFiles.d.ts +0 -4
  85. package/dist_commonjs/utils/shell/temporaryFiles.js.map +0 -1
  86. package/dist_esm/utils/shell/temporaryFiles.d.ts +0 -4
  87. package/dist_esm/utils/shell/temporaryFiles.js +0 -33
  88. package/dist_esm/utils/shell/temporaryFiles.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BuildStepInput.js","sourceRoot":"","sources":["../src/BuildStepInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,cAAc;IAQzB,YACmB,GAAqB,EACtC,EACE,EAAE,EACF,MAAM,EACN,YAAY,EACZ,QAAQ,GAAG,KAAK,GAMjB;QAXgB,QAAG,GAAH,GAAG,CAAkB;QAatC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;;QACP,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3C,MAAM,IAAI,qBAAqB,CAC7B,oBAAoB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,mCAAmC,CACzF,CAAC;SACH;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,OAAO,QAAQ,CAAC;SACjB;aAAM;YACL,OAAO,sBAAsB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC;SAC5F;IACH,CAAC;IAED,GAAG,CAAC,KAAyB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;YACxC,MAAM,IAAI,qBAAqB,CAC7B,oBAAoB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,gBAAgB,CACtE,CAAC;SACH;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { BuildStepContext } from './BuildStepContext.js';\nimport { BuildStepRuntimeError } from './errors/BuildStepRuntimeError.js';\nimport { interpolateWithOutputs } from './utils/template.js';\n\nexport class BuildStepInput {\n public readonly id: string;\n public readonly stepId: string;\n public readonly defaultValue?: string;\n public readonly required: boolean;\n\n private _value?: string;\n\n constructor(\n private readonly ctx: BuildStepContext,\n {\n id,\n stepId,\n defaultValue,\n required = false,\n }: {\n id: string;\n stepId: string;\n defaultValue?: string;\n required?: boolean;\n }\n ) {\n this.id = id;\n this.stepId = stepId;\n this.defaultValue = defaultValue;\n this.required = required;\n }\n\n get value(): string | undefined {\n const rawValue = this._value ?? this.defaultValue;\n if (this.required && rawValue === undefined) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepId}\" is required but it was not set.`\n );\n }\n\n if (rawValue === undefined) {\n return rawValue;\n } else {\n return interpolateWithOutputs(rawValue, (path) => this.ctx.getStepOutputValue(path) ?? '');\n }\n }\n\n set(value: string | undefined): BuildStepInput {\n if (this.required && value === undefined) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepId}\" is required.`\n );\n }\n this._value = value;\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"BuildStepInput.js","sourceRoot":"","sources":["../src/BuildStepInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAI7D,MAAM,OAAO,cAAc;IAQzB,YACmB,GAAqB,EACtC,EACE,EAAE,EACF,MAAM,EACN,YAAY,EACZ,QAAQ,GAAG,IAAI,GAMhB;QAXgB,QAAG,GAAH,GAAG,CAAkB;QAatC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;;QACP,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3C,MAAM,IAAI,qBAAqB,CAC7B,oBAAoB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,mCAAmC,CACzF,CAAC;SACH;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,OAAO,QAAQ,CAAC;SACjB;aAAM;YACL,OAAO,sBAAsB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC;SAC5F;IACH,CAAC;IAED,GAAG,CAAC,KAAyB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;YACxC,MAAM,IAAI,qBAAqB,CAC7B,oBAAoB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,gBAAgB,CACtE,CAAC;SACH;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { BuildStepContext } from './BuildStepContext.js';\nimport { BuildStepRuntimeError } from './errors/BuildStepRuntimeError.js';\nimport { interpolateWithOutputs } from './utils/template.js';\n\nexport type BuildStepInputCreator = (stepId: string) => BuildStepInput;\n\nexport class BuildStepInput {\n public readonly id: string;\n public readonly stepId: string;\n public readonly defaultValue?: string;\n public readonly required: boolean;\n\n private _value?: string;\n\n constructor(\n private readonly ctx: BuildStepContext,\n {\n id,\n stepId,\n defaultValue,\n required = true,\n }: {\n id: string;\n stepId: string;\n defaultValue?: string;\n required?: boolean;\n }\n ) {\n this.id = id;\n this.stepId = stepId;\n this.defaultValue = defaultValue;\n this.required = required;\n }\n\n get value(): string | undefined {\n const rawValue = this._value ?? this.defaultValue;\n if (this.required && rawValue === undefined) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepId}\" is required but it was not set.`\n );\n }\n\n if (rawValue === undefined) {\n return rawValue;\n } else {\n return interpolateWithOutputs(rawValue, (path) => this.ctx.getStepOutputValue(path) ?? '');\n }\n }\n\n set(value: string | undefined): BuildStepInput {\n if (this.required && value === undefined) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepId}\" is required.`\n );\n }\n this._value = value;\n return this;\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { BuildStepContext } from './BuildStepContext.js';
2
+ export type BuildStepOutputCreator = (stepId: string) => BuildStepOutput;
2
3
  export declare class BuildStepOutput {
3
4
  private readonly ctx;
4
5
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BuildStepOutput.js","sourceRoot":"","sources":["../src/BuildStepOutput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,eAAe;IAO1B;IACE,wFAAwF;IACvE,GAAqB,EACtC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAsD;QADlE,QAAG,GAAH,GAAG,CAAkB;QAGtC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9C,MAAM,IAAI,qBAAqB,CAC7B,qBAAqB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,mCAAmC,CAC1F,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,KAAyB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;YACxC,MAAM,IAAI,qBAAqB,CAC7B,qBAAqB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,gBAAgB,CACvE,CAAC;SACH;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { BuildStepContext } from './BuildStepContext.js';\nimport { BuildStepRuntimeError } from './errors/BuildStepRuntimeError.js';\n\nexport class BuildStepOutput {\n public readonly id: string;\n public readonly stepId: string;\n public readonly required: boolean;\n\n private _value?: string;\n\n constructor(\n // @ts-expect-error ctx is not used in this class but let's keep it here for consistency\n private readonly ctx: BuildStepContext,\n { id, stepId, required = true }: { id: string; stepId: string; required?: boolean }\n ) {\n this.id = id;\n this.stepId = stepId;\n this.required = required;\n }\n\n get value(): string | undefined {\n if (this.required && this._value === undefined) {\n throw new BuildStepRuntimeError(\n `Output parameter \"${this.id}\" for step \"${this.stepId}\" is required but it was not set.`\n );\n }\n return this._value;\n }\n\n set(value: string | undefined): BuildStepOutput {\n if (this.required && value === undefined) {\n throw new BuildStepRuntimeError(\n `Output parameter \"${this.id}\" for step \"${this.stepId}\" is required.`\n );\n }\n this._value = value;\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"BuildStepOutput.js","sourceRoot":"","sources":["../src/BuildStepOutput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAI1E,MAAM,OAAO,eAAe;IAO1B;IACE,wFAAwF;IACvE,GAAqB,EACtC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAsD;QADlE,QAAG,GAAH,GAAG,CAAkB;QAGtC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9C,MAAM,IAAI,qBAAqB,CAC7B,qBAAqB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,mCAAmC,CAC1F,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,KAAyB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;YACxC,MAAM,IAAI,qBAAqB,CAC7B,qBAAqB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,gBAAgB,CACvE,CAAC;SACH;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { BuildStepContext } from './BuildStepContext.js';\nimport { BuildStepRuntimeError } from './errors/BuildStepRuntimeError.js';\n\nexport type BuildStepOutputCreator = (stepId: string) => BuildStepOutput;\n\nexport class BuildStepOutput {\n public readonly id: string;\n public readonly stepId: string;\n public readonly required: boolean;\n\n private _value?: string;\n\n constructor(\n // @ts-expect-error ctx is not used in this class but let's keep it here for consistency\n private readonly ctx: BuildStepContext,\n { id, stepId, required = true }: { id: string; stepId: string; required?: boolean }\n ) {\n this.id = id;\n this.stepId = stepId;\n this.required = required;\n }\n\n get value(): string | undefined {\n if (this.required && this._value === undefined) {\n throw new BuildStepRuntimeError(\n `Output parameter \"${this.id}\" for step \"${this.stepId}\" is required but it was not set.`\n );\n }\n return this._value;\n }\n\n set(value: string | undefined): BuildStepOutput {\n if (this.required && value === undefined) {\n throw new BuildStepRuntimeError(\n `Output parameter \"${this.id}\" for step \"${this.stepId}\" is required.`\n );\n }\n this._value = value;\n return this;\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { BuildStepContext } from './BuildStepContext.js';
2
+ import { BuildArtifactType } from './BuildArtifacts.js';
3
+ export declare function saveScriptToTemporaryFileAsync(ctx: BuildStepContext, stepId: string, scriptContents: string): Promise<string>;
4
+ export declare function saveArtifactToTemporaryDirectoryAsync(ctx: BuildStepContext, type: BuildArtifactType, artifactPath: string): Promise<string>;
5
+ export declare function createTemporaryOutputsDirectoryAsync(ctx: BuildStepContext, stepId: string): Promise<string>;
6
+ export declare function findArtifactsByTypeAsync(ctx: BuildStepContext, type: BuildArtifactType): Promise<string[]>;
7
+ export declare function cleanUpStepTemporaryDirectoriesAsync(ctx: BuildStepContext, stepId: string): Promise<void>;
8
+ export declare function cleanUpWorkflowTemporaryDirectoriesAsync(ctx: BuildStepContext): Promise<void>;
@@ -0,0 +1,88 @@
1
+ import path from 'path';
2
+ import fs from 'fs/promises';
3
+ import { v4 as uuidv4 } from 'uuid';
4
+ import { BuildArtifactType } from './BuildArtifacts.js';
5
+ import { BuildInternalError } from './errors/BuildInternalError.js';
6
+ export async function saveScriptToTemporaryFileAsync(ctx, stepId, scriptContents) {
7
+ const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);
8
+ await fs.mkdir(scriptsDir, { recursive: true });
9
+ const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);
10
+ await fs.writeFile(temporaryScriptPath, scriptContents);
11
+ return temporaryScriptPath;
12
+ }
13
+ export async function saveArtifactToTemporaryDirectoryAsync(ctx, type, artifactPath) {
14
+ let targetArtifactPath;
15
+ if (type === BuildArtifactType.APPLICATION_ARCHIVE) {
16
+ targetArtifactPath = path.join(getTemporaryApplicationArchiveDirPath(ctx), path.basename(artifactPath));
17
+ }
18
+ else if (type === BuildArtifactType.BUILD_ARTIFACT) {
19
+ targetArtifactPath = path.join(getTemporaryBuildArtifactsDirPath(ctx), path.basename(artifactPath));
20
+ }
21
+ else {
22
+ throw new BuildInternalError(`Uploading artifacts of type "${type}" is not implemented.`);
23
+ }
24
+ await fs.mkdir(path.dirname(targetArtifactPath), { recursive: true });
25
+ await fs.copyFile(artifactPath, targetArtifactPath);
26
+ return targetArtifactPath;
27
+ }
28
+ export async function createTemporaryOutputsDirectoryAsync(ctx, stepId) {
29
+ const directory = getTemporaryOutputsDirPath(ctx, stepId);
30
+ await fs.mkdir(directory, { recursive: true });
31
+ return directory;
32
+ }
33
+ export async function findArtifactsByTypeAsync(ctx, type) {
34
+ let artifactsDirPath;
35
+ if (type === BuildArtifactType.APPLICATION_ARCHIVE) {
36
+ artifactsDirPath = getTemporaryApplicationArchiveDirPath(ctx);
37
+ }
38
+ else if (type === BuildArtifactType.BUILD_ARTIFACT) {
39
+ artifactsDirPath = getTemporaryBuildArtifactsDirPath(ctx);
40
+ }
41
+ else {
42
+ throw new BuildInternalError(`Finding artifacts of type "${type}" is not implemented.`);
43
+ }
44
+ try {
45
+ const filenames = await fs.readdir(artifactsDirPath);
46
+ return filenames.map((filename) => path.join(artifactsDirPath, filename));
47
+ }
48
+ catch (err) {
49
+ ctx.logger.debug({ err }, `Failed reading artifacts of type "${type}" from "${artifactsDirPath}". The directory probably doesn't exist.`);
50
+ return [];
51
+ }
52
+ }
53
+ export async function cleanUpStepTemporaryDirectoriesAsync(ctx, stepId) {
54
+ if (ctx.skipCleanup) {
55
+ return;
56
+ }
57
+ const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);
58
+ await fs.rm(stepTemporaryDirectory, { recursive: true });
59
+ ctx.logger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');
60
+ }
61
+ export async function cleanUpWorkflowTemporaryDirectoriesAsync(ctx) {
62
+ if (ctx.skipCleanup) {
63
+ return;
64
+ }
65
+ const temporaryDirectories = [getTemporaryArtifactsDirPath(ctx)];
66
+ const rmPromises = temporaryDirectories.map((dir) => fs.rm(dir, { recursive: true }));
67
+ await Promise.all(rmPromises);
68
+ ctx.logger.debug({ temporaryDirectories }, 'Removed temporary directories');
69
+ }
70
+ function getTemporaryStepDirPath(ctx, stepId) {
71
+ return path.join(ctx.baseWorkingDirectory, 'steps', stepId);
72
+ }
73
+ function getTemporaryScriptsDirPath(ctx, stepId) {
74
+ return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');
75
+ }
76
+ function getTemporaryOutputsDirPath(ctx, stepId) {
77
+ return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');
78
+ }
79
+ function getTemporaryApplicationArchiveDirPath(ctx) {
80
+ return path.join(getTemporaryArtifactsDirPath(ctx), 'application-archive');
81
+ }
82
+ function getTemporaryBuildArtifactsDirPath(ctx) {
83
+ return path.join(getTemporaryArtifactsDirPath(ctx), 'build-artifacts');
84
+ }
85
+ function getTemporaryArtifactsDirPath(ctx) {
86
+ return path.join(ctx.baseWorkingDirectory, 'artifacts');
87
+ }
88
+ //# sourceMappingURL=BuildTemporaryFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildTemporaryFiles.js","sourceRoot":"","sources":["../src/BuildTemporaryFiles.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport fs from 'fs/promises';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildStepContext } from './BuildStepContext.js';\nimport { BuildArtifactType } from './BuildArtifacts.js';\nimport { BuildInternalError } from './errors/BuildInternalError.js';\n\nexport async function saveScriptToTemporaryFileAsync(\n ctx: BuildStepContext,\n stepId: string,\n scriptContents: string\n): Promise<string> {\n const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);\n await fs.mkdir(scriptsDir, { recursive: true });\n const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);\n await fs.writeFile(temporaryScriptPath, scriptContents);\n return temporaryScriptPath;\n}\n\nexport async function saveArtifactToTemporaryDirectoryAsync(\n ctx: BuildStepContext,\n type: BuildArtifactType,\n artifactPath: string\n): Promise<string> {\n let targetArtifactPath: string;\n if (type === BuildArtifactType.APPLICATION_ARCHIVE) {\n targetArtifactPath = path.join(\n getTemporaryApplicationArchiveDirPath(ctx),\n path.basename(artifactPath)\n );\n } else if (type === BuildArtifactType.BUILD_ARTIFACT) {\n targetArtifactPath = path.join(\n getTemporaryBuildArtifactsDirPath(ctx),\n path.basename(artifactPath)\n );\n } else {\n throw new BuildInternalError(`Uploading artifacts of type \"${type}\" is not implemented.`);\n }\n\n await fs.mkdir(path.dirname(targetArtifactPath), { recursive: true });\n await fs.copyFile(artifactPath, targetArtifactPath);\n return targetArtifactPath;\n}\n\nexport async function createTemporaryOutputsDirectoryAsync(\n ctx: BuildStepContext,\n stepId: string\n): Promise<string> {\n const directory = getTemporaryOutputsDirPath(ctx, stepId);\n await fs.mkdir(directory, { recursive: true });\n return directory;\n}\n\nexport async function findArtifactsByTypeAsync(\n ctx: BuildStepContext,\n type: BuildArtifactType\n): Promise<string[]> {\n let artifactsDirPath: string;\n if (type === BuildArtifactType.APPLICATION_ARCHIVE) {\n artifactsDirPath = getTemporaryApplicationArchiveDirPath(ctx);\n } else if (type === BuildArtifactType.BUILD_ARTIFACT) {\n artifactsDirPath = getTemporaryBuildArtifactsDirPath(ctx);\n } else {\n throw new BuildInternalError(`Finding artifacts of type \"${type}\" is not implemented.`);\n }\n try {\n const filenames = await fs.readdir(artifactsDirPath);\n return filenames.map((filename) => path.join(artifactsDirPath, filename));\n } catch (err) {\n ctx.logger.debug(\n { err },\n `Failed reading artifacts of type \"${type}\" from \"${artifactsDirPath}\". The directory probably doesn't exist.`\n );\n return [];\n }\n}\n\nexport async function cleanUpStepTemporaryDirectoriesAsync(\n ctx: BuildStepContext,\n stepId: string\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);\n await fs.rm(stepTemporaryDirectory, { recursive: true });\n ctx.logger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');\n}\n\nexport async function cleanUpWorkflowTemporaryDirectoriesAsync(\n ctx: BuildStepContext\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n\n const temporaryDirectories: string[] = [getTemporaryArtifactsDirPath(ctx)];\n const rmPromises = temporaryDirectories.map((dir) => fs.rm(dir, { recursive: true }));\n await Promise.all(rmPromises);\n ctx.logger.debug({ temporaryDirectories }, 'Removed temporary directories');\n}\n\nfunction getTemporaryStepDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(ctx.baseWorkingDirectory, 'steps', stepId);\n}\n\nfunction getTemporaryScriptsDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');\n}\n\nfunction getTemporaryOutputsDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');\n}\n\nfunction getTemporaryApplicationArchiveDirPath(ctx: BuildStepContext): string {\n return path.join(getTemporaryArtifactsDirPath(ctx), 'application-archive');\n}\n\nfunction getTemporaryBuildArtifactsDirPath(ctx: BuildStepContext): string {\n return path.join(getTemporaryArtifactsDirPath(ctx), 'build-artifacts');\n}\n\nfunction getTemporaryArtifactsDirPath(ctx: BuildStepContext): string {\n return path.join(ctx.baseWorkingDirectory, 'artifacts');\n}\n"]}
@@ -1,9 +1,17 @@
1
+ import { BuildArtifacts } from './BuildArtifacts.js';
2
+ import { BuildFunctionById } from './BuildFunction.js';
1
3
  import { BuildStep } from './BuildStep.js';
4
+ import { BuildStepContext } from './BuildStepContext.js';
2
5
  import { BuildStepEnv } from './BuildStepEnv.js';
3
6
  export declare class BuildWorkflow {
7
+ private readonly ctx;
4
8
  readonly buildSteps: BuildStep[];
5
- constructor({ buildSteps }: {
9
+ readonly buildFunctions: BuildFunctionById;
10
+ constructor(ctx: BuildStepContext, { buildSteps, buildFunctions }: {
6
11
  buildSteps: BuildStep[];
12
+ buildFunctions: BuildFunctionById;
7
13
  });
8
14
  executeAsync(env?: BuildStepEnv): Promise<void>;
15
+ collectArtifactsAsync(): Promise<BuildArtifacts>;
16
+ cleanUpAsync(): Promise<void>;
9
17
  }
@@ -1,11 +1,28 @@
1
+ import { BuildArtifactType } from './BuildArtifacts.js';
2
+ import { cleanUpWorkflowTemporaryDirectoriesAsync, findArtifactsByTypeAsync, } from './BuildTemporaryFiles.js';
1
3
  export class BuildWorkflow {
2
- constructor({ buildSteps }) {
4
+ constructor(ctx, { buildSteps, buildFunctions }) {
5
+ this.ctx = ctx;
3
6
  this.buildSteps = buildSteps;
7
+ this.buildFunctions = buildFunctions;
4
8
  }
5
9
  async executeAsync(env = process.env) {
6
10
  for (const step of this.buildSteps) {
7
11
  await step.executeAsync(env);
8
12
  }
9
13
  }
14
+ async collectArtifactsAsync() {
15
+ const applicationArchives = await findArtifactsByTypeAsync(this.ctx, BuildArtifactType.APPLICATION_ARCHIVE);
16
+ const buildArtifacts = await findArtifactsByTypeAsync(this.ctx, BuildArtifactType.BUILD_ARTIFACT);
17
+ return {
18
+ ...(applicationArchives.length > 0 && {
19
+ [BuildArtifactType.APPLICATION_ARCHIVE]: applicationArchives,
20
+ }),
21
+ ...(buildArtifacts.length > 0 && { [BuildArtifactType.BUILD_ARTIFACT]: buildArtifacts }),
22
+ };
23
+ }
24
+ async cleanUpAsync() {
25
+ await cleanUpWorkflowTemporaryDirectoriesAsync(this.ctx);
26
+ }
10
27
  }
11
28
  //# sourceMappingURL=BuildWorkflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BuildWorkflow.js","sourceRoot":"","sources":["../src/BuildWorkflow.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IAGxB,YAAY,EAAE,UAAU,EAA+B;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAoB,OAAO,CAAC,GAAG;QACvD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YAClC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SAC9B;IACH,CAAC;CACF","sourcesContent":["import { BuildStep } from './BuildStep.js';\nimport { BuildStepEnv } from './BuildStepEnv.js';\n\nexport class BuildWorkflow {\n public readonly buildSteps: BuildStep[];\n\n constructor({ buildSteps }: { buildSteps: BuildStep[] }) {\n this.buildSteps = buildSteps;\n }\n\n public async executeAsync(env: BuildStepEnv = process.env): Promise<void> {\n for (const step of this.buildSteps) {\n await step.executeAsync(env);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"BuildWorkflow.js","sourceRoot":"","sources":["../src/BuildWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKxE,OAAO,EACL,wCAAwC,EACxC,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,aAAa;IAIxB,YACmB,GAAqB,EACtC,EAAE,UAAU,EAAE,cAAc,EAAkE;QAD7E,QAAG,GAAH,GAAG,CAAkB;QAGtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAoB,OAAO,CAAC,GAAG;QACvD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YAClC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SAC9B;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CACxD,IAAI,CAAC,GAAG,EACR,iBAAiB,CAAC,mBAAmB,CACtC,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,wBAAwB,CACnD,IAAI,CAAC,GAAG,EACR,iBAAiB,CAAC,cAAc,CACjC,CAAC;QACF,OAAO;YACL,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI;gBACpC,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,mBAAmB;aAC7D,CAAC;YACF,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;SACzF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["import { BuildArtifacts, BuildArtifactType } from './BuildArtifacts.js';\nimport { BuildFunctionById } from './BuildFunction.js';\nimport { BuildStep } from './BuildStep.js';\nimport { BuildStepContext } from './BuildStepContext.js';\nimport { BuildStepEnv } from './BuildStepEnv.js';\nimport {\n cleanUpWorkflowTemporaryDirectoriesAsync,\n findArtifactsByTypeAsync,\n} from './BuildTemporaryFiles.js';\n\nexport class BuildWorkflow {\n public readonly buildSteps: BuildStep[];\n public readonly buildFunctions: BuildFunctionById;\n\n constructor(\n private readonly ctx: BuildStepContext,\n { buildSteps, buildFunctions }: { buildSteps: BuildStep[]; buildFunctions: BuildFunctionById }\n ) {\n this.buildSteps = buildSteps;\n this.buildFunctions = buildFunctions;\n }\n\n public async executeAsync(env: BuildStepEnv = process.env): Promise<void> {\n for (const step of this.buildSteps) {\n await step.executeAsync(env);\n }\n }\n\n public async collectArtifactsAsync(): Promise<BuildArtifacts> {\n const applicationArchives = await findArtifactsByTypeAsync(\n this.ctx,\n BuildArtifactType.APPLICATION_ARCHIVE\n );\n const buildArtifacts = await findArtifactsByTypeAsync(\n this.ctx,\n BuildArtifactType.BUILD_ARTIFACT\n );\n return {\n ...(applicationArchives.length > 0 && {\n [BuildArtifactType.APPLICATION_ARCHIVE]: applicationArchives,\n }),\n ...(buildArtifacts.length > 0 && { [BuildArtifactType.BUILD_ARTIFACT]: buildArtifacts }),\n };\n }\n\n public async cleanUpAsync(): Promise<void> {\n await cleanUpWorkflowTemporaryDirectoriesAsync(this.ctx);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ var _a;
2
+ import path from 'path';
3
+ import { createLogger } from '@expo/logger';
4
+ import arg from 'arg';
5
+ import { nullthrows } from '../utils/nullthrows.js';
6
+ import { BuildArtifactType } from '../BuildArtifacts.js';
7
+ import { BuildStepContext } from '../BuildStepContext.js';
8
+ import { saveArtifactToTemporaryDirectoryAsync } from '../BuildTemporaryFiles.js';
9
+ const args = arg({
10
+ '--type': String,
11
+ });
12
+ const artifactPathArg = nullthrows((_a = args._) === null || _a === void 0 ? void 0 : _a[0], 'upload-artifact must be run with the artifact path, e.g. "upload-artifact path/to/app.ipa"');
13
+ const artifactPath = path.resolve(process.cwd(), artifactPathArg);
14
+ const logger = createLogger({
15
+ name: 'eas-build',
16
+ level: 'info',
17
+ });
18
+ const ctx = new BuildStepContext(nullthrows(process.env.__EXPO_STEPS_BUILD_ID, 'Set __EXPO_STEPS_BUILD_ID.'), logger, false, nullthrows(process.env.__EXPO_STEPS_WORKING_DIRECTORY, 'Set __EXPO_STEPS_BUILD_ID.'));
19
+ const rawType = args['--type'];
20
+ const type = rawType !== null && rawType !== void 0 ? rawType : BuildArtifactType.APPLICATION_ARCHIVE;
21
+ saveArtifactToTemporaryDirectoryAsync(ctx, type, artifactPath).catch((err) => {
22
+ console.error(`Failed preparing "${artifactPath}" for upload.`, err);
23
+ process.exit(2);
24
+ });
25
+ //# sourceMappingURL=uploadArtifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadArtifact.js","sourceRoot":"","sources":["../../src/bin/uploadArtifact.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,IAAI,GAAG,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM;CACjB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,UAAU,CAChC,MAAA,IAAI,CAAC,CAAC,0CAAG,CAAC,CAAC,EACX,4FAA4F,CAC7F,CAAC;AACF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;AAElE,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAC9B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,EAC3E,MAAM,EACN,KAAK,EACL,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CACrF,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAkC,CAAC;AAChE,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,iBAAiB,CAAC,mBAAmB,CAAC;AAE9D,qCAAqC,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3E,OAAO,CAAC,KAAK,CAAC,qBAAqB,YAAY,eAAe,EAAE,GAAG,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","sourcesContent":["import path from 'path';\n\nimport { createLogger } from '@expo/logger';\nimport arg from 'arg';\n\nimport { nullthrows } from '../utils/nullthrows.js';\nimport { BuildArtifactType } from '../BuildArtifacts.js';\nimport { BuildStepContext } from '../BuildStepContext.js';\nimport { saveArtifactToTemporaryDirectoryAsync } from '../BuildTemporaryFiles.js';\n\nconst args = arg({\n '--type': String,\n});\n\nconst artifactPathArg = nullthrows(\n args._?.[0],\n 'upload-artifact must be run with the artifact path, e.g. \"upload-artifact path/to/app.ipa\"'\n);\nconst artifactPath = path.resolve(process.cwd(), artifactPathArg);\n\nconst logger = createLogger({\n name: 'eas-build',\n level: 'info',\n});\n\nconst ctx = new BuildStepContext(\n nullthrows(process.env.__EXPO_STEPS_BUILD_ID, 'Set __EXPO_STEPS_BUILD_ID.'),\n logger,\n false,\n nullthrows(process.env.__EXPO_STEPS_WORKING_DIRECTORY, 'Set __EXPO_STEPS_BUILD_ID.')\n);\n\nconst rawType = args['--type'] as BuildArtifactType | undefined;\nconst type = rawType ?? BuildArtifactType.APPLICATION_ARCHIVE;\n\nsaveArtifactToTemporaryDirectoryAsync(ctx, type, artifactPath).catch((err) => {\n console.error(`Failed preparing \"${artifactPath}\" for upload.`, err);\n process.exit(2);\n});\n"]}
@@ -13,6 +13,10 @@ async function runAsync(configPath, workingDirectory) {
13
13
  const parser = new BuildConfigParser(ctx, { configPath });
14
14
  const workflow = await parser.parseAsync();
15
15
  await workflow.executeAsync();
16
+ const artifacts = await workflow.collectArtifactsAsync();
17
+ if (Object.keys(artifacts).length > 0) {
18
+ logger.info({ artifacts }, 'The workflow produced artifacts');
19
+ }
16
20
  }
17
21
  const relativeConfigPath = process.argv[2];
18
22
  const relativeWorkingDirectoryPath = process.argv[3];
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ,CAAC,UAAkB,EAAE,gBAAwB;IAClE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAErD,IAAI,CAAC,kBAAkB,IAAI,CAAC,4BAA4B,EAAE;IACxD,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAEnF,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC","sourcesContent":["import path from 'path';\n\nimport { createLogger } from '@expo/logger';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildConfigParser } from '../BuildConfigParser.js';\nimport { BuildStepContext } from '../BuildStepContext.js';\n\nconst logger = createLogger({\n name: 'steps-cli',\n level: 'info',\n});\n\nasync function runAsync(configPath: string, workingDirectory: string): Promise<void> {\n const fakeBuildId = uuidv4();\n const ctx = new BuildStepContext(fakeBuildId, logger, false, workingDirectory);\n const parser = new BuildConfigParser(ctx, { configPath });\n const workflow = await parser.parseAsync();\n await workflow.executeAsync();\n}\n\nconst relativeConfigPath = process.argv[2];\nconst relativeWorkingDirectoryPath = process.argv[3];\n\nif (!relativeConfigPath && !relativeWorkingDirectoryPath) {\n console.error('Usage: yarn cli config.yml path/to/working/directory');\n process.exit(1);\n}\n\nconst configPath = path.resolve(process.cwd(), relativeConfigPath);\nconst workingDirectory = path.resolve(process.cwd(), relativeWorkingDirectoryPath);\n\nrunAsync(configPath, workingDirectory).catch((err) => {\n logger.error({ err }, 'Build failed');\n});\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ,CAAC,UAAkB,EAAE,gBAAwB;IAClE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,iCAAiC,CAAC,CAAC;KAC/D;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAErD,IAAI,CAAC,kBAAkB,IAAI,CAAC,4BAA4B,EAAE;IACxD,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAEnF,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC","sourcesContent":["import path from 'path';\n\nimport { createLogger } from '@expo/logger';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildConfigParser } from '../BuildConfigParser.js';\nimport { BuildStepContext } from '../BuildStepContext.js';\n\nconst logger = createLogger({\n name: 'steps-cli',\n level: 'info',\n});\n\nasync function runAsync(configPath: string, workingDirectory: string): Promise<void> {\n const fakeBuildId = uuidv4();\n const ctx = new BuildStepContext(fakeBuildId, logger, false, workingDirectory);\n const parser = new BuildConfigParser(ctx, { configPath });\n const workflow = await parser.parseAsync();\n await workflow.executeAsync();\n const artifacts = await workflow.collectArtifactsAsync();\n if (Object.keys(artifacts).length > 0) {\n logger.info({ artifacts }, 'The workflow produced artifacts');\n }\n}\n\nconst relativeConfigPath = process.argv[2];\nconst relativeWorkingDirectoryPath = process.argv[3];\n\nif (!relativeConfigPath && !relativeWorkingDirectoryPath) {\n console.error('Usage: yarn cli config.yml path/to/working/directory');\n process.exit(1);\n}\n\nconst configPath = path.resolve(process.cwd(), relativeConfigPath);\nconst workingDirectory = path.resolve(process.cwd(), relativeWorkingDirectoryPath);\n\nrunAsync(configPath, workingDirectory).catch((err) => {\n logger.error({ err }, 'Build failed');\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export declare class BuildInternalError extends Error {
2
+ }
@@ -0,0 +1,3 @@
1
+ export class BuildInternalError extends Error {
2
+ }
3
+ //# sourceMappingURL=BuildInternalError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildInternalError.js","sourceRoot":"","sources":["../../src/errors/BuildInternalError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;CAAG","sourcesContent":["export class BuildInternalError extends Error {}\n"]}
@@ -1,2 +1,3 @@
1
+ export { BuildArtifactType } from './BuildArtifacts.js';
1
2
  export { BuildConfigParser } from './BuildConfigParser.js';
2
3
  export { BuildStepContext } from './BuildStepContext.js';
package/dist_esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { BuildArtifactType } from './BuildArtifacts.js';
1
2
  export { BuildConfigParser } from './BuildConfigParser.js';
2
3
  export { BuildStepContext } from './BuildStepContext.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { BuildConfigParser } from './BuildConfigParser.js';\nexport { BuildStepContext } from './BuildStepContext.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { BuildArtifactType } from './BuildArtifacts.js';\nexport { BuildConfigParser } from './BuildConfigParser.js';\nexport { BuildStepContext } from './BuildStepContext.js';\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@expo/steps",
3
3
  "type": "module",
4
- "version": "0.0.3",
4
+ "version": "0.0.5",
5
5
  "main": "./dist_commonjs/index.cjs",
6
6
  "types": "./dist_esm/index.d.ts",
7
7
  "exports": {
@@ -20,7 +20,7 @@
20
20
  "scripts": {
21
21
  "start": "yarn watch",
22
22
  "build": "./build.sh",
23
- "watch": "chokidar --initial \"src/**/*.ts\" -c \"./build.sh\"",
23
+ "watch": "chokidar --initial \"src/**/*.ts\" -i \"src/**/__tests__/**/*\" -c \"./build.sh\"",
24
24
  "test": "node --experimental-vm-modules --no-warnings node_modules/.bin/jest -c=jest.config.cjs --no-cache",
25
25
  "test:watch": "yarn test --watch",
26
26
  "clean": "rm -rf node_modules dist_* coverage"
@@ -46,6 +46,7 @@
46
46
  "dependencies": {
47
47
  "@expo/logger": "0.0.27",
48
48
  "@expo/spawn-async": "^1.7.0",
49
+ "arg": "^5.0.2",
49
50
  "joi": "^17.7.0",
50
51
  "this-file": "^2.0.3",
51
52
  "uuid": "^9.0.0",
@@ -1,42 +0,0 @@
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.cleanUpTemporaryDirectoriesAsync = exports.createTemporaryOutputsDirectoryAsync = exports.saveScriptToTemporaryFileAsync = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const uuid_1 = require("uuid");
10
- async function saveScriptToTemporaryFileAsync(ctx, stepId, scriptContents) {
11
- const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);
12
- await fs_1.default.promises.mkdir(scriptsDir, { recursive: true });
13
- const temporaryScriptPath = path_1.default.join(scriptsDir, `${(0, uuid_1.v4)()}.sh`);
14
- await fs_1.default.promises.writeFile(temporaryScriptPath, scriptContents);
15
- return temporaryScriptPath;
16
- }
17
- exports.saveScriptToTemporaryFileAsync = saveScriptToTemporaryFileAsync;
18
- async function createTemporaryOutputsDirectoryAsync(ctx, stepId) {
19
- const directory = getTemporaryOutputsDirPath(ctx, stepId);
20
- await fs_1.default.promises.mkdir(directory, { recursive: true });
21
- return directory;
22
- }
23
- exports.createTemporaryOutputsDirectoryAsync = createTemporaryOutputsDirectoryAsync;
24
- async function cleanUpTemporaryDirectoriesAsync(ctx, stepId) {
25
- if (ctx.skipCleanup) {
26
- return;
27
- }
28
- const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);
29
- await fs_1.default.promises.rm(stepTemporaryDirectory, { recursive: true });
30
- ctx.logger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');
31
- }
32
- exports.cleanUpTemporaryDirectoriesAsync = cleanUpTemporaryDirectoriesAsync;
33
- function getTemporaryStepDirPath(ctx, stepId) {
34
- return path_1.default.join(ctx.baseWorkingDirectory, 'steps', stepId);
35
- }
36
- function getTemporaryScriptsDirPath(ctx, stepId) {
37
- return path_1.default.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');
38
- }
39
- function getTemporaryOutputsDirPath(ctx, stepId) {
40
- return path_1.default.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');
41
- }
42
- //# sourceMappingURL=temporaryFiles.js.map
@@ -1,4 +0,0 @@
1
- import { BuildStepContext } from '../../BuildStepContext.js';
2
- export declare function saveScriptToTemporaryFileAsync(ctx: BuildStepContext, stepId: string, scriptContents: string): Promise<string>;
3
- export declare function createTemporaryOutputsDirectoryAsync(ctx: BuildStepContext, stepId: string): Promise<string>;
4
- export declare function cleanUpTemporaryDirectoriesAsync(ctx: BuildStepContext, stepId: string): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporaryFiles.js","sourceRoot":"","sources":["../../../src/utils/shell/temporaryFiles.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAEpB,+BAAoC;AAI7B,KAAK,UAAU,8BAA8B,CAClD,GAAqB,EACrB,MAAc,EACd,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAA,SAAM,GAAE,KAAK,CAAC,CAAC;IACpE,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACjE,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAVD,wEAUC;AAEM,KAAK,UAAU,oCAAoC,CACxD,GAAqB,EACrB,MAAc;IAEd,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,SAAS,CAAC;AACnB,CAAC;AAPD,oFAOC;AAEM,KAAK,UAAU,gCAAgC,CACpD,GAAqB,EACrB,MAAc;IAEd,IAAI,GAAG,CAAC,WAAW,EAAE;QACnB,OAAO;KACR;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,YAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,EAAE,kCAAkC,CAAC,CAAC;AACnF,CAAC;AAVD,4EAUC;AAED,SAAS,uBAAuB,CAAC,GAAqB,EAAE,MAAc;IACpE,OAAO,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAqB,EAAE,MAAc;IACvE,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAqB,EAAE,MAAc;IACvE,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildStepContext } from '../../BuildStepContext.js';\n\nexport async function saveScriptToTemporaryFileAsync(\n ctx: BuildStepContext,\n stepId: string,\n scriptContents: string\n): Promise<string> {\n const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);\n await fs.promises.mkdir(scriptsDir, { recursive: true });\n const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);\n await fs.promises.writeFile(temporaryScriptPath, scriptContents);\n return temporaryScriptPath;\n}\n\nexport async function createTemporaryOutputsDirectoryAsync(\n ctx: BuildStepContext,\n stepId: string\n): Promise<string> {\n const directory = getTemporaryOutputsDirPath(ctx, stepId);\n await fs.promises.mkdir(directory, { recursive: true });\n return directory;\n}\n\nexport async function cleanUpTemporaryDirectoriesAsync(\n ctx: BuildStepContext,\n stepId: string\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);\n await fs.promises.rm(stepTemporaryDirectory, { recursive: true });\n ctx.logger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');\n}\n\nfunction getTemporaryStepDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(ctx.baseWorkingDirectory, 'steps', stepId);\n}\n\nfunction getTemporaryScriptsDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');\n}\n\nfunction getTemporaryOutputsDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');\n}\n"]}
@@ -1,4 +0,0 @@
1
- import { BuildStepContext } from '../../BuildStepContext.js';
2
- export declare function saveScriptToTemporaryFileAsync(ctx: BuildStepContext, stepId: string, scriptContents: string): Promise<string>;
3
- export declare function createTemporaryOutputsDirectoryAsync(ctx: BuildStepContext, stepId: string): Promise<string>;
4
- export declare function cleanUpTemporaryDirectoriesAsync(ctx: BuildStepContext, stepId: string): Promise<void>;
@@ -1,33 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs';
3
- import { v4 as uuidv4 } from 'uuid';
4
- export async function saveScriptToTemporaryFileAsync(ctx, stepId, scriptContents) {
5
- const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);
6
- await fs.promises.mkdir(scriptsDir, { recursive: true });
7
- const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);
8
- await fs.promises.writeFile(temporaryScriptPath, scriptContents);
9
- return temporaryScriptPath;
10
- }
11
- export async function createTemporaryOutputsDirectoryAsync(ctx, stepId) {
12
- const directory = getTemporaryOutputsDirPath(ctx, stepId);
13
- await fs.promises.mkdir(directory, { recursive: true });
14
- return directory;
15
- }
16
- export async function cleanUpTemporaryDirectoriesAsync(ctx, stepId) {
17
- if (ctx.skipCleanup) {
18
- return;
19
- }
20
- const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);
21
- await fs.promises.rm(stepTemporaryDirectory, { recursive: true });
22
- ctx.logger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');
23
- }
24
- function getTemporaryStepDirPath(ctx, stepId) {
25
- return path.join(ctx.baseWorkingDirectory, 'steps', stepId);
26
- }
27
- function getTemporaryScriptsDirPath(ctx, stepId) {
28
- return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');
29
- }
30
- function getTemporaryOutputsDirPath(ctx, stepId) {
31
- return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');
32
- }
33
- //# sourceMappingURL=temporaryFiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporaryFiles.js","sourceRoot":"","sources":["../../../src/utils/shell/temporaryFiles.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAIpC,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,GAAqB,EACrB,MAAc,EACd,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACjE,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,GAAqB,EACrB,MAAc;IAEd,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,GAAqB,EACrB,MAAc;IAEd,IAAI,GAAG,CAAC,WAAW,EAAE;QACnB,OAAO;KACR;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,EAAE,kCAAkC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAqB,EAAE,MAAc;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAqB,EAAE,MAAc;IACvE,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAqB,EAAE,MAAc;IACvE,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildStepContext } from '../../BuildStepContext.js';\n\nexport async function saveScriptToTemporaryFileAsync(\n ctx: BuildStepContext,\n stepId: string,\n scriptContents: string\n): Promise<string> {\n const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);\n await fs.promises.mkdir(scriptsDir, { recursive: true });\n const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);\n await fs.promises.writeFile(temporaryScriptPath, scriptContents);\n return temporaryScriptPath;\n}\n\nexport async function createTemporaryOutputsDirectoryAsync(\n ctx: BuildStepContext,\n stepId: string\n): Promise<string> {\n const directory = getTemporaryOutputsDirPath(ctx, stepId);\n await fs.promises.mkdir(directory, { recursive: true });\n return directory;\n}\n\nexport async function cleanUpTemporaryDirectoriesAsync(\n ctx: BuildStepContext,\n stepId: string\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);\n await fs.promises.rm(stepTemporaryDirectory, { recursive: true });\n ctx.logger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');\n}\n\nfunction getTemporaryStepDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(ctx.baseWorkingDirectory, 'steps', stepId);\n}\n\nfunction getTemporaryScriptsDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');\n}\n\nfunction getTemporaryOutputsDirPath(ctx: BuildStepContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');\n}\n"]}