@elaraai/e3-cloud-cli 1.0.94 → 1.0.97

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.
package/README.md CHANGED
@@ -446,24 +446,37 @@ e3-cloud files deploy ./repo dev src/files.ts
446
446
  # to read with and --latest keeps only each folder's n greatest keys
447
447
  e3-cloud files bind ./repo dev upload s3://partner-drop/orders/ --profile partner --latest 30
448
448
 
449
- # Bring in what changed: only files whose ETag or size changed are read, only inputs whose
450
- # files changed are written; --dry-run lists what it would take, --input syncs only those
449
+ # Bring in what changed: only files whose ETag or size changed are read, only targets whose
450
+ # files changed are written; --dry-run lists what it would take, --target syncs only those
451
+ # (an input's name, record:<name>, mutation:<record>.<name> split at its last dot), --reset seeds a record again
451
452
  e3-cloud files sync ./repo dev
452
- e3-cloud files sync ./repo dev --input orders --dry-run
453
-
454
- # The declarations, where each source is bound, and the last sync
453
+ e3-cloud files sync ./repo dev --target orders --dry-run
454
+ e3-cloud files sync ./repo dev --target mutation:price_book.load_prices
455
+
456
+ # Put files from disk into a source and take them in: each file matched to the mapping that
457
+ # takes it (a file by its name, the newest of a folder under its prefix, a directory to a
458
+ # folder mapping; --as names one), checked against its type and limit, put with your e3 login
459
+ # alone where the source is the deployment's own bucket (--profile elsewhere), then synced
460
+ e3-cloud files push https://e3.example.com/repos/acme dev ./data/prices.beast2 ./data/orders/
461
+ e3-cloud files push ./repo dev ./data/prices.beast2 --as prices --dry-run
462
+
463
+ # Each mapping, its type, the file it holds and the commit it made (or pending), where each
464
+ # source is bound, and the last sync
455
465
  e3-cloud files status ./repo dev
456
466
 
457
467
  # A sync doesn't run the dataflow
458
468
  e3 dataflow run ./repo dev
