Skip to content

Commit b984fdc

Browse files
Ignore git changes in watch (#287)
* feat(betterer ✨): make --ignore implementation useful Assume that ignore arguments are glob patterns * fix(eslint 🐛): revert eslint dependency change
1 parent f2877b3 commit b984fdc

File tree

4 files changed

+68
-104
lines changed

4 files changed

+68
-104
lines changed

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535
"@types/graceful-fs": "^4.1.3",
3636
"@types/jest": "^26.0.0",
3737
"@types/node": "^14.6.1",
38-
"@typescript-eslint/eslint-plugin": "^4.0.0",
39-
"@typescript-eslint/parser": "^3.10.1",
38+
"@typescript-eslint/eslint-plugin": "^4.1.1",
39+
"@typescript-eslint/parser": "^4.1.1",
4040
"ansi-regex": "^5.0.0",
4141
"cz-conventional-changelog": "^3.3.0",
42-
"eslint": "^7.3.1",
42+
"eslint": "^7.9.0",
4343
"eslint-config-prettier": "^6.11.0",
44-
"eslint-plugin-jest": "^24.0.0",
44+
"eslint-plugin-jest": "^24.0.1",
4545
"eslint-plugin-prettier": "^3.1.4",
4646
"fs-extra": "^9.0.1",
4747
"graceful-fs": "^4.2.3",

packages/betterer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"globby": "^11.0.1",
3838
"jest-diff": "^26.1.0",
3939
"lines-and-columns": "^1.1.6",
40+
"minimatch": "^3.0.4",
4041
"safe-string-literal": "^1.0.1",
4142
"ts-node": "^9.0.0",
4243
"tslib": "^2.0.1"

packages/betterer/src/watcher/watcher.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import { watch as chokidar, FSWatcher } from 'chokidar';
22
import * as globby from 'globby';
3+
import * as minimatch from 'minimatch';
4+
import * as path from 'path';
35

46
import { BettererContext, BettererRuns } from '../context';
57
import { getNormalisedPath } from '../utils';
68
import { BettererWatchChangeHandler, BettererWatchRunHandler } from './types';
79

810
const EMIT_EVENTS = ['add', 'change'];
911
const DEBOUNCE_TIME = 200;
12+
const GIT_DIRECTORY = '.git/**';
1013

1114
export class BettererWatcher {
1215
private _files: Array<string> = [];
@@ -19,13 +22,16 @@ export class BettererWatcher {
1922
public async setup(): Promise<void> {
2023
const { cwd, ignores, resultsPath } = this._context.config;
2124

22-
const isIgnored = globby.gitignore.sync();
25+
const isGitIgnored = globby.gitignore.sync();
26+
const watchIgnores = [...ignores, GIT_DIRECTORY].map((ignore) => path.join(cwd, ignore));
2327
const watcher = chokidar(cwd, {
2428
ignoreInitial: true,
2529
ignored: (itemPath: string) => {
2630
return (
2731
itemPath !== getNormalisedPath(cwd) &&
28-
(itemPath === getNormalisedPath(resultsPath) || ignores.includes(itemPath) || isIgnored(itemPath))
32+
(itemPath === getNormalisedPath(resultsPath) ||
33+
watchIgnores.some((ignore) => minimatch(itemPath, ignore, { matchBase: true })) ||
34+
isGitIgnored(itemPath))
2935
);
3036
}
3137
});

yarn.lock

Lines changed: 55 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,11 +1622,6 @@
16221622
resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
16231623
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
16241624

1625-
"@types/eslint-visitor-keys@^1.0.0":
1626-
version "1.0.0"
1627-
resolved "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
1628-
integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
1629-
16301625
"@types/eslint@^7.2.2":
16311626
version "7.2.2"
16321627
resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.2.tgz#c88426b896efeb0b2732a92431ce8aa7ec0dee61"
@@ -1760,39 +1755,28 @@
17601755
dependencies:
17611756
"@types/yargs-parser" "*"
17621757

1763-
"@typescript-eslint/eslint-plugin@^4.0.0":
1764-
version "4.0.0"
1765-
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.0.0.tgz#99349a501447fed91de18346705c0c65cf603bee"
1766-
integrity sha512-5e6q1TR7gS2P+8W2xndCu7gBh3BzmYEo70OyIdsmCmknHha/yNbz2vdevl+tP1uoaMOcrzg4gyrAijuV3DDBHA==
1758+
"@typescript-eslint/eslint-plugin@^4.1.1":
1759+
version "4.1.1"
1760+
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.1.1.tgz#78d5b18e259b13c2f4ec41dd9105af269a161a75"
1761+
integrity sha512-Hoxyt99EA9LMmqo/5PuWWPeWeB3mKyvibfJ1Hy5SfiUpjE8Nqp+5QNd9fOkzL66+fqvIWSIE+Ett16LGMzCGnQ==
17671762
dependencies:
1768-
"@typescript-eslint/experimental-utils" "4.0.0"
1769-
"@typescript-eslint/scope-manager" "4.0.0"
1763+
"@typescript-eslint/experimental-utils" "4.1.1"
1764+
"@typescript-eslint/scope-manager" "4.1.1"
17701765
debug "^4.1.1"
17711766
functional-red-black-tree "^1.0.1"
17721767
regexpp "^3.0.0"
17731768
semver "^7.3.2"
17741769
tsutils "^3.17.1"
17751770

1776-
"@typescript-eslint/experimental-utils@3.10.1":
1777-
version "3.10.1"
1778-
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686"
1779-
integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==
1780-
dependencies:
1781-
"@types/json-schema" "^7.0.3"
1782-
"@typescript-eslint/types" "3.10.1"
1783-
"@typescript-eslint/typescript-estree" "3.10.1"
1784-
eslint-scope "^5.0.0"
1785-
eslint-utils "^2.0.0"
1786-
1787-
"@typescript-eslint/experimental-utils@4.0.0":
1788-
version "4.0.0"
1789-
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.0.0.tgz#fbec21a3b5ab59127edb6ce2e139ed378cc50eb5"
1790-
integrity sha512-hbX6zR+a/vcpFVNJYN/Nbd7gmaMosDTxHEKcvmhWeWcq/0UDifrqmCfkkodbAKL46Fn4ekSBMTyq2zlNDzcQxw==
1771+
"@typescript-eslint/experimental-utils@4.1.1":
1772+
version "4.1.1"
1773+
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.1.1.tgz#52ff4e37c93113eb96385a4e6d075abece1ea72d"
1774+
integrity sha512-jzYsNciHoa4Z3c1URtmeT/bamYm8Dwfw6vuN3WHIE/BXb1iC4KveAnXDErTAZtPVxTYBaYn3n2gbt6F6D2rm1A==
17911775
dependencies:
17921776
"@types/json-schema" "^7.0.3"
1793-
"@typescript-eslint/scope-manager" "4.0.0"
1794-
"@typescript-eslint/types" "4.0.0"
1795-
"@typescript-eslint/typescript-estree" "4.0.0"
1777+
"@typescript-eslint/scope-manager" "4.1.1"
1778+
"@typescript-eslint/types" "4.1.1"
1779+
"@typescript-eslint/typescript-estree" "4.1.1"
17961780
eslint-scope "^5.0.0"
17971781
eslint-utils "^2.0.0"
17981782

@@ -1808,24 +1792,15 @@
18081792
eslint-scope "^5.0.0"
18091793
eslint-utils "^2.0.0"
18101794

1811-
"@typescript-eslint/parser@^3.10.1":
1812-
version "3.10.1"
1813-
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467"
1814-
integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==
1815-
dependencies:
1816-
"@types/eslint-visitor-keys" "^1.0.0"
1817-
"@typescript-eslint/experimental-utils" "3.10.1"
1818-
"@typescript-eslint/types" "3.10.1"
1819-
"@typescript-eslint/typescript-estree" "3.10.1"
1820-
eslint-visitor-keys "^1.1.0"
1821-
1822-
"@typescript-eslint/scope-manager@4.0.0":
1823-
version "4.0.0"
1824-
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.0.0.tgz#8c9e3b3b8cdf5a1fbe671d9fad73ff67bc027ea8"
1825-
integrity sha512-9gcWUPoWo7gk/+ZQPg7L1ySRmR5HLIy3Vu6/LfhQbuzIkGm6v2CGIjpVRISoDLFRovNRDImd4aP/sa8O4yIEBg==
1795+
"@typescript-eslint/parser@^4.1.1":
1796+
version "4.1.1"
1797+
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.1.1.tgz#324b4b35e314075adbc92bd8330cf3ef0c88cf3e"
1798+
integrity sha512-NLIhmicpKGfJbdXyQBz9j48PA6hq6e+SDOoXy7Ak6bq1ebGqbgG+fR1UIDAuay6OjQdot69c/URu2uLlsP8GQQ==
18261799
dependencies:
1827-
"@typescript-eslint/types" "4.0.0"
1828-
"@typescript-eslint/visitor-keys" "4.0.0"
1800+
"@typescript-eslint/scope-manager" "4.1.1"
1801+
"@typescript-eslint/types" "4.1.1"
1802+
"@typescript-eslint/typescript-estree" "4.1.1"
1803+
debug "^4.1.1"
18291804

18301805
"@typescript-eslint/scope-manager@4.0.1":
18311806
version "4.0.1"
@@ -1835,48 +1810,23 @@
18351810
"@typescript-eslint/types" "4.0.1"
18361811
"@typescript-eslint/visitor-keys" "4.0.1"
18371812

1838-
"@typescript-eslint/types@3.10.1":
1839-
version "3.10.1"
1840-
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727"
1841-
integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==
1842-
1843-
"@typescript-eslint/types@4.0.0":
1844-
version "4.0.0"
1845-
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.0.0.tgz#ec1f9fc06b8558a1d5afa6e337182d08beece7f5"
1846-
integrity sha512-bK+c2VLzznX2fUWLK6pFDv3cXGTp7nHIuBMq1B9klA+QCsqLHOOqe5TQReAQDl7DN2RfH+neweo0oC5hYlG7Rg==
1813+
"@typescript-eslint/scope-manager@4.1.1":
1814+
version "4.1.1"
1815+
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.1.1.tgz#bdb8526e82435f32b4ccd9dd4cec01af97b48850"
1816+
integrity sha512-0W8TTobCvIIQ2FsrYTffyZGAAFUyIbEHq5EYJb1m7Rpd005jrnOvKOo8ywCLhs/Bm17C+KsrUboBvBAARQVvyA==
1817+
dependencies:
1818+
"@typescript-eslint/types" "4.1.1"
1819+
"@typescript-eslint/visitor-keys" "4.1.1"
18471820

18481821
"@typescript-eslint/types@4.0.1":
18491822
version "4.0.1"
18501823
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.0.1.tgz#1cf72582f764931f085cb8230ff215980fe467b2"
18511824
integrity sha512-S+gD3fgbkZYW2rnbjugNMqibm9HpEjqZBZkTiI3PwbbNGWmAcxolWIUwZ0SKeG4Dy2ktpKKaI/6+HGYVH8Qrlg==
18521825

1853-
"@typescript-eslint/typescript-estree@3.10.1":
1854-
version "3.10.1"
1855-
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853"
1856-
integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==
1857-
dependencies:
1858-
"@typescript-eslint/types" "3.10.1"
1859-
"@typescript-eslint/visitor-keys" "3.10.1"
1860-
debug "^4.1.1"
1861-
glob "^7.1.6"
1862-
is-glob "^4.0.1"
1863-
lodash "^4.17.15"
1864-
semver "^7.3.2"
1865-
tsutils "^3.17.1"
1866-
1867-
"@typescript-eslint/typescript-estree@4.0.0":
1868-
version "4.0.0"
1869-
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.0.0.tgz#2244c63de2f2190bc5718eb0fb3fd2c437d42097"
1870-
integrity sha512-ewFMPi2pMLDNIXGMPdf8r7El2oPSZw9PEYB0j+WcpKd7AX2ARmajGa7RUHTukllWX2bj4vWX6JLE1Oih2BMokA==
1871-
dependencies:
1872-
"@typescript-eslint/types" "4.0.0"
1873-
"@typescript-eslint/visitor-keys" "4.0.0"
1874-
debug "^4.1.1"
1875-
globby "^11.0.1"
1876-
is-glob "^4.0.1"
1877-
lodash "^4.17.15"
1878-
semver "^7.3.2"
1879-
tsutils "^3.17.1"
1826+
"@typescript-eslint/types@4.1.1":
1827+
version "4.1.1"
1828+
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.1.1.tgz#57500c4a86b28cb47094c1a62f1177ea279a09cb"
1829+
integrity sha512-zrBiqOKYerMTllKcn+BP+i1b7LW/EbMMYytroXMxUTvFPn1smkCu0D7lSAx29fTUO4jnwV0ljSvYQtn2vNrNxA==
18801830

18811831
"@typescript-eslint/typescript-estree@4.0.1":
18821832
version "4.0.1"
@@ -1892,20 +1842,19 @@
18921842
semver "^7.3.2"
18931843
tsutils "^3.17.1"
18941844

1895-
"@typescript-eslint/visitor-keys@3.10.1":
1896-
version "3.10.1"
1897-
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931"
1898-
integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==
1899-
dependencies:
1900-
eslint-visitor-keys "^1.1.0"
1901-
1902-
"@typescript-eslint/visitor-keys@4.0.0":
1903-
version "4.0.0"
1904-
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.0.0.tgz#e2bbb69d98076d6a3f06abcb2048225a74362c33"
1905-
integrity sha512-sTouJbv6rjVJeTE4lpSBVYXq/u5K3gbB6LKt7ccFEZPTZB/VeQ0ssUz9q5Hx++sCqBbdF8PzrrgvEnicXAR6NQ==
1845+
"@typescript-eslint/typescript-estree@4.1.1":
1846+
version "4.1.1"
1847+
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.1.1.tgz#2015a84d71303ecdb6f46efd807ac19a51aab490"
1848+
integrity sha512-2AUg5v0liVBsqbGxBphbJ0QbGqSRVaF5qPoTPWcxop+66vMdU1h4CCvHxTC47+Qb+Pr4l2RhXDd41JNpwcQEKw==
19061849
dependencies:
1907-
"@typescript-eslint/types" "4.0.0"
1908-
eslint-visitor-keys "^2.0.0"
1850+
"@typescript-eslint/types" "4.1.1"
1851+
"@typescript-eslint/visitor-keys" "4.1.1"
1852+
debug "^4.1.1"
1853+
globby "^11.0.1"
1854+
is-glob "^4.0.1"
1855+
lodash "^4.17.15"
1856+
semver "^7.3.2"
1857+
tsutils "^3.17.1"
19091858

19101859
"@typescript-eslint/visitor-keys@4.0.1":
19111860
version "4.0.1"
@@ -1915,6 +1864,14 @@
19151864
"@typescript-eslint/types" "4.0.1"
19161865
eslint-visitor-keys "^2.0.0"
19171866

1867+
"@typescript-eslint/visitor-keys@4.1.1":
1868+
version "4.1.1"
1869+
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.1.1.tgz#bb05664bf4bea28dc120d1da94f3027d42ab0f6f"
1870+
integrity sha512-/EOOXbA2ferGLG6RmCHEQ0lTTLkOlXYDgblCmQk3tIU7mTPLm4gKhFMeeUSe+bcchTUsKeCk8xcpbop5Zr/8Rw==
1871+
dependencies:
1872+
"@typescript-eslint/types" "4.1.1"
1873+
eslint-visitor-keys "^2.0.0"
1874+
19181875
"@webassemblyjs/ast@1.9.0":
19191876
version "1.9.0"
19201877
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -3925,7 +3882,7 @@ eslint-config-prettier@^6.11.0:
39253882
dependencies:
39263883
get-stdin "^6.0.0"
39273884

3928-
eslint-plugin-jest@^24.0.0:
3885+
eslint-plugin-jest@^24.0.1:
39293886
version "24.0.1"
39303887
resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.0.1.tgz#ad5e091d47cf895e15dc115e18f98471135a334f"
39313888
integrity sha512-8tYFDqOHGr7vVfdVYspmlV4sRBTylrM4gSLgkGKlO6F+djDOEJ+tEU7I50smUs7AIvFnNZutXUQAMgI9s9N6xQ==
@@ -3972,7 +3929,7 @@ eslint-visitor-keys@^2.0.0:
39723929
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
39733930
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
39743931

3975-
eslint@>=5.0.0, eslint@^7.3.1:
3932+
eslint@>=5.0.0, eslint@^7.9.0:
39763933
version "7.9.0"
39773934
resolved "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337"
39783935
integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==
@@ -4690,7 +4647,7 @@ glob@7.1.4:
46904647
once "^1.3.0"
46914648
path-is-absolute "^1.0.0"
46924649

4693-
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
4650+
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
46944651
version "7.1.6"
46954652
resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
46964653
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==

0 commit comments

Comments
 (0)