@form8ion/git 2.2.0 → 3.0.0-beta.2

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.
package/README.md CHANGED
@@ -58,11 +58,17 @@ import {scaffold, test, lift} from '@form8ion/git';
58
58
 
59
59
  ```javascript
60
60
  const projectRoot = process.cwd();
61
+ const logger = {
62
+ info: () => undefined,
63
+ success: () => undefined,
64
+ warn: () => undefined,
65
+ error: () => undefined
66
+ };
61
67
 
62
- await scaffold({projectRoot});
68
+ await scaffold({projectRoot}, {logger});
63
69
 
64
70
  if (await test({projectRoot})) {
65
- await lift({projectRoot, results: {vcsIgnore: {file: [], directories: []}}});
71
+ await lift({projectRoot, results: {vcsIgnore: {file: [], directories: []}}}, {logger});
66
72
  }
67
73
  ```
68
74
 
@@ -105,7 +111,7 @@ $ npm test
105
111
 
106
112
  [renovate-link]: https://renovatebot.com
107
113
 
108
- [renovate-badge]: https://img.shields.io/badge/renovate-enabled-brightgreen.svg?logo=renovatebot
114
+ [renovate-badge]: https://img.shields.io/badge/renovate-enabled-brightgreen.svg?logo=renovate
109
115
 
110
116
  [PRs-link]: https://makeapullrequest.com
111
117
 
@@ -117,7 +123,7 @@ $ npm test
117
123
 
118
124
  [coverage-link]: https://codecov.io/github/form8ion/git
119
125
 
120
- [coverage-badge]: https://img.shields.io/codecov/c/github/form8ion/git?logo=codecov
126
+ [coverage-badge]: https://img.shields.io/codecov/c/github/form8ion/git/master?logo=codecov
121
127
 
122
128
  [slsa-badge]: https://slsa.dev/images/gh-badge-level2.svg
123
129
 
package/example.js CHANGED
@@ -9,9 +9,15 @@ stubbedFs();
9
9
  // #### Execute
10
10
 
11
11
  const projectRoot = process.cwd();
12
+ const logger = {
13
+ info: () => undefined,
14
+ success: () => undefined,
15
+ warn: () => undefined,
16
+ error: () => undefined
17
+ };
12
18
 
13
- await scaffold({projectRoot});
19
+ await scaffold({projectRoot}, {logger});
14
20
 
15
21
  if (await test({projectRoot})) {
16
- await lift({projectRoot, results: {vcsIgnore: {file: [], directories: []}}});
22
+ await lift({projectRoot, results: {vcsIgnore: {file: [], directories: []}}}, {logger});
17
23
  }
package/lib/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import simpleGit from 'simple-git';
2
- import { info } from '@travi/cli-messages';
3
2
  import { write, exists, read } from '@form8ion/ignore-file';
4
3
  import '@form8ion/core';
5
4
  import { promises } from 'node:fs';
@@ -8,7 +7,7 @@ function writeGitIgnore({projectRoot, ignores}) {
8
7
  return write({projectRoot, name: 'git', ignores});
9
8
  }
10
9
 
