-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathappIdentity.ts
More file actions
109 lines (93 loc) · 2.65 KB
/
Copy pathappIdentity.ts
File metadata and controls
109 lines (93 loc) · 2.65 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
99
100
101
102
103
104
105
106
107
108
109
import { execSync } from "node:child_process";
export type BuildVariant = "prod" | "dev";
export interface BuildIdentity {
variant: BuildVariant;
branch: string | null;
appName: string;
appId: string;
bundleId: string;
packagerName: string;
executableName: string;
squirrelName: string;
linuxPackageName: string;
linuxBin: string;
updaterCacheDirName: string;
}
const PRODUCTION_BRANCH = "prod";
const normalizeBranch = (branch: string): string => {
return branch
.replace(/^refs\/heads\//, "")
.replace(/^origin\//, "")
.trim();
};
const getBranchFromEnv = (): string | null => {
const candidates = [
process.env.CREATURE_BUILD_BRANCH,
process.env.GITHUB_REF_NAME,
process.env.BRANCH_NAME,
process.env.CI_COMMIT_REF_NAME,
].filter(Boolean) as string[];
for (const value of candidates) {
const normalized = normalizeBranch(value);
if (normalized) {
return normalized;
}
}
return null;
};
const getBranchFromGit = (): string | null => {
try {
const output = execSync("git rev-parse --abbrev-ref HEAD", {
stdio: ["ignore", "pipe", "ignore"],
encoding: "utf8",
}).trim();
if (!output || output === "HEAD") {
return null;
}
return normalizeBranch(output);
} catch {
return null;
}
};
const resolveVariant = (): { variant: BuildVariant; branch: string | null } => {
const override = process.env.CREATURE_BUILD_VARIANT?.toLowerCase();
if (override === "prod" || override === "dev") {
return { variant: override, branch: getBranchFromEnv() ?? getBranchFromGit() };
}
const branch = getBranchFromEnv() ?? getBranchFromGit();
if (branch && branch.toLowerCase() === PRODUCTION_BRANCH) {
return { variant: "prod", branch };
}
return { variant: "dev", branch };
};
export const getBuildIdentity = (): BuildIdentity => {
const { variant, branch } = resolveVariant();
if (variant === "prod") {
return {
variant,
branch,
appName: "Creature",
appId: "run.creature.desktop",
bundleId: "run.creature.desktop",
packagerName: "Creature",
executableName: process.platform === "linux" ? "creature" : "Creature",
squirrelName: "creature",
linuxPackageName: "creature",
linuxBin: "creature",
updaterCacheDirName: "Creature",
};
}
return {
variant,
branch,
appName: "Creature",
appId: "run.creature.desktop.dev",
bundleId: "run.creature.desktop.dev",
packagerName: "CreatureDev",
executableName: "creature-dev",
squirrelName: "creature-dev",
linuxPackageName: "creature-dev",
linuxBin: "creature-dev",
updaterCacheDirName: "CreatureDev",
};
};