459
469
  ```
460
470
 
461
- A sync is safe to repeat and to stop: each input is remembered once it is
471
+ A sync is safe to repeat and to stop: each target is remembered once it is
462
472
  written. A file over 1 GiB less 64 KiB (or 64 MiB less 64 KiB in a folder),
463
- or one the sync can't read (archived, changed while it read it), is refused
464
- and named, and the sync exits 1. A changed declaration, a source bound elsewhere, or a
465
- package deploy that reset an input has that input taken again whole. A local
466
- repository keeps all this in `<repo>/.e3-cloud/files/<workspace>.json`.
473
+ a typed file of another type or no beast2 (refused by its header), or one
474
+ the sync can't read (archived, changed while it read it), is refused and
475
+ named, and the sync exits 1; so does a push with a file refused or failed. A
476
+ changed declaration, a source bound elsewhere, or a package deploy that reset
477
+ an input has that input taken again whole. A local repository keeps all this
478
+ in `<repo>/.e3-cloud/files/<workspace>.json` (version 2; a file the earlier
479
+ release wrote is read and written again at it).
467
480
 
468
481
  ## License
469
482
 
package/dist/src/cli.js CHANGED
@@ -421,7 +421,7 @@ app
421
421
  // e3-cloud files <subcommand>
422
422
  const files = program
423
423
  .command('files')
424
- .description('Files: inputs a solution fills from files in a bucket, declared in its code with @elaraai/e3-cloud-files and synced when asked');
424
+ .description('Files: inputs a solution fills from files in a bucket, and records seeded or fed from them, declared in its code with @elaraai/e3-cloud-files and synced when asked');
425
425
  const filesRepo = ['<repo>', 'A local repository\'s path (e.g., ./repo), or a repository URL (e.g., https://server/repos/my-repo)'];
426
426
  files
427
427
  .command('deploy')
@@ -448,12 +448,24 @@ files
448
448
  .description('Bring in what changed in each source\'s files: a local repository reads them with your own credentials, and they land only in it; a deployed one, the platform with its own read-only access')
449
449
  .argument(...filesRepo)
450
450
  .argument('<workspace>', 'Workspace name')
451
- .option('--input <name...>', 'Only these inputs')
451
+ .option('--target <target...>', 'Only these targets: an input\'s name, record:<name> or mutation:<record>.<name>')
452
+ .option('--reset <record...>', 'Take these records\' files as their state again ($seed), whatever has mutated them since their seed')
452
453
  .option('--dry-run', 'List what a sync would take, and take nothing')
453
454
  .action(filesCommand.sync);
455
+ files
456
+ .command('push')
457
+ .description('Put files from disk into a source and take them in: each file matched to the mapping that takes it by its name (or --as), put with no credentials of your own where the source is the deployment\'s own bucket, then one sync of what was put')
458
+ .argument(...filesRepo)
459
+ .argument('<workspace>', 'Workspace name')
460
+ .argument('<path...>', 'Files, or directories of files for a folder mapping')
461
+ .option('--as <target>', 'The target every file is for: an input\'s name, record:<name> or mutation:<record>.<name>')
462
+ .option('--reset <record...>', 'Take these records\' files as their state again ($seed), whatever has mutated them since their seed')
463
+ .option('--dry-run', 'Plan, and put nothing')
464
+ .option('--profile <profile>', 'The profile to put with, for a bucket the platform does not write (one of ~/.aws/config\'s)')
465
+ .action(filesCommand.push);
454
466
  files
455
467
  .command('status')
456
- .description('Show a workspace\'s Files: the declarations, where each source is bound, and the last sync')
468
+ .description('Show a workspace\'s Files: each mapping, its type and what it holds (a pending record among them), where each source is bound, and the last sync')
457
469
  .argument(...filesRepo)
458
470
  .argument('<workspace>', 'Workspace name')
459
471
  .action(filesCommand.status);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,19 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
- import { type FilesBinding, type FilesShape, type FilesStatus, type FilesSyncReport } from '@elaraai/e3-cloud-types';
5
+ import { type FilesBinding, type FilesShape, type FilesStatus, type FilesSyncReport, type FilesTarget } from '@elaraai/e3-cloud-types';
6
6
  /** A count of bytes, as people read it. */
7
7
  export declare function bytesWords(bytes: bigint): string;
8
8
  /** What a shape selects, as `status` lists it. */
9
9
  export declare function shapeWords(shape: FilesShape): string;
10
+ /** The type a mapping fills its target with, as `status` lists it: the type it names, `Blob`, or a folder's or listing's. */
11
+ export declare function typeWords(shape: FilesShape): string;
12
+ /** A mapping's target, as `status` names it: `orders`, `customers (record)`, `prices.load_prices (mutation)`. */
13
+ export declare function targetWords(target: FilesTarget): string;
10
14
  /** A binding, as people read it. */
11
15
  export declare function bindingWords(binding: FilesBinding): string;
12
16
  /**
13
- * A sync's report, as the CLI prints it: a line per input, then every file
17
+ * A sync's report, as the CLI prints it: a line per mapping, then every file
14
18
  * it did not take.
15
19
  *
16
20
  * @param report - The report
@@ -18,12 +22,20 @@ export declare function bindingWords(binding: FilesBinding): string;
18
22
  */
19
23
  export declare function syncReportText(report: FilesSyncReport): string;
20
24
  /**
21
- * A workspace's Files, as `status` prints them.
25
+ * A workspace's Files, as `status` prints them: a table of each mapping, its
26
+ * shape, its type, what it holds and the commit it made (or `pending`), then
27
+ * the sources and the last sync.
22
28
  *
23
29
  * @param status - The status
24
30
  * @returns Its lines
25
31
  */
26
32
  export declare function statusText(status: FilesStatus): string;
33
+ /** What `sync` is asked, from its options. */
34
+ interface SyncOptions {
35
+ target?: string[];
36
+ reset?: string[];
37
+ dryRun?: boolean;
38
+ }
27
39
  export declare const filesCommand: {
28
40
  /** e3-cloud files deploy <repo> <workspace> <source> [--dry-run] [--force] */
29
41
  deploy(repo: string, workspace: string, source: string, options: {
@@ -36,12 +48,17 @@ export declare const filesCommand: {
36
48
  profile?: string;
37
49
  latest?: string;
38
50
  }): Promise<void>;
39
- /** e3-cloud files sync <repo> <workspace> [--input <name...>] [--dry-run] */
40
- sync(repo: string, workspace: string, options: {
41
- input?: string[];
51
+ /** e3-cloud files sync <repo> <workspace> [--target <target...>] [--reset <record...>] [--dry-run] */
52
+ sync(repo: string, workspace: string, options: SyncOptions): Promise<void>;
53
+ /** e3-cloud files push <repo> <workspace> <path...> [--as <target>] [--reset <record...>] [--dry-run] [--profile <p>] */
54
+ push(repo: string, workspace: string, paths: string[], options: {
55
+ as?: string;
56
+ reset?: string[];
42
57
  dryRun?: boolean;
58
+ profile?: string;
43
59
  }): Promise<void>;
44
60
  /** e3-cloud files status <repo> <workspace> */
45
61
  status(repo: string, workspace: string): Promise<void>;
46
62
  };
63
+ export {};
47
64
  //# sourceMappingURL=files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/commands/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH,OAAO,EAEL,KAAK,YAAY,EAA+D,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EACxI,MAAM,yBAAyB,CAAC;AA8BjC,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWhD;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAO1D;AAcD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAM9D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAwBtD;AAsGD,eAAO,MAAM,YAAY;IACvB,8EAA8E;iBAC3D,MAAM,aAAa,MAAM,UAAU,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5H,0GAA0G;eACzF,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxJ,6EAA6E;eAC5D,MAAM,aAAa,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3G,+CAA+C;iBAC5B,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7D,CAAC"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/commands/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,EAEL,KAAK,YAAY,EAAkF,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAC7K,MAAM,yBAAyB,CAAC;AA+BjC,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWhD;AAOD,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED,6HAA6H;AAC7H,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUnD;AAOD,iHAAiH;AACjH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAMvD;AAED,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAO1D;AAuBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAO9D;AAcD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+BtD;AAqFD,8CAA8C;AAC9C,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsCD,eAAO,MAAM,YAAY;IACvB,8EAA8E;iBAC3D,MAAM,aAAa,MAAM,UAAU,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5H,0GAA0G;eACzF,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxJ,sGAAsG;eACrF,MAAM,aAAa,MAAM,WAAW,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhF,yHAAyH;eACxG,MAAM,aAAa,MAAM,SAAS,MAAM,EAAE,WAAW;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD3J,+CAA+C;iBAC5B,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7D,CAAC"}
@@ -3,17 +3,19 @@
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
5
  /**
6
- * Files commands — deploy, bind, sync, status.
6
+ * Files commands — deploy, bind, sync, push, status.
7
7
  *
8
8
  * A solution declares in its code which of its inputs come from files in a
9
- * bucket (`@elaraai/e3-cloud-files`). `deploy` checks the declarations
10
- * against the package a workspace runs and keeps them; `bind` says where a
11
- * source's files are for that workspace; `sync` brings in what changed;
12
- * `status` shows all three. Every command takes a local repository's path or
13
- * a repository's URL: a path syncs on this machine with your own cloud
14
- * credentials, and the files land only in that repository; a URL asks the
15
- * platform, which reads each binding with its own read-only role, in rounds,
16
- * and the CLI follows the sync to its end.
9
+ * bucket, and which records are seeded or fed from them
10
+ * (`@elaraai/e3-cloud-files`). `deploy` checks the declarations against the
11
+ * package a workspace runs and keeps them; `bind` says where a source's
12
+ * files are for that workspace; `sync` brings in what changed; `push` puts
13
+ * files from disk into a source and syncs their targets; `status` shows all
14
+ * of it and what each mapping holds. Every command takes a local
15
+ * repository's path or a repository's URL: a path syncs on this machine with
16
+ * your own cloud credentials, and the files land only in that repository; a
17
+ * URL asks the platform, which reads each binding with its own read-only
18
+ * role, in rounds, and the CLI follows the sync to its end.
17
19
  *
18
20
  * A deployed workspace with a staging is protected: its declarations come by
19
21
  * a release from its staging (`e3-cloud release`), with its package and
@@ -22,8 +24,8 @@
22
24
  * declarations reading them.
23
25
  */
24
26
  import { none, some } from '@elaraai/east';
25
- import { filesProblemText, } from '@elaraai/e3-cloud-types';
26
- import { bindFilesSource, deployFiles, filesSyncWait, getFiles, startFilesSync } from '@elaraai/e3-cloud-client';
27
+ import { filesProblemText, filesRefusalText, filesTargetText, filesTypeWords, parseFilesTarget, } from '@elaraai/e3-cloud-types';
28
+ import { bindFilesSource, completeFilesPush, deployFiles, filesSyncWait, getFiles, planFilesPush, startFilesSync } from '@elaraai/e3-cloud-client';
27
29
  import { getValidToken } from '../credentials.js';
28
30
  import { exitError, formatError, parseRepoUrl } from '../utils.js';
29
31
  /**
@@ -33,6 +35,7 @@ import { exitError, formatError, parseRepoUrl } from '../utils.js';
33
35
  */
34
36
  const local = () => import('../files-local.js');
35
37
  const declarations = async (source) => (await import('../files-source.js')).filesFromSource(source);
38
+ const push = () => import('../files-push.js');
36
39
  /** Whether a repository argument is a URL, rather than a local repository's path. */
37
40
  function isUrl(repo) {
38
41
  return repo.startsWith('https://') || repo.startsWith('http://');
@@ -62,6 +65,10 @@ export function bytesWords(bytes) {
62
65
  }
63
66
  return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[unit]}`;
