summaryrefslogtreecommitdiff
path: root/source/features/warn-pr-from-master.tsx
blob: 74dbd482ec5ceb314596e460afc84f94df6707eb (plain) (blame)
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
import React from 'dom-chef';
import select from 'select-dom';
import * as pageDetect from 'github-url-detection';

import features from '.';
import getDefaultBranch from '../github-helpers/get-default-branch';
import {getRepo} from '../github-helpers';

async function init(): Promise<false | void> {
	let defaultBranch;
	if (select.exists('.is-cross-repo')) {
		const forkedRepository = getRepo(select('[title^="head: "]')!.textContent!);
		defaultBranch = await getDefaultBranch(forkedRepository);
	} else {
		defaultBranch = await getDefaultBranch();
	}

	// Expected: /user/repo/compare/master...user:master
	if (!location.pathname.endsWith(':' + defaultBranch)) {
		return false;
	}

	select('.js-compare-pr')!.before(
		<div className="flash flash-error my-3">
			<strong>Note:</strong> Creating a PR from the default branch is an <a href="https://blog.jasonmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/" target="_blank" rel="noopener noreferrer">anti-pattern</a>.
		</div>
	);
}

void features.add(__filebasename, {
	include: [
		pageDetect.isCompare
	],
	exclude: [
		() => select.exists('.blankslate')
	],
	init
});