@ship-et/buildatlas-cli 0.14.0 → 0.14.2-beta.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 (51) hide show
  1. package/dist/client.d.ts +9 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +72 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/client.test.js +42 -1
  6. package/dist/client.test.js.map +1 -1
  7. package/dist/commands/build.js +2 -2
  8. package/dist/commands/build.js.map +1 -1
  9. package/dist/commands/env.d.ts +1 -0
  10. package/dist/commands/env.d.ts.map +1 -1
  11. package/dist/commands/env.js +65 -42
  12. package/dist/commands/env.js.map +1 -1
  13. package/dist/commands/migrate/build-numbers.d.ts +2 -1
  14. package/dist/commands/migrate/build-numbers.d.ts.map +1 -1
  15. package/dist/commands/migrate/build-numbers.js +26 -6
  16. package/dist/commands/migrate/build-numbers.js.map +1 -1
  17. package/dist/commands/migrate/credentials.d.ts +17 -15
  18. package/dist/commands/migrate/credentials.d.ts.map +1 -1
  19. package/dist/commands/migrate/credentials.js +110 -45
  20. package/dist/commands/migrate/credentials.js.map +1 -1
  21. package/dist/commands/migrate/eas-client.d.ts +57 -5
  22. package/dist/commands/migrate/eas-client.d.ts.map +1 -1
  23. package/dist/commands/migrate/eas-client.js +112 -16
  24. package/dist/commands/migrate/eas-client.js.map +1 -1
  25. package/dist/commands/migrate/env.d.ts +39 -0
  26. package/dist/commands/migrate/env.d.ts.map +1 -0
  27. package/dist/commands/migrate/env.js +138 -0
  28. package/dist/commands/migrate/env.js.map +1 -0
  29. package/dist/commands/migrate/env.test.d.ts +2 -0
  30. package/dist/commands/migrate/env.test.d.ts.map +1 -0
  31. package/dist/commands/migrate/env.test.js +41 -0
  32. package/dist/commands/migrate/env.test.js.map +1 -0
  33. package/dist/commands/migrate/index.d.ts.map +1 -1
  34. package/dist/commands/migrate/index.js +146 -58
  35. package/dist/commands/migrate/index.js.map +1 -1
  36. package/dist/commands/migrate/report.d.ts +26 -0
  37. package/dist/commands/migrate/report.d.ts.map +1 -0
  38. package/dist/commands/migrate/report.js +84 -0
  39. package/dist/commands/migrate/report.js.map +1 -0
  40. package/dist/commands/submit.d.ts +6 -2
  41. package/dist/commands/submit.d.ts.map +1 -1
  42. package/dist/commands/submit.js +19 -9
  43. package/dist/commands/submit.js.map +1 -1
  44. package/dist/prompt.d.ts +16 -0
  45. package/dist/prompt.d.ts.map +1 -1
  46. package/dist/prompt.js +143 -0
  47. package/dist/prompt.js.map +1 -1
  48. package/dist/spinner.d.ts.map +1 -1
  49. package/dist/spinner.js +3 -1
  50. package/dist/spinner.js.map +1 -1
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eas-client.js","sourceRoot":"","sources":["../../../src/commands/migrate/eas-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eas-client.js","sourceRoot":"","sources":["../../../src/commands/migrate/eas-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { AuthedConfig } from './auth.ts';
2
+ import { type EasEnvVar, type ExpoAuth } from './eas-client.ts';
3
+ import type { ProjectReport } from './report.ts';
4
+ /** One BuildAtlas env row to create: a value and the profiles it applies to. */
5
+ export interface PlannedEnvRow {
6
+ value: string;
7
+ /** Empty means every profile. */
8
+ profiles: string[];
9
+ sensitive: boolean;
10
+ }
11
+ /**
12
+ * Splits one EAS variable into the BuildAtlas rows that reproduce it.
13
+ *
14
+ * EAS keys a value by environment; BuildAtlas lets one key hold several rows so long
15
+ * as their profile sets do not overlap. So each distinct value becomes its own row,
16
+ * scoped to the environments that use it — production's API URL and preview's both
17
+ * arrive, instead of only production's. A single value used by every environment in
18
+ * `allEnvironments` is stored once, for all profiles.
19
+ */
20
+ export declare function planEnvRows(readable: EasEnvVar[], allEnvironments: ReadonlySet<string>): PlannedEnvRow[];
21
+ /**
22
+ * Copies the app's EAS environment variables into BuildAtlas's env store.
23
+ *
24
+ * Environment names are carried over as profile names, which is what eas.json's
25
+ * default profiles are called. A variable whose value differs per environment
26
+ * becomes one row per value, each scoped to its environments (see `planEnvRows`).
27
+ *
28
+ * Never migrated, always reported:
29
+ * - `SECRET` variables — EAS does not return their values to anyone;
30
+ * - file variables (a `google-services.json` uploaded with `eas env:create
31
+ * --type file`) — the build sets those to a path on EAS's own machine, which
32
+ * has no BuildAtlas equivalent; commit the file or set it up by hand.
33
+ *
34
+ * Add-only, like `buildatlas env pull`: a row already set in BuildAtlas was put
35
+ * there deliberately and is left alone, so a value is skipped when its profiles
36
+ * overlap a row that exists for the same key.
37
+ */
38
+ export declare function migrateEnv(config: AuthedConfig, slug: string, auth: ExpoAuth, appId: string, report: ProjectReport): Promise<void>;
39
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAiB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,SAAS,EAAE,EACrB,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,aAAa,EAAE,CAmBjB;AAQD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Ff"}
@@ -0,0 +1,138 @@
1
+ import { apiRequest } from '../../client.js';
2
+ import { getEasEnvVars } from './eas-client.js';
3
+ import { withRetry } from './retry.js';
4
+ /**
5
+ * Splits one EAS variable into the BuildAtlas rows that reproduce it.
6
+ *
7
+ * EAS keys a value by environment; BuildAtlas lets one key hold several rows so long
8
+ * as their profile sets do not overlap. So each distinct value becomes its own row,
9
+ * scoped to the environments that use it — production's API URL and preview's both
10
+ * arrive, instead of only production's. A single value used by every environment in
11
+ * `allEnvironments` is stored once, for all profiles.
12
+ */
13
+ export function planEnvRows(readable, allEnvironments) {
14
+ const groups = new Map();
15
+ for (const e of readable) {
16
+ const group = groups.get(e.value) ?? { environments: new Set(), sensitive: false };
17
+ for (const env of e.environments)
18
+ group.environments.add(env);
19
+ group.sensitive ||= e.visibility !== 'PUBLIC';
20
+ groups.set(e.value, group);
21
+ }
22
+ const rows = [...groups].map(([value, g]) => ({
23
+ value,
24
+ profiles: [...g.environments].sort(),
25
+ sensitive: g.sensitive,
26
+ }));
27
+ const only = rows.length === 1 ? rows[0] : undefined;
28
+ if (only && allEnvironments.size && [...allEnvironments].every((env) => only.profiles.includes(env))) {
29
+ return [{ ...only, profiles: [] }];
30
+ }
31
+ return rows.sort((a, b) => a.profiles.join(',').localeCompare(b.profiles.join(',')));
32
+ }
33
+ /** An empty profile list means every profile, so it overlaps anything. */
34
+ function profilesOverlap(a, b) {
35
+ if (!a.length || !b.length)
36
+ return true;
37
+ return a.some((p) => b.includes(p));
38
+ }
39
+ /**
40
+ * Copies the app's EAS environment variables into BuildAtlas's env store.
41
+ *
42
+ * Environment names are carried over as profile names, which is what eas.json's
43
+ * default profiles are called. A variable whose value differs per environment
44
+ * becomes one row per value, each scoped to its environments (see `planEnvRows`).
45
+ *
46
+ * Never migrated, always reported:
47
+ * - `SECRET` variables — EAS does not return their values to anyone;
48
+ * - file variables (a `google-services.json` uploaded with `eas env:create
49
+ * --type file`) — the build sets those to a path on EAS's own machine, which
50
+ * has no BuildAtlas equivalent; commit the file or set it up by hand.
51
+ *
52
+ * Add-only, like `buildatlas env pull`: a row already set in BuildAtlas was put
53
+ * there deliberately and is left alone, so a value is skipped when its profiles
54
+ * overlap a row that exists for the same key.
55
+ */
56
+ export async function migrateEnv(config, slug, auth, appId, report) {
57
+ const vars = await withRetry('fetching EAS environment variables', () => getEasEnvVars(auth, appId));
58
+ if (!vars) {
59
+ report.failed('environment variables', 'could not read them from EAS — rerun migrate to try again');
60
+ return;
61
+ }
62
+ if (vars.length === 0) {
63
+ report.skipped('environment variables', 'none on EAS');
64
+ return;
65
+ }
66
+ const existing = await withRetry('checking environment variables already set', () => apiRequest(config, `/projects/${slug}/env`, { token: config.token }));
67
+ const existingByKey = new Map();
68
+ for (const row of existing?.env ?? []) {
69
+ existingByKey.set(row.key, [...(existingByKey.get(row.key) ?? []), row.profiles ?? []]);
70
+ }
71
+ // Every environment this app uses anywhere: a variable present in all of them
72
+ // applies to every profile, which BuildAtlas spells as an empty list.
73
+ const allEnvironments = new Set(vars.flatMap((v) => v.environments));
74
+ const byName = new Map();
75
+ for (const v of vars)
76
+ byName.set(v.name, [...(byName.get(v.name) ?? []), v]);
77
+ for (const [name, entries] of [...byName].sort(([a], [b]) => a.localeCompare(b))) {
78
+ const stepLabel = `env ${name}`;
79
+ const file = entries.find((e) => e.type === 'FILE_BASE64');
80
+ if (file) {
81
+ report.warn(stepLabel, `file variable${file.fileName ? ` (${file.fileName})` : ''} — not migrated; commit the file to the repo instead`);
82
+ continue;
83
+ }
84
+ const readable = entries.filter((e) => e.value !== null);
85
+ const unreadable = [...new Set(entries.filter((e) => e.value === null).flatMap((e) => e.environments))];
86
+ const setEnvHint = `set it with \`buildatlas credentials set-env ${name} --project ${slug}\``;
87
+ if (readable.length === 0) {
88
+ report.warn(stepLabel, `secret on EAS, value not readable — ${setEnvHint}`);
89
+ continue;
90
+ }
91
+ // With a SECRET value in some environment, "all profiles" would wrongly cover that
92
+ // environment too, so the readable values keep their explicit profiles.
93
+ const plan = planEnvRows(readable, unreadable.length ? new Set() : allEnvironments);
94
+ const already = existingByKey.get(name) ?? [];
95
+ const saved = [];
96
+ const kept = [];
97
+ const failed = [];
98
+ for (const row of plan) {
99
+ const scope = row.profiles.length ? row.profiles.join(', ') : 'all profiles';
100
+ if (already.some((profiles) => profilesOverlap(profiles, row.profiles))) {
101
+ kept.push(scope);
102
+ continue;
103
+ }
104
+ const ok = await withRetry(`setting ${name} (${scope})`, () => apiRequest(config, `/projects/${slug}/env`, {
105
+ method: 'PUT',
106
+ token: config.token,
107
+ body: JSON.stringify({
108
+ key: name,
109
+ value: row.value,
110
+ profiles: row.profiles,
111
+ // PUBLIC stays readable in the dashboard; anything EAS hid stays hidden.
112
+ visibility: row.sensitive ? 'secret' : 'plaintext',
113
+ }),
114
+ }));
115
+ if (ok === undefined)
116
+ failed.push(scope);
117
+ else
118
+ saved.push(scope);
119
+ }
120
+ const detail = [
121
+ saved.length ? `profiles: ${saved.join(' | ')}` : '',
122
+ kept.length ? `already set in BuildAtlas for ${kept.join(' | ')}` : '',
123
+ failed.length ? `not saved for ${failed.join(' | ')}` : '',
124
+ unreadable.length ? `secret on EAS for ${unreadable.join(', ')} — ${setEnvHint}` : '',
125
+ ]
126
+ .filter(Boolean)
127
+ .join('; ');
128
+ if (failed.length)
129
+ report.failed(stepLabel, detail);
130
+ else if (unreadable.length)
131
+ report.warn(stepLabel, detail);
132
+ else if (!saved.length)
133
+ report.skipped(stepLabel, detail);
134
+ else
135
+ report.done(stepLabel, detail);
136
+ }
137
+ }
138
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/migrate/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/env.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import assert from 'node:assert/strict';
2
+ import { describe, it } from 'node:test';
3
+ import { planEnvRows } from './env.js';
4
+ const v = (value, environments, visibility = 'PUBLIC') => ({
5
+ name: 'EXPO_PUBLIC_API_BASE_URL',
6
+ value,
7
+ environments,
8
+ visibility,
9
+ type: 'STRING',
10
+ fileName: null,
11
+ });
12
+ const ALL = new Set(['development', 'preview', 'production']);
13
+ describe('splitting an EAS variable into BuildAtlas rows', () => {
14
+ it('stores one row for every profile when every environment shares the value', () => {
15
+ assert.deepEqual(planEnvRows([v('https://api', ['development', 'preview', 'production'])], ALL), [
16
+ { value: 'https://api', profiles: [], sensitive: false },
17
+ ]);
18
+ });
19
+ it('keeps a value per profile when environments differ, instead of dropping preview', () => {
20
+ assert.deepEqual(planEnvRows([v('https://api', ['production']), v('https://staging-api', ['preview', 'development'])], ALL), [
21
+ { value: 'https://staging-api', profiles: ['development', 'preview'], sensitive: false },
22
+ { value: 'https://api', profiles: ['production'], sensitive: false },
23
+ ]);
24
+ });
25
+ it('scopes a single value to its environments when it does not cover them all', () => {
26
+ assert.deepEqual(planEnvRows([v('x', ['production'])], ALL), [
27
+ { value: 'x', profiles: ['production'], sensitive: false },
28
+ ]);
29
+ });
30
+ it('marks a row secret when any environment sharing it was not PUBLIC', () => {
31
+ const [row] = planEnvRows([v('k', ['production'], 'SENSITIVE'), v('k', ['preview'])], new Set(['production', 'preview']));
32
+ assert.equal(row.sensitive, true);
33
+ assert.deepEqual(row.profiles, []);
34
+ });
35
+ it('never widens to every profile when told no environment set is complete', () => {
36
+ assert.deepEqual(planEnvRows([v('x', ['production', 'preview'])], new Set()), [
37
+ { value: 'x', profiles: ['preview', 'production'], sensitive: false },
38
+ ]);
39
+ });
40
+ });
41
+ //# sourceMappingURL=env.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../../src/commands/migrate/env.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyE7D"}
@@ -8,14 +8,16 @@ import { requireAuth } from './auth.js';
8
8
  import { continueBuildNumbers } from './build-numbers.js';
