aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/monorepo-scripts/src/prepublish_checks.ts18
1 files changed, 17 insertions, 1 deletions
diff --git a/packages/monorepo-scripts/src/prepublish_checks.ts b/packages/monorepo-scripts/src/prepublish_checks.ts
index ae58524f5..2c096d8f6 100644
--- a/packages/monorepo-scripts/src/prepublish_checks.ts
+++ b/packages/monorepo-scripts/src/prepublish_checks.ts
@@ -47,9 +47,25 @@ async function checkPublishRequiredSetupAsync(): Promise<void> {
} catch (err) {
throw new Error('You must setup your AWS credentials by running `aws configure`. Do this and try again.');
}
+
+ utils.log('Checking that git branch is up to date with upstream...');
+ await execAsync('git fetch');
+ const res = await execAsync('git status -bs'); // s - short format, b - branch info
+ /**
+ * Possible outcomes
+ * ## branch_name...origin/branch_name [behind n]
+ * ## branch_name...origin/branch_name [ahead n]
+ * ## branch_name...origin/branch_name
+ */
+ const gitShortStatusHeader = res.stdout.split('\n')[0];
+ if (gitShortStatusHeader.includes('behind')) {
+ throw new Error('Your branch is behind upstream. Please pull before publishing.');
+ } else if (gitShortStatusHeader.includes('ahead')) {
+ throw new Error('Your branch is ahead of upstream. Please push before publishing.');
+ }
}
checkPublishRequiredSetupAsync().catch(err => {
- utils.log(err);
+ utils.log(err.message);
process.exit(1);
});