apify-cli 0.21.10-beta.2 → 0.21.10-beta.20
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 +7 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/actor.js +3 -0
- package/dist/actor.js.map +1 -0
- package/dist/apify.js +3 -0
- package/dist/apify.js.map +1 -0
- package/dist/chunk-QCFOWB3K.js +242 -0
- package/dist/chunk-QCFOWB3K.js.map +1 -0
- package/dist/index.js +2 -3
- package/package.json +16 -18
- package/dist/commands/_register.js +0 -68
- package/dist/commands/_register.js.map +0 -1
- package/dist/commands/actor/_index.js +0 -24
- package/dist/commands/actor/_index.js.map +0 -1
- package/dist/commands/actor/charge.js +0 -84
- package/dist/commands/actor/charge.js.map +0 -1
- package/dist/commands/actor/get-input.js +0 -10
- package/dist/commands/actor/get-input.js.map +0 -1
- package/dist/commands/actor/get-public-url.js +0 -52
- package/dist/commands/actor/get-public-url.js.map +0 -1
- package/dist/commands/actor/get-value.js +0 -18
- package/dist/commands/actor/get-value.js.map +0 -1
- package/dist/commands/actor/push-data.js +0 -38
- package/dist/commands/actor/push-data.js.map +0 -1
- package/dist/commands/actor/set-value.js +0 -52
- package/dist/commands/actor/set-value.js.map +0 -1
- package/dist/commands/actors/_index.js +0 -28
- package/dist/commands/actors/_index.js.map +0 -1
- package/dist/commands/actors/build.js +0 -6
- package/dist/commands/actors/build.js.map +0 -1
- package/dist/commands/actors/call.js +0 -224
- package/dist/commands/actors/call.js.map +0 -1
- package/dist/commands/actors/info.js +0 -203
- package/dist/commands/actors/info.js.map +0 -1
- package/dist/commands/actors/ls.js +0 -226
- package/dist/commands/actors/ls.js.map +0 -1
- package/dist/commands/actors/pull.js +0 -150
- package/dist/commands/actors/pull.js.map +0 -1
- package/dist/commands/actors/push.js +0 -300
- package/dist/commands/actors/push.js.map +0 -1
- package/dist/commands/actors/rm.js +0 -43
- package/dist/commands/actors/rm.js.map +0 -1
- package/dist/commands/actors/start.js +0 -125
- package/dist/commands/actors/start.js.map +0 -1
- package/dist/commands/builds/_index.js +0 -22
- package/dist/commands/builds/_index.js.map +0 -1
- package/dist/commands/builds/create.js +0 -130
- package/dist/commands/builds/create.js.map +0 -1
- package/dist/commands/builds/info.js +0 -78
- package/dist/commands/builds/info.js.map +0 -1
- package/dist/commands/builds/log.js +0 -35
- package/dist/commands/builds/log.js.map +0 -1
- package/dist/commands/builds/ls.js +0 -141
- package/dist/commands/builds/ls.js.map +0 -1
- package/dist/commands/builds/rm.js +0 -59
- package/dist/commands/builds/rm.js.map +0 -1
- package/dist/commands/call.js +0 -5
- package/dist/commands/call.js.map +0 -1
- package/dist/commands/create.js +0 -264
- package/dist/commands/create.js.map +0 -1
- package/dist/commands/datasets/_index.js +0 -25
- package/dist/commands/datasets/_index.js.map +0 -1
- package/dist/commands/datasets/create.js +0 -38
- package/dist/commands/datasets/create.js.map +0 -1
- package/dist/commands/datasets/get-items.js +0 -84
- package/dist/commands/datasets/get-items.js.map +0 -1
- package/dist/commands/datasets/info.js +0 -125
- package/dist/commands/datasets/info.js.map +0 -1
- package/dist/commands/datasets/ls.js +0 -73
- package/dist/commands/datasets/ls.js.map +0 -1
- package/dist/commands/datasets/push-items.js +0 -70
- package/dist/commands/datasets/push-items.js.map +0 -1
- package/dist/commands/datasets/rename.js +0 -71
- package/dist/commands/datasets/rename.js.map +0 -1
- package/dist/commands/datasets/rm.js +0 -48
- package/dist/commands/datasets/rm.js.map +0 -1
- package/dist/commands/edit-input-schema.js +0 -162
- package/dist/commands/edit-input-schema.js.map +0 -1
- package/dist/commands/help.js +0 -43
- package/dist/commands/help.js.map +0 -1
- package/dist/commands/info.js +0 -21
- package/dist/commands/info.js.map +0 -1
- package/dist/commands/init-wrap-scrapy.js +0 -27
- package/dist/commands/init-wrap-scrapy.js.map +0 -1
- package/dist/commands/init.js +0 -94
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/key-value-stores/_index.js +0 -30
- package/dist/commands/key-value-stores/_index.js.map +0 -1
- package/dist/commands/key-value-stores/create.js +0 -38
- package/dist/commands/key-value-stores/create.js.map +0 -1
- package/dist/commands/key-value-stores/delete-value.js +0 -61
- package/dist/commands/key-value-stores/delete-value.js.map +0 -1
- package/dist/commands/key-value-stores/get-value.js +0 -70
- package/dist/commands/key-value-stores/get-value.js.map +0 -1
- package/dist/commands/key-value-stores/info.js +0 -127
- package/dist/commands/key-value-stores/info.js.map +0 -1
- package/dist/commands/key-value-stores/keys.js +0 -61
- package/dist/commands/key-value-stores/keys.js.map +0 -1
- package/dist/commands/key-value-stores/ls.js +0 -70
- package/dist/commands/key-value-stores/ls.js.map +0 -1
- package/dist/commands/key-value-stores/rename.js +0 -71
- package/dist/commands/key-value-stores/rename.js.map +0 -1
- package/dist/commands/key-value-stores/rm.js +0 -48
- package/dist/commands/key-value-stores/rm.js.map +0 -1
- package/dist/commands/key-value-stores/set-value.js +0 -57
- package/dist/commands/key-value-stores/set-value.js.map +0 -1
- package/dist/commands/login.js +0 -183
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.js +0 -16
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/pull.js +0 -5
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.js +0 -5
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/request-queues/_index.js +0 -9
- package/dist/commands/request-queues/_index.js.map +0 -1
- package/dist/commands/run.js +0 -434
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/runs/_index.js +0 -23
- package/dist/commands/runs/_index.js.map +0 -1
- package/dist/commands/runs/abort.js +0 -68
- package/dist/commands/runs/abort.js.map +0 -1
- package/dist/commands/runs/info.js +0 -238
- package/dist/commands/runs/info.js.map +0 -1
- package/dist/commands/runs/log.js +0 -32
- package/dist/commands/runs/log.js.map +0 -1
- package/dist/commands/runs/ls.js +0 -106
- package/dist/commands/runs/ls.js.map +0 -1
- package/dist/commands/runs/resurrect.js +0 -54
- package/dist/commands/runs/resurrect.js.map +0 -1
- package/dist/commands/runs/rm.js +0 -58
- package/dist/commands/runs/rm.js.map +0 -1
- package/dist/commands/secrets/_index.js +0 -25
- package/dist/commands/secrets/_index.js.map +0 -1
- package/dist/commands/secrets/add.js +0 -22
- package/dist/commands/secrets/add.js.map +0 -1
- package/dist/commands/secrets/rm.js +0 -18
- package/dist/commands/secrets/rm.js.map +0 -1
- package/dist/commands/task/_index.js +0 -11
- package/dist/commands/task/_index.js.map +0 -1
- package/dist/commands/task/run.js +0 -91
- package/dist/commands/task/run.js.map +0 -1
- package/dist/commands/upgrade.js +0 -74
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/validate-schema.js +0 -44
- package/dist/commands/validate-schema.js.map +0 -1
- package/dist/entrypoints/_shared.js +0 -256
- package/dist/entrypoints/_shared.js.map +0 -1
- package/dist/entrypoints/actor.js +0 -19
- package/dist/entrypoints/actor.js.map +0 -1
- package/dist/entrypoints/apify.js +0 -18
- package/dist/entrypoints/apify.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/actor.js +0 -74
- package/dist/lib/actor.js.map +0 -1
- package/dist/lib/command-framework/apify-command.js +0 -426
- package/dist/lib/command-framework/apify-command.js.map +0 -1
- package/dist/lib/command-framework/args.js +0 -24
- package/dist/lib/command-framework/args.js.map +0 -1
- package/dist/lib/command-framework/flags.js +0 -99
- package/dist/lib/command-framework/flags.js.map +0 -1
- package/dist/lib/command-framework/help/CommandHelp.js +0 -228
- package/dist/lib/command-framework/help/CommandHelp.js.map +0 -1
- package/dist/lib/command-framework/help/CommandWithSubcommands.js +0 -75
- package/dist/lib/command-framework/help/CommandWithSubcommands.js.map +0 -1
- package/dist/lib/command-framework/help/_BaseCommandRenderer.js +0 -63
- package/dist/lib/command-framework/help/_BaseCommandRenderer.js.map +0 -1
- package/dist/lib/command-framework/help/consts.js +0 -27
- package/dist/lib/command-framework/help/consts.js.map +0 -1
- package/dist/lib/command-framework/help.js +0 -105
- package/dist/lib/command-framework/help.js.map +0 -1
- package/dist/lib/commands/pretty-print-bytes.js +0 -13
- package/dist/lib/commands/pretty-print-bytes.js.map +0 -1
- package/dist/lib/commands/pretty-print-status.js +0 -29
- package/dist/lib/commands/pretty-print-status.js.map +0 -1
- package/dist/lib/commands/read-stdin.js +0 -42
- package/dist/lib/commands/read-stdin.js.map +0 -1
- package/dist/lib/commands/resolve-actor-context.js +0 -70
- package/dist/lib/commands/resolve-actor-context.js.map +0 -1
- package/dist/lib/commands/resolve-input.js +0 -162
- package/dist/lib/commands/resolve-input.js.map +0 -1
- package/dist/lib/commands/responsive-table.js +0 -129
- package/dist/lib/commands/responsive-table.js.map +0 -1
- package/dist/lib/commands/run-on-cloud.js +0 -126
- package/dist/lib/commands/run-on-cloud.js.map +0 -1
- package/dist/lib/commands/storage-size.js +0 -8
- package/dist/lib/commands/storage-size.js.map +0 -1
- package/dist/lib/commands/storages.js +0 -30
- package/dist/lib/commands/storages.js.map +0 -1
- package/dist/lib/consts.js +0 -69
- package/dist/lib/consts.js.map +0 -1
- package/dist/lib/create-utils.js +0 -156
- package/dist/lib/create-utils.js.map +0 -1
- package/dist/lib/exec.js +0 -34
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/files.js +0 -54
- package/dist/lib/files.js.map +0 -1
- package/dist/lib/hooks/runtimes/javascript.js +0 -86
- package/dist/lib/hooks/runtimes/javascript.js.map +0 -1
- package/dist/lib/hooks/runtimes/python.js +0 -80
- package/dist/lib/hooks/runtimes/python.js.map +0 -1
- package/dist/lib/hooks/runtimes/utils.js +0 -16
- package/dist/lib/hooks/runtimes/utils.js.map +0 -1
- package/dist/lib/hooks/useActorConfig.js +0 -177
- package/dist/lib/hooks/useActorConfig.js.map +0 -1
- package/dist/lib/hooks/useCLIMetadata.js +0 -73
- package/dist/lib/hooks/useCLIMetadata.js.map +0 -1
- package/dist/lib/hooks/useCLIVersionCheck.js +0 -91
- package/dist/lib/hooks/useCLIVersionCheck.js.map +0 -1
- package/dist/lib/hooks/useCommandSuggestions.js +0 -37
- package/dist/lib/hooks/useCommandSuggestions.js.map +0 -1
- package/dist/lib/hooks/useCwdProject.js +0 -174
- package/dist/lib/hooks/useCwdProject.js.map +0 -1
- package/dist/lib/hooks/useLocalState.js +0 -56
- package/dist/lib/hooks/useLocalState.js.map +0 -1
- package/dist/lib/hooks/useModuleVersion.js +0 -103
- package/dist/lib/hooks/useModuleVersion.js.map +0 -1
- package/dist/lib/hooks/useStdin.js +0 -65
- package/dist/lib/hooks/useStdin.js.map +0 -1
- package/dist/lib/input_schema.js +0 -130
- package/dist/lib/input_schema.js.map +0 -1
- package/dist/lib/outputs.js +0 -45
- package/dist/lib/outputs.js.map +0 -1
- package/dist/lib/project_analyzer.js +0 -30
- package/dist/lib/project_analyzer.js.map +0 -1
- package/dist/lib/projects/CrawleeAnalyzer.js +0 -20
- package/dist/lib/projects/CrawleeAnalyzer.js.map +0 -1
- package/dist/lib/projects/OldApifySDKAnalyzer.js +0 -38
- package/dist/lib/projects/OldApifySDKAnalyzer.js.map +0 -1
- package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.js +0 -73
- package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.js.map +0 -1
- package/dist/lib/projects/scrapy/Spider.js +0 -13
- package/dist/lib/projects/scrapy/Spider.js.map +0 -1
- package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js +0 -20
- package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js.map +0 -1
- package/dist/lib/projects/scrapy/wrapScrapyProject.js +0 -113
- package/dist/lib/projects/scrapy/wrapScrapyProject.js.map +0 -1
- package/dist/lib/projects/shared.js +0 -13
- package/dist/lib/projects/shared.js.map +0 -1
- package/dist/lib/secrets.js +0 -106
- package/dist/lib/secrets.js.map +0 -1
- package/dist/lib/telemetry.js +0 -86
- package/dist/lib/telemetry.js.map +0 -1
- package/dist/lib/types.js +0 -4
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/utils/cliDebugPrint.js +0 -7
- package/dist/lib/utils/cliDebugPrint.js.map +0 -1
- package/dist/lib/utils/confirm.js +0 -28
- package/dist/lib/utils/confirm.js.map +0 -1
- package/dist/lib/utils.js +0 -457
- package/dist/lib/utils.js.map +0 -1
package/dist/lib/create-utils.js
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { createWriteStream } from 'node:fs';
|
|
2
|
-
import { pipeline } from 'node:stream/promises';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import inquirer from 'inquirer';
|
|
5
|
-
import { warning } from './outputs.js';
|
|
6
|
-
import { httpsGet, validateActorName } from './utils.js';
|
|
7
|
-
const PROGRAMMING_LANGUAGES = ['JavaScript', 'TypeScript', 'Python'];
|
|
8
|
-
export async function ensureValidActorName(maybeActorName) {
|
|
9
|
-
if (maybeActorName) {
|
|
10
|
-
validateActorName(maybeActorName);
|
|
11
|
-
return maybeActorName;
|
|
12
|
-
}
|
|
13
|
-
return promptActorName();
|
|
14
|
-
}
|
|
15
|
-
// TODO: this isn't even used anymore
|
|
16
|
-
export async function getTemplateDefinition(maybeTemplateName, manifestPromise) {
|
|
17
|
-
const manifest = await manifestPromise;
|
|
18
|
-
// If the fetch failed earlier, the resolve value of
|
|
19
|
-
// the promise will be the error from fetching the manifest.
|
|
20
|
-
if (manifest instanceof Error)
|
|
21
|
-
throw manifest;
|
|
22
|
-
if (maybeTemplateName) {
|
|
23
|
-
const templateDefinition = manifest.templates.find((t) => t.name === maybeTemplateName);
|
|
24
|
-
if (!templateDefinition) {
|
|
25
|
-
throw new Error(`Could not find the selected template: ${maybeTemplateName} in the list of templates.`);
|
|
26
|
-
}
|
|
27
|
-
return templateDefinition;
|
|
28
|
-
}
|
|
29
|
-
return executePrompts(manifest);
|
|
30
|
-
}
|
|
31
|
-
// TODO: this isn't even used anymore
|
|
32
|
-
/**
|
|
33
|
-
* Fetch local readme suffix from the manifest and append it to the readme.
|
|
34
|
-
*/
|
|
35
|
-
export async function enhanceReadmeWithLocalSuffix(readmePath, manifestPromise) {
|
|
36
|
-
const manifest = await manifestPromise;
|
|
37
|
-
// If the fetch failed earlier, the resolve value of
|
|
38
|
-
// the promise will be the error from fetching the manifest.
|
|
39
|
-
if (manifest instanceof Error)
|
|
40
|
-
throw manifest;
|
|
41
|
-
try {
|
|
42
|
-
const suffixStream = await httpsGet(manifest.localReadmeSuffixUrl);
|
|
43
|
-
const readmeStream = createWriteStream(readmePath, { flags: 'a' });
|
|
44
|
-
readmeStream.write('\n\n');
|
|
45
|
-
await pipeline(suffixStream, readmeStream);
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
warning({
|
|
49
|
-
message: `Could not append local development instructions to README.md. Cause: ${err.message}`,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Inquirer does not have a native way to "go back" between prompts.
|
|
55
|
-
*/
|
|
56
|
-
async function executePrompts(manifest) {
|
|
57
|
-
const programmingLanguage = await promptProgrammingLanguage();
|
|
58
|
-
while (true) {
|
|
59
|
-
const templateDefinition = await promptTemplateDefinition(manifest, programmingLanguage);
|
|
60
|
-
if (templateDefinition) {
|
|
61
|
-
const shouldInstall = await promptTemplateInstallation(templateDefinition);
|
|
62
|
-
if (shouldInstall) {
|
|
63
|
-
return templateDefinition;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
return executePrompts(manifest);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
async function promptActorName() {
|
|
72
|
-
const answer = await inquirer.prompt([
|
|
73
|
-
{
|
|
74
|
-
name: 'actorName',
|
|
75
|
-
message: 'Name of your new Actor:',
|
|
76
|
-
type: 'input',
|
|
77
|
-
validate: (promptText) => {
|
|
78
|
-
try {
|
|
79
|
-
validateActorName(promptText);
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
return err.message;
|
|
83
|
-
}
|
|
84
|
-
return true;
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
]);
|
|
88
|
-
return answer.actorName;
|
|
89
|
-
}
|
|
90
|
-
async function promptProgrammingLanguage() {
|
|
91
|
-
const answer = await inquirer.prompt([
|
|
92
|
-
{
|
|
93
|
-
type: 'list',
|
|
94
|
-
name: 'programmingLanguage',
|
|
95
|
-
message: 'Choose the programming language of your new Actor:',
|
|
96
|
-
default: PROGRAMMING_LANGUAGES[0],
|
|
97
|
-
choices: PROGRAMMING_LANGUAGES,
|
|
98
|
-
loop: false,
|
|
99
|
-
},
|
|
100
|
-
]);
|
|
101
|
-
return answer.programmingLanguage;
|
|
102
|
-
}
|
|
103
|
-
async function promptTemplateDefinition(manifest, programmingLanguage) {
|
|
104
|
-
const choices = [
|
|
105
|
-
...manifest.templates
|
|
106
|
-
.filter((t) => {
|
|
107
|
-
return t.category.toLowerCase() === programmingLanguage.toLowerCase();
|
|
108
|
-
})
|
|
109
|
-
.map((t) => {
|
|
110
|
-
return {
|
|
111
|
-
name: t.label,
|
|
112
|
-
value: t,
|
|
113
|
-
};
|
|
114
|
-
}),
|
|
115
|
-
new inquirer.Separator(),
|
|
116
|
-
{
|
|
117
|
-
name: 'Go back',
|
|
118
|
-
value: false,
|
|
119
|
-
},
|
|
120
|
-
];
|
|
121
|
-
const answer = await inquirer.prompt([
|
|
122
|
-
{
|
|
123
|
-
type: 'list',
|
|
124
|
-
name: 'templateDefinition',
|
|
125
|
-
message: 'Choose a template for your new Actor. Detailed information about the template will be shown in the next step.',
|
|
126
|
-
default: choices[0],
|
|
127
|
-
choices,
|
|
128
|
-
loop: false,
|
|
129
|
-
pageSize: 8,
|
|
130
|
-
},
|
|
131
|
-
]);
|
|
132
|
-
return answer.templateDefinition;
|
|
133
|
-
}
|
|
134
|
-
async function promptTemplateInstallation(templateDefinition) {
|
|
135
|
-
const choices = [
|
|
136
|
-
{ name: `Install template`, value: true },
|
|
137
|
-
new inquirer.Separator(),
|
|
138
|
-
{ name: 'Go back', value: false },
|
|
139
|
-
];
|
|
140
|
-
const label = chalk.underline(templateDefinition.label);
|
|
141
|
-
const description = chalk.dim(templateDefinition.description);
|
|
142
|
-
const suffix = `\n ${label}:\n ${description}`;
|
|
143
|
-
const message = `Do you want to install the following template?${suffix}`;
|
|
144
|
-
const answer = await inquirer.prompt([
|
|
145
|
-
{
|
|
146
|
-
type: 'list',
|
|
147
|
-
name: 'shouldInstall',
|
|
148
|
-
message,
|
|
149
|
-
default: choices[0],
|
|
150
|
-
choices,
|
|
151
|
-
loop: false,
|
|
152
|
-
},
|
|
153
|
-
]);
|
|
154
|
-
return answer.shouldInstall;
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=create-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-utils.js","sourceRoot":"","sources":["../../src/lib/create-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/exec.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Result } from '@sapphire/result';
|
|
2
|
-
import { execa } from 'execa';
|
|
3
|
-
import { normalizeExecutablePath } from './hooks/runtimes/utils.js';
|
|
4
|
-
import { error, run } from './outputs.js';
|
|
5
|
-
import { cliDebugPrint } from './utils/cliDebugPrint.js';
|
|
6
|
-
const spawnPromised = async (cmd, args, opts) => {
|
|
7
|
-
const escapedCommand = normalizeExecutablePath(cmd);
|
|
8
|
-
cliDebugPrint('spawnPromised', { escapedCommand, args, opts });
|
|
9
|
-
const childProcess = execa(escapedCommand, args, {
|
|
10
|
-
shell: true,
|
|
11
|
-
windowsHide: true,
|
|
12
|
-
env: opts.env,
|
|
13
|
-
cwd: opts.cwd,
|
|
14
|
-
// Pipe means it gets collected by the parent process, inherit means it gets collected by the parent process and printed out to the console
|
|
15
|
-
stdout: process.env.APIFY_NO_LOGS_IN_TESTS ? ['pipe'] : ['pipe', 'inherit'],
|
|
16
|
-
stderr: process.env.APIFY_NO_LOGS_IN_TESTS ? ['pipe'] : ['pipe', 'inherit'],
|
|
17
|
-
verbose: process.env.APIFY_CLI_DEBUG ? 'full' : undefined,
|
|
18
|
-
});
|
|
19
|
-
return Result.fromAsync(childProcess.catch((execaError) => {
|
|
20
|
-
throw new Error(`${cmd} exited with code ${execaError.exitCode}`, { cause: execaError });
|
|
21
|
-
}));
|
|
22
|
-
};
|
|
23
|
-
export async function execWithLog({ cmd, args = [], opts = {}, overrideCommand }) {
|
|
24
|
-
run({ message: `${overrideCommand || cmd} ${args.join(' ')}` });
|
|
25
|
-
const result = await spawnPromised(cmd, args, opts);
|
|
26
|
-
if (result.isErr()) {
|
|
27
|
-
const err = result.unwrapErr();
|
|
28
|
-
error({ message: err.message });
|
|
29
|
-
if (err.cause) {
|
|
30
|
-
throw err.cause;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=exec.js.map
|
package/dist/lib/exec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/lib/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAiC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,IAAc,EAAE,IAAa,EAAE,EAAE;IAC1E,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAEpD,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE;QAChD,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,IAAI;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,2IAA2I;QAC3I,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC;QAC3E,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC;QAC3E,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KACzD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,SAAS,CACtB,YAAY,CAAC,KAAK,CAAC,CAAC,UAAsB,EAAE,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAC8E,CAAC;AACnF,CAAC,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,eAAe,EAAsB;IACnG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,eAAe,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,KAAK,CAAC;QACjB,CAAC;IACF,CAAC;AACF,CAAC"}
|
package/dist/lib/files.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync } from 'node:fs';
|
|
2
|
-
import { readFile, stat, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { join, sep } from 'node:path';
|
|
4
|
-
import { rimraf } from 'rimraf';
|
|
5
|
-
export const updateLocalJson = async (jsonFilePath, updateAttrs = {}, nestedObjectAttr = null) => {
|
|
6
|
-
const raw = await readFile(jsonFilePath, 'utf-8');
|
|
7
|
-
const currentObject = JSON.parse(raw);
|
|
8
|
-
let newObject;
|
|
9
|
-
if (nestedObjectAttr) {
|
|
10
|
-
newObject = currentObject;
|
|
11
|
-
newObject[nestedObjectAttr] = { ...currentObject[nestedObjectAttr], ...updateAttrs };
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
newObject = { ...currentObject, ...updateAttrs };
|
|
15
|
-
}
|
|
16
|
-
await writeFile(jsonFilePath, JSON.stringify(newObject, null, '\t'));
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* If you pass /foo/bar as rootPath and /baz/raz as folderPath then it ensures that following folders exists:
|
|
20
|
-
*
|
|
21
|
-
* /foo/bar/baz
|
|
22
|
-
* /foo/bar/baz/raz
|
|
23
|
-
*
|
|
24
|
-
* If you pass only one parameter then rootPath is considered to be '.'
|
|
25
|
-
*/
|
|
26
|
-
export const ensureFolderExistsSync = (rootPath, folderPath) => {
|
|
27
|
-
if (!folderPath) {
|
|
28
|
-
folderPath = rootPath;
|
|
29
|
-
rootPath = '.';
|
|
30
|
-
}
|
|
31
|
-
const parts = folderPath.split(sep);
|
|
32
|
-
parts.reduce((currentPath, currentDir) => {
|
|
33
|
-
currentPath = join(currentPath, currentDir);
|
|
34
|
-
if (!existsSync(currentPath)) {
|
|
35
|
-
mkdirSync(currentPath);
|
|
36
|
-
}
|
|
37
|
-
return currentPath;
|
|
38
|
-
}, rootPath);
|
|
39
|
-
};
|
|
40
|
-
export const rimrafPromised = async (pathToBeRemoved) => {
|
|
41
|
-
await rimraf(pathToBeRemoved);
|
|
42
|
-
};
|
|
43
|
-
export const deleteFile = async (filePath) => {
|
|
44
|
-
const res = await stat(filePath);
|
|
45
|
-
if (res.isFile()) {
|
|
46
|
-
await unlink(filePath);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
export const sumFilesSizeInBytes = async (pathToFiles, cwd) => {
|
|
50
|
-
const filesStats = await Promise.all(pathToFiles.map(async (filePath) => stat(join(cwd, filePath))));
|
|
51
|
-
const filesSizeBytes = filesStats.map((stats) => stats.size).reduce((sum, fileSize) => sum + fileSize, 0);
|
|
52
|
-
return filesSizeBytes;
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=files.js.map
|
package/dist/lib/files.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/lib/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import process from 'node:process';
|
|
2
|
-
import { none, some } from '@sapphire/result';
|
|
3
|
-
import { execa } from 'execa';
|
|
4
|
-
import which from 'which';
|
|
5
|
-
import { cliDebugPrint } from '../../utils/cliDebugPrint.js';
|
|
6
|
-
import { normalizeExecutablePath } from './utils.js';
|
|
7
|
-
const cwdCache = new Map();
|
|
8
|
-
// Runtimes, in order of preference
|
|
9
|
-
const runtimesToCheck = {
|
|
10
|
-
node: ['--version'],
|
|
11
|
-
deno: ['eval', '"console.log(process.versions.node)"'],
|
|
12
|
-
bun: ['--eval', '"console.log(process.versions.node)"'],
|
|
13
|
-
};
|
|
14
|
-
async function getRuntimeVersion(runtimePath, args) {
|
|
15
|
-
try {
|
|
16
|
-
const result = await execa(runtimePath, args, {
|
|
17
|
-
shell: true,
|
|
18
|
-
windowsHide: true,
|
|
19
|
-
verbose: process.env.APIFY_CLI_DEBUG ? 'full' : undefined,
|
|
20
|
-
});
|
|
21
|
-
// No output -> issue or who knows
|
|
22
|
-
if (!result.stdout) {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
return result.stdout.trim().replace(/^v/, '');
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async function getNpmVersion(npmPath) {
|
|
32
|
-
const result = await execa(npmPath, ['--version'], {
|
|
33
|
-
shell: true,
|
|
34
|
-
windowsHide: true,
|
|
35
|
-
verbose: process.env.APIFY_CLI_DEBUG ? 'full' : undefined,
|
|
36
|
-
});
|
|
37
|
-
if (!result.stdout) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return result.stdout.trim().replace(/^v/, '');
|
|
41
|
-
}
|
|
42
|
-
export async function useJavaScriptRuntime(cwd = process.cwd()) {
|
|
43
|
-
const cached = cwdCache.get(cwd);
|
|
44
|
-
if (cached) {
|
|
45
|
-
cliDebugPrint('useJavaScriptRuntime', { cacheHit: true, cwd, runtime: cached.unwrapOr(null) });
|
|
46
|
-
return cached;
|
|
47
|
-
}
|
|
48
|
-
for (const [runtime, args] of Object.entries(runtimesToCheck)) {
|
|
49
|
-
try {
|
|
50
|
-
const runtimePath = normalizeExecutablePath(await which(runtime));
|
|
51
|
-
const version = await getRuntimeVersion(runtimePath, args);
|
|
52
|
-
if (version) {
|
|
53
|
-
const res = {
|
|
54
|
-
executablePath: runtimePath,
|
|
55
|
-
version,
|
|
56
|
-
};
|
|
57
|
-
// For npm, we also fetch the npm version
|
|
58
|
-
if (runtime === 'node') {
|
|
59
|
-
const npmPath = normalizeExecutablePath(await which('npm').catch(() => null));
|
|
60
|
-
if (npmPath) {
|
|
61
|
-
res.pmPath = npmPath;
|
|
62
|
-
res.pmVersion = await getNpmVersion(npmPath);
|
|
63
|
-
res.pmName = 'npm';
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// deno and bun support package.json scripts out of the box
|
|
67
|
-
else {
|
|
68
|
-
res.runtimeShorthand = runtime;
|
|
69
|
-
res.pmPath = runtimePath;
|
|
70
|
-
res.pmVersion = version;
|
|
71
|
-
res.pmName = runtime;
|
|
72
|
-
}
|
|
73
|
-
cwdCache.set(cwd, some(res));
|
|
74
|
-
cliDebugPrint('useJavaScriptRuntime', { cacheHit: false, cwd, runtime: cwdCache.get(cwd)?.unwrap() });
|
|
75
|
-
return some(res);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
// Ignore errors
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
cwdCache.set(cwd, none);
|
|
83
|
-
cliDebugPrint('useJavaScriptRuntime', { cacheHit: false, cwd, runtime: null });
|
|
84
|
-
return none;
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=javascript.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../../src/lib/hooks/runtimes/javascript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { platform } from 'node:os';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import process from 'node:process';
|
|
4
|
-
import { none, some } from '@sapphire/result';
|
|
5
|
-
import { execa } from 'execa';
|
|
6
|
-
import which from 'which';
|
|
7
|
-
import { cliDebugPrint } from '../../utils/cliDebugPrint.js';
|
|
8
|
-
import { normalizeExecutablePath } from './utils.js';
|
|
9
|
-
const cwdCache = new Map();
|
|
10
|
-
async function getPythonVersion(runtimePath) {
|
|
11
|
-
try {
|
|
12
|
-
const result = await execa(runtimePath, ['-c', '"import platform; print(platform.python_version())"'], {
|
|
13
|
-
shell: true,
|
|
14
|
-
windowsHide: true,
|
|
15
|
-
verbose: process.env.APIFY_CLI_DEBUG ? 'full' : undefined,
|
|
16
|
-
});
|
|
17
|
-
// No output -> issue or who knows
|
|
18
|
-
if (!result.stdout) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
return result.stdout.trim();
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// const casted = ex as ExecaError;
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export async function usePythonRuntime({ cwd = process.cwd(), force = false, } = {}) {
|
|
29
|
-
const cached = cwdCache.get(cwd);
|
|
30
|
-
if (cached && !force) {
|
|
31
|
-
cliDebugPrint('usePythonRuntime', { cacheHit: true, cwd, runtime: cached.unwrapOr(null) });
|
|
32
|
-
return cached;
|
|
33
|
-
}
|
|
34
|
-
const isWindows = platform() === 'win32';
|
|
35
|
-
const pathParts = isWindows ? ['Scripts', 'python.exe'] : ['bin', 'python3'];
|
|
36
|
-
let fullPythonVenvPath;
|
|
37
|
-
if (process.env.VIRTUAL_ENV) {
|
|
38
|
-
fullPythonVenvPath = join(process.env.VIRTUAL_ENV, ...pathParts);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
fullPythonVenvPath = join(cwd, '.venv', ...pathParts);
|
|
42
|
-
}
|
|
43
|
-
fullPythonVenvPath = normalizeExecutablePath(fullPythonVenvPath);
|
|
44
|
-
try {
|
|
45
|
-
const version = await getPythonVersion(fullPythonVenvPath);
|
|
46
|
-
if (version) {
|
|
47
|
-
cwdCache.set(cwd, some({
|
|
48
|
-
executablePath: fullPythonVenvPath,
|
|
49
|
-
version,
|
|
50
|
-
}));
|
|
51
|
-
cliDebugPrint('usePythonRuntime', { cacheHit: false, cwd, runtime: cwdCache.get(cwd)?.unwrap() });
|
|
52
|
-
return cwdCache.get(cwd);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Ignore errors
|
|
57
|
-
}
|
|
58
|
-
const fallbacks = ['python3', 'python', ...(isWindows ? ['python3.exe', 'python.exe'] : [])];
|
|
59
|
-
for (const fallback of fallbacks) {
|
|
60
|
-
try {
|
|
61
|
-
const fullPath = normalizeExecutablePath(await which(fallback));
|
|
62
|
-
const version = await getPythonVersion(fullPath);
|
|
63
|
-
if (version) {
|
|
64
|
-
cwdCache.set(cwd, some({
|
|
65
|
-
executablePath: fullPath,
|
|
66
|
-
version,
|
|
67
|
-
}));
|
|
68
|
-
cliDebugPrint('usePythonRuntime', { cacheHit: false, cwd, runtime: cwdCache.get(cwd)?.unwrap() });
|
|
69
|
-
return cwdCache.get(cwd);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
// Continue
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
cwdCache.set(cwd, none);
|
|
77
|
-
cliDebugPrint('usePythonRuntime', { cacheHit: false, cwd, runtime: null });
|
|
78
|
-
return none;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=python.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/lib/hooks/runtimes/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isAbsolute } from 'node:path';
|
|
2
|
-
export function normalizeExecutablePath(path) {
|
|
3
|
-
if (!path) {
|
|
4
|
-
return null;
|
|
5
|
-
}
|
|
6
|
-
// Already escaped
|
|
7
|
-
if (path.startsWith('"')) {
|
|
8
|
-
return path;
|
|
9
|
-
}
|
|
10
|
-
// Regardless of platform, if there is a space in the path, we need to escape it
|
|
11
|
-
if (isAbsolute(path) && path.includes(' ')) {
|
|
12
|
-
return `"${path}"`;
|
|
13
|
-
}
|
|
14
|
-
return path;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/hooks/runtimes/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,MAAM,UAAU,uBAAuB,CAAC,IAAmB;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,kBAAkB;IAClB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gFAAgF;IAChF,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,IAAI,GAAG,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { mkdir, rename, writeFile } from 'node:fs/promises';
|
|
2
|
-
import { dirname, join } from 'node:path';
|
|
3
|
-
import process from 'node:process';
|
|
4
|
-
import { inspect } from 'node:util';
|
|
5
|
-
import { err, ok } from '@sapphire/result';
|
|
6
|
-
import { ACTOR_SPECIFICATION_VERSION, DEPRECATED_LOCAL_CONFIG_NAME } from '../consts.js';
|
|
7
|
-
import { error, info, warning } from '../outputs.js';
|
|
8
|
-
import { getJsonFileContent, getLocalConfigPath } from '../utils.js';
|
|
9
|
-
import { cliDebugPrint } from '../utils/cliDebugPrint.js';
|
|
10
|
-
import { confirmAction } from '../utils/confirm.js';
|
|
11
|
-
const getDeprecatedLocalConfigPath = (cwd) => join(cwd, DEPRECATED_LOCAL_CONFIG_NAME);
|
|
12
|
-
export const cwdCache = new Map();
|
|
13
|
-
export async function useActorConfig({ cwd = process.cwd(), migrateConfig = true, warnAboutOldConfig = true } = {
|
|
14
|
-
cwd: process.cwd(),
|
|
15
|
-
migrateConfig: true,
|
|
16
|
-
warnAboutOldConfig: true,
|
|
17
|
-
}) {
|
|
18
|
-
const cached = cwdCache.get(cwd);
|
|
19
|
-
if (cached) {
|
|
20
|
-
cliDebugPrint('useActorConfig', { cacheHit: true, config: cached });
|
|
21
|
-
return ok(cached);
|
|
22
|
-
}
|
|
23
|
-
const newConfigPath = getLocalConfigPath(cwd);
|
|
24
|
-
const deprecatedConfigPath = getDeprecatedLocalConfigPath(cwd);
|
|
25
|
-
let config;
|
|
26
|
-
let deprecatedConfig;
|
|
27
|
-
try {
|
|
28
|
-
config = getJsonFileContent(newConfigPath);
|
|
29
|
-
}
|
|
30
|
-
catch (ex) {
|
|
31
|
-
return err({
|
|
32
|
-
message: `Failed to read local config at path: '${newConfigPath}':`,
|
|
33
|
-
cause: ex,
|
|
34
|
-
exists: false,
|
|
35
|
-
config: {},
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
deprecatedConfig = getJsonFileContent(deprecatedConfigPath);
|
|
40
|
-
}
|
|
41
|
-
catch (ex) {
|
|
42
|
-
return err({
|
|
43
|
-
message: `Failed to read local config at path: '${deprecatedConfigPath}':`,
|
|
44
|
-
cause: ex,
|
|
45
|
-
exists: false,
|
|
46
|
-
config: {},
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
// Handle cleanup of deprecated config, we just ignore the deprecated config if both exist
|
|
50
|
-
if (config && deprecatedConfig && warnAboutOldConfig) {
|
|
51
|
-
await handleBothConfigVersionsFound(deprecatedConfigPath);
|
|
52
|
-
}
|
|
53
|
-
if (!config && !deprecatedConfig) {
|
|
54
|
-
cwdCache.set(cwd, { exists: false, migrated: false, config: {} });
|
|
55
|
-
return ok({ exists: false, migrated: false, config: {} });
|
|
56
|
-
}
|
|
57
|
-
let migrated = false;
|
|
58
|
-
if (!config && deprecatedConfig && migrateConfig) {
|
|
59
|
-
const migratedConfig = await handleMigrationFlow(deprecatedConfig, deprecatedConfigPath, newConfigPath);
|
|
60
|
-
if (migratedConfig.isErr()) {
|
|
61
|
-
return err(migratedConfig.unwrapErr());
|
|
62
|
-
}
|
|
63
|
-
config = migratedConfig.unwrap();
|
|
64
|
-
migrated = true;
|
|
65
|
-
}
|
|
66
|
-
cwdCache.set(cwd, { exists: true, migrated, config: config || deprecatedConfig || {} });
|
|
67
|
-
cliDebugPrint('useActorConfig', { cacheHit: false, config: cwdCache.get(cwd) });
|
|
68
|
-
return ok({ exists: true, migrated, config: config || deprecatedConfig || {} });
|
|
69
|
-
}
|
|
70
|
-
async function handleBothConfigVersionsFound(deprecatedConfigPath) {
|
|
71
|
-
const confirmed = await confirmAction({
|
|
72
|
-
type: 'actor config',
|
|
73
|
-
message: `The new version of Apify CLI uses the ".actor/actor.json" instead of the "apify.json" file. Since we have found both files in your Actor directory, "apify.json" will be renamed to "apify.json.deprecated". Going forward, all commands will use ".actor/actor.json". You can read about the differences between the old and the new config at https://github.com/apify/apify-cli/blob/master/MIGRATIONS.md. Do you want to continue?`,
|
|
74
|
-
});
|
|
75
|
-
// If users refuse to migrate, 🤷
|
|
76
|
-
if (!confirmed) {
|
|
77
|
-
warning({
|
|
78
|
-
message: 'The "apify.json" file present in your Actor directory will be ignored, and the new ".actor/actor.json" file will be used instead. Please, either rename or remove the old file.',
|
|
79
|
-
});
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
await rename(deprecatedConfigPath, `${deprecatedConfigPath}.deprecated`);
|
|
84
|
-
info({
|
|
85
|
-
message: `The "apify.json" file has been renamed to "apify.json.deprecated". The deprecated file is no longer used by the CLI or Apify Console. If you do not need it for some specific purpose, it can be safely deleted.`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
catch (ex) {
|
|
89
|
-
if (ex instanceof Error) {
|
|
90
|
-
error({
|
|
91
|
-
message: `Failed to rename the deprecated "apify.json" file to "apify.json.deprecated".\n ${ex.message || ex}`,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
error({
|
|
96
|
-
message: `Failed to rename the deprecated "apify.json" file to "apify.json.deprecated".\n ${inspect(ex, { showHidden: false })}`,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// Properties from apify.json file that will me migrated to Actor specs in .actor/actor.json
|
|
102
|
-
const MIGRATED_APIFY_JSON_PROPERTIES = ['name', 'version', 'buildTag'];
|
|
103
|
-
async function handleMigrationFlow(deprecatedConfig, deprecatedConfigPath, configPath) {
|
|
104
|
-
let migratedConfig = { ...deprecatedConfig };
|
|
105
|
-
if (typeof migratedConfig.version === 'object') {
|
|
106
|
-
migratedConfig = updateLocalConfigStructure(migratedConfig);
|
|
107
|
-
}
|
|
108
|
-
migratedConfig = {
|
|
109
|
-
actorSpecification: ACTOR_SPECIFICATION_VERSION,
|
|
110
|
-
environmentVariables: deprecatedConfig?.env || undefined,
|
|
111
|
-
...MIGRATED_APIFY_JSON_PROPERTIES.reduce((acc, prop) => {
|
|
112
|
-
acc[prop] = deprecatedConfig[prop];
|
|
113
|
-
return acc;
|
|
114
|
-
}, {}),
|
|
115
|
-
};
|
|
116
|
-
const confirmed = await confirmAction({
|
|
117
|
-
type: 'actor config',
|
|
118
|
-
message: `The new version of Apify CLI uses the ".actor/actor.json" instead of the "apify.json" file. Your "apify.json" file will be automatically updated to the new format under ".actor/actor.json". The original file will be renamed by adding the ".deprecated" suffix. Do you want to continue?`,
|
|
119
|
-
});
|
|
120
|
-
if (!confirmed) {
|
|
121
|
-
return err({
|
|
122
|
-
message: 'Command can not run with old "apify.json" structure. Either let the CLI auto-update it or follow the guide on https://github.com/apify/apify-cli/blob/master/MIGRATIONS.md and update it manually.',
|
|
123
|
-
exists: true,
|
|
124
|
-
config: migratedConfig,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
// If we fail to write the new config, its an error
|
|
128
|
-
try {
|
|
129
|
-
await mkdir(dirname(configPath), { recursive: true });
|
|
130
|
-
await writeFile(configPath, JSON.stringify(migratedConfig, null, '\t'));
|
|
131
|
-
}
|
|
132
|
-
catch (ex) {
|
|
133
|
-
const casted = ex;
|
|
134
|
-
return err({
|
|
135
|
-
message: `Failed to write the new "actor.json" file to path: '${configPath}'.\n ${casted.message || casted}`,
|
|
136
|
-
exists: true,
|
|
137
|
-
config: migratedConfig,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
// but if we fail to rename the deprecated config, its a warning, cause future runs will ignore it
|
|
141
|
-
try {
|
|
142
|
-
await rename(deprecatedConfigPath, `${deprecatedConfigPath}.deprecated`);
|
|
143
|
-
}
|
|
144
|
-
catch (ex) {
|
|
145
|
-
const casted = ex;
|
|
146
|
-
warning({
|
|
147
|
-
message: `Failed to rename the deprecated "apify.json" file to "apify.json.deprecated".\n ${casted.message || casted}`,
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
info({
|
|
151
|
-
message: `The "apify.json" file has been migrated to ".actor/actor.json" and the original file renamed to "apify.json.deprecated". The deprecated file is no longer used by the CLI or Apify Console. If you do not need it for some specific purpose, it can be safely deleted. Do not forget to commit the new file to your Git repository.`,
|
|
152
|
-
});
|
|
153
|
-
return ok(migratedConfig);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Migration for deprecated structure of apify.json to latest.
|
|
157
|
-
*/
|
|
158
|
-
function updateLocalConfigStructure(localConfig) {
|
|
159
|
-
const updatedLocalConfig = {
|
|
160
|
-
name: localConfig.name,
|
|
161
|
-
template: localConfig.template,
|
|
162
|
-
version: localConfig.version.versionNumber,
|
|
163
|
-
buildTag: localConfig.version.buildTag,
|
|
164
|
-
env: null,
|
|
165
|
-
};
|
|
166
|
-
if (localConfig.version.envVars?.length) {
|
|
167
|
-
const env = {};
|
|
168
|
-
localConfig.version.envVars.forEach((envVar) => {
|
|
169
|
-
if (envVar.name && envVar.value) {
|
|
170
|
-
env[envVar.name] = envVar.value;
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
updatedLocalConfig.env = env;
|
|
174
|
-
}
|
|
175
|
-
return updatedLocalConfig;
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=useActorConfig.js.map
|