zarro 1.129.0 → 1.130.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.
|
@@ -28,7 +28,8 @@ const
|
|
|
28
28
|
explode,
|
|
29
29
|
overrideDefault,
|
|
30
30
|
resolveNumber,
|
|
31
|
-
resolveFlag
|
|
31
|
+
resolveFlag,
|
|
32
|
+
resolveWithFallback
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
const positives = [ "1", "yes", "true" ];
|
|
@@ -252,24 +253,40 @@ function resolve() {
|
|
|
252
253
|
return result;
|
|
253
254
|
}
|
|
254
255
|
|
|
256
|
+
function resolveWithFallback(
|
|
257
|
+
varName,
|
|
258
|
+
fallback
|
|
259
|
+
) {
|
|
260
|
+
return resolveInternal(varName, false, fallback);
|
|
261
|
+
}
|
|
262
|
+
|
|
255
263
|
function resolveFirst(names, ignoreDefault) {
|
|
256
264
|
return names
|
|
257
265
|
.reduce((acc, cur) =>
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
266
|
+
acc === undefined
|
|
267
|
+
? resolveInternal(cur, ignoreDefault)
|
|
268
|
+
: acc,
|
|
261
269
|
undefined
|
|
262
270
|
);
|
|
263
271
|
}
|
|
264
272
|
|
|
265
|
-
function
|
|
273
|
+
function firstDefined() {
|
|
274
|
+
const args = Array.from(arguments);
|
|
275
|
+
for (const arg of args) {
|
|
276
|
+
if (arg !== undefined) {
|
|
277
|
+
return arg;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
function resolveInternal(name, ignoreDefault, overrideDefault) {
|
|
266
283
|
if (Array.isArray(name)) {
|
|
267
284
|
// attempt to resolve the first defined variable
|
|
268
|
-
const
|
|
285
|
+
const firstDefinedVar = resolveFirst(name, true);
|
|
269
286
|
// if that doesn't work, get the first default value
|
|
270
|
-
return
|
|
287
|
+
return firstDefinedVar === undefined
|
|
271
288
|
? resolveFirst(name, false)
|
|
272
|
-
:
|
|
289
|
+
: firstDefinedVar;
|
|
273
290
|
}
|
|
274
291
|
|
|
275
292
|
const target = registeredEnvironmentVariables[name] || {},
|
|
@@ -282,8 +299,9 @@ function resolveInternal(name, ignoreDefault) {
|
|
|
282
299
|
overrideValues = overrides
|
|
283
300
|
.map(s => process.env[s])
|
|
284
301
|
.filter(s => s !== undefined),
|
|
285
|
-
initialValue =
|
|
286
|
-
(
|
|
302
|
+
initialValue = (!ignoreDefault && process.env[name] === undefined)
|
|
303
|
+
? firstDefined(overrideDefault, target.default)
|
|
304
|
+
: process.env[name];
|
|
287
305
|
if (overrideValues.length === 0) {
|
|
288
306
|
return initialValue;
|
|
289
307
|
}
|
|
@@ -270,6 +270,12 @@ module.exports = function _env(env) {
|
|
|
270
270
|
default: "master"
|
|
271
271
|
});
|
|
272
272
|
|
|
273
|
+
env.register({
|
|
274
|
+
name: "GIT_DEFAULT_UPSTREAM",
|
|
275
|
+
help: "The default upstream (typically origin) against which verification is done",
|
|
276
|
+
default: "origin"
|
|
277
|
+
});
|
|
278
|
+
|
|
273
279
|
env.register({
|
|
274
280
|
name: "GIT_VERIFY_BRANCH",
|
|
275
281
|
help: "The fully-qualified branch name to use when verifying (defaults to checked out branch)"
|
|
@@ -12,13 +12,16 @@
|
|
|
12
12
|
if (os.platform() === "darwin") {
|
|
13
13
|
console.warn(chalk.redBright(`up-to-date verification is experimental on OSX! Please report errors to davydm@gmail.com`));
|
|
14
14
|
}
|
|
15
|
-
const remoteInfos = (await readAllGitRemotes()) || [], remotes = remoteInfos.map(r => r.name), mainBranch = env.resolve("GIT_MAIN_BRANCH") || await resolveDefaultVerifyTarget(remotes), verifyBranch = env.resolve("GIT_VERIFY_BRANCH") || await readCurrentBranch();
|
|
15
|
+
const remoteInfos = (await readAllGitRemotes()) || [], remotes = remoteInfos.map(r => r.name), mainBranch = env.resolve("GIT_MAIN_BRANCH") || await resolveDefaultVerifyTarget(remotes), defaultUpstream = env.resolveWithFallback("GIT_DEFAULT_UPSTREAM", remotes[0]), verifyBranch = env.resolve("GIT_VERIFY_BRANCH") || await readCurrentBranch();
|
|
16
16
|
if (!mainBranch) {
|
|
17
17
|
throw new ZarroError(`Can't determine main branch (try setting env: GIT_MAIN_BRANCH)`);
|
|
18
18
|
}
|
|
19
19
|
if (!verifyBranch) {
|
|
20
20
|
throw new ZarroError(`Can't determine branch to verify (try setting env: GIT_VERIFY_BRANCH)`);
|
|
21
21
|
}
|
|
22
|
+
if (!defaultUpstream) {
|
|
23
|
+
throw new ZarroError(`Can't determine upstream to find main branch (try setting env: GIT_DEFAULT_UPSTREAM)`);
|
|
24
|
+
}
|
|
22
25
|
if (remotes.length && !env.resolveFlag("SKIP_FETCH_ON_VERIFY")) {
|
|
23
26
|
const lastFetch = await readLastFetchTime(), fetchRecentPeriod = env.resolveNumber("GIT_FETCH_RECENT_TIME") * 1000, now = Date.now();
|
|
24
27
|
let recentEnough = false;
|
|
@@ -51,7 +54,7 @@
|
|
|
51
54
|
log.info(`${taskName} :: skipping fetch: was last done at ${lastFetch}`);
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
|
-
const verifyResult = await readGitCommitDeltaCount(mainBranch
|
|
57
|
+
const verifyResult = await readGitCommitDeltaCount(`${defaultUpstream}/${mainBranch}`, verifyBranch);
|
|
55
58
|
// TODO: get the delta count & chuck if behind
|
|
56
59
|
const aheadS = verifyResult.ahead === 1 ? "" : "s", behindS = verifyResult.behind === 1 ? "" : "s", message = `${chalk.yellow(verifyBranch)} is ${chalk.green(verifyResult.ahead)} commit${aheadS} ahead and ${chalk.red(verifyResult.behind)} commit${behindS} behind ${chalk.cyanBright(mainBranch)}`;
|
|
57
60
|
log.info(`${taskName} :: ${message}`);
|
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ declare global {
|
|
|
98
98
|
"GIT_OVERRIDE_BRANCH" |
|
|
99
99
|
"GIT_BRANCH" |
|
|
100
100
|
"GIT_MAIN_BRANCH" |
|
|
101
|
+
"GIT_DEFAULT_UPSTREAM" |
|
|
101
102
|
"GIT_VERIFY_BRANCH" |
|
|
102
103
|
"GIT_OVERRIDE_REMOTE" |
|
|
103
104
|
"GIT_REMOTE" |
|
|
@@ -168,6 +169,7 @@ declare global {
|
|
|
168
169
|
resolveNumber(name: NumericEnvVar): number;
|
|
169
170
|
resolveFlag(name: FlagEnvVar): boolean;
|
|
170
171
|
associate(varName: AnyEnvVar | AnyEnvVar[], tasks: string | string[]): void;
|
|
172
|
+
resolveWithFallback<T>(varName: AnyEnvVar, fallback: T): T;
|
|
171
173
|
|
|
172
174
|
// these are generated on the js output by register-environment-variables
|
|
173
175
|
// -> included here to avoid typos: use env.CONSTANT_NAME when you want
|
|
@@ -231,6 +233,7 @@ declare global {
|
|
|
231
233
|
UPDATE_SUBMODULES_TO_LATEST: FlagEnvVar;
|
|
232
234
|
ENFORCE_VERIFICATION: FlagEnvVar;
|
|
233
235
|
GIT_MAIN_BRANCH: StringEnvVar;
|
|
236
|
+
GIT_DEFAULT_UPSTREAM: StringEnvVar;
|
|
234
237
|
GIT_VERIFY_BRANCH: StringEnvVar;
|
|
235
238
|
SKIP_FETCH_ON_VERIFY: FlagEnvVar;
|
|
236
239
|
GIT_FETCH_TIMEOUT: NumericEnvVar;
|