netlify-cli 24.2.0 → 24.3.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/dist/commands/database/database.d.ts.map +1 -1
- package/dist/commands/database/database.js +21 -1
- package/dist/commands/database/database.js.map +1 -1
- package/dist/commands/database/db-connection.d.ts +1 -1
- package/dist/commands/database/db-connection.d.ts.map +1 -1
- package/dist/commands/database/db-connection.js.map +1 -1
- package/dist/commands/database/migration-new.d.ts +13 -0
- package/dist/commands/database/migration-new.d.ts.map +1 -0
- package/dist/commands/database/migration-new.js +135 -0
- package/dist/commands/database/migration-new.js.map +1 -0
- package/dist/lib/exec-fetcher.d.ts.map +1 -1
- package/dist/lib/exec-fetcher.js +87 -25
- package/dist/lib/exec-fetcher.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/live-tunnel.d.ts.map +1 -1
- package/dist/utils/live-tunnel.js +0 -1
- package/dist/utils/live-tunnel.js.map +1 -1
- package/functions-templates/javascript/scheduled-function/package.json +1 -1
- package/functions-templates/typescript/hello-world/package-lock.json +15 -15
- package/functions-templates/typescript/hello-world/package.json +1 -1
- package/functions-templates/typescript/scheduled-function/package.json +1 -1
- package/npm-shrinkwrap.json +155 -779
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAI5C,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,qBAAqB,GAAI,SAAS,WAAW,SA4GzD,CAAA"}
|
|
@@ -10,7 +10,9 @@ export const createDatabaseCommand = (program) => {
|
|
|
10
10
|
'netlify db status',
|
|
11
11
|
'netlify db init',
|
|
12
12
|
'netlify db init --help',
|
|
13
|
-
...(process.env.EXPERIMENTAL_NETLIFY_DB_ENABLED === '1'
|
|
13
|
+
...(process.env.EXPERIMENTAL_NETLIFY_DB_ENABLED === '1'
|
|
14
|
+
? ['netlify db migrate', 'netlify db reset', 'netlify db migration new']
|
|
15
|
+
: []),
|
|
14
16
|
]);
|
|
15
17
|
dbCommand
|
|
16
18
|
.command('init')
|
|
@@ -69,6 +71,24 @@ export const createDatabaseCommand = (program) => {
|
|
|
69
71
|
const { reset } = await import('./reset.js');
|
|
70
72
|
await reset(options, command);
|
|
71
73
|
});
|
|
74
|
+
const migrationCommand = dbCommand.command('migration').description('Manage database migrations');
|
|
75
|
+
migrationCommand
|
|
76
|
+
.command('new')
|
|
77
|
+
.description('Create a new migration')
|
|
78
|
+
.option('-d, --description <description>', 'Purpose of the migration (used to generate the file name)')
|
|
79
|
+
.addOption(new Option('-s, --scheme <scheme>', 'Numbering scheme for migration prefixes').choices([
|
|
80
|
+
'sequential',
|
|
81
|
+
'timestamp',
|
|
82
|
+
]))
|
|
83
|
+
.option('--json', 'Output result as JSON')
|
|
84
|
+
.action(async (options, command) => {
|
|
85
|
+
const { migrationNew } = await import('./migration-new.js');
|
|
86
|
+
await migrationNew(options, command);
|
|
87
|
+
})
|
|
88
|
+
.addExamples([
|
|
89
|
+
'netlify db migration new',
|
|
90
|
+
'netlify db migration new --description "add users table" --scheme sequential',
|
|
91
|
+
]);
|
|
72
92
|
}
|
|
73
93
|
};
|
|
74
94
|
//# sourceMappingURL=database.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,QAAQ,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-connection.d.ts","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"db-connection.d.ts","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAK3D,UAAU,YAAY;IACpB,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwC/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAoB,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAO1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAExD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACtB,OAAO;YACL,QAAQ,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC;YACtC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;SAC5B,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACzB,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACjC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1B,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,aAAa,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;IAExB,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,CAAA;IACzB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;QACvB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;IACrG,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE;KACjC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseCommand from '../base-command.js';
|
|
2
|
+
export type NumberingScheme = 'sequential' | 'timestamp';
|
|
3
|
+
export interface MigrationNewOptions {
|
|
4
|
+
description?: string;
|
|
5
|
+
scheme?: NumberingScheme;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const generateSlug: (description: string) => string;
|
|
9
|
+
export declare const detectNumberingScheme: (existingNames: string[]) => NumberingScheme | undefined;
|
|
10
|
+
export declare const generateNextPrefix: (existingNames: string[], scheme: NumberingScheme) => string;
|
|
11
|
+
export declare const resolveMigrationsDirectory: (command: BaseCommand) => string;
|
|
12
|
+
export declare const migrationNew: (options: MigrationNewOptions, command: BaseCommand) => Promise<void>;
|
|
13
|
+
//# sourceMappingURL=migration-new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-new.d.ts","sourceRoot":"","sources":["../../../src/commands/database/migration-new.ts"],"names":[],"mappings":"AAMA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,CAAA;AAExD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,YAAY,GAAI,aAAa,MAAM,KAAG,MAQlD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,eAAe,MAAM,EAAE,KAAG,eAAe,GAAG,SAiBjF,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,eAAe,MAAM,EAAE,EAAE,QAAQ,eAAe,KAAG,MAoBrF,CAAA;AAmBD,eAAO,MAAM,0BAA0B,GAAI,SAAS,WAAW,KAAG,MAYjE,CAAA;AAED,eAAO,MAAM,YAAY,GAAU,SAAS,mBAAmB,EAAE,SAAS,WAAW,kBAuEpF,CAAA"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { readdir, mkdir, writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { log, logJson } from '../../utils/command-helpers.js';
|
|
5
|
+
export const generateSlug = (description) => {
|
|
6
|
+
return description
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.trim()
|
|
9
|
+
.replace(/[^a-z0-9\s_-]/g, '')
|
|
10
|
+
.replace(/[\s_]+/g, '-')
|
|
11
|
+
.replace(/-+/g, '-')
|
|
12
|
+
.replace(/^-|-$/g, '');
|
|
13
|
+
};
|
|
14
|
+
export const detectNumberingScheme = (existingNames) => {
|
|
15
|
+
if (existingNames.length === 0) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const prefixes = existingNames.map((name) => name.split(/[_-]/)[0]);
|
|
19
|
+
const allTimestamp = prefixes.every((p) => /^\d{14}$/.test(p));
|
|
20
|
+
if (allTimestamp) {
|
|
21
|
+
return 'timestamp';
|
|
22
|
+
}
|
|
23
|
+
const allSequential = prefixes.every((p) => /^\d{4}$/.test(p));
|
|
24
|
+
if (allSequential) {
|
|
25
|
+
return 'sequential';
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
};
|
|
29
|
+
export const generateNextPrefix = (existingNames, scheme) => {
|
|
30
|
+
if (scheme === 'timestamp') {
|
|
31
|
+
const now = new Date();
|
|
32
|
+
const pad = (n, width = 2) => String(n).padStart(width, '0');
|
|
33
|
+
return [
|
|
34
|
+
now.getFullYear(),
|
|
35
|
+
pad(now.getMonth() + 1),
|
|
36
|
+
pad(now.getDate()),
|
|
37
|
+
pad(now.getHours()),
|
|
38
|
+
pad(now.getMinutes()),
|
|
39
|
+
pad(now.getSeconds()),
|
|
40
|
+
].join('');
|
|
41
|
+
}
|
|
42
|
+
const prefixes = existingNames.map((name) => {
|
|
43
|
+
const match = /^(\d{4})[_-]/.exec(name);
|
|
44
|
+
return match ? parseInt(match[1], 10) : 0;
|
|
45
|
+
});
|
|
46
|
+
const maxPrefix = prefixes.length > 0 ? Math.max(...prefixes) : 0;
|
|
47
|
+
return String(maxPrefix + 1).padStart(4, '0');
|
|
48
|
+
};
|
|
49
|
+
const getExistingMigrationNames = async (migrationsDirectory) => {
|
|
50
|
+
try {
|
|
51
|
+
const entries = await readdir(migrationsDirectory, { withFileTypes: true });
|
|
52
|
+
return entries
|
|
53
|
+
.filter((entry) => entry.isDirectory())
|
|
54
|
+
.map((entry) => entry.name)
|
|
55
|
+
.sort();
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error.code === 'ENOENT') {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const DEFAULT_MIGRATIONS_PATH = 'netlify/db/migrations';
|
|
65
|
+
export const resolveMigrationsDirectory = (command) => {
|
|
66
|
+
const configuredPath = command.netlify.config.db?.migrations?.path;
|
|
67
|
+
if (configuredPath) {
|
|
68
|
+
return configuredPath;
|
|
69
|
+
}
|
|
70
|
+
const projectRoot = command.netlify.site.root ?? command.project.root ?? command.project.baseDirectory;
|
|
71
|
+
if (!projectRoot) {
|
|
72
|
+
throw new Error('Could not determine the project root directory.');
|
|
73
|
+
}
|
|
74
|
+
return join(projectRoot, DEFAULT_MIGRATIONS_PATH);
|
|
75
|
+
};
|
|
76
|
+
export const migrationNew = async (options, command) => {
|
|
77
|
+
const { json } = options;
|
|
78
|
+
const migrationsDirectory = resolveMigrationsDirectory(command);
|
|
79
|
+
const existingMigrations = await getExistingMigrationNames(migrationsDirectory);
|
|
80
|
+
const detectedScheme = detectNumberingScheme(existingMigrations);
|
|
81
|
+
let description = options.description;
|
|
82
|
+
let scheme = options.scheme;
|
|
83
|
+
if (!description) {
|
|
84
|
+
const answers = await inquirer.prompt([
|
|
85
|
+
{
|
|
86
|
+
type: 'input',
|
|
87
|
+
name: 'description',
|
|
88
|
+
message: 'What is the purpose of this migration?',
|
|
89
|
+
validate: (input) => (input.trim().length > 0 ? true : 'Description cannot be empty'),
|
|
90
|
+
},
|
|
91
|
+
]);
|
|
92
|
+
description = answers.description;
|
|
93
|
+
}
|
|
94
|
+
if (!scheme) {
|
|
95
|
+
const answers = await inquirer.prompt([
|
|
96
|
+
{
|
|
97
|
+
type: 'list',
|
|
98
|
+
name: 'scheme',
|
|
99
|
+
message: 'Numbering scheme:',
|
|
100
|
+
choices: [
|
|
101
|
+
{ name: 'Sequential (0001, 0002, ...)', value: 'sequential' },
|
|
102
|
+
{ name: 'Timestamp (20260312143000)', value: 'timestamp' },
|
|
103
|
+
],
|
|
104
|
+
...(detectedScheme && { default: detectedScheme }),
|
|
105
|
+
},
|
|
106
|
+
]);
|
|
107
|
+
scheme = answers.scheme;
|
|
108
|
+
}
|
|
109
|
+
const slug = generateSlug(description);
|
|
110
|
+
if (!slug) {
|
|
111
|
+
throw new Error(`Description "${description}" produces an empty slug. Use a description with alphanumeric characters (e.g. "add users table").`);
|
|
112
|
+
}
|
|
113
|
+
const prefix = generateNextPrefix(existingMigrations, scheme);
|
|
114
|
+
const folderName = `${prefix}_${slug}`;
|
|
115
|
+
const folderPath = join(migrationsDirectory, folderName);
|
|
116
|
+
const migrationFilePath = join(folderPath, 'migration.sql');
|
|
117
|
+
await mkdir(folderPath, { recursive: true });
|
|
118
|
+
await writeFile(migrationFilePath, `-- Write your migration SQL here
|
|
119
|
+
--
|
|
120
|
+
-- Example:
|
|
121
|
+
-- CREATE TABLE IF NOT EXISTS users (
|
|
122
|
+
-- id SERIAL PRIMARY KEY,
|
|
123
|
+
-- name TEXT NOT NULL,
|
|
124
|
+
-- created_at TIMESTAMP DEFAULT NOW()
|
|
125
|
+
-- );
|
|
126
|
+
`, { flag: 'wx' });
|
|
127
|
+
if (json) {
|
|
128
|
+
logJson({ path: folderPath, name: folderName });
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
log(`Created migration: ${folderName}`);
|
|
132
|
+
log(` ${join(folderPath, 'migration.sql')}`);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=migration-new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-new.js","sourceRoot":"","sources":["../../../src/commands/database/migration-new.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-fetcher.d.ts","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exec-fetcher.d.ts","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,WAAW,GAAI,cAAc;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,WAAiD,CAAA;AA6F/G,eAAO,MAAM,wBAAwB,GAAU,uEAO5C;IACD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,KAAG,OAAO,CAAC,OAAO,CAkClB,CAAA;AAED,eAAO,MAAM,OAAO,0HASnB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,mEAMtC;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,WAAW,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CAgCf,CAAA"}
|
package/dist/lib/exec-fetcher.js
CHANGED
|
@@ -1,28 +1,99 @@
|
|
|
1
|
+
import { execFile as execFileCb } from 'child_process';
|
|
2
|
+
import { createReadStream, createWriteStream } from 'fs';
|
|
3
|
+
import { mkdir, unlink } from 'fs/promises';
|
|
1
4
|
import path from 'path';
|
|
5
|
+
import { pipeline } from 'stream/promises';
|
|
2
6
|
import process from 'process';
|
|
3
|
-
import {
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
import { createGunzip } from 'zlib';
|
|
4
9
|
import { isexe } from 'isexe';
|
|
10
|
+
import { unpackTar } from 'modern-tar/fs';
|
|
11
|
+
import semver from 'semver';
|
|
5
12
|
import { NETLIFYDEVWARN, logAndThrowError, getTerminalLink, log } from '../utils/command-helpers.js';
|
|
6
|
-
|
|
13
|
+
const execFile = promisify(execFileCb);
|
|
7
14
|
const isWindows = () => process.platform === 'win32';
|
|
8
15
|
const getRepository = ({ packageName }) => `netlify/${packageName}`;
|
|
9
16
|
export const getExecName = ({ execName }) => (isWindows() ? `${execName}.exe` : execName);
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
// when calling gh-release-fetch
|
|
17
|
+
const getGitHubHeaders = () => {
|
|
18
|
+
const headers = { Accept: 'application/vnd.github.v3+json' };
|
|
13
19
|
if (process.env.NETLIFY_TEST_GITHUB_TOKEN) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
headers.Authorization = `token ${process.env.NETLIFY_TEST_GITHUB_TOKEN}`;
|
|
21
|
+
}
|
|
22
|
+
return headers;
|
|
23
|
+
};
|
|
24
|
+
const resolveLatestTag = async (repository) => {
|
|
25
|
+
const response = await fetch(`https://api.github.com/repos/${repository}/releases/latest`, {
|
|
26
|
+
headers: getGitHubHeaders(),
|
|
27
|
+
});
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
throw new Error(`Failed to fetch latest release for ${repository}: ${String(response.status)}`);
|
|
30
|
+
}
|
|
31
|
+
const data = (await response.json());
|
|
32
|
+
return data.tag_name;
|
|
33
|
+
};
|
|
34
|
+
const newerVersion = (latestVersion, currentVersion) => {
|
|
35
|
+
if (!latestVersion)
|
|
36
|
+
return false;
|
|
37
|
+
if (!currentVersion)
|
|
38
|
+
return true;
|
|
39
|
+
const latest = latestVersion.replace(/^v/, '');
|
|
40
|
+
const current = currentVersion.replace(/^v/, '');
|
|
41
|
+
return semver.gt(latest, current);
|
|
42
|
+
};
|
|
43
|
+
const updateAvailable = async (repository, currentVersion) => {
|
|
44
|
+
const latestTag = await resolveLatestTag(repository);
|
|
45
|
+
return newerVersion(latestTag, currentVersion);
|
|
46
|
+
};
|
|
47
|
+
const downloadAndExtract = async (url, destination) => {
|
|
48
|
+
const response = await fetch(url, {
|
|
49
|
+
headers: getGitHubHeaders(),
|
|
50
|
+
redirect: 'follow',
|
|
51
|
+
});
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
throw Object.assign(new Error(`Download failed: ${String(response.status)}`), { statusCode: response.status });
|
|
54
|
+
}
|
|
55
|
+
if (!response.body) {
|
|
56
|
+
throw new Error('Empty response body');
|
|
57
|
+
}
|
|
58
|
+
await mkdir(destination, { recursive: true });
|
|
59
|
+
if (url.endsWith('.zip')) {
|
|
60
|
+
const tmpFile = path.join(destination, '_download.zip');
|
|
61
|
+
const fileStream = createWriteStream(tmpFile);
|
|
62
|
+
await pipeline(response.body, fileStream);
|
|
63
|
+
try {
|
|
64
|
+
if (isWindows()) {
|
|
65
|
+
await execFile('powershell.exe', [
|
|
66
|
+
'-NoProfile',
|
|
67
|
+
'-Command',
|
|
68
|
+
`Expand-Archive -Force -LiteralPath '${tmpFile}' -DestinationPath '${destination}'`,
|
|
69
|
+
]);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
await execFile('unzip', ['-o', tmpFile, '-d', destination]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
await unlink(tmpFile);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const tmpFile = path.join(destination, '_download.tar.gz');
|
|
81
|
+
const fileStream = createWriteStream(tmpFile);
|
|
82
|
+
await pipeline(response.body, fileStream);
|
|
83
|
+
try {
|
|
84
|
+
const extractStream = unpackTar(destination);
|
|
85
|
+
await pipeline(createReadStream(tmpFile), createGunzip(), extractStream);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
await unlink(tmpFile);
|
|
89
|
+
}
|
|
17
90
|
}
|
|
18
91
|
};
|
|
19
92
|
const isVersionOutdated = async ({ currentVersion, latestVersion, packageName, }) => {
|
|
20
93
|
if (latestVersion) {
|
|
21
94
|
return newerVersion(latestVersion, currentVersion);
|
|
22
95
|
}
|
|
23
|
-
|
|
24
|
-
const outdated = await updateAvailable(getRepository({ packageName }), currentVersion, options);
|
|
25
|
-
return outdated;
|
|
96
|
+
return await updateAvailable(getRepository({ packageName }), currentVersion);
|
|
26
97
|
};
|
|
27
98
|
export const shouldFetchLatestVersion = async ({ binPath, execArgs, execName, latestVersion, packageName, pattern, }) => {
|
|
28
99
|
const execPath = path.join(binPath, getExecName({ execName }));
|
|
@@ -30,7 +101,7 @@ export const shouldFetchLatestVersion = async ({ binPath, execArgs, execName, la
|
|
|
30
101
|
if (!exists) {
|
|
31
102
|
return true;
|
|
32
103
|
}
|
|
33
|
-
const { stdout } = await
|
|
104
|
+
const { stdout } = await execFile(execPath, execArgs);
|
|
34
105
|
if (!stdout) {
|
|
35
106
|
return false;
|
|
36
107
|
}
|
|
@@ -70,20 +141,11 @@ export const fetchLatestVersion = async ({ destination, execName, extension, lat
|
|
|
70
141
|
const arch = getArch();
|
|
71
142
|
const platform = win ? 'windows' : process.platform;
|
|
72
143
|
const pkgName = `${execName}-${platform}-${arch}.${extension}`;
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
destination,
|
|
77
|
-
extract: true,
|
|
78
|
-
};
|
|
79
|
-
const options = getOptions();
|
|
80
|
-
const fetch = latestVersion
|
|
81
|
-
? // @ts-expect-error(serhalp) -- Either `gh-release-fetch` is not typed correctly or `options.headers` is useless
|
|
82
|
-
fetchVersion({ ...release, version: latestVersion }, options)
|
|
83
|
-
: // @ts-expect-error(serhalp) -- Either `gh-release-fetch` is not typed correctly or `options.version` should be passed
|
|
84
|
-
fetchLatest(release, options);
|
|
144
|
+
const repository = getRepository({ packageName });
|
|
145
|
+
const version = latestVersion ?? (await resolveLatestTag(repository));
|
|
146
|
+
const url = `https://github.com/${repository}/releases/download/${version}/${pkgName}`;
|
|
85
147
|
try {
|
|
86
|
-
await
|
|
148
|
+
await downloadAndExtract(url, destination);
|
|
87
149
|
}
|
|
88
150
|
catch (error_) {
|
|
89
151
|
if (error_ != null && typeof error_ === 'object' && 'statusCode' in error_ && error_.statusCode === 404) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-fetcher.js","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,OAAO,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"exec-fetcher.js","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"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"}
|