@eik/cli 2.0.20 → 3.0.0-next.1

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ # [3.0.0-next.1](https://github.com/eik-lib/cli/compare/v2.0.22...v3.0.0-next.1) (2022-08-17)
2
+
3
+
4
+ * feat(publish)!: include map publishing in "publish" command ([7968274](https://github.com/eik-lib/cli/commit/796827442b28bb9852af63137275535fae737c21))
5
+
6
+
7
+ ### BREAKING CHANGES
8
+
9
+ * the map command has been removed in favour of a single publish command
10
+
11
+ ## [2.0.22](https://github.com/eik-lib/cli/compare/v2.0.21...v2.0.22) (2022-01-28)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **deps:** update dependency bytes to v3.1.2 ([aa642b7](https://github.com/eik-lib/cli/commit/aa642b73fbce70633cda0bbe69ed503152980ed0))
17
+
18
+ ## [2.0.21](https://github.com/eik-lib/cli/compare/v2.0.20...v2.0.21) (2022-01-16)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **deps:** update dependency node-fetch to v2.6.7 ([3a7beb8](https://github.com/eik-lib/cli/commit/3a7beb8a2a1618fef0ac58c99eca2419b3c3929a))
24
+
1
25
  ## [2.0.20](https://github.com/eik-lib/cli/compare/v2.0.19...v2.0.20) (2021-12-28)
2
26
 
3
27
 
package/classes/alias.js CHANGED
@@ -3,9 +3,12 @@
3
3
  const assert = require('assert');
4
4
  const abslog = require('abslog');
5
5
  const { join } = require('path');
6
- const { schemas, validators } = require('@eik/common');
6
+
7
+ const validators = require('@eik/common-validators');
8
+ const schemas = require('@eik/common-schemas');
9
+
10
+ const { typeSlug } = require('@eik/common-utils');
7
11
  const { request } = require('../utils/http');
8
- const { typeSlug } = require('../utils');
9
12
 
10
13
  module.exports = class Alias {
11
14
  constructor({ logger, server, token, type, name, version, alias } = {}) {
@@ -5,9 +5,11 @@
5
5
 
6
6
  const abslog = require('abslog');
7
7
  const { join } = require('path');
8
- const { schemas, ValidationError } = require('@eik/common');
8
+
9
+ const schemas = require('@eik/common-schemas');
10
+
11
+ const { typeSlug } = require('@eik/common-utils');
9
12
  const fetch = require('node-fetch');
10
- const { typeSlug } = require('../utils');
11
13
 
12
14
  module.exports = class Integrity {
13
15
  constructor({
@@ -46,12 +48,16 @@ module.exports = class Integrity {
46
48
 
47
49
  this.log.debug(` ==> debug: ${this.debug}`);
48
50
  if (typeof this.debug !== 'boolean') {
49
- throw new ValidationError(`Parameter "debug" is not valid`);
51
+ throw new schemas.ValidationError(
52
+ `Parameter "debug" is not valid`,
53
+ );
50
54
  }
51
55
 
52
56
  this.log.debug(` ==> cwd: ${this.cwd}`);
53
57
  if (typeof this.cwd !== 'string') {
54
- throw new ValidationError(`Parameter "cwd" is not valid`);
58
+ throw new schemas.ValidationError(
59
+ `Parameter "cwd" is not valid`,
60
+ );
55
61
  }
56
62
  } catch (err) {
57
63
  throw new Error(
package/classes/login.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const abslog = require('abslog');
4
- const { schemas, ValidationError } = require('@eik/common');
4
+ const schemas = require('@eik/common-schemas');
5
5
  const { request } = require('../utils/http');
6
6
 
7
7
  module.exports = class Login {
@@ -17,7 +17,7 @@ module.exports = class Login {
17
17
  try {
18
18
  schemas.assert.server(this.server);
19
19
  if (!this.key || typeof !this.key === 'string') {
20
- throw new ValidationError('"key" must be a string');
20
+ throw new schemas.ValidationError('"key" must be a string');
21
21
  }
22
22
  } catch (err) {
23
23
  this.log.error(err.message);
package/classes/meta.js CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  const abslog = require('abslog');
7
7
  const { join } = require('path');
8
- const { schemas } = require('@eik/common');
8
+ const schemas = require('@eik/common-schemas');
9
9
  const fetch = require('node-fetch');
10
10
 
11
11
  const types = ['pkg', 'map', 'npm'];
package/classes/ping.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  const fetch = require('node-fetch');
4
4
  const abslog = require('abslog');
5
- const { schemas } = require('@eik/common');
5
+ const schemas = require('@eik/common-schemas');
6
6
 
7
7
  module.exports = class Ping {
8
8
  constructor({ logger, server } = {}) {
@@ -4,7 +4,7 @@ const assert = require('assert');
4
4
  const abslog = require('abslog');
5
5
  const { join, parse, isAbsolute } = require('path');
6
6
  const { existsSync } = require('fs');
7
- const { schemas } = require('@eik/common');
7
+ const schemas = require('@eik/common-schemas');
8
8
  const { request } = require('../../utils/http');
9
9
 
10
10
  module.exports = class PublishMap {
@@ -2,8 +2,8 @@
2
2
 
3
3
  const abslog = require('abslog');
4
4
  const { join, isAbsolute } = require('path');
5
- const { EikConfig } = require('@eik/common');
6
- const { typeSlug } = require('../../../utils');
5
+ const { EikConfig } = require('@eik/common-config-loader');
6
+ const { typeSlug } = require('@eik/common-utils');
7
7
  const ValidateInput = require('./tasks/validate-input');
8
8
  const CreateTempDirectory = require('./tasks/create-temp-directory');
9
9
  const CreateZipFile = require('./tasks/create-zip-file');
@@ -3,9 +3,9 @@
3
3
  'use strict';
4
4
 
5
5
  const { join } = require('path');
6
+ const { typeSlug } = require('@eik/common-utils');
6
7
  const { integrity, versions } = require('../../../../utils/http');
7
8
  const hash = require('../../../../utils/hash');
8
- const { typeSlug } = require('../../../../utils');
9
9
  const Task = require('./task');
10
10
 
11
11
  module.exports = class CheckIfAlreadyPublished extends Task {
@@ -3,8 +3,8 @@
3
3
  'use strict';
4
4
 
5
5
  const { join } = require('path');
6
+ const { typeSlug } = require('@eik/common-utils');
6
7
  const { request } = require('../../../../utils/http');
7
- const { typeSlug } = require('../../../../utils');
8
8
  const Task = require('./task');
9
9
 
10
10
  module.exports = class UploadFiles extends Task {
@@ -30,6 +30,7 @@ module.exports = class UploadFiles extends Task {
30
30
  return message;
31
31
  } catch (err) {
32
32
  log.error('Unable to upload zip file to server');
33
+
33
34
  switch (err.statusCode) {
34
35
  case 400:
35
36
  throw new Error(
@@ -52,7 +53,9 @@ module.exports = class UploadFiles extends Task {
52
53
  'Server was unable to write file to storage',
53
54
  );
54
55
  default:
55
- throw new Error('Server failed');
56
+ throw new Error(
57
+ `Upload to server failed, server responded with: ${err.message}`,
58
+ );
56
59
  }
57
60
  }
58
61
  }
@@ -7,10 +7,13 @@ const { join, isAbsolute, parse } = require('path');
7
7
  const abslog = require('abslog');
8
8
  const semver = require('semver');
9
9
  const mkdir = require('make-dir');
10
- const { schemas, EikConfig } = require('@eik/common');
10
+
11
+ const { EikConfig } = require('@eik/common-config-loader');
12
+ const schemas = require('@eik/common-schemas');
13
+
14
+ const { typeSlug } = require('@eik/common-utils');
11
15
  const { integrity } = require('../utils/http');
12
16
  const hash = require('../utils/hash');
13
- const { typeSlug } = require('../utils');
14
17
 
15
18
  module.exports = class Version {
16
19
  constructor({
@@ -6,11 +6,9 @@
6
6
 
7
7
  const { join } = require('path');
8
8
  const ora = require('ora');
9
- const {
10
- helpers: { configStore },
11
- } = require('@eik/common');
9
+ const { configStore, getDefaults } = require('@eik/common-config-loader');
12
10
  const Integrity = require('../classes/integrity');
13
- const { logger, getDefaults, getCWD } = require('../utils');
11
+ const { logger, getCWD } = require('../utils');
14
12
  const json = require('../utils/json');
15
13
 
16
14
  exports.command = 'integrity [name] [version]';
package/commands/login.js CHANGED
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  const homedir = require('os').homedir();
4
+ const { getDefaults } = require('@eik/common-config-loader');
4
5
  const readline = require('readline');
5
6
  const ora = require('ora');
6
7
  const Login = require('../classes/login');
7
- const { logger, getDefaults, getCWD } = require('../utils');
8
+ const { logger, getCWD } = require('../utils');
8
9
  const json = require('../utils/json');
9
10
 
10
11
  exports.command = 'login';
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  const ora = require('ora');
4
+ const { getDefaults } = require('@eik/common-config-loader');
4
5
  const Alias = require('../classes/alias');
5
- const { logger, getDefaults, getCWD } = require('../utils');
6
+ const { logger, getCWD } = require('../utils');
6
7
  const { Alias: AliasFormatter } = require('../formatters');
7
8
 
8
9
  exports.command = 'map-alias <name> <version> <alias>';
package/commands/meta.js CHANGED
@@ -5,9 +5,10 @@
5
5
  'use strict';
6
6
 
7
7
  const ora = require('ora');
8
+ const { getDefaults } = require('@eik/common-config-loader');
8
9
  const Meta = require('../classes/meta');
9
10
  const { Artifact } = require('../formatters');
10
- const { logger, getDefaults, getCWD } = require('../utils');
11
+ const { logger, getCWD } = require('../utils');
11
12
 
12
13
  exports.command = 'meta <name>';
13
14
 
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  const ora = require('ora');
4
+ const { getDefaults } = require('@eik/common-config-loader');
4
5
  const Alias = require('../classes/alias');
5
- const { logger, getDefaults, getCWD } = require('../utils');
6
+ const { logger, getCWD } = require('../utils');
6
7
  const { Alias: AliasFormatter } = require('../formatters');
7
8
 
8
9
  exports.command = 'npm-alias <name> <version> <alias>';
@@ -2,8 +2,9 @@
2
2
 
3
3
  const ora = require('ora');
4
4
  const semver = require('semver');
5
+ const { getDefaults } = require('@eik/common-config-loader');
5
6
  const Alias = require('../classes/alias');
6
- const { logger, getDefaults, getCWD } = require('../utils');
7
+ const { logger, getCWD } = require('../utils');
7
8
  const { Alias: AliasFormatter } = require('../formatters');
8
9
 
9
10
  exports.command = 'package-alias [name] [version] [alias]';
package/commands/ping.js CHANGED
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  const ora = require('ora');
4
+ const { getDefaults } = require('@eik/common-config-loader');
4
5
  const Ping = require('../classes/ping');
5
- const { logger, getDefaults, getCWD } = require('../utils');
6
+ const { logger, getCWD } = require('../utils');
6
7
 
7
8
  exports.command = 'ping [server]';
8
9
 
@@ -4,24 +4,20 @@ const { join } = require('path');
4
4
  const fetch = require('node-fetch');
5
5
  const ora = require('ora');
6
6
  const chalk = require('chalk');
7
- const {
8
- helpers: { configStore },
9
- } = require('@eik/common');
7
+ const { configStore, getDefaults } = require('@eik/common-config-loader');
8
+ const { typeSlug, typeTitle } = require('@eik/common-utils');
9
+
10
10
  const PublishPackage = require('../classes/publish/package/index');
11
- const {
12
- logger,
13
- getDefaults,
14
- getCWD,
15
- typeSlug,
16
- typeTitle,
17
- } = require('../utils');
11
+ const { logger, getCWD } = require('../utils');
12
+
18
13
  const { Artifact } = require('../formatters');
14
+ const PublishMap = require('../classes/publish/map');
19
15
 
20
16
  exports.command = 'publish';
21
17
 
22
18
  exports.aliases = ['pkg', 'package', 'pub'];
23
19
 
24
- exports.describe = `Publish an app package to an Eik server. Reads configuration from eik.json or package.json files. See https://eik.dev for more details.`;
20
+ exports.describe = `Publish files to an Eik server. Reads configuration from eik.json or package.json files. See https://eik.dev for more details.`;
25
21
 
26
22
  exports.builder = (yargs) => {
27
23
  const cwd = getCWD();
@@ -52,6 +48,18 @@ exports.builder = (yargs) => {
52
48
  type: 'string',
53
49
  alias: 't',
54
50
  },
51
+ type: {
52
+ describe:
53
+ 'Optional flag to define the type of asset you wish to publish. This can be "package", "map" or "npm". Default reads from eik configuration "type" field.',
54
+ default: '',
55
+ type: 'string',
56
+ },
57
+ file: {
58
+ describe:
59
+ 'Path to import map file on local disk relative to the current working directory. Default reads the "files" in the eik config.',
60
+ type: 'string',
61
+ normalize: true,
62
+ },
55
63
  });
56
64
 
57
65
  yargs.default('token', defaults.token, defaults.token ? '######' : '');
@@ -65,87 +73,113 @@ exports.builder = (yargs) => {
65
73
 
66
74
  exports.handler = async (argv) => {
67
75
  const spinner = ora({ stream: process.stdout }).start('working...');
68
- const { debug, dryRun, cwd, token } = argv;
76
+ const { debug, dryRun, cwd, token, type: typeFromArgs } = argv;
69
77
  const config = configStore.findInDirectory(cwd);
70
78
  const { name, server, version, type, map, out, files } = config;
71
79
 
72
- if (type === 'map') {
73
- spinner.warn(
74
- '"type" is set to "map", which is not supported by the publish command. Please use the "eik map" command instead',
75
- );
76
- process.stdout.write('\n');
77
- process.exit(0);
78
- }
80
+ const typeOverride = typeFromArgs || type;
79
81
 
80
82
  try {
81
- const options = {
82
- logger: logger(spinner, debug),
83
- cwd,
84
- token,
85
- dryRun,
86
- debug,
87
- name,
88
- server,
89
- version,
90
- type,
91
- map,
92
- out,
93
- files,
94
- };
95
-
96
- const publish = await new PublishPackage(options).run();
97
-
98
- if (!publish) {
99
- spinner.warn(
100
- 'Version in eik.json has not changed since last publish, publishing is not necessary',
101
- );
102
- process.stdout.write('\n');
103
- process.exit(0);
104
- }
83
+ if (['package', 'npm'].includes(typeOverride)) {
84
+ const options = {
85
+ logger: logger(spinner, debug),
86
+ cwd,
87
+ token,
88
+ dryRun,
89
+ debug,
90
+ name,
91
+ server,
92
+ version,
93
+ type,
94
+ map,
95
+ out,
96
+ files,
97
+ };
98
+
99
+ const publish = await new PublishPackage(options).run();
100
+
101
+ if (!publish) {
102
+ spinner.warn(
103
+ 'Version in eik.json has not changed since last publish, publishing is not necessary',
104
+ );
105
+ process.stdout.write('\n');
106
+ process.exit(0);
107
+ }
108
+
109
+ const { files: fls } = publish;
110
+
111
+ if (!dryRun) {
112
+ let url = new URL(join(typeSlug(type), name), server);
113
+ let res = await fetch(url);
114
+ const pkgMeta = await res.json();
115
+
116
+ url = new URL(join(typeSlug(type), name, version), server);
117
+ res = await fetch(url);
118
+ const pkgVersionMeta = await res.json();
119
+
120
+ const artifact = new Artifact(pkgMeta);
121
+ artifact.versions = [pkgVersionMeta];
105
122
 
106
- const { files: fls } = publish;
123
+ spinner.text = '';
124
+ spinner.stopAndPersist();
107
125
 
108
- if (!dryRun) {
109
- let url = new URL(join(typeSlug(type), name), server);
126
+ artifact.format(server);
127
+ process.stdout.write('\n');
128
+ } else {
129
+ spinner.text = '';
130
+ spinner.stopAndPersist();
131
+
132
+ process.stdout.write(
133
+ `:: ${chalk.bgYellow.white.bold(
134
+ typeTitle(type),
135
+ )} > ${chalk.green(name)} | ${chalk.bold('dry run')}`,
136
+ );
137
+ process.stdout.write('\n\n');
138
+ process.stdout.write(' files (local temporary):\n');
139
+ for (const file of fls) {
140
+ process.stdout.write(
141
+ ` - ${chalk.bold('type')}: ${file.type}\n`,
142
+ );
143
+ process.stdout.write(
144
+ ` ${chalk.bold('path')}: ${file.pathname}\n\n`,
145
+ );
146
+ }
147
+ process.stdout.write(
148
+ ` ${chalk.bold(
149
+ 'No files were published to remote server',
150
+ )}\n\n`,
151
+ );
152
+ }
153
+ } else if (typeOverride === 'map') {
154
+ const log = logger(spinner, debug);
155
+
156
+ await new PublishMap({
157
+ logger: log,
158
+ name,
159
+ version,
160
+ server,
161
+ file: files,
162
+ ...argv,
163
+ }).run();
164
+
165
+ let url = new URL(join('map', name), server);
110
166
  let res = await fetch(url);
111
167
  const pkgMeta = await res.json();
112
168
 
113
- url = new URL(join(typeSlug(type), name, version), server);
169
+ url = new URL(join('map', name, version), server);
114
170
  res = await fetch(url);
115
- const pkgVersionMeta = await res.json();
116
171
 
117
- const artifact = new Artifact(pkgMeta);
118
- artifact.versions = [pkgVersionMeta];
172
+ log.info(`Published import map "${name}" at version "${version}"`);
119
173
 
120
174
  spinner.text = '';
121
175
  spinner.stopAndPersist();
122
176
 
177
+ const artifact = new Artifact(pkgMeta);
178
+ const versions = new Map(pkgMeta.versions);
179
+ artifact.versions = Array.from(versions.values());
123
180
  artifact.format(server);
124
- process.stdout.write('\n');
125
- } else {
126
- spinner.text = '';
127
- spinner.stopAndPersist();
128
181
 
129
- process.stdout.write(
130
- `:: ${chalk.bgYellow.white.bold(
131
- typeTitle(type),
132
- )} > ${chalk.green(name)} | ${chalk.bold('dry run')}`,
133
- );
134
- process.stdout.write('\n\n');
135
- process.stdout.write(' files (local temporary):\n');
136
- for (const file of fls) {
137
- process.stdout.write(
138
- ` - ${chalk.bold('type')}: ${file.type}\n`,
139
- );
140
- process.stdout.write(
141
- ` ${chalk.bold('path')}: ${file.pathname}\n\n`,
142
- );
143
- }
144
- process.stdout.write(
145
- ` ${chalk.bold(
146
- 'No files were published to remote server',
147
- )}\n\n`,
148
- );
182
+ process.stdout.write('\n');
149
183
  }
150
184
  } catch (err) {
151
185
  spinner.warn(err.message);
@@ -3,11 +3,9 @@
3
3
  const { execSync } = require('child_process');
4
4
  const { join } = require('path');
5
5
  const ora = require('ora');
6
- const {
7
- helpers: { configStore },
8
- } = require('@eik/common');
6
+ const { configStore, getDefaults } = require('@eik/common-config-loader');
9
7
  const VersionPackage = require('../classes/version');
10
- const { logger, getDefaults, getCWD } = require('../utils');
8
+ const { logger, getCWD } = require('../utils');
11
9
  const json = require('../utils/json');
12
10
 
13
11
  exports.command = 'version [level]';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eik/cli",
3
- "version": "2.0.20",
3
+ "version": "3.0.0-next.1",
4
4
  "description": "Cli tool for publishing assets",
5
5
  "main": "./classes/index.js",
6
6
  "bin": {
@@ -32,10 +32,13 @@
32
32
  "author": "",
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
- "@eik/common": "^3.0.0",
35
+ "@eik/common-config-loader": "^4.0.0-next.8",
36
+ "@eik/common-schemas": "^4.0.0-next.8",
37
+ "@eik/common-utils": "^4.0.0-next.8",
38
+ "@eik/common-validators": "^4.0.0-next.8",
36
39
  "abslog": "2.4.0",
37
40
  "boxen": "5.1.2",
38
- "bytes": "3.1.1",
41
+ "bytes": "3.1.2",
39
42
  "chalk": "4.1.2",
40
43
  "copy": "0.3.2",
41
44
  "date-fns": "2.28.0",
@@ -43,7 +46,7 @@
43
46
  "glob": "7.2.0",
44
47
  "gzip-size": "6.0.0",
45
48
  "make-dir": "3.1.0",
46
- "node-fetch": "2.6.6",
49
+ "node-fetch": "2.6.7",
47
50
  "ora": "5.4.1",
48
51
  "pkg-dir": "6.0.1",
49
52
  "read-pkg-up": "9.0.0",
@@ -60,20 +63,20 @@
60
63
  "@eik/service": "1.2.98",
61
64
  "@semantic-release/changelog": "6.0.1",
62
65
  "@semantic-release/git": "10.0.1",
63
- "eslint": "8.5.0",
66
+ "eslint": "8.8.0",
64
67
  "eslint-config-airbnb-base": "15.0.0",
65
68
  "eslint-config-prettier": "8.3.0",
66
- "eslint-plugin-import": "2.25.3",
69
+ "eslint-plugin-import": "2.25.4",
67
70
  "eslint-plugin-prettier": "4.0.0",
68
- "fastify": "3.25.2",
71
+ "fastify": "3.27.0",
69
72
  "fastify-cors": "6.0.2",
70
73
  "fs-extra": "10.0.0",
71
74
  "prettier": "2.5.1",
72
- "puppeteer": "12.0.1",
75
+ "puppeteer": "13.1.2",
73
76
  "react": "17.0.2",
74
77
  "react-dom": "17.0.2",
75
- "semantic-release": "18.0.1",
76
- "semantic-release-slack-bot": "3.2.0",
77
- "tap": "15.1.5"
78
+ "semantic-release": "19.0.2",
79
+ "semantic-release-slack-bot": "3.5.2",
80
+ "tap": "15.1.6"
78
81
  }
79
82
  }
package/utils/index.js CHANGED
@@ -1,11 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const {
4
- helpers: { getDefaults, files },
5
- } = require('@eik/common');
6
3
  const logger = require('./logger');
7
4
  const getCWD = require('./get-cwd');
8
- const typeSlug = require('./type-slug');
9
- const typeTitle = require('./type-title');
10
5
 
11
- module.exports = { logger, getDefaults, getCWD, files, typeSlug, typeTitle };
6
+ module.exports = { logger, getCWD };
package/commands/map.js DELETED
@@ -1,104 +0,0 @@
1
- 'use strict';
2
-
3
- const { join } = require('path');
4
- const fetch = require('node-fetch');
5
- const ora = require('ora');
6
- const PublishMap = require('../classes/publish/map');
7
- const { logger, getDefaults, getCWD } = require('../utils');
8
- const { Artifact } = require('../formatters');
9
-
10
- exports.command = 'map <name> <version> <file>';
11
-
12
- exports.aliases = ['m'];
13
-
14
- exports.describe = `Upload an import map file to the server under a given name and version.
15
- A name/version combination must be unique and a version must be semver compliant.
16
- Subsquent published versions must increase. Eg. 1.0.0 1.0.1, 1.1.0, 2.0.0 etc.`;
17
-
18
- exports.builder = (yargs) => {
19
- const cwd = getCWD();
20
- const defaults = getDefaults(cwd);
21
-
22
- yargs
23
- .positional('name', {
24
- describe: 'Import map name.',
25
- type: 'string',
26
- })
27
- .positional('version', {
28
- describe: 'Import map version.',
29
- type: 'string',
30
- })
31
- .positional('file', {
32
- describe:
33
- 'Path to import map file on local disk relative to the current working directory.',
34
- type: 'string',
35
- normalize: true,
36
- });
37
-
38
- yargs.options({
39
- server: {
40
- alias: 's',
41
- describe: 'Specify location of asset server.',
42
- default: defaults.server,
43
- },
44
- cwd: {
45
- alias: 'c',
46
- describe: 'Alter current working directory.',
47
- default: defaults.cwd,
48
- },
49
- debug: {
50
- describe: 'Logs additional messages',
51
- default: false,
52
- type: 'boolean',
53
- },
54
- token: {
55
- describe:
56
- 'Provide a jwt token to be used to authenticate with the Eik server.',
57
- default: '',
58
- alias: 't',
59
- },
60
- });
61
-
62
- yargs.default('token', defaults.token, defaults.token ? '######' : '');
63
-
64
- yargs.example(`eik map my-map 1.0.0 ./import-map.json`);
65
- yargs.example(`eik map my-map 2.1.0 ./import-map.json --debug`);
66
- yargs.example(
67
- `eik map my-map 2.1.1 ./import-map.json --server https://assets.myeikserver.com`,
68
- );
69
- };
70
-
71
- exports.handler = async (argv) => {
72
- const spinner = ora({ stream: process.stdout }).start('working...');
73
- const { debug, server, name, version } = argv;
74
-
75
- try {
76
- const log = logger(spinner, debug);
77
-
78
- await new PublishMap({ logger: log, ...argv }).run();
79
-
80
- let url = new URL(join('map', name), server);
81
- let res = await fetch(url);
82
- const pkgMeta = await res.json();
83
-
84
- url = new URL(join('map', name, version), server);
85
- res = await fetch(url);
86
-
87
- log.info(`Published import map "${name}" at version "${version}"`);
88
-
89
- spinner.text = '';
90
- spinner.stopAndPersist();
91
-
92
- const artifact = new Artifact(pkgMeta);
93
- const versions = new Map(pkgMeta.versions);
94
- artifact.versions = Array.from(versions.values());
95
- artifact.format(server);
96
-
97
- process.stdout.write('\n');
98
- } catch (err) {
99
- spinner.warn(err.message);
100
- spinner.text = '';
101
- spinner.stopAndPersist();
102
- process.exit(1);
103
- }
104
- };