11
- function scaffoldIgnore ({projectRoot}) {
10
+ function scaffoldeIgnore({projectRoot}) {
12
11
  return writeGitIgnore({projectRoot, ignores: []});
13
12
  }
14
13
 
@@ -30,9 +29,9 @@ async function appendToIgnoreFile({projectRoot, ignores}) {
30
29
  await writeGitIgnore({projectRoot, ignores: [...existingIgnores, ...ignores]});
31
30
  }
32
31
 
33
- async function liftIgnore ({projectRoot, results: {vcsIgnore}}) {
32
+ async function liftIgnore({projectRoot, results: {vcsIgnore}}, {logger}) {
34
33
  if (vcsIgnore) {
35
- info('Updating files and directories to be ignored from version control', {level: 'secondary'});
34
+ logger.info('Updating files and directories to be ignored from version control', {level: 'secondary'});
36
35
 
37
36
  const {directories = [], files = []} = vcsIgnore;
38
37
 
@@ -42,37 +41,37 @@ async function liftIgnore ({projectRoot, results: {vcsIgnore}}) {
42
41
  return {};
43
42
  }
44
43
 
45
- async function scaffolder ({projectRoot}) {
46
- info('Initializing Git Repository');
44
+ async function scaffoldGit({projectRoot}, {logger}) {
45
+ logger.info('Initializing Git Repository');
47
46
 
48
47
  const git = simpleGit({baseDir: projectRoot});
49
48
 
50
49
  await Promise.all([
51
- scaffoldIgnore({projectRoot}),
50
+ scaffoldeIgnore({projectRoot}),
52
51
  git.init()
53
52
  ]);
54
53
 
55
54
  return {};
56
55
  }
57
56
 
58
- function tester ({projectRoot}) {
57
+ function projectVersionedWithGit({projectRoot}) {
59
58
  const git = simpleGit({baseDir: projectRoot});
60
59
 
61
60
  return git.checkIsRepo('root');
62
61
  }
63
62
 
64
- function scaffoldAttributes ({projectRoot}) {
63
+ function scaffoldAttributes({projectRoot}) {
65
64
  return promises.writeFile(`${projectRoot}/.gitattributes`, '* text=auto');
66
65
  }
67
66
 
68
- async function lifter ({projectRoot, results}) {
67
+ async function liftGit({projectRoot, results}, dependencies) {
69
68
  await Promise.all([
70
69
  scaffoldAttributes({projectRoot}),
71
- liftIgnore({projectRoot, results})
70
+ liftIgnore({projectRoot, results}, dependencies)
72
71
  ]);
73
72
 
74
73
  return {};
75
74
  }
76
75
 
77
- export { lifter as lift, scaffolder as scaffold, tester as test };
76
+ export { liftGit as lift, scaffoldGit as scaffold, projectVersionedWithGit as test };
78
77
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/ignore/writer.js","../src/ignore/scaffolder.js","../src/ignore/existence-checker.js","../src/ignore/reader.js","../src/ignore/appender.js","../src/ignore/lifter.js","../src/scaffolder.js","../src/tester.js","../src/attributes/scaffolder.js","../src/lifter.js"],"sourcesContent":["import {write} from '@form8ion/ignore-file';\n\nexport default function writeGitIgnore({projectRoot, ignores}) {\n return write({projectRoot, name: 'git', ignores});\n}\n","import write from './writer.js';\n\nexport default function ({projectRoot}) {\n return write({projectRoot, ignores: []});\n}\n","import {exists} from '@form8ion/ignore-file';\n\nexport default function gitignoreExists({projectRoot} = {}) {\n return exists({projectRoot, name: 'git'});\n}\n","import {read} from '@form8ion/ignore-file';\n\nexport default function readGitIgnore({projectRoot}) {\n return read({projectRoot, name: 'git'});\n}\n","import gitignoreExists from './existence-checker.js';\nimport readGitIgnore from './reader.js';\nimport writeGitIgnore from './writer.js';\n\nexport default async function appendToIgnoreFile({projectRoot, ignores}) {\n let existingIgnores = [];\n\n if (await gitignoreExists({projectRoot})) {\n existingIgnores = await readGitIgnore({projectRoot});\n }\n\n await writeGitIgnore({projectRoot, ignores: [...existingIgnores, ...ignores]});\n}\n","import {info} from '@travi/cli-messages';\n\nimport appendIgnores from './appender.js';\n\nexport default async function ({projectRoot, results: {vcsIgnore}}) {\n if (vcsIgnore) {\n info('Updating files and directories to be ignored from version control', {level: 'secondary'});\n\n const {directories = [], files = []} = vcsIgnore;\n\n await appendIgnores({projectRoot, ignores: [...directories, ...files]});\n }\n\n return {};\n}\n","import simpleGit from 'simple-git';\nimport {info} from '@travi/cli-messages';\n\nimport {scaffold as scaffoldIgnore} from './ignore/index.js';\n\nexport default async function ({projectRoot}) {\n info('Initializing Git Repository');\n\n const git = simpleGit({baseDir: projectRoot});\n\n await Promise.all([\n scaffoldIgnore({projectRoot}),\n git.init()\n ]);\n\n return {};\n}\n","import simpleGit from 'simple-git';\n\nexport default function ({projectRoot}) {\n const git = simpleGit({baseDir: projectRoot});\n\n return git.checkIsRepo('root');\n}\n","import {promises as fs} from 'node:fs';\n\nexport default function ({projectRoot}) {\n return fs.writeFile(`${projectRoot}/.gitattributes`, '* text=auto');\n}\n","import {scaffold as scaffoldAttributes} from './attributes/index.js';\nimport {lift as liftIgnore} from './ignore/index.js';\n\nexport default async function ({projectRoot, results}) {\n await Promise.all([\n scaffoldAttributes({projectRoot}),\n liftIgnore({projectRoot, results})\n ]);\n\n return {};\n}\n"],"names":["write","appendIgnores","fs"],"mappings":";;;;;;AAEe,SAAS,cAAc,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAC/D,EAAE,OAAO,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACnD;;ACFe,uBAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;AACxC,EAAE,OAAOA,cAAK,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1C;;ACFe,SAAS,eAAe,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE;AAC5D,EAAE,OAAO,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C;;ACFe,SAAS,aAAa,CAAC,CAAC,WAAW,CAAC,EAAE;AACrD,EAAE,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACzC;;ACAe,eAAe,kBAAkB,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACzE,EAAE,IAAI,eAAe,GAAG,EAAE;;AAE1B,EAAE,IAAI,MAAM,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AAC5C,IAAI,eAAe,GAAG,MAAM,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,EAAE;;AAEF,EAAE,MAAM,cAAc,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAChF;;ACRe,yBAAc,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;AACpE,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,IAAI,CAAC,mEAAmE,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;;AAEnG,IAAI,MAAM,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,SAAS;;AAEpD,IAAI,MAAMC,kBAAa,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC3E,EAAE;;AAEF,EAAE,OAAO,EAAE;AACX;;ACTe,yBAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,IAAI,CAAC,6BAA6B,CAAC;;AAErC,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;AAE/C,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;AACpB,IAAI,cAAc,CAAC,CAAC,WAAW,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,IAAI;AACZ,GAAG,CAAC;;AAEJ,EAAE,OAAO,EAAE;AACX;;ACde,eAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;AACxC,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;AAE/C,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;AAChC;;ACJe,2BAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;AACxC,EAAE,OAAOC,QAAE,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;AACrE;;ACDe,qBAAc,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACvD,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;AACpB,IAAI,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC;AACrC,IAAI,UAAU,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;AACrC,GAAG,CAAC;;AAEJ,EAAE,OAAO,EAAE;AACX;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/ignore/writer.js","../src/ignore/scaffolder.js","../src/ignore/existence-checker.js","../src/ignore/reader.js","../src/ignore/appender.js","../src/ignore/lifter.js","../src/scaffolder.js","../src/tester.js","../src/attributes/scaffolder.js","../src/lifter.js"],"sourcesContent":["import {write} from '@form8ion/ignore-file';\n\nexport default function writeGitIgnore({projectRoot, ignores}) {\n return write({projectRoot, name: 'git', ignores});\n}\n","import write from './writer.js';\n\nexport default function scaffoldeIgnore({projectRoot}) {\n return write({projectRoot, ignores: []});\n}\n","import {exists} from '@form8ion/ignore-file';\n\nexport default function gitignoreExists({projectRoot} = {}) {\n return exists({projectRoot, name: 'git'});\n}\n","import {read} from '@form8ion/ignore-file';\n\nexport default function readGitIgnore({projectRoot}) {\n return read({projectRoot, name: 'git'});\n}\n","import gitignoreExists from './existence-checker.js';\nimport readGitIgnore from './reader.js';\nimport writeGitIgnore from './writer.js';\n\nexport default async function appendToIgnoreFile({projectRoot, ignores}) {\n let existingIgnores = [];\n\n if (await gitignoreExists({projectRoot})) {\n existingIgnores = await readGitIgnore({projectRoot});\n }\n\n await writeGitIgnore({projectRoot, ignores: [...existingIgnores, ...ignores]});\n}\n","import appendIgnores from './appender.js';\n\nexport default async function liftIgnore({projectRoot, results: {vcsIgnore}}, {logger}) {\n if (vcsIgnore) {\n logger.info('Updating files and directories to be ignored from version control', {level: 'secondary'});\n\n const {directories = [], files = []} = vcsIgnore;\n\n await appendIgnores({projectRoot, ignores: [...directories, ...files]});\n }\n\n return {};\n}\n","import simpleGit from 'simple-git';\n\nimport {scaffold as scaffoldIgnore} from './ignore/index.js';\n\nexport default async function scaffoldGit({projectRoot}, {logger}) {\n logger.info('Initializing Git Repository');\n\n const git = simpleGit({baseDir: projectRoot});\n\n await Promise.all([\n scaffoldIgnore({projectRoot}),\n git.init()\n ]);\n\n return {};\n}\n","import simpleGit from 'simple-git';\n\nexport default function projectVersionedWithGit({projectRoot}) {\n const git = simpleGit({baseDir: projectRoot});\n\n return git.checkIsRepo('root');\n}\n","import {promises as fs} from 'node:fs';\n\nexport default function scaffoldAttributes({projectRoot}) {\n return fs.writeFile(`${projectRoot}/.gitattributes`, '* text=auto');\n}\n","import {scaffold as scaffoldAttributes} from './attributes/index.js';\nimport {lift as liftIgnore} from './ignore/index.js';\n\nexport default async function liftGit({projectRoot, results}, dependencies) {\n await Promise.all([\n scaffoldAttributes({projectRoot}),\n liftIgnore({projectRoot, results}, dependencies)\n ]);\n\n return {};\n}\n"],"names":["write","appendIgnores","scaffoldIgnore","fs"],"mappings":"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"}
package/package.json CHANGED
@@ -2,47 +2,51 @@
2
2
  "name": "@form8ion/git",
3
3
  "description": "form8ion plugin for managing projects versioned with git",
4
4
  "license": "MIT",
5
- "version": "2.2.0",
5
+ "version": "3.0.0-beta.2",
6
6
  "type": "module",
7
7
  "engines": {
8
- "node": "^18.19.0 || ^20.9.0 || >=22.11.0"
8
+ "node": "^22.22.2 || >=24.15"
9
9
  },
10
10
  "author": "Matt Travi <npm@travi.org> (https://matt.travi.org)",
11
- "repository": "form8ion/git",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/form8ion/git.git"
14
+ },
12
15
  "bugs": "https://github.com/form8ion/git/issues",
13
- "homepage": "https://npm.im/@form8ion/git",
16
+ "homepage": "https://www.npmjs.com/package/@form8ion/git",
14
17
  "runkitExampleFilename": "./example.js",
15
18
  "exports": "./lib/index.js",
16
19
  "main": "./lib/index.js",
17
20
  "sideEffects": false,
18
21
  "scripts": {
19
- "build:js": "rollup --config",
20
- "watch": "run-s 'build:js -- --watch'",
21
- "clean": "rimraf ./lib",
22
- "prebuild": "run-s clean",
23
- "build": "npm-run-all --print-label --parallel build:*",
24
- "prepack": "run-s build",
25
- "pregenerate:md": "run-s build",
26
- "test:unit": "cross-env NODE_ENV=test c8 run-s test:unit:base",
27
- "test:unit:base": "DEBUG=any vitest run",
22
+ "pretest": "run-s build",
23
+ "test": "npm-run-all --print-label --parallel lint:* --parallel test:*",
24
+ "lint:engines": "ls-engines",
25
+ "lint:gherkin": "gplint --config .gplintrc.json",
26
+ "lint:js": "eslint . --cache",
27
+ "lint:js:fix": "run-s 'lint:js -- --fix'",
28
28
  "lint:lockfile": "lockfile-lint",
29
- "prepare": "husky",
30
29
  "lint:md": "remark . --frail",
31
- "generate:md": "remark . --output",
32
30
  "lint:peer": "npm ls >/dev/null",
33
- "pretest:integration:base": "run-s build",
31
+ "lint:publish": "publint --strict",
32
+ "test:unit": "run-s 'test:unit:base -- --coverage'",
33
+ "test:unit:base": "NODE_ENV=test DEBUG=any vitest run src/",
34
34
  "test:integration": "run-s 'test:integration:base -- --profile noWip'",
35
+ "pretest:integration:base": "run-s build",
35
36
  "test:integration:base": "NODE_OPTIONS=--enable-source-maps DEBUG=any cucumber-js test/integration",
36
37
  "test:integration:debug": "DEBUG=test run-s test:integration",
38
+ "test:integration:focus": "run-s 'test:integration:base -- --profile focus'",
37
39
  "test:integration:wip": "run-s 'test:integration:base -- --profile wip'",
38
40
  "test:integration:wip:debug": "DEBUG=test run-s 'test:integration:wip'",
39
- "test:integration:focus": "run-s 'test:integration:base -- --profile focus'",
40
- "lint:gherkin": "gherkin-lint --config=.gherkin-lintrc.json",
41
- "lint:js": "eslint . --cache",
42
- "lint:js:fix": "run-s 'lint:js -- --fix'",
43
- "lint:publish": "publint --strict",
44
- "test": "npm-run-all --print-label build --parallel lint:* --parallel test:*",
45
- "lint:engines": "ls-engines"
41
+ "prebuild": "run-s clean",
42
+ "build": "npm-run-all --print-label --parallel build:*",
43
+ "build:js": "rollup --config",
44
+ "clean": "rimraf ./lib",
45
+ "pregenerate:md": "run-s build",
46
+ "generate:md": "remark . --output",
47
+ "prepack": "run-s build",
48
+ "prepare": "husky",
49
+ "watch": "run-s 'build:js -- --watch'"
46
50
  },
47
51
  "files": [
48
52
  "example.js",
@@ -55,23 +59,22 @@
55
59
  },
56
60
  "packageManager": "npm@11.12.1+sha512.cdca14b85d647b3192028d02aadbe82d75f79a446aceea9874be98e6d768f20ebd3555770a48d0e9906106007877bbc690f715e9372f2e2dc644a3c3157fb14c",
57
61
  "dependencies": {
58
- "@form8ion/core": "^4.3.0",
62
+ "@form8ion/core": "^5.0.0-beta.15",
59
63
  "@form8ion/ignore-file": "^1.0.0",
60
- "@travi/cli-messages": "^1.1.1",
61
64
  "simple-git": "^3.25.0"
62
65
  },
63
66
  "devDependencies": {
64
67
  "@cucumber/cucumber": "11.3.0",
65
68
  "@form8ion/commitlint-config": "2.0.11",
66
- "@form8ion/eslint-config": "7.0.14",
69
+ "@form8ion/eslint-config": "7.1.0-beta.1",
67
70
  "@form8ion/eslint-config-cucumber": "1.4.1",
68
71
  "@form8ion/remark-lint-preset": "6.0.7",
69
72
  "@travi/any": "3.3.0",
70
- "c8": "11.0.0",
73
+ "@vitest/coverage-v8": "4.1.4",
71
74
  "chai": "6.2.2",
72
- "cross-env": "10.1.0",
73
75
  "cz-conventional-changelog": "3.3.0",
74
- "gherkin-lint": "4.2.4",
76
+ "debug": "4.4.3",
77
+ "gplint": "2.5.2",
75
78
  "husky": "9.1.7",
76
79
  "lockfile-lint": "5.0.0",
77
80
  "ls-engines": "0.9.4",
@@ -1,5 +1,5 @@
1
1
  import {promises as fs} from 'node:fs';
2
2
 
3
- export default function ({projectRoot}) {
3
+ export default function scaffoldAttributes({projectRoot}) {
4
4
  return fs.writeFile(`${projectRoot}/.gitattributes`, '* text=auto');
5
5
  }
@@ -1,10 +1,8 @@
1
- import {info} from '@travi/cli-messages';
2
-
3
1
  import appendIgnores from './appender.js';
4
2
 
5
- export default async function ({projectRoot, results: {vcsIgnore}}) {
3
+ export default async function liftIgnore({projectRoot, results: {vcsIgnore}}, {logger}) {
6
4
  if (vcsIgnore) {
7
- info('Updating files and directories to be ignored from version control', {level: 'secondary'});
5
+ logger.info('Updating files and directories to be ignored from version control', {level: 'secondary'});
8
6
 
9
7
  const {directories = [], files = []} = vcsIgnore;
10
8
 
@@ -10,31 +10,35 @@ describe('gitignore lifter', () => {
10
10
  const projectRoot = any.string();
11
11
  const ignoredDirectories = any.listOf(any.word);
12
12
  const ignoredFiles = any.listOf(any.word);
13
+ const logger = {info: () => undefined};
13
14
 
14
15
  it('should append the provided ignores to the gitignore file', async () => {
15
- expect(
16
- await liftGitIgnore({projectRoot, results: {vcsIgnore: {directories: ignoredDirectories, files: ignoredFiles}}})
17
- ).toEqual({});
16
+ expect(await liftGitIgnore(
17
+ {projectRoot, results: {vcsIgnore: {directories: ignoredDirectories, files: ignoredFiles}}},
18
+ {logger}
19
+ )).toEqual({});
18
20
 
19
21
  expect(appendToIgnores).toHaveBeenCalledWith({projectRoot, ignores: [...ignoredDirectories, ...ignoredFiles]});
20
22
  });
21
23
 
22
24
  it('should append provided directories to ignore', async () => {
23
- expect(await liftGitIgnore({projectRoot, results: {vcsIgnore: {directories: ignoredDirectories}}}))
24
- .toEqual({});
25
+ expect(await liftGitIgnore(
26
+ {projectRoot, results: {vcsIgnore: {directories: ignoredDirectories}}},
27
+ {logger}
28
+ )).toEqual({});
25
29
 
26
30
  expect(appendToIgnores).toHaveBeenCalledWith({projectRoot, ignores: ignoredDirectories});
27
31
  });
28
32
 
29
33
  it('should append provided directories to ignore', async () => {
30
- expect(await liftGitIgnore({projectRoot, results: {vcsIgnore: {files: ignoredFiles}}}))
34
+ expect(await liftGitIgnore({projectRoot, results: {vcsIgnore: {files: ignoredFiles}}}, {logger}))
31
35
  .toEqual({});
32
36
 
33
37
  expect(appendToIgnores).toHaveBeenCalledWith({projectRoot, ignores: ignoredFiles});
34
38
  });
35
39
 
36
40
  it('should not update the ignore file if no additional ignores are provided', async () => {
37
- expect(await liftGitIgnore({projectRoot, results: {}})).toEqual({});
41
+ expect(await liftGitIgnore({projectRoot, results: {}}, {logger})).toEqual({});
38
42
 
39
43
  expect(appendToIgnores).not.toHaveBeenCalledWith({projectRoot});
40
44
  });
@@ -1,5 +1,5 @@
1
1
  import write from './writer.js';
2
2
 
3
- export default function ({projectRoot}) {
3
+ export default function scaffoldeIgnore({projectRoot}) {
4
4
  return write({projectRoot, ignores: []});
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import {fileExists} from '@form8ion/core';
2
2
 
3
- export default function ({projectRoot}) {
3
+ export default function ignoreExists({projectRoot}) {
4
4
  return fileExists(`${projectRoot}/.gitignore`);
5
5
  }
package/src/lifter.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import {scaffold as scaffoldAttributes} from './attributes/index.js';
2
2
  import {lift as liftIgnore} from './ignore/index.js';
3
3
 
4
- export default async function ({projectRoot, results}) {
4
+ export default async function liftGit({projectRoot, results}, dependencies) {
5
5
  await Promise.all([
6
6
  scaffoldAttributes({projectRoot}),
7
- liftIgnore({projectRoot, results})
7
+ liftIgnore({projectRoot, results}, dependencies)
8
8
  ]);
9
9
 
10
10
  return {};
@@ -12,11 +12,12 @@ describe('git lifter', () => {
12
12
  it('should define the attributes file', async () => {
13
13
  const projectRoot = any.string();
14
14
  const results = any.simpleObject();
15
+ const dependencies = any.simpleObject();
15
16
 
16
- const result = await lift({projectRoot, results});
17
+ const result = await lift({projectRoot, results}, dependencies);
17
18
 
18
19
  expect(result).toEqual({});
19
20
  expect(scaffoldAttributes).toHaveBeenCalledWith({projectRoot});
20
- expect(liftIgnore).toHaveBeenCalledWith({projectRoot, results});
21
+ expect(liftIgnore).toHaveBeenCalledWith({projectRoot, results}, dependencies);
21
22
  });
22
23
  });
package/src/scaffolder.js CHANGED
@@ -1,10 +1,9 @@
1
1
  import simpleGit from 'simple-git';
2
- import {info} from '@travi/cli-messages';
3
2
 
4
3
  import {scaffold as scaffoldIgnore} from './ignore/index.js';
5
4
 
6
- export default async function ({projectRoot}) {
7
- info('Initializing Git Repository');
5
+ export default async function scaffoldGit({projectRoot}, {logger}) {
6
+ logger.info('Initializing Git Repository');
8
7
 
9
8
  const git = simpleGit({baseDir: projectRoot});
10
9
 
@@ -16,9 +16,10 @@ describe('scaffold', () => {
16
16
  it('should initialize the repo', async () => {
17
17
  const projectRoot = any.string();
18
18
  const init = vi.fn();
19
+ const logger = {info: () => undefined};
19
20
  when(simpleGit.simpleGit).calledWith({baseDir: projectRoot}).thenReturn({init});
20
21
 
21
- const results = await scaffold({projectRoot});
22
+ const results = await scaffold({projectRoot}, {logger});
22
23
 
23
24
  expect(results).toEqual({});
24
25
  expect(init).toHaveBeenCalled();
package/src/tester.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import simpleGit from 'simple-git';
2
2
 
3
- export default function ({projectRoot}) {
3
+ export default function projectVersionedWithGit({projectRoot}) {
4
4
  const git = simpleGit({baseDir: projectRoot});
5
5
 
6
6
  return git.checkIsRepo('root');