64
67
  }
68
+ /** A count of rows, grouped. */
69
+ function rowsWords(rows) {
70
+ return `${rows.toLocaleString('en-US')} ${rows === 1n ? 'row' : 'rows'}`;
71
+ }
65
72
  /** What a shape selects, as `status` lists it. */
66
73
  export function shapeWords(shape) {
67
74
  if (shape.type === 'file')
@@ -69,6 +76,30 @@ export function shapeWords(shape) {
69
76
  const include = shape.value.include.type === 'some' ? ` ${shape.value.include.value}` : '';
70
77
  return `${shape.type} ${shape.value.prefix === '' ? '(everything)' : shape.value.prefix}${include}`;
71
78
  }
79
+ /** The type a mapping fills its target with, as `status` lists it: the type it names, `Blob`, or a folder's or listing's. */
80
+ export function typeWords(shape) {
81
+ switch (shape.type) {
82
+ case 'file':
83
+ case 'latest':
84
+ return shape.value.type.type === 'some' ? elided(filesTypeWords(shape.value.type.value)) : 'Blob';
85
+ case 'folder':
86
+ return 'Dict<String, Blob>';
87
+ case 'listing':
88
+ return 'listing';
89
+ }
90
+ }
91
+ /** Text cut at 60 characters, as the tables show a type. */
92
+ function elided(text) {
93
+ return text.length <= 60 ? text : `${text.slice(0, 59)}…`;
94
+ }
95
+ /** A mapping's target, as `status` names it: `orders`, `customers (record)`, `prices.load_prices (mutation)`. */
96
+ export function targetWords(target) {
97
+ switch (target.type) {
98
+ case 'input': return target.value;
99
+ case 'record': return `${target.value} (record)`;
100
+ case 'mutation': return `${target.value.record}.${target.value.mutation} (mutation)`;
101
+ }
102
+ }
72
103
  /** A binding, as people read it. */
73
104
  export function bindingWords(binding) {
74
105
  const extras = [
@@ -78,7 +109,11 @@ export function bindingWords(binding) {
78
109
  ].filter((extra) => extra !== null);
79
110
  return extras.length === 0 ? binding.url : `${binding.url} (${extras.join(', ')})`;
80
111
  }
81
- /** What a sync did, or would do, to one input. */
112
+ /** A commit's hash, short. */
113
+ function shortHash(hash) {
114
+ return hash.length > 12 ? hash.slice(0, 12) : hash;
115
+ }
116
+ /** What a sync did, or would do, to one mapping. */
82
117
  function mappingWords(report) {
83
118
  const counts = [
84
119
  report.added > 0n ? `${report.added} new` : null,
@@ -87,25 +122,42 @@ function mappingWords(report) {
87
122
  ].filter((count) => count !== null);
88
123
  const what = counts.length === 0 ? (report.unchanged > 0n ? 'unchanged' : 'no files') : counts.join(', ');
89
124
  const bytes = report.bytes > 0n ? `, ${bytesWords(report.bytes)}` : '';
90
- return `${what}${bytes}${report.updated ? '' : ' · not written'}`;
125
+ const taken = report.taken.type === 'some' ? (report.taken.value.rows.type === 'some' ? `, taken in: ${rowsWords(report.taken.value.rows.value)}` : ', taken in') : '';
126
+ const commit = report.commit.type === 'some' ? `, committed ${shortHash(report.commit.value)}` : '';
127
+ const kept = report.kept.type === 'some' ? `, kept: ${report.kept.value}` : '';
128
+ const waiting = report.waiting.type === 'some' ? `, waiting: ${report.waiting.value}` : '';
129
+ return `${what}${bytes}${taken}${commit}${kept}${waiting}${report.updated ? '' : ' · not written'}`;
91
130
  }
92
131
  /**
93
- * A sync's report, as the CLI prints it: a line per input, then every file
132
+ * A sync's report, as the CLI prints it: a line per mapping, then every file
94
133
  * it did not take.
95
134
  *
96
135
  * @param report - The report
97
136
  * @returns Its lines
98
137
  */
99
138
  export function syncReportText(report) {
100
- const width = Math.max(...report.mappings.map((m) => m.input.length), 5);
101
- const lines = report.mappings.map((m) => ` ${m.input.padEnd(width)} ${mappingWords(m)}`);
102
- const refused = report.mappings.flatMap((m) => m.refused.map((r) => ` ${m.input}: ${r.key} ${r.reason}`));
139
+ const names = report.mappings.map((m) => targetWords(m.target));
140
+ const width = Math.max(...names.map((n) => n.length), 5);
141
+ const lines = report.mappings.map((m, i) => ` ${names[i].padEnd(width)} ${mappingWords(m)}`);
142
+ const refused = report.mappings.flatMap((m, i) => m.refused.map((r) => ` ${names[i]}: ${r.key} ${filesRefusalText(r.reason)}`));
103
143
  if (refused.length > 0)
104
144
  lines.push('Not taken:', ...refused);
105
145
  return lines.join('\n');
106
146
  }
147
+ /** A table's rows, each column padded to its widest. */
148
+ function table(header, rows) {
149
+ const widths = header.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] ?? '').length)));
150
+ const line = (cells) => cells.map((cell, i) => (i === cells.length - 1 ? cell : cell.padEnd(widths[i]))).join(' ').trimEnd();
151
+ return [line(header), ...rows.map(line)];
152
+ }
153
+ /** A moment, as the tables show it. */
154
+ function when(date) {
155
+ return date.toISOString().replace('T', ' ').slice(0, 16);
156
+ }
107
157
  /**
108
- * A workspace's Files, as `status` prints them.
158
+ * A workspace's Files, as `status` prints them: a table of each mapping, its
159
+ * shape, its type, what it holds and the commit it made (or `pending`), then
160
+ * the sources and the last sync.
109
161
  *
110
162
  * @param status - The status
111
163
  * @returns Its lines
@@ -115,10 +167,16 @@ export function statusText(status) {
115
167
  return 'No Files declarations are deployed here (e3-cloud files deploy)';
116
168
  const { sources, mappings } = status.manifest.value;
117
169
  const bound = new Map(status.bindings.map((b) => [b.source, b]));
118
- const width = Math.max(...mappings.map((m) => m.input.length), 5);
119
- const lines = [`Declarations: ${mappings.length} ${mappings.length === 1 ? 'input' : 'inputs'} from ${sources.length} ${sources.length === 1 ? 'source' : 'sources'}`];
120
- for (const m of mappings)
121
- lines.push(` ${m.input.padEnd(width)} ${m.source}: ${shapeWords(m.shape)}`);
170
+ const held = new Map(status.mappings.map((m) => [filesTargetText(m.target), m]));
171
+ const lines = [`Declarations: ${mappings.length} ${mappings.length === 1 ? 'mapping' : 'mappings'} from ${sources.length} ${sources.length === 1 ? 'source' : 'sources'}`];
172
+ const rows = mappings.map((m) => {
173
+ const state = held.get(filesTargetText(m.target));
174
+ const holds = state?.holds.type === 'some' ? state.holds.value : null;
175
+ const holdsWords = holds === null ? '—' : [holds.key, bytesWords(holds.size), ...(holds.modified.type === 'some' ? [when(holds.modified.value)] : [])].join(' ');
176
+ const commit = state?.pending === true ? 'pending' : holds?.commit.type === 'some' ? shortHash(holds.commit.value) : m.target.type === 'input' ? '' : '—';
177
+ return [targetWords(m.target), `${m.source}: ${shapeWords(m.shape)}`, typeWords(m.shape), holdsWords, commit];
178
+ });
179
+ lines.push(...table(['Mapping', 'Shape', 'Type', 'Holds', 'Commit'], rows).map((line) => ` ${line}`));
122
180
  lines.push('Sources:');
123
181
  for (const source of sources) {
124
182
  const binding = bound.get(source);
@@ -134,7 +192,7 @@ export function statusText(status) {
134
192
  else {
135
193
  const last = status.lastSync.value;
136
194
  const updated = last.mappings.filter((m) => m.updated).length;
137
- lines.push(`Last sync: ${last.finished.toISOString().replace('T', ' ').slice(0, 16)} UTC, ${updated} of ${last.mappings.length} ${last.mappings.length === 1 ? 'input' : 'inputs'} written`);
195
+ lines.push(`Last sync: ${when(last.finished)} UTC, ${updated} of ${last.mappings.length} ${last.mappings.length === 1 ? 'mapping' : 'mappings'} written`);
138
196
  lines.push(syncReportText(last));
139
197
  }
140
198
  return lines.join('\n');
@@ -149,6 +207,19 @@ function positive(option, value) {
149
207
  exitError(`${option} takes a whole number of at least 1, not '${value}'`);
150
208
  return BigInt(value);
151
209
  }
210
+ /** Targets from `--target`: a bare name is an input's; `record:` and `mutation:` name the rest. */
211
+ function targetsOf(texts) {
212
+ if (texts === undefined)
213
+ return undefined;
214
+ return texts.map((text) => {
215
+ const target = parseFilesTarget(text);
216
+ if (target === null)
217
+ exitError(`--target takes an input's name, record:<name> or mutation:<record>.<name>, not '${text}'`);
218
+ return target;
219
+ });
220
+ }
221
+ /** Targets, as a message names them. */
222
+ const targetsWords = (targets) => targets.map(filesTargetText).join(', ');
152
223
  /** The sync's lines, and the next command when anything changed: local and remote alike. */
