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
- acc === undefined
259
- ? resolveInternal(cur, ignoreDefault)
260
- : acc,
266
+ acc === undefined
267
+ ? resolveInternal(cur, ignoreDefault)
268
+ : acc,
261
269
  undefined
262
270
  );
263
271
  }
264
272
 
265
- function resolveInternal(name, ignoreDefault) {
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 firstDefined = resolveFirst(name, true);
285
+ const firstDefinedVar = resolveFirst(name, true);
269
286
  // if that doesn't work, get the first default value
270
- return firstDefined === undefined
287
+ return firstDefinedVar === undefined
271
288
  ? resolveFirst(name, false)
272
- : firstDefined;
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
- (!ignoreDefault && process.env[name] === undefined) ? target.default : process.env[name];
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 || "master", verifyBranch);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zarro",
3
- "version": "1.129.0",
3
+ "version": "1.130.0",
4
4
  "description": "Some glue to make gulp easier, perhaps even zero- or close-to-zero-conf",
5
5
  "bin": {
6
6
  "zarro": "./index.js"
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;