@eik/cli 3.0.0-next.2 → 3.1.0
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/CHANGELOG.md +152 -9
- package/classes/alias.js +49 -22
- package/classes/index.js +47 -23
- package/classes/integrity.js +27 -16
- package/classes/login.js +21 -7
- package/classes/meta.js +20 -12
- package/classes/ping.js +20 -9
- package/classes/publish/map.js +33 -10
- package/classes/publish/package/index.js +54 -17
- package/classes/publish/package/tasks/check-bundle-sizes.js +7 -11
- package/classes/publish/package/tasks/check-if-already-published.js +8 -11
- package/classes/publish/package/tasks/cleanup.js +7 -9
- package/classes/publish/package/tasks/create-temp-directory.js +5 -9
- package/classes/publish/package/tasks/create-zip-file.js +6 -11
- package/classes/publish/package/tasks/dry-run.js +4 -8
- package/classes/publish/package/tasks/save-metafile.js +5 -7
- package/classes/publish/package/tasks/task.js +3 -5
- package/classes/publish/package/tasks/upload-files.js +16 -17
- package/classes/publish/package/tasks/validate-input.js +4 -8
- package/classes/version.js +38 -21
- package/commands/alias.js +51 -71
- package/commands/index.js +27 -0
- package/commands/init.js +69 -52
- package/commands/integrity.js +15 -32
- package/commands/login.js +23 -35
- package/commands/map-alias.js +95 -0
- package/commands/map.js +90 -0
- package/commands/meta.js +12 -29
- package/commands/npm-alias.js +90 -0
- package/commands/package-alias.js +102 -0
- package/commands/ping.js +11 -21
- package/commands/publish.js +82 -138
- package/commands/version.js +16 -33
- package/formatters/alias.js +8 -14
- package/formatters/artifact.js +8 -8
- package/formatters/file.js +3 -10
- package/formatters/index.js +5 -5
- package/formatters/version.js +5 -12
- package/index.js +53 -12
- package/package.json +49 -52
- package/readme.md +16 -4
- package/types/classes/alias.d.ts +60 -0
- package/types/classes/index.d.ts +37 -0
- package/types/classes/integrity.d.ts +35 -0
- package/types/classes/login.d.ts +25 -0
- package/types/classes/meta.d.ts +28 -0
- package/types/classes/ping.d.ts +23 -0
- package/types/classes/publish/map.d.ts +51 -0
- package/types/classes/publish/package/index.d.ts +94 -0
- package/types/classes/publish/package/tasks/check-bundle-sizes.d.ts +4 -0
- package/types/classes/publish/package/tasks/check-if-already-published.d.ts +4 -0
- package/types/classes/publish/package/tasks/cleanup.d.ts +4 -0
- package/types/classes/publish/package/tasks/create-temp-directory.d.ts +4 -0
- package/types/classes/publish/package/tasks/create-zip-file.d.ts +4 -0
- package/types/classes/publish/package/tasks/dry-run.d.ts +7 -0
- package/types/classes/publish/package/tasks/save-metafile.d.ts +4 -0
- package/types/classes/publish/package/tasks/task.d.ts +8 -0
- package/types/classes/publish/package/tasks/upload-files.d.ts +4 -0
- package/types/classes/publish/package/tasks/validate-input.d.ts +4 -0
- package/types/classes/version.d.ts +43 -0
- package/types/utils/hash/compare.d.ts +2 -0
- package/types/utils/hash/file.d.ts +2 -0
- package/types/utils/hash/files.d.ts +2 -0
- package/types/utils/hash/index.d.ts +9 -0
- package/types/utils/http/index.d.ts +12 -0
- package/types/utils/http/integrity.d.ts +2 -0
- package/types/utils/http/latest-version.d.ts +2 -0
- package/types/utils/http/request.d.ts +33 -0
- package/types/utils/http/versions.d.ts +5 -0
- package/types/utils/index.d.ts +6 -0
- package/types/utils/json/index.d.ts +9 -0
- package/types/utils/json/read.d.ts +5 -0
- package/types/utils/json/write-eik.d.ts +5 -0
- package/types/utils/json/write.d.ts +5 -0
- package/types/utils/logger.d.ts +33 -0
- package/types/utils/type-title.d.ts +2 -0
- package/utils/hash/compare.js +1 -3
- package/utils/hash/file.js +3 -5
- package/utils/hash/files.js +4 -6
- package/utils/hash/index.js +4 -4
- package/utils/http/index.js +6 -5
- package/utils/http/integrity.js +2 -5
- package/utils/http/latest-version.js +2 -5
- package/utils/http/request.js +25 -19
- package/utils/http/versions.js +2 -5
- package/utils/index.js +5 -4
- package/utils/json/index.js +4 -4
- package/utils/json/read.js +5 -7
- package/utils/json/write-eik.js +4 -6
- package/utils/json/write.js +4 -6
- package/utils/logger.js +2 -5
- package/utils/type-title.js +1 -1
- package/utils/get-cwd.js +0 -14
- package/utils/type-slug.js +0 -4
package/commands/map.js
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
import { join } from 'path';
|
2
|
+
import ora from 'ora';
|
3
|
+
import PublishMap from '../classes/publish/map.js';
|
4
|
+
import { logger, getDefaults } from '../utils/index.js';
|
5
|
+
import { Artifact } from '../formatters/index.js';
|
6
|
+
|
7
|
+
export const command = 'map <name> <version> <file>';
|
8
|
+
|
9
|
+
export const aliases = ['m'];
|
10
|
+
|
11
|
+
export const describe = `Upload an import map file to the server under a given name and version. A name/version combination must be unique and a version must be semver compliant. Subsquent published versions must increase. Eg. 1.0.0 1.0.1, 1.1.0, 2.0.0 etc.`;
|
12
|
+
|
13
|
+
export const builder = (yargs) => {
|
14
|
+
const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
|
15
|
+
|
16
|
+
yargs
|
17
|
+
.positional('name', {
|
18
|
+
describe: 'Import map name.',
|
19
|
+
type: 'string',
|
20
|
+
})
|
21
|
+
.positional('version', {
|
22
|
+
describe: 'Import map version.',
|
23
|
+
type: 'string',
|
24
|
+
})
|
25
|
+
.positional('file', {
|
26
|
+
describe:
|
27
|
+
'Path to import map file on local disk relative to the current working directory.',
|
28
|
+
type: 'string',
|
29
|
+
normalize: true,
|
30
|
+
});
|
31
|
+
|
32
|
+
yargs.options({
|
33
|
+
server: {
|
34
|
+
alias: 's',
|
35
|
+
describe: 'Specify location of asset server.',
|
36
|
+
// @ts-expect-error
|
37
|
+
default: defaults.server,
|
38
|
+
},
|
39
|
+
token: {
|
40
|
+
describe:
|
41
|
+
'Provide a jwt token to be used to authenticate with the Eik server.',
|
42
|
+
default: '',
|
43
|
+
alias: 't',
|
44
|
+
},
|
45
|
+
});
|
46
|
+
|
47
|
+
// @ts-expect-error
|
48
|
+
yargs.default('token', defaults.token, defaults.token ? '######' : '');
|
49
|
+
|
50
|
+
yargs.example(`eik map my-map 1.0.0 ./import-map.json`);
|
51
|
+
yargs.example(`eik map my-map 2.1.0 ./import-map.json --debug`);
|
52
|
+
yargs.example(
|
53
|
+
`eik map my-map 2.1.1 ./import-map.json --server https://assets.myeikserver.com`,
|
54
|
+
);
|
55
|
+
};
|
56
|
+
|
57
|
+
export const handler = async (argv) => {
|
58
|
+
const spinner = ora({ stream: process.stdout }).start('working...');
|
59
|
+
const { debug, server, name, version } = argv;
|
60
|
+
|
61
|
+
try {
|
62
|
+
const log = logger(spinner, debug);
|
63
|
+
|
64
|
+
await new PublishMap({ logger: log, ...argv }).run();
|
65
|
+
|
66
|
+
let url = new URL(join('map', name), server);
|
67
|
+
let res = await fetch(url);
|
68
|
+
const pkgMeta = await res.json();
|
69
|
+
|
70
|
+
url = new URL(join('map', name, version), server);
|
71
|
+
res = await fetch(url);
|
72
|
+
|
73
|
+
log.info(`Published import map "${name}" at version "${version}"`);
|
74
|
+
|
75
|
+
spinner.text = '';
|
76
|
+
spinner.stopAndPersist();
|
77
|
+
|
78
|
+
const artifact = new Artifact(pkgMeta);
|
79
|
+
const versions = new Map(pkgMeta.versions);
|
80
|
+
artifact.versions = Array.from(versions.values());
|
81
|
+
artifact.format(server);
|
82
|
+
|
83
|
+
process.stdout.write('\n');
|
84
|
+
} catch (err) {
|
85
|
+
spinner.warn(err.message);
|
86
|
+
spinner.text = '';
|
87
|
+
spinner.stopAndPersist();
|
88
|
+
process.exit(1);
|
89
|
+
}
|
90
|
+
};
|
package/commands/meta.js
CHANGED
@@ -1,25 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
import ora from 'ora';
|
2
|
+
import Meta from '../classes/meta.js';
|
3
|
+
import { Artifact } from '../formatters/index.js';
|
4
|
+
import { logger, getDefaults } from '../utils/index.js';
|
4
5
|
|
5
|
-
'
|
6
|
+
export const command = 'meta <name>';
|
6
7
|
|
7
|
-
const
|
8
|
-
const { getDefaults } = require('@eik/common-config-loader');
|
9
|
-
const Meta = require('../classes/meta');
|
10
|
-
const { Artifact } = require('../formatters');
|
11
|
-
const { logger, getCWD } = require('../utils');
|
8
|
+
export const aliases = ['show'];
|
12
9
|
|
13
|
-
|
10
|
+
export const describe = `Retrieve meta information by package, map or npm name.If a given name exists in several types (package and map for example), results will be returned and displayed from all matching types`;
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
exports.describe = `Retrieve meta information by package, map or npm name
|
18
|
-
If a given name exists in several types (package and map for example), results will be returned and displayed from all matching types`;
|
19
|
-
|
20
|
-
exports.builder = (yargs) => {
|
21
|
-
const cwd = getCWD();
|
22
|
-
const defaults = getDefaults(cwd);
|
12
|
+
export const builder = (yargs) => {
|
13
|
+
const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
|
23
14
|
|
24
15
|
yargs.positional('name', {
|
25
16
|
describe:
|
@@ -31,18 +22,9 @@ exports.builder = (yargs) => {
|
|
31
22
|
server: {
|
32
23
|
alias: 's',
|
33
24
|
describe: 'Specify location of asset server.',
|
25
|
+
// @ts-expect-error
|
34
26
|
default: defaults.server,
|
35
27
|
},
|
36
|
-
debug: {
|
37
|
-
describe: 'Logs additional messages',
|
38
|
-
default: false,
|
39
|
-
type: 'boolean',
|
40
|
-
},
|
41
|
-
cwd: {
|
42
|
-
alias: 'c',
|
43
|
-
describe: 'Alter current working directory.',
|
44
|
-
default: defaults.cwd,
|
45
|
-
},
|
46
28
|
});
|
47
29
|
|
48
30
|
yargs.example(`eik meta lit-html`);
|
@@ -50,13 +32,14 @@ exports.builder = (yargs) => {
|
|
50
32
|
yargs.example(`eik meta my-app --server https://assets.myeikserver.com`);
|
51
33
|
};
|
52
34
|
|
53
|
-
|
35
|
+
export const handler = async (argv) => {
|
54
36
|
const spinner = ora({ stream: process.stdout }).start('working...');
|
55
37
|
let meta = false;
|
56
38
|
const { debug, server } = argv;
|
57
39
|
const l = logger(spinner, debug);
|
58
40
|
|
59
41
|
try {
|
42
|
+
// @ts-expect-error
|
60
43
|
meta = await new Meta({ logger: l, ...argv }).run();
|
61
44
|
spinner.text = '';
|
62
45
|
spinner.stopAndPersist();
|
@@ -0,0 +1,90 @@
|
|
1
|
+
// @deprecated in favor of `alias` command
|
2
|
+
|
3
|
+
import ora from 'ora';
|
4
|
+
import Alias from '../classes/alias.js';
|
5
|
+
import { logger, getDefaults } from '../utils/index.js';
|
6
|
+
import { Alias as AliasFormatter } from '../formatters/index.js';
|
7
|
+
|
8
|
+
export const command = 'npm-alias <name> <version> <alias>';
|
9
|
+
|
10
|
+
export const aliases = ['na', 'dep-alias', 'dependency-alias'];
|
11
|
+
|
12
|
+
export const describe = `DEPRECATED: This command has been replaced by the alias command and will be removed in a future version. Create a semver major alias for an NPM package as identified by its name and version. An NPM package with the given name and version must already exist on the asset server. Alias should be the semver major part of the NPM package version. Eg. For an NPM package of version 5.4.3, you should use 5 as the alias`;
|
13
|
+
|
14
|
+
export const builder = (yargs) => {
|
15
|
+
const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
|
16
|
+
|
17
|
+
yargs
|
18
|
+
.positional('name', {
|
19
|
+
describe: 'Name matching NPM package name.',
|
20
|
+
type: 'string',
|
21
|
+
})
|
22
|
+
.positional('version', {
|
23
|
+
describe: 'Version matching NPM package version.',
|
24
|
+
type: 'string',
|
25
|
+
})
|
26
|
+
.positional('alias', {
|
27
|
+
describe:
|
28
|
+
'Alias for a semver version. Must be the semver major component of version.',
|
29
|
+
type: 'string',
|
30
|
+
});
|
31
|
+
|
32
|
+
yargs.options({
|
33
|
+
server: {
|
34
|
+
alias: 's',
|
35
|
+
describe: 'Specify location of asset server.',
|
36
|
+
// @ts-expect-error
|
37
|
+
default: defaults.server,
|
38
|
+
},
|
39
|
+
token: {
|
40
|
+
describe:
|
41
|
+
'Provide a jwt token to be used to authenticate with the Eik server.',
|
42
|
+
default: '',
|
43
|
+
alias: 't',
|
44
|
+
},
|
45
|
+
});
|
46
|
+
|
47
|
+
// @ts-expect-error
|
48
|
+
yargs.default('token', defaults.token, defaults.token ? '######' : '');
|
49
|
+
|
50
|
+
yargs.example(`eik npm lit-html 1.0.0 1`);
|
51
|
+
yargs.example(`eik npm lit-html 1.3.5 1 --debug`);
|
52
|
+
yargs.example(
|
53
|
+
`eik npm lit-html 5.3.2 5 --server https://assets.myeikserver.com`,
|
54
|
+
);
|
55
|
+
};
|
56
|
+
|
57
|
+
export const handler = async (argv) => {
|
58
|
+
const spinner = ora({ stream: process.stdout }).start('working...');
|
59
|
+
let success = false;
|
60
|
+
const { debug, server } = argv;
|
61
|
+
const log = logger(spinner, debug);
|
62
|
+
let data = {};
|
63
|
+
|
64
|
+
try {
|
65
|
+
data = await new Alias({
|
66
|
+
type: 'npm',
|
67
|
+
logger: log,
|
68
|
+
...argv,
|
69
|
+
}).run();
|
70
|
+
|
71
|
+
const createdOrUpdated = data.update ? 'Updated' : 'Created';
|
72
|
+
log.info(
|
73
|
+
`${createdOrUpdated} alias for package "${data.name}". ("${data.version}" => "v${data.alias}")`,
|
74
|
+
);
|
75
|
+
success = true;
|
76
|
+
} catch (err) {
|
77
|
+
log.warn(err.message);
|
78
|
+
}
|
79
|
+
|
80
|
+
spinner.text = '';
|
81
|
+
spinner.stopAndPersist();
|
82
|
+
if (success) {
|
83
|
+
new AliasFormatter(data).format(server);
|
84
|
+
} else {
|
85
|
+
process.exit(1);
|
86
|
+
}
|
87
|
+
};
|
88
|
+
|
89
|
+
export const deprecated =
|
90
|
+
'"npm-alias" will be removed in a future version. Please use "alias" instead';
|
@@ -0,0 +1,102 @@
|
|
1
|
+
// @deprecated in favor of `alias` command
|
2
|
+
|
3
|
+
import ora from 'ora';
|
4
|
+
import semver from 'semver';
|
5
|
+
import Alias from '../classes/alias.js';
|
6
|
+
import { logger, getDefaults } from '../utils/index.js';
|
7
|
+
import { Alias as AliasFormatter } from '../formatters/index.js';
|
8
|
+
|
9
|
+
export const command = 'package-alias [name] [version] [alias]';
|
10
|
+
|
11
|
+
export const aliases = ['pkg-alias', 'pa'];
|
12
|
+
|
13
|
+
export const describe = `DEPRECATED: This command has been replaced by the alias command and will be removed in a future version. Create a semver major alias for a package as identified by its name and version. A package with the given name and version must already exist on asset server. Alias should be the semver major part of the package version. Eg. For a package of version 5.4.3, you should use 5 as the alias`;
|
14
|
+
|
15
|
+
export const builder = (yargs) => {
|
16
|
+
const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
|
17
|
+
|
18
|
+
yargs
|
19
|
+
.positional('name', {
|
20
|
+
describe: 'Name matching existing name for a package on Eik server',
|
21
|
+
type: 'string',
|
22
|
+
// @ts-expect-error
|
23
|
+
default: defaults.name,
|
24
|
+
})
|
25
|
+
.positional('version', {
|
26
|
+
describe:
|
27
|
+
'Version matching existing version for a package on Eik server',
|
28
|
+
type: 'string',
|
29
|
+
// @ts-expect-error
|
30
|
+
default: defaults.version,
|
31
|
+
})
|
32
|
+
.positional('alias', {
|
33
|
+
describe:
|
34
|
+
'Alias for a semver version. Must be the semver major component of version. Eg. 1.0.0 should be given as 1',
|
35
|
+
type: 'string',
|
36
|
+
// @ts-expect-error
|
37
|
+
default: defaults.version ? semver.major(defaults.version) : null,
|
38
|
+
});
|
39
|
+
|
40
|
+
yargs.options({
|
41
|
+
server: {
|
42
|
+
alias: 's',
|
43
|
+
describe: 'Specify location of Eik asset server.',
|
44
|
+
// @ts-expect-error
|
45
|
+
default: defaults.server,
|
46
|
+
},
|
47
|
+
token: {
|
48
|
+
describe:
|
49
|
+
'Provide a jwt token to be used to authenticate with the Eik server.',
|
50
|
+
default: '',
|
51
|
+
alias: 't',
|
52
|
+
},
|
53
|
+
});
|
54
|
+
|
55
|
+
// @ts-expect-error
|
56
|
+
yargs.default('token', defaults.token, defaults.token ? '######' : '');
|
57
|
+
|
58
|
+
yargs.example(`eik package-alias my-app 1.0.0 1`);
|
59
|
+
yargs.example(`eik package-alias my-app 1.7.3 1`);
|
60
|
+
yargs.example(`eik package-alias my-app 6.3.1 6`);
|
61
|
+
yargs.example(
|
62
|
+
`eik package-alias my-app 6.3.1 6 --server https://assets.myeikserver.com`,
|
63
|
+
);
|
64
|
+
yargs.example(`eik package-alias my-app 4.2.2 4 --debug`);
|
65
|
+
};
|
66
|
+
|
67
|
+
export const handler = async (argv) => {
|
68
|
+
const spinner = ora({ stream: process.stdout }).start('working...');
|
69
|
+
let success = false;
|
70
|
+
const { debug, server } = argv;
|
71
|
+
const log = logger(spinner, debug);
|
72
|
+
let af;
|
73
|
+
|
74
|
+
try {
|
75
|
+
const data = await new Alias({
|
76
|
+
type: 'pkg',
|
77
|
+
logger: log,
|
78
|
+
...argv,
|
79
|
+
}).run();
|
80
|
+
|
81
|
+
af = new AliasFormatter(data);
|
82
|
+
|
83
|
+
const createdOrUpdated = data.update ? 'Updated' : 'Created';
|
84
|
+
log.info(
|
85
|
+
`${createdOrUpdated} alias for package "${data.name}". ("${data.version}" => "v${data.alias}")`,
|
86
|
+
);
|
87
|
+
success = true;
|
88
|
+
} catch (err) {
|
89
|
+
log.warn(err.message);
|
90
|
+
}
|
91
|
+
|
92
|
+
spinner.text = '';
|
93
|
+
spinner.stopAndPersist();
|
94
|
+
if (success) {
|
95
|
+
af?.format(server);
|
96
|
+
} else {
|
97
|
+
process.exit(1);
|
98
|
+
}
|
99
|
+
};
|
100
|
+
|
101
|
+
export const deprecated =
|
102
|
+
'"package-alias" will be removed in a future version. Please use "alias" instead';
|
package/commands/ping.js
CHANGED
@@ -1,45 +1,35 @@
|
|
1
|
-
|
1
|
+
import ora from 'ora';
|
2
|
+
import Ping from '../classes/ping.js';
|
3
|
+
import { logger, getDefaults } from '../utils/index.js';
|
2
4
|
|
3
|
-
const
|
4
|
-
const { getDefaults } = require('@eik/common-config-loader');
|
5
|
-
const Ping = require('../classes/ping');
|
6
|
-
const { logger, getCWD } = require('../utils');
|
5
|
+
export const command = 'ping [server]';
|
7
6
|
|
8
|
-
|
7
|
+
export const aliases = [];
|
9
8
|
|
10
|
-
|
9
|
+
export const describe = `Ping an Eik server to check that it is responding.`;
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
exports.builder = (yargs) => {
|
15
|
-
const cwd = getCWD();
|
16
|
-
const defaults = getDefaults(cwd);
|
11
|
+
export const builder = (yargs) => {
|
12
|
+
const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
|
17
13
|
|
18
14
|
yargs.positional('server', {
|
19
15
|
describe: 'Specify location of Eik server to ping.',
|
16
|
+
// @ts-expect-error
|
20
17
|
default: defaults.server,
|
21
18
|
});
|
22
19
|
|
23
|
-
yargs.options({
|
24
|
-
debug: {
|
25
|
-
describe: 'Logs additional messages',
|
26
|
-
default: false,
|
27
|
-
type: 'boolean',
|
28
|
-
},
|
29
|
-
});
|
30
|
-
|
31
20
|
yargs.example(`eik ping`);
|
32
21
|
yargs.example(`eik ping http://assets.myeikserver.com`);
|
33
22
|
yargs.example(`eik ping http://assets.myeikserver.com --debug`);
|
34
23
|
};
|
35
24
|
|
36
|
-
|
25
|
+
export const handler = async (argv) => {
|
37
26
|
const spinner = ora({ stream: process.stdout }).start('working...');
|
38
27
|
const { debug, server } = argv;
|
39
28
|
|
40
29
|
try {
|
41
30
|
await new Ping({ logger: logger(spinner, debug), server }).run();
|
42
31
|
} catch (err) {
|
32
|
+
// @ts-expect-error
|
43
33
|
logger.warn(err.message);
|
44
34
|
}
|
45
35
|
|
package/commands/publish.js
CHANGED
@@ -1,35 +1,20 @@
|
|
1
|
-
|
1
|
+
import { join } from 'path';
|
2
|
+
import ora from 'ora';
|
3
|
+
import chalk from 'chalk';
|
4
|
+
import PublishPackage from '../classes/publish/package/index.js';
|
5
|
+
import { logger, getDefaults, typeSlug, typeTitle } from '../utils/index.js';
|
6
|
+
import { Artifact } from '../formatters/index.js';
|
2
7
|
|
3
|
-
const
|
4
|
-
const fetch = require('node-fetch');
|
5
|
-
const ora = require('ora');
|
6
|
-
const chalk = require('chalk');
|
7
|
-
const { configStore, getDefaults } = require('@eik/common-config-loader');
|
8
|
-
const { typeSlug, typeTitle } = require('@eik/common-utils');
|
8
|
+
export const command = 'publish';
|
9
9
|
|
10
|
-
const
|
11
|
-
const { logger, getCWD } = require('../utils');
|
10
|
+
export const aliases = ['pkg', 'package', 'pub'];
|
12
11
|
|
13
|
-
const
|
14
|
-
const PublishMap = require('../classes/publish/map');
|
12
|
+
export const 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.`;
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
exports.aliases = ['pkg', 'package', 'pub'];
|
19
|
-
|
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.`;
|
21
|
-
|
22
|
-
exports.builder = (yargs) => {
|
23
|
-
const cwd = getCWD();
|
24
|
-
const defaults = getDefaults(cwd);
|
14
|
+
export const builder = (yargs) => {
|
15
|
+
const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
|
25
16
|
|
26
17
|
yargs.options({
|
27
|
-
cwd: {
|
28
|
-
alias: 'c',
|
29
|
-
describe: 'Alter the current working directory.',
|
30
|
-
default: defaults.cwd,
|
31
|
-
type: 'string',
|
32
|
-
},
|
33
18
|
dryRun: {
|
34
19
|
alias: 'd',
|
35
20
|
describe:
|
@@ -37,31 +22,14 @@ exports.builder = (yargs) => {
|
|
37
22
|
default: false,
|
38
23
|
type: 'boolean',
|
39
24
|
},
|
40
|
-
debug: {
|
41
|
-
describe: 'Logs additional messages',
|
42
|
-
default: false,
|
43
|
-
type: 'boolean',
|
44
|
-
},
|
45
25
|
token: {
|
46
|
-
describe: `Provide a jwt token to be used to authenticate with the Eik server.
|
47
|
-
Automatically determined if authenticated (via eik login)`,
|
26
|
+
describe: `Provide a jwt token to be used to authenticate with the Eik server. Automatically determined if authenticated (via eik login)`,
|
48
27
|
type: 'string',
|
49
28
|
alias: 't',
|
50
29
|
},
|
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
|
-
},
|
63
30
|
});
|
64
31
|
|
32
|
+
// @ts-expect-error
|
65
33
|
yargs.default('token', defaults.token, defaults.token ? '######' : '');
|
66
34
|
|
67
35
|
yargs.example(`eik publish`);
|
@@ -71,115 +39,91 @@ exports.builder = (yargs) => {
|
|
71
39
|
yargs.example(`eik pkg --debug`);
|
72
40
|
};
|
73
41
|
|
74
|
-
|
42
|
+
export const handler = async (argv) => {
|
75
43
|
const spinner = ora({ stream: process.stdout }).start('working...');
|
76
|
-
const { debug, dryRun, cwd, token,
|
77
|
-
|
78
|
-
const { name,
|
79
|
-
|
80
|
-
|
44
|
+
const { debug, dryRun, cwd, token, config } = argv;
|
45
|
+
// @ts-expect-error
|
46
|
+
const { name, version, server, map, out, files, type } = getDefaults(
|
47
|
+
config || cwd,
|
48
|
+
);
|
49
|
+
|
50
|
+
if (type === 'map') {
|
51
|
+
spinner.warn(
|
52
|
+
'"type" is set to "map", which is not supported by the publish command. Please use the "eik map" command instead',
|
53
|
+
);
|
54
|
+
process.stdout.write('\n');
|
55
|
+
process.exit(0);
|
56
|
+
}
|
81
57
|
|
82
58
|
try {
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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];
|
122
|
-
|
123
|
-
spinner.text = '';
|
124
|
-
spinner.stopAndPersist();
|
59
|
+
const options = {
|
60
|
+
logger: logger(spinner, debug),
|
61
|
+
cwd,
|
62
|
+
token,
|
63
|
+
dryRun,
|
64
|
+
debug,
|
65
|
+
name,
|
66
|
+
server,
|
67
|
+
version,
|
68
|
+
type,
|
69
|
+
map,
|
70
|
+
out,
|
71
|
+
files,
|
72
|
+
};
|
73
|
+
|
74
|
+
const publish = await new PublishPackage(options).run();
|
75
|
+
|
76
|
+
if (!publish) {
|
77
|
+
spinner.warn(
|
78
|
+
'Version in eik.json has not changed since last publish, publishing is not necessary',
|
79
|
+
);
|
80
|
+
process.stdout.write('\n');
|
81
|
+
process.exit(0);
|
82
|
+
}
|
125
83
|
|
126
|
-
|
127
|
-
process.stdout.write('\n');
|
128
|
-
} else {
|
129
|
-
spinner.text = '';
|
130
|
-
spinner.stopAndPersist();
|
84
|
+
const { files: fls } = publish;
|
131
85
|
|
132
|
-
|
133
|
-
|
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);
|
86
|
+
if (!dryRun) {
|
87
|
+
let url = new URL(join(typeSlug(type), name), server);
|
166
88
|
let res = await fetch(url);
|
167
89
|
const pkgMeta = await res.json();
|
168
90
|
|
169
|
-
url = new URL(join(
|
91
|
+
url = new URL(join(typeSlug(type), name, version), server);
|
170
92
|
res = await fetch(url);
|
93
|
+
const pkgVersionMeta = await res.json();
|
171
94
|
|
172
|
-
|
95
|
+
const artifact = new Artifact(pkgMeta);
|
96
|
+
artifact.versions = [pkgVersionMeta];
|
173
97
|
|
174
98
|
spinner.text = '';
|
175
99
|
spinner.stopAndPersist();
|
176
100
|
|
177
|
-
const artifact = new Artifact(pkgMeta);
|
178
|
-
const versions = new Map(pkgMeta.versions);
|
179
|
-
artifact.versions = Array.from(versions.values());
|
180
101
|
artifact.format(server);
|
181
|
-
|
182
102
|
process.stdout.write('\n');
|
103
|
+
} else {
|
104
|
+
spinner.text = '';
|
105
|
+
spinner.stopAndPersist();
|
106
|
+
|
107
|
+
process.stdout.write(
|
108
|
+
`:: ${chalk.bgYellow.white.bold(
|
109
|
+
typeTitle(type),
|
110
|
+
)} > ${chalk.green(name)} | ${chalk.bold('dry run')}`,
|
111
|
+
);
|
112
|
+
process.stdout.write('\n\n');
|
113
|
+
process.stdout.write(' files (local temporary):\n');
|
114
|
+
for (const file of fls) {
|
115
|
+
process.stdout.write(
|
116
|
+
` - ${chalk.bold('type')}: ${file.type}\n`,
|
117
|
+
);
|
118
|
+
process.stdout.write(
|
119
|
+
` ${chalk.bold('path')}: ${file.pathname}\n\n`,
|
120
|
+
);
|
121
|
+
}
|
122
|
+
process.stdout.write(
|
123
|
+
` ${chalk.bold(
|
124
|
+
'No files were published to remote server',
|
125
|
+
)}\n\n`,
|
126
|
+
);
|
183
127
|
}
|
184
128
|
} catch (err) {
|
185
129
|
spinner.warn(err.message);
|