@form8ion/codecov 1.5.0 → 2.0.1

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
@@ -45,6 +45,8 @@ code coverage service plugin for form8ion
45
45
 
46
46
  * Migrate from the [legacy node uploader](https://github.com/codecov/codecov-node)
47
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)
48
50
 
49
51
  ## Usage
50
52
 
package/lib/index.cjs.js CHANGED
@@ -5,6 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var got = require('got');
6
6
  var fs = require('fs');
7
7
  var execa = require('execa');
8
+ var jsYaml = require('js-yaml');
9
+ var core = require('@form8ion/core');
8
10
 
9
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
12
 
@@ -96,48 +98,6 @@ function coverageShouldBeReportedToCodecov({
96
98
  return !!('Public' === visibility || apiAccessToken && 'github' === vcs.host);
97
99
  }
98
100
 
99
- function scaffold$2() {
100
- return {
101
- devDependencies: ['codecov'],
102
- scripts: {
103
- 'coverage:report': 'c8 report --reporter=text-lcov > coverage.lcov && codecov'
104
- }
105
- };
106
- }
107
-
108
- const _excluded = ["scripts"],
109
- _excluded2 = ["coverage:report"];
110
- async function liftReporting ({
111
- projectRoot,
112
- packageManager
113
- }) {
114
- const pathToPackageJson = `${projectRoot}/package.json`;
115
- const existingPackageContents = await fs.promises.readFile(pathToPackageJson, 'utf-8');
116
-
117
- const _JSON$parse = JSON.parse(existingPackageContents),
118
- {
119
- scripts
120
- } = _JSON$parse,
121
- otherTopLevelProperties = _objectWithoutProperties(_JSON$parse, _excluded);
122
-
123
- const otherScripts = _objectWithoutProperties(scripts, _excluded2);
124
-
125
- if (scripts['coverage:report']) {
126
- await fs.promises.writeFile(pathToPackageJson, JSON.stringify(_objectSpread2(_objectSpread2({}, otherTopLevelProperties), {}, {
127
- scripts: otherScripts
128
- })));
129
- await execa__default["default"](packageManager, ['remove', 'codecov']);
130
- return {
131
- nextSteps: [{
132
- summary: 'Configure modern reporting to Codecov on your CI service',
133
- 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.'
134
- }]
135
- };
136
- }
137
-
138
- return {};
139
- }
140
-
141
101
  async function fetchRepositoryDetails ({
142
102
  vcs,
143
103
  apiAccessToken
@@ -185,12 +145,89 @@ async function scaffold({
185
145
  visibility,
186
146
  apiAccessToken
187
147
  })) return {};
188
- return _objectSpread2(_objectSpread2({}, scaffold$2()), await scaffold$1({
148
+ return _objectSpread2({}, await scaffold$1({
189
149
  vcs,
190
150
  apiAccessToken
191
151
  }));
192
152
  }
193
153
 
154
+ function getPathToWorkflowFile(projectRoot) {
155
+ return `${projectRoot}/.github/workflows/node-ci.yml`;
156
+ }
157
+
158
+ function test({
159
+ projectRoot
160
+ }) {
161
+ return core.fileExists(getPathToWorkflowFile(projectRoot));
162
+ }
163
+ async function lift$1({
164
+ projectRoot
165
+ }) {
166
+ const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
167
+ const workflowDetails = jsYaml.load(await fs.promises.readFile(pathToWorkflowFile, 'utf-8'));
168
+ const {
169
+ jobs: {
170
+ verify: {
171
+ steps
172
+ }
173
+ }
174
+ } = workflowDetails;
175
+
176
+ if (!steps.find(step => {
177
+ var _step$uses;
178
+
179
+ return (_step$uses = step.uses) === null || _step$uses === void 0 ? void 0 : _step$uses.startsWith('codecov/codecov-action');
180
+ })) {
181
+ const stepsWithLegacyReportingRemoved = steps.filter(({
182
+ run
183
+ }) => 'npm run coverage:report' !== run);
184
+ await fs.promises.writeFile(pathToWorkflowFile, jsYaml.dump(_objectSpread2(_objectSpread2({}, workflowDetails), {}, {
185
+ jobs: _objectSpread2(_objectSpread2({}, workflowDetails.jobs), {}, {
186
+ verify: _objectSpread2(_objectSpread2({}, workflowDetails.jobs.verify), {}, {
187
+ steps: [...stepsWithLegacyReportingRemoved, {
188
+ uses: 'codecov/codecov-action@v2'
189
+ }]
190
+ })
191
+ })
192
+ })));
193
+ }
194
+ }
195
+
196
+ const _excluded = ["coverage:report"];
197
+ async function liftReporting ({
198
+ projectRoot,
199
+ packageManager
200
+ }) {
201
+ const pathToPackageJson = `${projectRoot}/package.json`;
202
+ const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([test({
203
+ projectRoot
204
+ }), fs.promises.readFile(pathToPackageJson, 'utf-8')]);
205
+ const parsedPackageContents = JSON.parse(existingPackageContents);
206
+ const {
207
+ scripts
208
+ } = parsedPackageContents;
209
+
210
+ const otherScripts = _objectWithoutProperties(scripts, _excluded);
211
+
212
+ if (ciProviderCanBeLifted) await lift$1({
213
+ projectRoot
214
+ });
215
+
216
+ if (scripts['coverage:report']) {
217
+ parsedPackageContents.scripts = otherScripts;
218
+ await fs.promises.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));
219
+ await execa__default["default"](packageManager, ['remove', 'codecov']);
220
+ return _objectSpread2({}, !ciProviderCanBeLifted && {
221
+ nextSteps: [{
222
+ summary: 'Configure modern reporting to Codecov on your CI service',
223
+ 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.'
224
+ }]
225
+ });
226
+ }
227
+
228
+ return {};
229
+ }
230
+
194
231
  function lift({
195
232
  projectRoot,
196
233
  packageManager
@@ -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\nimport execa from '../../thirdparty-wrappers/execa';\n\nexport default async function ({projectRoot, packageManager}) {\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 await execa(packageManager, ['remove', 'codecov']);\n\n return {\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 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","projectRoot","packageManager","pathToPackageJson","existingPackageContents","fs","readFile","JSON","parse","otherTopLevelProperties","otherScripts","writeFile","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","lift","liftReporting"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/predicates.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/scaffolder.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/lifter.js","../src/lifter.js"],"sourcesContent":["export function coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken}) {\n return !!('Public' === visibility || (apiAccessToken && 'github' === vcs.host));\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 scaffoldBadge} from './badge';\n\nexport async function scaffold({vcs, visibility, apiAccessToken}) {\n if (!coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken})) return {};\n\n return {\n ...await scaffoldBadge({vcs, apiAccessToken})\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 parsedPackageContents = JSON.parse(existingPackageContents);\n const {scripts} = parsedPackageContents;\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n parsedPackageContents.scripts = otherScripts;\n await fs.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));\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 {lift as liftReporting} from './reporter';\n\nexport function lift({projectRoot, packageManager}) {\n return liftReporting({projectRoot, packageManager});\n}\n"],"names":["coverageShouldBeReportedToCodecov","vcs","visibility","apiAccessToken","host","body","repo","got","owner","name","headers","Authorization","responseType","scaffold","includes","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","scaffoldBadge","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","parsedPackageContents","JSON","parse","scripts","otherScripts","liftCiProvider","stringify","execa","nextSteps","summary","description","liftReporting"],"mappings":"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"}
package/lib/index.es.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import got from 'got';
2
2
  import { promises } from 'fs';
3
3
  import execa from 'execa';
4
+ import { load, dump } from 'js-yaml';
5
+ import { fileExists } from '@form8ion/core';
4
6
 
5
7
  function ownKeys(object, enumerableOnly) {
6
8
  var keys = Object.keys(object);
@@ -87,48 +89,6 @@ function coverageShouldBeReportedToCodecov({
87
89
  return !!('Public' === visibility || apiAccessToken && 'github' === vcs.host);
88
90
  }
89
91
 
90
- function scaffold$2() {
91
- return {
92
- devDependencies: ['codecov'],
93
- scripts: {
94
- 'coverage:report': 'c8 report --reporter=text-lcov > coverage.lcov && codecov'
95
- }
96
- };
97
- }
98
-
99
- const _excluded = ["scripts"],
100
- _excluded2 = ["coverage:report"];
101
- async function liftReporting ({
102
- projectRoot,
103
- packageManager
104
- }) {
105
- const pathToPackageJson = `${projectRoot}/package.json`;
106
- const existingPackageContents = await promises.readFile(pathToPackageJson, 'utf-8');
107
-
108
- const _JSON$parse = JSON.parse(existingPackageContents),
109
- {
110
- scripts
111
- } = _JSON$parse,
112
- otherTopLevelProperties = _objectWithoutProperties(_JSON$parse, _excluded);
113
-
114
- const otherScripts = _objectWithoutProperties(scripts, _excluded2);
115
-
116
- if (scripts['coverage:report']) {
117
- await promises.writeFile(pathToPackageJson, JSON.stringify(_objectSpread2(_objectSpread2({}, otherTopLevelProperties), {}, {
118
- scripts: otherScripts
119
- })));
120
- await execa(packageManager, ['remove', 'codecov']);
121
- return {
122
- nextSteps: [{
123
- summary: 'Configure modern reporting to Codecov on your CI service',
124
- 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.'
125
- }]
126
- };
127
- }
128
-
129
- return {};
130
- }
131
-
132
92
  async function fetchRepositoryDetails ({
133
93
  vcs,
134
94
  apiAccessToken
@@ -176,12 +136,89 @@ async function scaffold({
176
136
  visibility,
177
137
  apiAccessToken
178
138
  })) return {};
179
- return _objectSpread2(_objectSpread2({}, scaffold$2()), await scaffold$1({
139
+ return _objectSpread2({}, await scaffold$1({
180
140
  vcs,
181
141
  apiAccessToken
182
142
  }));
183
143
  }
184
144
 
145
+ function getPathToWorkflowFile(projectRoot) {
146
+ return `${projectRoot}/.github/workflows/node-ci.yml`;
147
+ }
148
+
149
+ function test({
150
+ projectRoot
151
+ }) {
152
+ return fileExists(getPathToWorkflowFile(projectRoot));
153
+ }
154
+ async function lift$1({
155
+ projectRoot
156
+ }) {
157
+ const pathToWorkflowFile = getPathToWorkflowFile(projectRoot);
158
+ const workflowDetails = load(await promises.readFile(pathToWorkflowFile, 'utf-8'));
159
+ const {
160
+ jobs: {
161
+ verify: {
162
+ steps
163
+ }
164
+ }
165
+ } = workflowDetails;
166
+
167
+ if (!steps.find(step => {
168
+ var _step$uses;
169
+
170
+ return (_step$uses = step.uses) === null || _step$uses === void 0 ? void 0 : _step$uses.startsWith('codecov/codecov-action');
171
+ })) {
172
+ const stepsWithLegacyReportingRemoved = steps.filter(({
173
+ run
174
+ }) => 'npm run coverage:report' !== run);
175
+ await promises.writeFile(pathToWorkflowFile, dump(_objectSpread2(_objectSpread2({}, workflowDetails), {}, {
176
+ jobs: _objectSpread2(_objectSpread2({}, workflowDetails.jobs), {}, {
177
+ verify: _objectSpread2(_objectSpread2({}, workflowDetails.jobs.verify), {}, {
178
+ steps: [...stepsWithLegacyReportingRemoved, {
179
+ uses: 'codecov/codecov-action@v2'
180
+ }]
181
+ })
182
+ })
183
+ })));
184
+ }
185
+ }
186
+
187
+ const _excluded = ["coverage:report"];
188
+ async function liftReporting ({
189
+ projectRoot,
190
+ packageManager
191
+ }) {
192
+ const pathToPackageJson = `${projectRoot}/package.json`;
193
+ const [ciProviderCanBeLifted, existingPackageContents] = await Promise.all([test({
194
+ projectRoot
195
+ }), promises.readFile(pathToPackageJson, 'utf-8')]);
196
+ const parsedPackageContents = JSON.parse(existingPackageContents);
197
+ const {
198
+ scripts
199
+ } = parsedPackageContents;
200
+
201
+ const otherScripts = _objectWithoutProperties(scripts, _excluded);
202
+
203
+ if (ciProviderCanBeLifted) await lift$1({
204
+ projectRoot
205
+ });
206
+
207
+ if (scripts['coverage:report']) {
208
+ parsedPackageContents.scripts = otherScripts;
209
+ await promises.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));
210
+ await execa(packageManager, ['remove', 'codecov']);
211
+ return _objectSpread2({}, !ciProviderCanBeLifted && {
212
+ nextSteps: [{
213
+ summary: 'Configure modern reporting to Codecov on your CI service',
214
+ 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.'
215
+ }]
216
+ });
217
+ }
218
+
219
+ return {};
220
+ }
221
+
185
222
  function lift({
186
223
  projectRoot,
187
224
  packageManager
@@ -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\nimport execa from '../../thirdparty-wrappers/execa';\n\nexport default async function ({projectRoot, packageManager}) {\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 await execa(packageManager, ['remove', 'codecov']);\n\n return {\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 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","projectRoot","packageManager","pathToPackageJson","existingPackageContents","fs","readFile","JSON","parse","otherTopLevelProperties","otherScripts","writeFile","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","lift","liftReporting"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/predicates.js","../src/badge/repository-details-fetcher.js","../src/badge/scaffolder.js","../src/scaffolder.js","../src/reporter/ci-providers/github-workflows/lifter.js","../src/reporter/lifter.js","../src/lifter.js"],"sourcesContent":["export function coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken}) {\n return !!('Public' === visibility || (apiAccessToken && 'github' === vcs.host));\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 scaffoldBadge} from './badge';\n\nexport async function scaffold({vcs, visibility, apiAccessToken}) {\n if (!coverageShouldBeReportedToCodecov({vcs, visibility, apiAccessToken})) return {};\n\n return {\n ...await scaffoldBadge({vcs, apiAccessToken})\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 parsedPackageContents = JSON.parse(existingPackageContents);\n const {scripts} = parsedPackageContents;\n const {'coverage:report': reportCoverageScript, ...otherScripts} = scripts;\n\n if (ciProviderCanBeLifted) await liftCiProvider({projectRoot});\n\n if (scripts['coverage:report']) {\n parsedPackageContents.scripts = otherScripts;\n await fs.writeFile(pathToPackageJson, JSON.stringify(parsedPackageContents));\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 {lift as liftReporting} from './reporter';\n\nexport function lift({projectRoot, packageManager}) {\n return liftReporting({projectRoot, packageManager});\n}\n"],"names":["coverageShouldBeReportedToCodecov","vcs","visibility","apiAccessToken","host","body","repo","got","owner","name","headers","Authorization","responseType","scaffold","includes","badges","status","coverage","img","fetchRepositoryDetails","image_token","link","text","scaffoldBadge","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","parsedPackageContents","JSON","parse","scripts","otherScripts","liftCiProvider","stringify","execa","nextSteps","summary","description","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.5.0",
5
+ "version": "2.0.1",
6
6
  "files": [
7
7
  "example.js",
8
8
  "lib/"
@@ -48,26 +48,26 @@
48
48
  "test:integration:focus": "run-s 'test:integration:base -- --profile focus'"
49
49
  },
50
50
  "devDependencies": {
51
- "@babel/register": "7.16.5",
51
+ "@babel/register": "7.16.7",
52
52
  "@cucumber/cucumber": "8.0.0-rc.1",
53
- "@form8ion/babel-preset": "1.6.73",
54
- "@form8ion/commitlint-config": "1.0.23",
55
- "@form8ion/eslint-config": "2.0.2",
53
+ "@form8ion/babel-preset": "1.6.74",
54
+ "@form8ion/commitlint-config": "1.0.25",
55
+ "@form8ion/eslint-config": "2.0.3",
56
56
  "@form8ion/eslint-config-cucumber": "1.4.0",
57
57
  "@form8ion/eslint-config-mocha": "1.2.17",
58
58
  "@form8ion/javascript-core": "4.0.1",
59
59
  "@form8ion/remark-lint-preset": "2.1.7",
60
60
  "@rollup/plugin-babel": "5.3.0",
61
- "@rollup/plugin-node-resolve": "13.1.1",
61
+ "@rollup/plugin-node-resolve": "13.1.2",
62
62
  "@travi/any": "2.0.19",
63
63
  "ban-sensitive-files": "1.9.16",
64
- "c8": "7.10.0",
64
+ "c8": "7.11.0",
65
65
  "chai": "4.3.4",
66
66
  "codecov": "3.8.3",
67
67
  "cross-env": "7.0.3",
68
68
  "cz-conventional-changelog": "3.3.0",
69
69
  "gherkin-lint": "4.2.2",
70
- "http-status-codes": "2.1.4",
70
+ "http-status-codes": "2.2.0",
71
71
  "husky": "7.0.4",
72
72
  "lockfile-lint": "4.6.2",
73
73
  "mocha": "9.1.3",
@@ -79,13 +79,15 @@
79
79
  "remark-toc": "8.0.1",
80
80
  "remark-usage": "10.0.1",
81
81
  "rimraf": "3.0.2",
82
- "rollup": "2.61.1",
82
+ "rollup": "2.62.0",
83
83
  "rollup-plugin-auto-external": "2.0.0",
84
84
  "sinon": "12.0.1",
85
- "testdouble": "3.16.3"
85
+ "testdouble": "3.16.4"
86
86
  },
87
87
  "dependencies": {
88
+ "@form8ion/core": "^1.4.2",
88
89
  "execa": "^5.1.1",
89
- "got": "^11.8.2"
90
+ "got": "^11.8.2",
91
+ "js-yaml": "^4.1.0"
90
92
  }
91
93
  }