@form8ion/codecov 1.3.0 → 1.7.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.
package/README.md CHANGED
@@ -11,20 +11,43 @@ code coverage service plugin for form8ion
11
11
 
12
12
  ## Table of Contents
13
13
 
14
+ * [Features](#features)
15
+ * [Scaffold](#scaffold)
16
+ * [Lift](#lift)
14
17
  * [Usage](#usage)
15
18
  * [Installation](#installation)
16
19
  * [Example](#example)
17
20
  * [Import](#import)
18
21
  * [Execute](#execute)
19
22
  * [API](#api)
20
- * [scaffold](#scaffold)
23
+ * [scaffold](#scaffold-1)
21
24
  * [`vcs` __object__ (_required_)](#vcs-object-required)
22
25
  * [`visibility` __string__ (_required_)](#visibility-string-required)
23
26
  * [`apiAccessToken` __string__ (_optional_)](#apiaccesstoken-string-optional)
27
+ * [lift](#lift-1)
28
+ * [`projectRoot` __string__ (_required_)](#projectroot-string-required)
29
+ * [`packageManager` __string__ (_required_)](#packagemanager-string-required)
24
30
  * [Contributing](#contributing)
25
31
  * [Dependencies](#dependencies)
26
32
  * [Verification](#verification)
27
33
 
34
+ ## Features
35
+
36
+ ### Scaffold
37
+
38
+ * Define a coverage status badge to communicate current coverage details
39
+ * Link from the status badge to further details on the [Codecov](https://codecov.io/)
40
+ site
41
+ * Define a coverage status badge for private projects when an [`apiAccessToken` __string__ (_optional_)](#apiaccesstoken-string-optional)
42
+ is provided
43
+
44
+ ### Lift
45
+
46
+ * Migrate from the [legacy node uploader](https://github.com/codecov/codecov-node)
47
+ to the [modern uploader](https://docs.codecov.com/docs/codecov-uploader)
48
+ * Currently supports the following CI Providers:
49
+ * [GitHub Action](https://github.com/marketplace/actions/codecov)
50
+
28
51
  ## Usage
29
52
 
30
53
  <!--consumer-badges start -->
@@ -46,7 +69,8 @@ $ npm install @form8ion/codecov --save
46
69
  #### Import
47
70
 
48
71
  ```javascript
49
- import {scaffold} from './lib/index.cjs';
72
+ import {packageManagers} from '@form8ion/javascript-core';
73
+ import {scaffold, lift} from '@form8ion/codecov';
50
74
  ```
51
75
 
52
76
  #### Execute
@@ -71,6 +95,8 @@ import {scaffold} from './lib/index.cjs';
71
95
  },
72
96
  apiAccessToken: 'XXXXXX'
73
97
  });
98
+
99
+ await lift({projectRoot: process.cwd(), packageManager: packageManagers.NPM});
74
100
  })();
75
101
  ```
76
102
 
@@ -108,6 +134,22 @@ Since the [Codecov API](https://docs.codecov.com/reference) appears to only
108
134
  support GitHub at the time of this implementation, GitHub is the only VCS host
109
135
  supported by this scaffolder at this time.
110
136
 
137
+ #### lift
138
+
139
+ Migrates [Codecov](https://codecov.io/) details from legacy conventions to
140
+ modern conventions.
141
+
142
+ Takes a single options object as an argument, containing:
143
+
144
+ ##### `projectRoot` __string__ (_required_)
145
+
146
+ path to the root of the project
147
+
148
+ ##### `packageManager` __string__ (_required_)
149
+
150
+ chosen [package manager](https://github.com/form8ion/javascript-core#packagemanagers)
151
+ to be used for the project
152
+
111
153
  ## Contributing
112
154
 
113
155
  <!--contribution-badges start -->
package/example.js CHANGED
@@ -3,10 +3,11 @@
3
3
  import stubbedFs from 'mock-fs';
4
4
  import nock from 'nock';
5
5
  import {StatusCodes} from 'http-status-codes';
6
- import {scaffold} from './lib/index.cjs';
6
+ import {packageManagers} from '@form8ion/javascript-core';
7
+ import {scaffold, lift} from './lib/index.cjs';
7
8
 
8
9
  // remark-usage-ignore-next 5
9
- stubbedFs();
10
+ stubbedFs({'package.json': JSON.stringify({scripts: {}})});
10
11
  nock.disableNetConnect();
11
12
  nock('https://codecov.io/')
12
13
  .get('/api/gh/foo/bar')
@@ -33,4 +34,6 @@ nock('https://codecov.io/')
33
34
  },
34
35
  apiAccessToken: 'XXXXXX'
35
36
  });
37
+
38
+ await lift({projectRoot: process.cwd(), packageManager: packageManagers.NPM});
36
39
  })();
package/lib/index.cjs.js CHANGED
@@ -4,10 +4,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var got = require('got');
6
6
  var fs = require('fs');
7
+ var execa = require('execa');
8
+ var jsYaml = require('js-yaml');
9
+ var core = require('@form8ion/core');
7
10
 
8
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
12
 
10
13
  var got__default = /*#__PURE__*/_interopDefaultLegacy(got);
14
+ var execa__default = /*#__PURE__*/_interopDefaultLegacy(execa);
11
15
 
12
16
  function ownKeys(object, enumerableOnly) {
13
17
  var keys = Object.keys(object);
@@ -103,13 +107,58 @@ function scaffold$2() {
103
107
  };
104
108
  }
105
109
 
110
+ function getPathToWorkflowFile(projectRoot) {
111
+ return `${projectRoot}/.github/workflows/node-ci.yml`;
112
+ }
113
+
114
+ function test({
115
+ projectRoot
116
+ }) {
117
+ return core.fileExists(getPathToWorkflowFile(projectRoot));
118
+ }
119
+ async function lift$1({
120
+ projectRoot
121
+ }) {
122
+ const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
123
+ const workflowDetails = jsYaml.load(await fs.promises.readFile(pathToWorkflowFile, 'utf-8'));
124
+ const {
125
+ jobs: {
126
+ verify: {
127
+ steps
128
+ }
129
+ }
130
+ } = workflowDetails;
131
+
132
+ if (!steps.find(step => {
133
+ var _step$uses;
134
+
135
+ return (_step$uses = step.uses) === null || _step$uses === void 0 ? void 0 : _step$uses.startsWith('codecov/codecov-action');
136
+ })) {
137
+ const stepsWithLegacyReportingRemoved = steps.filter(({
138
+ run
139
+ }) => 'npm run coverage:report' !== run);
140
+ await fs.promises.writeFile(pathToWorkflowFile, jsYaml.dump(_objectSpread2(_objectSpread2({}, workflowDetails), {}, {
141
+ jobs: _objectSpread2(_objectSpread2({}, workflowDetails.jobs), {}, {
142
+ verify: _objectSpread2(_objectSpread2({}, workflowDetails.jobs.verify), {}, {
143
+ steps: [...stepsWithLegacyReportingRemoved, {
144
+ uses: 'codecov/codecov-action@v2'
145
+ }]
146
+ })
147
+ })
148
+ })));
149
+ }
150
+ }
151
+
106
152
  const _excluded = ["scripts"],
107
153
  _excluded2 = ["coverage:report"];
108
154
  async function liftReporting ({
109
- projectRoot
155
+ projectRoot,
156
+ packageManager
110
157
  }) {
111
158
  const pathToPackageJson = `${projectRoot}/package.json`;
112
- const existingPackageContents = await fs.promises.readFile(pathToPackageJson, 'utf-8');
159
+ const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([test({
160
+ projectRoot
161
+ }), fs.promises.readFile(pathToPackageJson, 'utf-8')]);
113
162
 
114
163
  const _JSON$parse = JSON.parse(existingPackageContents),
115
164
  {
@@ -119,11 +168,24 @@ async function liftReporting ({
119
168
 
120
169
  const otherScripts = _objectWithoutProperties(scripts, _excluded2);
121
170
 
171
+ if (ciProviderCanBeLifted) await lift$1({
172
+ projectRoot
173
+ });
174
+
122
175
  if (scripts['coverage:report']) {
123
176
  await fs.promises.writeFile(pathToPackageJson, JSON.stringify(_objectSpread2(_objectSpread2({}, otherTopLevelProperties), {}, {
124
177
  scripts: otherScripts
125
178
  })));
179
+ await execa__default["default"](packageManager, ['remove', 'codecov']);
180
+ return _objectSpread2({}, !ciProviderCanBeLifted && {
181
+ nextSteps: [{
182
+ summary: 'Configure modern reporting to Codecov on your CI service',
183
+ description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately' + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
184
+ }]
185
+ });
126
186
  }
187
+
188
+ return {};
127
189
  }
128
190
 
129
191
  async function fetchRepositoryDetails ({
@@ -179,11 +241,13 @@ async function scaffold({
179
241
  }));
180
242
  }
181
243
 
182
- async function lift({
183
- projectRoot
244
+ function lift({
245
+ projectRoot,
246
+ packageManager
184
247
  }) {
185
- await liftReporting({
186
- projectRoot
248
+ return liftReporting({
249
+ projectRoot,
250
+ packageManager
187
251
  });
188
252
  }
189
253
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/predicates.js","../src/reporter/scaffolder.js","../src/reporter/lifter.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/scaffolder.js","../src/lifter.js"],"sourcesContent":["export function coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken}) {\n return !!('Public' === visibility || (apiAccessToken && 'github' === vcs.host));\n}\n","export function scaffold() {\n return {\n devDependencies: ['codecov'],\n scripts: {'coverage:report': 'c8 report --reporter=text-lcov > coverage.lcov && codecov'}\n };\n}\n","import {promises as fs} from 'fs';\n\nexport default async function ({projectRoot}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const existingPackageContents = await fs.readFile(pathToPackageJson, 'utf-8');\n const {scripts, ...otherTopLevelProperties} = JSON.parse(existingPackageContents);\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (scripts['coverage:report']) {\n await fs.writeFile(pathToPackageJson, JSON.stringify({...otherTopLevelProperties, scripts: otherScripts}));\n }\n}\n","import got from '../../thirdparty-wrappers/got';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","import {coverageShouldBeReportedToCodecov} from './predicates';\nimport {scaffold as scaffoldReporter} from './reporter';\nimport {scaffold as scaffoldBadge} from './badge';\n\nexport async function scaffold({vcs, visibility, apiAccessToken}) {\n if (!coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken})) return {};\n\n return {\n ...scaffoldReporter(),\n ...await scaffoldBadge({vcs, apiAccessToken})\n };\n}\n","import {lift as liftReporting} from './reporter';\n\nexport async function lift({projectRoot}) {\n await liftReporting({projectRoot});\n}\n"],"names":["coverageShouldBeReportedToCodecov","vcs","visibility","apiAccessToken","host","scaffold","devDependencies","scripts","projectRoot","pathToPackageJson","existingPackageContents","fs","readFile","JSON","parse","otherTopLevelProperties","otherScripts","writeFile","stringify","body","repo","got","owner","name","headers","Authorization","responseType","includes","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","scaffoldReporter","scaffoldBadge","lift","liftReporting"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/predicates.js","../src/reporter/scaffolder.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/lifter.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/scaffolder.js","../src/lifter.js"],"sourcesContent":["export function coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken}) {\n return !!('Public' === visibility || (apiAccessToken && 'github' === vcs.host));\n}\n","export function scaffold() {\n return {\n devDependencies: ['codecov'],\n scripts: {'coverage:report': 'c8 report --reporter=text-lcov > coverage.lcov && codecov'}\n };\n}\n","import {promises as fs} from 'fs';\nimport {dump, load} from 'js-yaml';\nimport {fileExists} from '@form8ion/core';\n\nfunction getPathToWorkflowFile(projectRoot) {\n return `${projectRoot}/.github/workflows/node-ci.yml`;\n}\n\nexport function test({projectRoot}) {\n return fileExists(getPathToWorkflowFile(projectRoot));\n}\n\nexport async function lift({projectRoot}) {\n const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);\n\n const workflowDetails = load(await fs.readFile(pathToWorkflowFile, 'utf-8'));\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await fs.writeFile(\n pathToWorkflowFile,\n dump({\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v2'}]\n }\n }\n })\n );\n }\n}\n","import {promises as fs} from 'fs';\n\nimport execa from '../../thirdparty-wrappers/execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers';\n\nexport default async function ({projectRoot, packageManager}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([\n ciProviderIsLiftable({projectRoot}),\n fs.readFile(pathToPackageJson, 'utf-8')\n ]);\n const {scripts, ...otherTopLevelProperties} = JSON.parse(existingPackageContents);\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n await fs.writeFile(pathToPackageJson, JSON.stringify({...otherTopLevelProperties, scripts: otherScripts}));\n\n await execa(packageManager, ['remove', 'codecov']);\n\n return {\n ...!ciProviderCanBeLifted && {\n nextSteps: [{\n summary: 'Configure modern reporting to Codecov on your CI service',\n description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'\n + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'\n }]\n }\n };\n }\n\n return {};\n}\n","import got from '../../thirdparty-wrappers/got';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","import {coverageShouldBeReportedToCodecov} from './predicates';\nimport {scaffold as scaffoldReporter} from './reporter';\nimport {scaffold as scaffoldBadge} from './badge';\n\nexport async function scaffold({vcs, visibility, apiAccessToken}) {\n if (!coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken})) return {};\n\n return {\n ...scaffoldReporter(),\n ...await scaffoldBadge({vcs, apiAccessToken})\n };\n}\n","import {lift as liftReporting} from './reporter';\n\nexport function lift({projectRoot, packageManager}) {\n return liftReporting({projectRoot, packageManager});\n}\n"],"names":["coverageShouldBeReportedToCodecov","vcs","visibility","apiAccessToken","host","scaffold","devDependencies","scripts","getPathToWorkflowFile","projectRoot","test","fileExists","lift","pathToWorkflowFile","workflowDetails","load","fs","readFile","jobs","verify","steps","find","step","uses","startsWith","stepsWithLegacyReportingRemoved","filter","run","writeFile","dump","packageManager","pathToPackageJson","ciProviderCanBeLifted","existingPackageContents","Promise","all","ciProviderIsLiftable","JSON","parse","otherTopLevelProperties","otherScripts","liftCiProvider","stringify","execa","nextSteps","summary","description","body","repo","got","owner","name","headers","Authorization","responseType","includes","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","scaffoldReporter","scaffoldBadge","liftReporting"],"mappings":"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"}
package/lib/index.es.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import got from 'got';
2
2
  import { promises } from 'fs';
3
+ import execa from 'execa';
4
+ import { load, dump } from 'js-yaml';
5
+ import { fileExists } from '@form8ion/core';
3
6
 
4
7
  function ownKeys(object, enumerableOnly) {
5
8
  var keys = Object.keys(object);
@@ -95,13 +98,58 @@ function scaffold$2() {
95
98
  };
96
99
  }
97
100
 
101
+ function getPathToWorkflowFile(projectRoot) {
102
+ return `${projectRoot}/.github/workflows/node-ci.yml`;
103
+ }
104
+
105
+ function test({
106
+ projectRoot
107
+ }) {
108
+ return fileExists(getPathToWorkflowFile(projectRoot));
109
+ }
110
+ async function lift$1({
111
+ projectRoot
112
+ }) {
113
+ const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
114
+ const workflowDetails = load(await promises.readFile(pathToWorkflowFile, 'utf-8'));
115
+ const {
116
+ jobs: {
117
+ verify: {
118
+ steps
119
+ }
120
+ }
121
+ } = workflowDetails;
122
+
123
+ if (!steps.find(step => {
124
+ var _step$uses;
125
+
126
+ return (_step$uses = step.uses) === null || _step$uses === void 0 ? void 0 : _step$uses.startsWith('codecov/codecov-action');
127
+ })) {
128
+ const stepsWithLegacyReportingRemoved = steps.filter(({
129
+ run
130
+ }) => 'npm run coverage:report' !== run);
131
+ await promises.writeFile(pathToWorkflowFile, dump(_objectSpread2(_objectSpread2({}, workflowDetails), {}, {
132
+ jobs: _objectSpread2(_objectSpread2({}, workflowDetails.jobs), {}, {
133
+ verify: _objectSpread2(_objectSpread2({}, workflowDetails.jobs.verify), {}, {
134
+ steps: [...stepsWithLegacyReportingRemoved, {
135
+ uses: 'codecov/codecov-action@v2'
136
+ }]
137
+ })
138
+ })
139
+ })));
140
+ }
141
+ }
142
+
98
143
  const _excluded = ["scripts"],
99
144
  _excluded2 = ["coverage:report"];
100
145
  async function liftReporting ({
101
- projectRoot
146
+ projectRoot,
147
+ packageManager
102
148
  }) {
103
149
  const pathToPackageJson = `${projectRoot}/package.json`;
104
- const existingPackageContents = await promises.readFile(pathToPackageJson, 'utf-8');
150
+ const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([test({
151
+ projectRoot
152
+ }), promises.readFile(pathToPackageJson, 'utf-8')]);
105
153
 
106
154
  const _JSON$parse = JSON.parse(existingPackageContents),
107
155
  {
@@ -111,11 +159,24 @@ async function liftReporting ({
111
159
 
112
160
  const otherScripts = _objectWithoutProperties(scripts, _excluded2);
113
161
 
162
+ if (ciProviderCanBeLifted) await lift$1({
163
+ projectRoot
164
+ });
165
+
114
166
  if (scripts['coverage:report']) {
115
167
  await promises.writeFile(pathToPackageJson, JSON.stringify(_objectSpread2(_objectSpread2({}, otherTopLevelProperties), {}, {
116
168
  scripts: otherScripts
117
169
  })));
170
+ await execa(packageManager, ['remove', 'codecov']);
171
+ return _objectSpread2({}, !ciProviderCanBeLifted && {
172
+ nextSteps: [{
173
+ summary: 'Configure modern reporting to Codecov on your CI service',
174
+ description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately' + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'
175
+ }]
176
+ });
118
177
  }
178
+
179
+ return {};
119
180
  }
120
181
 
121
182
  async function fetchRepositoryDetails ({
@@ -171,11 +232,13 @@ async function scaffold({
171
232
  }));
172
233
  }
173
234
 
174
- async function lift({
175
- projectRoot
235
+ function lift({
236
+ projectRoot,
237
+ packageManager
176
238
  }) {
177
- await liftReporting({
178
- projectRoot
239
+ return liftReporting({
240
+ projectRoot,
241
+ packageManager
179
242
  });
180
243
  }
181
244
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/predicates.js","../src/reporter/scaffolder.js","../src/reporter/lifter.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/scaffolder.js","../src/lifter.js"],"sourcesContent":["export function coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken}) {\n return !!('Public' === visibility || (apiAccessToken && 'github' === vcs.host));\n}\n","export function scaffold() {\n return {\n devDependencies: ['codecov'],\n scripts: {'coverage:report': 'c8 report --reporter=text-lcov > coverage.lcov && codecov'}\n };\n}\n","import {promises as fs} from 'fs';\n\nexport default async function ({projectRoot}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const existingPackageContents = await fs.readFile(pathToPackageJson, 'utf-8');\n const {scripts, ...otherTopLevelProperties} = JSON.parse(existingPackageContents);\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (scripts['coverage:report']) {\n await fs.writeFile(pathToPackageJson, JSON.stringify({...otherTopLevelProperties, scripts: otherScripts}));\n }\n}\n","import got from '../../thirdparty-wrappers/got';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","import {coverageShouldBeReportedToCodecov} from './predicates';\nimport {scaffold as scaffoldReporter} from './reporter';\nimport {scaffold as scaffoldBadge} from './badge';\n\nexport async function scaffold({vcs, visibility, apiAccessToken}) {\n if (!coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken})) return {};\n\n return {\n ...scaffoldReporter(),\n ...await scaffoldBadge({vcs, apiAccessToken})\n };\n}\n","import {lift as liftReporting} from './reporter';\n\nexport async function lift({projectRoot}) {\n await liftReporting({projectRoot});\n}\n"],"names":["coverageShouldBeReportedToCodecov","vcs","visibility","apiAccessToken","host","scaffold","devDependencies","scripts","projectRoot","pathToPackageJson","existingPackageContents","fs","readFile","JSON","parse","otherTopLevelProperties","otherScripts","writeFile","stringify","body","repo","got","owner","name","headers","Authorization","responseType","includes","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","scaffoldReporter","scaffoldBadge","lift","liftReporting"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/predicates.js","../src/reporter/scaffolder.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/lifter.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/scaffolder.js","../src/lifter.js"],"sourcesContent":["export function coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken}) {\n return !!('Public' === visibility || (apiAccessToken && 'github' === vcs.host));\n}\n","export function scaffold() {\n return {\n devDependencies: ['codecov'],\n scripts: {'coverage:report': 'c8 report --reporter=text-lcov > coverage.lcov && codecov'}\n };\n}\n","import {promises as fs} from 'fs';\nimport {dump, load} from 'js-yaml';\nimport {fileExists} from '@form8ion/core';\n\nfunction getPathToWorkflowFile(projectRoot) {\n return `${projectRoot}/.github/workflows/node-ci.yml`;\n}\n\nexport function test({projectRoot}) {\n return fileExists(getPathToWorkflowFile(projectRoot));\n}\n\nexport async function lift({projectRoot}) {\n const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);\n\n const workflowDetails = load(await fs.readFile(pathToWorkflowFile, 'utf-8'));\n const {jobs: {verify: {steps}}} = workflowDetails;\n\n if (!steps.find(step => step.uses?.startsWith('codecov/codecov-action'))) {\n const stepsWithLegacyReportingRemoved = steps.filter(({run}) => 'npm run coverage:report' !== run);\n\n await fs.writeFile(\n pathToWorkflowFile,\n dump({\n ...workflowDetails,\n jobs: {\n ...workflowDetails.jobs,\n verify: {\n ...workflowDetails.jobs.verify,\n steps: [...stepsWithLegacyReportingRemoved, {uses: 'codecov/codecov-action@v2'}]\n }\n }\n })\n );\n }\n}\n","import {promises as fs} from 'fs';\n\nimport execa from '../../thirdparty-wrappers/execa';\nimport {lift as liftCiProvider, test as ciProviderIsLiftable} from './ci-providers';\n\nexport default async function ({projectRoot, packageManager}) {\n const pathToPackageJson = `${projectRoot}/package.json`;\n\n const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([\n ciProviderIsLiftable({projectRoot}),\n fs.readFile(pathToPackageJson, 'utf-8')\n ]);\n const {scripts, ...otherTopLevelProperties} = JSON.parse(existingPackageContents);\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n await fs.writeFile(pathToPackageJson, JSON.stringify({...otherTopLevelProperties, scripts: otherScripts}));\n\n await execa(packageManager, ['remove', 'codecov']);\n\n return {\n ...!ciProviderCanBeLifted && {\n nextSteps: [{\n summary: 'Configure modern reporting to Codecov on your CI service',\n description: 'Configure the [Codecov Uploader](https://docs.codecov.com/docs/codecov-uploader) appropriately'\n + ' for your CI Provider. If available for your provider, prefer one of the dedicated wrappers.'\n }]\n }\n };\n }\n\n return {};\n}\n","import got from '../../thirdparty-wrappers/got';\n\nexport default async function ({vcs, apiAccessToken}) {\n const {body: {repo}} = await got(\n `https://codecov.io/api/gh/${vcs.owner}/${vcs.name}`,\n {headers: {Authorization: apiAccessToken}, responseType: 'json'}\n );\n\n return repo;\n}\n","import fetchRepositoryDetails from './repository-details-fetcher';\n\nexport async function scaffold({vcs, apiAccessToken}) {\n return {\n ...['github', 'gitlab', 'bitbucket'].includes(vcs?.host) && {\n badges: {\n status: {\n coverage: {\n img: `https://img.shields.io/codecov/c/${vcs.host}/${vcs.owner}/${vcs.name}?logo=codecov${\n apiAccessToken\n ? `&token=${(await fetchRepositoryDetails({vcs, apiAccessToken})).image_token}`\n : ''\n }`,\n link: `https://codecov.io/${vcs.host}/${vcs.owner}/${vcs.name}`,\n text: 'Codecov'\n }\n }\n }\n }\n };\n}\n","import {coverageShouldBeReportedToCodecov} from './predicates';\nimport {scaffold as scaffoldReporter} from './reporter';\nimport {scaffold as scaffoldBadge} from './badge';\n\nexport async function scaffold({vcs, visibility, apiAccessToken}) {\n if (!coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken})) return {};\n\n return {\n ...scaffoldReporter(),\n ...await scaffoldBadge({vcs, apiAccessToken})\n };\n}\n","import {lift as liftReporting} from './reporter';\n\nexport function lift({projectRoot, packageManager}) {\n return liftReporting({projectRoot, packageManager});\n}\n"],"names":["coverageShouldBeReportedToCodecov","vcs","visibility","apiAccessToken","host","scaffold","devDependencies","scripts","getPathToWorkflowFile","projectRoot","test","fileExists","lift","pathToWorkflowFile","workflowDetails","load","fs","readFile","jobs","verify","steps","find","step","uses","startsWith","stepsWithLegacyReportingRemoved","filter","run","writeFile","dump","packageManager","pathToPackageJson","ciProviderCanBeLifted","existingPackageContents","Promise","all","ciProviderIsLiftable","JSON","parse","otherTopLevelProperties","otherScripts","liftCiProvider","stringify","execa","nextSteps","summary","description","body","repo","got","owner","name","headers","Authorization","responseType","includes","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","scaffoldReporter","scaffoldBadge","liftReporting"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@form8ion/codecov",
3
3
  "description": "code coverage service plugin for form8ion",
4
4
  "license": "MIT",
5
- "version": "1.3.0",
5
+ "version": "1.7.0",
6
6
  "files": [
7
7
  "example.js",
8
8
  "lib/"
@@ -55,6 +55,7 @@
55
55
  "@form8ion/eslint-config": "2.0.2",
56
56
  "@form8ion/eslint-config-cucumber": "1.4.0",
57
57
  "@form8ion/eslint-config-mocha": "1.2.17",
58
+ "@form8ion/javascript-core": "4.0.1",
58
59
  "@form8ion/remark-lint-preset": "2.1.7",
59
60
  "@rollup/plugin-babel": "5.3.0",
60
61
  "@rollup/plugin-node-resolve": "13.1.1",
@@ -80,9 +81,13 @@
80
81
  "rimraf": "3.0.2",
81
82
  "rollup": "2.61.1",
82
83
  "rollup-plugin-auto-external": "2.0.0",
83
- "sinon": "12.0.1"
84
+ "sinon": "12.0.1",
85
+ "testdouble": "3.16.3"
84
86
  },
85
87
  "dependencies": {
86
- "got": "^11.8.2"
88
+ "@form8ion/core": "^1.4.2",
89
+ "execa": "^5.1.1",
90
+ "got": "^11.8.2",
91
+ "js-yaml": "^4.1.0"
87
92
  }
88
93
  }