9
9
  import { migrateCredentials } from './credentials.js';
10
10
  import { getAppIdentifiers, listExpoApps } from './eas-client.js';
11
+ import { migrateEnv } from './env.js';
11
12
  import { getExpoSession } from './expo-session.js';
12
13
  import { offerToLinkProject } from './link-project.js';
14
+ import { printSummary, ProjectReport } from './report.js';
13
15
  export function registerMigrateCommand(program) {
14
16
  program
15
17
  .command('migrate')
16
- .description('Pick an EAS project and create the matching BuildAtlas project')
18
+ .description('Pick one or more EAS projects and create the matching BuildAtlas projects')
17
19
  .option('--expo-token <token>', 'Expo access token. Skips using an `eas login` session.')
18
- .option('--slug <slug>', 'BuildAtlas slug to use (default: the EAS project slug)')
20
+ .option('--slug <slug>', 'BuildAtlas slug to use (default: the EAS project slug; one project only)')
19
21
  .option('--dir <path>', 'Project directory to read app.json / app.config from', process.cwd())
20
22
  .action(async (opts) => {
21
23
  await run(async () => {
@@ -39,70 +41,156 @@ export function registerMigrateCommand(program) {
39
41
  const apps = await withSpinner('fetching EAS projects', () => listExpoApps(auth));
40
42
  if (apps.length === 0)
41
43
  throw new Error('That account has no EAS projects.');
42
- const app = await pickApp(apps, local);
43
- const slug = opts.slug ?? app.slug;
44
- // Local app.json wins when it disagrees — it's the current source of truth for
45
- // this checkout — but EAS's own credentials fill in whatever local didn't have,
46
- // so migrate doesn't need to run from inside a fully-configured project dir.
47
- const remote = await withSpinner('reading EAS credentials', () => getAppIdentifiers(auth, app.id)).catch(() => ({}));
48
- const bundleIdentifier = local?.bundleIdentifier ?? remote.bundleIdentifier;
49
- const androidPackage = local?.androidPackage ?? remote.androidPackage;
50
- const existing = await apiRequest(config, `/projects/${slug}`, {
51
- token: config.token,
52
- }).catch((err) => {
53
- if (err instanceof AtlasApiError && err.code === 'not_found')
54
- return undefined;
55
- throw err;
56
- });
57
- // Either way, end up with a project to migrate credentials into. A project
58
- // that already exists is not a reason to stop — it is the common case for
59
- // someone re-running `migrate` after rotating a certificate on EAS, and
60
- // stopping here used to skip credentials entirely.
61
- let project;
62
- if (existing) {
63
- console.log(`${pc.dim('already exists —')} ${pc.bold(existing.project.slug)}`);
64
- project = existing.project;
44
+ // Only to label the picker; a failure here just means no labels.
45
+ const known = await apiRequest(config, '/projects', { token: config.token })
46
+ .then((r) => r.projects)
47
+ .catch(() => []);
48
+ const detected = detectApp(apps, local);
49
+ const chosen = await pickApps(apps, detected, known);
50
+ if (opts.slug && chosen.length > 1) {
51
+ throw new Error('--slug names one project, but several were selected. Drop --slug or pick one.');
65
52
  }
66
- else {
67
- project = (await withSpinner('creating BuildAtlas project', () => apiRequest(config, '/projects', {
68
- method: 'POST',
69
- token: config.token,
70
- body: JSON.stringify({
71
- slug,
72
- name: app.name,
73
- easProjectId: app.id,
74
- bundleIdentifier,
75
- androidPackage,
76
- }),
77
- }))).project;
78
- console.log(`${pc.green('✔')} created project ${pc.bold(project.slug)} from ${app.fullName}`);
53
+ const reports = [];
54
+ for (const [i, app] of chosen.entries()) {
55
+ console.log(`\n${pc.cyan(`[${i + 1}/${chosen.length}]`)} ${pc.bold(app.fullName)}`);
56
+ const report = new ProjectReport(app.fullName);
57
+ reports.push(report);
58
+ // The local checkout only describes the app it belongs to — its bundle id
59
+ // must never be stamped onto some other project picked in the same run.
60
+ const isLocal = app === detected || (chosen.length === 1 && !detected);
61
+ try {
62
+ await migrateApp({
63
+ config,
64
+ auth,
65
+ app,
66
+ slug: opts.slug ?? app.slug,
67
+ local: isLocal ? local : undefined,
68
+ dir: isLocal ? dir : undefined,
69
+ report,
70
+ });
71
+ }
72
+ catch (err) {
73
+ // One project failing must not stop the others; the summary says which.
74
+ report.aborted =
75
+ err instanceof AtlasApiError ? `${err.message} (${err.code})` : err.message;
76
+ console.log(` ${pc.red('✖')} ${pc.red(report.aborted)}`);
77
+ }
79
78
  }
80
- await continueBuildNumbers(config, project.slug, auth, app.id, { bundleIdentifier, androidPackage });
81
- await migrateCredentials(config, project.slug, auth, app.id, app.fullName);
82
- if (!bundleIdentifier || !androidPackage) {
83
- console.log(pc.dim(` Bundle id / package name were not both found in ${dir} or on EAS — fill in what's ` +
84
- `missing with \`buildatlas projects set --project ${project.slug}\`.`));
85
- }
86
- await offerToLinkProject(dir, project.slug);
79
+ printSummary(reports);
80
+ if (reports.some((r) => r.status === 'failed'))
81
+ process.exitCode = 1;
87
82
  });
88
83
  });
89
84
  }
85
+ async function migrateApp(params) {
86
+ const { config, auth, app, slug, local, dir, report } = params;
87
+ // Local app.json wins when it disagrees — it's the current source of truth for
88
+ // this checkout — but EAS's own credentials fill in whatever local didn't have,
89
+ // so migrate doesn't need to run from inside a fully-configured project dir.
90
+ const remote = await withSpinner('reading EAS app identifiers', () => getAppIdentifiers(auth, app.id)).catch(() => ({}));
91
+ const bundleIdentifier = local?.bundleIdentifier ?? remote.bundleIdentifier;
92
+ const androidPackage = local?.androidPackage ?? remote.androidPackage;
93
+ const existing = await apiRequest(config, `/projects/${slug}`, {
94
+ token: config.token,
95
+ }).catch((err) => {
96
+ if (err instanceof AtlasApiError && err.code === 'not_found')
97
+ return undefined;
98
+ throw err;
99
+ });
100
+ // Either way, end up with a project to migrate credentials into. A project
101
+ // that already exists is not a reason to stop — it is the common case for
102
+ // someone re-running `migrate` after rotating a certificate on EAS, and
103
+ // stopping here used to skip credentials entirely.
104
+ // Slugs are only unique within an Expo account: `@a/app` and `@b/app` both
105
+ // want "app". Topping up a project that was migrated from a *different* EAS
106
+ // project would sign this app with the other one's certificates.
107
+ if (existing?.project.easProjectId && existing.project.easProjectId !== app.id) {
108
+ throw new Error(`BuildAtlas project "${slug}" was migrated from a different EAS project. ` +
109
+ `Migrate ${app.fullName} on its own with \`--slug <another-slug>\`.`);
110
+ }
111
+ let project;
112
+ if (existing) {
113
+ project = existing.project;
114
+ report.skipped(`project ${project.slug}`, 'already exists');
115
+ }
116
+ else {
117
+ project = (await withSpinner('creating BuildAtlas project', () => apiRequest(config, '/projects', {
118
+ method: 'POST',
119
+ token: config.token,
120
+ body: JSON.stringify({
121
+ slug,
122
+ name: app.name,
123
+ easProjectId: app.id,
124
+ bundleIdentifier,
125
+ androidPackage,
126
+ }),
127
+ }))).project;
128
+ report.done(`project ${project.slug}`, 'created');
129
+ }
130
+ if (existing && project.bundleIdentifier && project.androidPackage) {
131
+ report.skipped('identifiers', `already set: ${project.bundleIdentifier} · ${project.androidPackage}`);
132
+ }
133
+ else if (existing && (bundleIdentifier || androidPackage)) {
134
+ // Found them, but this project was created without them and migrate does not
135
+ // rewrite an existing project's settings.
136
+ report.warn('identifiers', `project is missing some; found ${[bundleIdentifier, androidPackage].filter(Boolean).join(' · ')} — ` +
137
+ `set with \`buildatlas projects set --project ${project.slug}\``);
138
+ }
139
+ else if (bundleIdentifier && androidPackage) {
140
+ report.done('identifiers', `${bundleIdentifier} · ${androidPackage}`);
141
+ }
142
+ else {
143
+ report.warn('identifiers', `${bundleIdentifier ? '' : 'iOS bundle id'}${!bundleIdentifier && !androidPackage ? ' and ' : ''}` +
144
+ `${androidPackage ? '' : 'Android package'} not found locally or on EAS — ` +
145
+ `set with \`buildatlas projects set --project ${project.slug}\``);
146
+ }
147
+ await continueBuildNumbers(config, project.slug, auth, app.id, { bundleIdentifier, androidPackage }, report);
148
+ await migrateCredentials(config, project.slug, auth, app.id, report);
149
+ await migrateEnv(config, project.slug, auth, app.id, report);
150
+ if (dir)
151
+ await offerToLinkProject(dir, project.slug);
152
+ }
90
153
  /**
91
- * Skips the menu when the directory this ran from already points at one of the
92
- * visible apps — matched by EAS project id first, since a slug is only unique
93
- * within an account and `app.json` does not say which account it belongs to.
154
+ * The app this directory already points at — matched by EAS project id first,
155
+ * since a slug is only unique within an account and `app.json` does not say
156
+ * which account it belongs to.
94
157
  */
95
- async function pickApp(apps, local) {
96
- const detected = (local?.easProjectId && apps.find((a) => a.id === local.easProjectId)) ||
97
- (local?.slug && apps.find((a) => a.slug === local.slug));
98
- if (detected) {
158
+ function detectApp(apps, local) {
159
+ return ((local?.easProjectId && apps.find((a) => a.id === local.easProjectId)) ||
160
+ (local?.slug && apps.find((a) => a.slug === local.slug)) ||
161
+ undefined);
162
+ }
163
+ /**
164
+ * Checkbox list, with the app this directory belongs to ticked already. Without
165
+ * a terminal to ask in (CI), the detected app is the whole answer, as it was
166
+ * before more than one could be picked.
167
+ */
168
+ async function pickApps(apps, detected, known) {
169
+ // Picking one of these again is fine — it reruns and tops up whatever is
170
+ // missing — but it should not look like a fresh migration.
171
+ const hintFor = (a) => {
172
+ if (known.some((p) => p.easProjectId === a.id))
173
+ return `${a.name} · already in BuildAtlas`;
174
+ const taken = known.find((p) => p.slug === a.slug);
175
+ // A project made by hand has no EAS id; migrate fills that one in.
176
+ if (taken && !taken.easProjectId)
177
+ return `${a.name} · already in BuildAtlas`;
178
+ if (taken)
179
+ return `${a.name} · slug taken by another app, needs --slug`;
180
+ return a.name;
181
+ };
182
+ if (detected)
99
183
  console.log(pc.dim(` detected ${detected.fullName} from app config`));
100
- return detected;
101
- }
102
- return withPrompter(async (p) => {
103
- const chosen = await p.select('Which EAS project?', apps.map((a) => ({ value: a.fullName, label: a.fullName, hint: a.name })));
104
- return apps.find((a) => a.fullName === chosen);
105
- });
184
+ if (detected && !process.stdin.isTTY)
185
+ return [detected];
186
+ if (apps.length === 1)
187
+ return apps;
188
+ const chosen = await withPrompter((p) => p.multiSelect('Which EAS projects?', apps.map((a) => ({
189
+ value: a.fullName,
190
+ label: a.fullName,
191
+ hint: hintFor(a),
192
+ })), { initial: detected ? [detected.fullName] : [] }));
193
+ return apps.filter((a) => chosen.includes(a.fullName));
106
194
  }
107
195
  async function run(fn) {
108
196
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/migrate/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/migrate/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export type StepStatus = 'done' | 'skipped' | 'warn' | 'failed';
2
+ export interface Step {
3
+ status: StepStatus;
4
+ label: string;
5
+ detail?: string;
6
+ }
7
+ /**
8
+ * One migrated project's steps, printed as they happen and kept for the
9
+ * summary at the end — with several projects in one run, what happened to the
10
+ * first has long scrolled away by the time the last one finishes.
11
+ */
12
+ export declare class ProjectReport {
13
+ readonly name: string;
14
+ readonly steps: Step[];
15
+ /** Set when the project stopped part-way; later steps never ran. */
16
+ aborted: string | undefined;
17
+ constructor(name: string);
18
+ private add;
19
+ done(label: string, detail?: string): void;
20
+ skipped(label: string, detail?: string): void;
21
+ warn(label: string, detail?: string): void;
22
+ failed(label: string, detail?: string): void;
23
+ get status(): StepStatus;
24
+ }
25
+ export declare function printSummary(reports: ProjectReport[]): void;
26
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/report.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;GAIG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAM;IAC5B,oEAAoE;IACpE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,YAAY,IAAI,EAAE,MAAM,EAEvB;IAED,OAAO,CAAC,GAAG;IAMX,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzC;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAE5C;IAED,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAE3C;IAED,IAAI,MAAM,IAAI,UAAU,CAIvB;CACF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,CAkC3D"}