153
224
  function printSync(report, repo, workspace, what) {
154
225
  console.log(what);
@@ -158,6 +229,10 @@ function printSync(report, repo, workspace, what) {
158
229
  if (report.mappings.some((m) => m.refused.length > 0))
159
230
  process.exitCode = 1;
160
231
  }
232
+ /** The targets declarations fill, as a deploy's line names them. */
233
+ function declaredWords(mappings) {
234
+ return mappings.map((m) => targetWords(m.target)).join(', ');
235
+ }
161
236
  /** e3-cloud files deploy, given a repository's URL. */
162
237
  async function deployRemote(repo, workspace, source, options) {
163
238
  try {
@@ -165,16 +240,16 @@ async function deployRemote(repo, workspace, source, options) {
165
240
  const manifest = await declarations(source);
166
241
  const response = await deployFiles(baseUrl, name, workspace, manifest, { token }, { dryRun: options.dryRun === true, force: options.force === true });
167
242
  const pkg = `${response.value.package.name}@${response.value.package.version}`;
168
- const inputs = manifest.mappings.map((m) => m.input).join(', ');
243
+ const declared = declaredWords(manifest.mappings);
169
244
  if (response.type === 'refused')
170
245
  exitError(`The declarations don't fit ${pkg}, which ${workspace} runs:\n${problemsText(response.value.problems)}`);
171
246
  if (response.type === 'checked') {
172
- console.log(`The declarations fit ${pkg}, which ${workspace} runs: a deploy would keep them (${inputs})`);
247
+ console.log(`The declarations fit ${pkg}, which ${workspace} runs: a deploy would keep them (${declared})`);
173
248
  return;
174
249
  }
175
- console.log(`Deployed the declarations to ${workspace}, which runs ${pkg}: ${inputs}`);
250
+ console.log(`Deployed the declarations to ${workspace}, which runs ${pkg}: ${declared}`);
176
251
  if (response.value.retaken.length > 0)
177
- console.log(` The next sync takes ${response.value.retaken.join(', ')} again whole: ${response.value.retaken.length === 1 ? 'its declaration' : 'their declarations'} changed`);
252
+ console.log(` The next sync takes ${targetsWords(response.value.retaken)} again whole: ${response.value.retaken.length === 1 ? 'its declaration' : 'their declarations'} changed`);
178
253
  const files = await getFiles(baseUrl, name, workspace, { token });
179
254
  for (const s of manifest.sources.filter((src) => !files.status.bindings.some((b) => b.source === src))) {
180
255
  const where = files.granted[0] === undefined ? 's3://<bucket>/<prefix>/' : `s3://${files.granted[0].bucket}/${files.granted[0].prefixes[0] ?? ''}<folder>/`;
@@ -196,7 +271,7 @@ async function bindRemote(repo, workspace, binding) {
196
271
  }
197
272
  console.log(`${binding.source} is bound to ${bindingWords(binding)} for ${workspace}`);
198
273
  if (response.value.retaken.length > 0)
199
- console.log(` The next sync takes ${response.value.retaken.join(', ')} again whole: the source moved`);
274
+ console.log(` The next sync takes ${targetsWords(response.value.retaken)} again whole: the source moved`);
200
275
  // Bound before any declaration reads it: a release may bring them
201
276
  const declared = (await getFiles(baseUrl, name, workspace, { token })).status.manifest;
202
277
  if (declared.type === 'none' || !declared.value.mappings.some((m) => m.source === binding.source)) {
@@ -212,7 +287,8 @@ async function syncRemote(repo, workspace, options) {
212
287
  try {
213
288
  const { baseUrl, name, token } = await remote(repo);
214
289
  const dryRun = options.dryRun === true;
215
- const start = await startFilesSync(baseUrl, name, workspace, { dryRun, ...(options.input !== undefined && { inputs: options.input }) }, { token });
290
+ const targets = targetsOf(options.target);
291
+ const start = await startFilesSync(baseUrl, name, workspace, { dryRun, ...(targets !== undefined && { targets }), ...(options.reset !== undefined && { reset: options.reset }) }, { token });
216
292
  if (start.type === 'running')
217
293
  console.log(`A sync of ${workspace} is under way (${start.value}): following it rather than start another`);
218
294
  else
@@ -262,15 +338,16 @@ export const filesCommand = {
262
338
  const pkg = `${result.package.name}@${result.package.version}`;
263
339
  if (result.problems.length > 0)
264
340
  exitError(`The declarations don't fit ${pkg}, which ${workspace} runs:\n${problemsText(result.problems)}`);
265
- const inputs = manifest.mappings.map((m) => m.input).join(', ');
341
+ const declared = declaredWords(manifest.mappings);
266
342
  if (options.dryRun === true) {
267
- console.log(`The declarations fit ${pkg}, which ${workspace} runs: a deploy would keep them (${inputs})`);
343
+ console.log(`The declarations fit ${pkg}, which ${workspace} runs: a deploy would keep them (${declared})`);
268
344
  return;
269
345
  }
270
- console.log(`Deployed the declarations to ${workspace}, which runs ${pkg}: ${inputs}`);
346
+ console.log(`Deployed the declarations to ${workspace}, which runs ${pkg}: ${declared}`);
271
347
  if (result.retaken.length > 0)
272
- console.log(` The next sync takes ${result.retaken.join(', ')} again whole: ${result.retaken.length === 1 ? 'its declaration' : 'their declarations'} changed`);
273
- const unbound = manifest.sources.filter((s) => !statusLocal(path, workspace).bindings.some((b) => b.source === s));
348
+ console.log(` The next sync takes ${targetsWords(result.retaken)} again whole: ${result.retaken.length === 1 ? 'its declaration' : 'their declarations'} changed`);
349
+ const status = await statusLocal(path, workspace);
350
+ const unbound = manifest.sources.filter((s) => !status.bindings.some((b) => b.source === s));
274
351
  for (const s of unbound)
275
352
  console.log(` Bind ${s} next: e3-cloud files bind ${repo} ${workspace} ${s} s3://<bucket>/<prefix>/`);
276
353
  }
@@ -297,13 +374,13 @@ export const filesCommand = {
297
374
  exitError(`${source} can't be bound there:\n${problemsText(result.problems)}`);
298
375
  console.log(`${source} is bound to ${bindingWords(binding)} for ${workspace}`);
299
376
  if (result.retaken.length > 0)
300
- console.log(` The next sync takes ${result.retaken.join(', ')} again whole: the source moved`);
377
+ console.log(` The next sync takes ${targetsWords(result.retaken)} again whole: the source moved`);
301
378
  }
302
379
  catch (err) {
303
380
  exitError(formatError(err));
304
381
  }
305
382
  },
306
- /** e3-cloud files sync <repo> <workspace> [--input <name...>] [--dry-run] */
383
+ /** e3-cloud files sync <repo> <workspace> [--target <target...>] [--reset <record...>] [--dry-run] */
307
384
  async sync(repo, workspace, options) {
308
385
  if (isUrl(repo))
309
386
  return syncRemote(repo, workspace, options);
@@ -311,7 +388,8 @@ export const filesCommand = {
311
388
  const { openLocalRepository, syncLocal } = await local();
312
389
  const path = await openLocalRepository(repo);
313
390
  const dryRun = options.dryRun === true;
314
- const report = await syncLocal(path, workspace, { inputs: options.input, dryRun });
391
+ const targets = targetsOf(options.target);
392
+ const report = await syncLocal(path, workspace, { ...(targets !== undefined && { targets }), ...(options.reset !== undefined && { reset: options.reset }), dryRun });
315
393
  const seconds = ((report.finished.getTime() - report.started.getTime()) / 1000).toFixed(1);
316
394
  printSync(report, repo, workspace, dryRun ? `A sync of ${workspace} would take:` : `Synced ${workspace} in ${seconds} s:`);
317
395
  }
@@ -322,6 +400,63 @@ export const filesCommand = {
322
400
  exitError(formatError(err));
323
401
  }
324
402
  },
403
+ /** e3-cloud files push <repo> <workspace> <path...> [--as <target>] [--reset <record...>] [--dry-run] [--profile <p>] */
404
+ async push(repo, workspace, paths, options) {
405
+ const dryRun = options.dryRun === true;
406
+ try {
407
+ const { offeredFiles, pushText, syncWords, uploadPlanned } = await push();
408
+ const files = await offeredFiles(paths);
409
+ if (files.length === 0)
410
+ exitError('Nothing to push: the paths hold no files');
411
+ let report = null;
412
+ let plan;
413
+ let rows;
414
+ let targets;
415
+ if (isUrl(repo)) {
416
+ const { baseUrl, name, token } = await remote(repo);
417
+ plan = await planFilesPush(baseUrl, name, workspace, { files: files.map((f) => f.offered), as: options.as === undefined ? none : some(options.as) }, { token });
418
+ ({ rows, targets } = await uploadPlanned(plan, files, {
419
+ complete: async (key, uploadId, parts) => { await completeFilesPush(baseUrl, name, workspace, { key, uploadId, parts: [...parts] }, { token: await getValidToken(baseUrl) }); },
420
+ ...(options.profile !== undefined && { profile: options.profile }),
421
+ }, dryRun));
422
+ if (!dryRun && targets.length > 0) {
423
+ // A sync under way may not take what was put: followed to its end, then the push's own started
424
+ let job;
425
+ for (;;) {
426
+ const start = await startFilesSync(baseUrl, name, workspace, { targets, ...(options.reset !== undefined && { reset: options.reset }) }, { token: await getValidToken(baseUrl) });
427
+ job = await filesSyncWait(baseUrl, name, workspace, start.value, { token }, { refresh: async () => ({ token: await getValidToken(baseUrl) }) });
428
+ if (start.type === 'started')
429
+ break;
430
+ console.log(`A sync of ${workspace} was under way (${start.value}): followed to its end, now syncing what was put`);
431
+ }
432
+ if (job.state.type === 'failed')
433
+ exitError(`${pushText(plan, rows, null)}\nThe sync failed: ${job.state.value}`);
434
+ report = job.report.type === 'some' ? job.report.value : null;
435
+ }
436
+ }
437
+ else {
438
+ const { openLocalRepository, planLocal, syncLocal } = await local();
439
+ const path = await openLocalRepository(repo);
440
+ plan = await planLocal(path, workspace, files, options.as === undefined ? {} : { as: options.as });
441
+ ({ rows, targets } = await uploadPlanned(plan, files, {
442
+ complete: () => Promise.reject(new Error('a local push creates no multipart upload to complete')),
443
+ ...(options.profile !== undefined && { profile: options.profile }),
444
+ }, dryRun));
445
+ if (!dryRun && targets.length > 0)
446
+ report = await syncLocal(path, workspace, { targets, ...(options.reset !== undefined && { reset: options.reset }) });
447
+ }
448
+ for (const row of rows)
449
+ if (row.target !== null && row.put === 'put')
450
+ row.sync = syncWords(report, row.target);
451
+ const changed = report !== null && report.mappings.some((m) => m.updated);
452
+ console.log(pushText(plan, rows, changed ? `e3 dataflow run ${repo} ${workspace}` : null));
453
+ if (rows.some((row) => row.put.startsWith('refused') || row.put.startsWith('failed') || row.sync.startsWith('refused')))
454
+ process.exitCode = 1;
455
+ }
456
+ catch (err) {
457
+ exitError(formatError(err));
458
+ }
459
+ },
325
460
  /** e3-cloud files status <repo> <workspace> */
326
461
  async status(repo, workspace) {
327
462
  if (isUrl(repo))
@@ -329,7 +464,7 @@ export const filesCommand = {
329
464
  try {
330
465
  const { openLocalRepository, statusLocal } = await local();
331
466
  const path = await openLocalRepository(repo);
332
- console.log(statusText(statusLocal(path, workspace)));
467
+ console.log(statusText(await statusLocal(path, workspace)));
333
468
  }
334
469
  catch (err) {
335
470
  exitError(formatError(err));