-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathhandler.ts
More file actions
98 lines (89 loc) · 2.57 KB
/
handler.ts
File metadata and controls
98 lines (89 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import Listr from "listr";
import path from "path";
import {
defaultComposeFileName,
defaultDir,
defaultVariantsDirName
} from "../../params.js";
import { ListrContextPublish } from "../../types.js";
import { VerbosityOptions } from "../build/types.js";
import { PublishCommandOptions } from "./types.js";
import { publish } from "../../tasks/publish/index.js";
import { parseReleaseType } from "./parseReleaseType.js";
import { getPackagesToBuildProps } from "../build/variants.js";
/**
* Common handler for CLI and programatic usage
*/
export async function publishHandler({
type,
provider,
eth_provider,
content_provider,
developer_address: developerAddress = process.env.DEVELOPER_ADDRESS,
timeout: userTimeout,
upload_to: uploadTo,
sign_release: signReleaseFlag,
github_release: githubRelease,
dappnode_team_preset: dappnode_team_preset,
require_git_data: requireGitData,
delete_old_pins: deleteOldPins,
// Global options
dir = defaultDir,
compose_file_name: composeFileName = defaultComposeFileName,
silent,
verbose,
variants_dir_name: variantsDirName = defaultVariantsDirName,
all_variants: allVariants,
variants
}: PublishCommandOptions): Promise<ListrContextPublish> {
let ethProvider = provider || eth_provider;
let contentProvider = provider || content_provider;
const isCi = process.env.CI;
const verbosityOptions: VerbosityOptions = {
renderer: verbose ? "verbose" : silent ? "silent" : "default"
};
/**
* Specific set of options used for internal DAppNode releases.
* Caution: options may change without notice.
*/
if (dappnode_team_preset) {
if (isCi) {
contentProvider = "https://api.ipfs.dappnode.io";
uploadTo = "ipfs";
verbose = true;
}
ethProvider = "remote";
githubRelease = true;
}
const releaseType = parseReleaseType({ type });
const variantsDirPath = path.join(dir, variantsDirName);
const isMultiVariant = !!allVariants || !!variants;
const publishTasks = new Listr(
publish({
releaseType,
ethProvider,
dir,
composeFileName,
contentProvider,
uploadTo,
signReleaseFlag,
userTimeout,
requireGitData,
deleteOldPins,
developerAddress,
githubRelease,
verbosityOptions,
variantsDirPath,
packagesToBuildProps: getPackagesToBuildProps({
allVariants: Boolean(allVariants),
commaSeparatedVariants: variants,
rootDir: dir,
variantsDirPath,
composeFileName
}),
isMultiVariant
}),
verbosityOptions
);
return await publishTasks.run();
}