mirror of
https://github.com/codecov/codecov-action.git
synced 2025-12-08 16:16:24 +00:00
use cli instead of node uploader (#1068)
* use cli instead of node uploader * changes based on review * logging out run command
This commit is contained in:
10
.github/workflows/main.yml
vendored
10
.github/workflows/main.yml
vendored
@@ -16,6 +16,7 @@ jobs:
|
||||
flags: script,${{ matrix.os }}
|
||||
name: codecov-script
|
||||
verbose: true
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
- name: Upload coverage to Codecov (demo)
|
||||
uses: ./
|
||||
with:
|
||||
@@ -24,6 +25,7 @@ jobs:
|
||||
flags: demo,${{ matrix.os }}
|
||||
name: codecov-demo
|
||||
verbose: true
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
- name: Upload coverage to Codecov (version)
|
||||
uses: ./
|
||||
with:
|
||||
@@ -31,8 +33,9 @@ jobs:
|
||||
file: ./coverage/coverage-final.json
|
||||
flags: version,${{ matrix.os }}
|
||||
name: codecov-version
|
||||
version: v0.1.0_8880
|
||||
version: v0.2.0
|
||||
verbose: true
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
run:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
@@ -54,6 +57,7 @@ jobs:
|
||||
flags: script,${{ matrix.os }}
|
||||
name: codecov-script
|
||||
verbose: true
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
- name: Upload coverage to Codecov (demo)
|
||||
uses: ./
|
||||
with:
|
||||
@@ -62,6 +66,7 @@ jobs:
|
||||
flags: demo,${{ matrix.os }}
|
||||
name: codecov-demo
|
||||
verbose: true
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
- name: Upload coverage to Codecov (version)
|
||||
uses: ./
|
||||
with:
|
||||
@@ -69,5 +74,6 @@ jobs:
|
||||
file: ./coverage/coverage-final.json
|
||||
flags: version,${{ matrix.os }}
|
||||
name: codecov-version
|
||||
version: v0.1.0_8880
|
||||
version: v0.2.0
|
||||
verbose: true
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
254
dist/index.js
vendored
254
dist/index.js
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -2,233 +2,14 @@ import * as github from '@actions/github';
|
||||
|
||||
import {
|
||||
buildCommitExec,
|
||||
buildExec,
|
||||
buildGeneralExec,
|
||||
buildReportExec,
|
||||
buildUploadExec,
|
||||
} from './buildExec';
|
||||
|
||||
import {version} from '../package.json';
|
||||
|
||||
const context = github.context;
|
||||
|
||||
test('no arguments', () => {
|
||||
const {execArgs, failCi} = buildExec();
|
||||
|
||||
const args = [
|
||||
'-n',
|
||||
'',
|
||||
'-Q',
|
||||
`github-action-${version}`,
|
||||
];
|
||||
if (context.eventName == 'pull_request') {
|
||||
args.push('-C', `${context.payload.pull_request.head.sha}`);
|
||||
}
|
||||
|
||||
expect(execArgs).toEqual(args);
|
||||
expect(failCi).toBeFalsy();
|
||||
});
|
||||
|
||||
test('all arguments', () => {
|
||||
const envs = {
|
||||
'commit_parent': '83231650328f11695dfb754ca0f540516f188d27',
|
||||
'directory': 'coverage/',
|
||||
'dry_run': 'true',
|
||||
'env_vars': 'OS,PYTHON',
|
||||
'fail_ci_if_error': 'true',
|
||||
'file': 'coverage.xml',
|
||||
'files': 'dir1/coverage.xml,dir2/coverage.xml',
|
||||
'flags': 'test,test2',
|
||||
'functionalities': 'network',
|
||||
'full_report': 'oldDir/oldReport.json',
|
||||
'gcov': 'true',
|
||||
'gcov_args': '-v',
|
||||
'gcov_ignore': '*.fake',
|
||||
'gcov_include': 'real_file',
|
||||
'gcov_executable': 'gcov2',
|
||||
'move_coverage_to_trash': 'true',
|
||||
'name': 'codecov',
|
||||
'network_filter': 'src/',
|
||||
'network_prefix': 'build/',
|
||||
'override_branch': 'thomasrockhu/test',
|
||||
'override_build': '1',
|
||||
'override_commit': '9caabca5474b49de74ef5667deabaf74cdacc244',
|
||||
'override_pr': '2',
|
||||
'override_tag': 'v1.2',
|
||||
'root_dir': 'root/',
|
||||
'swift': 'true',
|
||||
'swift_project': 'MyApp',
|
||||
'slug': 'fakeOwner/fakeRepo',
|
||||
'token': 'd3859757-ab80-4664-924d-aef22fa7557b',
|
||||
'upstream_proxy': 'https://codecov.example.com',
|
||||
'url': 'https://codecov.enterprise.com',
|
||||
'verbose': 't',
|
||||
'xcode': 'true',
|
||||
'xcode_archive_path': '/test.xcresult',
|
||||
'xtra_args': '--some --other --args',
|
||||
};
|
||||
|
||||
for (const env of Object.keys(envs)) {
|
||||
process.env['INPUT_' + env.toUpperCase()] = envs[env];
|
||||
}
|
||||
|
||||
const {execArgs, failCi} = buildExec();
|
||||
expect(execArgs).toEqual([
|
||||
'-n',
|
||||
'codecov',
|
||||
'-Q',
|
||||
`github-action-${version}`,
|
||||
'-c',
|
||||
'-N',
|
||||
'83231650328f11695dfb754ca0f540516f188d27',
|
||||
'-d',
|
||||
'-e',
|
||||
'OS,PYTHON',
|
||||
'-X',
|
||||
'network',
|
||||
'-Z',
|
||||
'-f',
|
||||
'coverage.xml',
|
||||
'-f',
|
||||
'dir1/coverage.xml',
|
||||
'-f',
|
||||
'dir2/coverage.xml',
|
||||
'--full',
|
||||
'oldDir/oldReport.json',
|
||||
'-F',
|
||||
'test',
|
||||
'-F',
|
||||
'test2',
|
||||
'-g',
|
||||
'--ga',
|
||||
'-v',
|
||||
'--gi',
|
||||
'*.fake',
|
||||
'--gI',
|
||||
'real_file',
|
||||
'--gx',
|
||||
'gcov2',
|
||||
'-i',
|
||||
'src/',
|
||||
'-k',
|
||||
'build/',
|
||||
'-B',
|
||||
'thomasrockhu/test',
|
||||
'-b',
|
||||
'1',
|
||||
'-C',
|
||||
'9caabca5474b49de74ef5667deabaf74cdacc244',
|
||||
'-P',
|
||||
'2',
|
||||
'-T',
|
||||
'v1.2',
|
||||
'-R',
|
||||
'root/',
|
||||
'-s',
|
||||
'coverage/',
|
||||
'-r',
|
||||
'fakeOwner/fakeRepo',
|
||||
'--xs',
|
||||
'--xsp',
|
||||
'MyApp',
|
||||
'-U',
|
||||
'https://codecov.example.com',
|
||||
'-u',
|
||||
'https://codecov.enterprise.com',
|
||||
'-v',
|
||||
'--xc',
|
||||
'--xp',
|
||||
'/test.xcresult',
|
||||
'--some --other --args',
|
||||
]);
|
||||
expect(failCi).toBeTruthy();
|
||||
|
||||
for (const env of Object.keys(envs)) {
|
||||
delete process.env['INPUT_' + env.toUpperCase()];
|
||||
}
|
||||
});
|
||||
|
||||
describe('trim arguments after splitting them', () => {
|
||||
const baseExpectation = [
|
||||
'-n',
|
||||
expect.stringContaining(''),
|
||||
'-Q',
|
||||
expect.stringContaining('github-action'),
|
||||
];
|
||||
|
||||
test('files', () => {
|
||||
const envs = {files: './client-coverage.txt, ./lcov.info'};
|
||||
|
||||
for (const [name, value] of Object.entries(envs)) {
|
||||
process.env['INPUT_' + name.toUpperCase()] = value;
|
||||
}
|
||||
|
||||
const {execArgs} = buildExec();
|
||||
|
||||
expect(execArgs).toEqual(
|
||||
expect.arrayContaining([
|
||||
...baseExpectation,
|
||||
'-f',
|
||||
'./client-coverage.txt',
|
||||
'-f',
|
||||
'./lcov.info',
|
||||
]),
|
||||
);
|
||||
|
||||
for (const env of Object.keys(envs)) {
|
||||
delete process.env['INPUT_' + env.toUpperCase()];
|
||||
}
|
||||
});
|
||||
|
||||
test('flags', () => {
|
||||
const envs = {flags: 'ios, mobile'};
|
||||
|
||||
for (const [name, value] of Object.entries(envs)) {
|
||||
process.env['INPUT_' + name.toUpperCase()] = value;
|
||||
}
|
||||
|
||||
const {execArgs} = buildExec();
|
||||
|
||||
expect(execArgs).toEqual(
|
||||
expect.arrayContaining([
|
||||
...baseExpectation,
|
||||
'-F',
|
||||
'ios',
|
||||
'-F',
|
||||
'mobile',
|
||||
]),
|
||||
);
|
||||
|
||||
for (const env of Object.keys(envs)) {
|
||||
delete process.env['INPUT_' + env.toUpperCase()];
|
||||
}
|
||||
});
|
||||
|
||||
test('functionalities', () => {
|
||||
const envs = {functionalities: 'network, gcov'};
|
||||
|
||||
for (const [name, value] of Object.entries(envs)) {
|
||||
process.env['INPUT_' + name.toUpperCase()] = value;
|
||||
}
|
||||
|
||||
const {execArgs} = buildExec();
|
||||
|
||||
expect(execArgs).toEqual(
|
||||
expect.arrayContaining([
|
||||
...baseExpectation,
|
||||
'-X',
|
||||
'network',
|
||||
'-X',
|
||||
'gcov',
|
||||
]),
|
||||
);
|
||||
|
||||
for (const env of Object.keys(envs)) {
|
||||
delete process.env['INPUT_' + env.toUpperCase()];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
test('general args', () => {
|
||||
const envs = {
|
||||
url: 'https://codecov.enterprise.com',
|
||||
@@ -238,7 +19,7 @@ test('general args', () => {
|
||||
process.env['INPUT_' + env.toUpperCase()] = envs[env];
|
||||
}
|
||||
|
||||
const args = buildGeneralExec();
|
||||
const {args, verbose} = buildGeneralExec();
|
||||
|
||||
expect(args).toEqual(
|
||||
expect.arrayContaining([
|
||||
@@ -246,7 +27,7 @@ test('general args', () => {
|
||||
'https://codecov.enterprise.com',
|
||||
'-v',
|
||||
]));
|
||||
|
||||
expect(verbose).toBeTruthy();
|
||||
for (const env of Object.keys(envs)) {
|
||||
delete process.env['INPUT_' + env.toUpperCase()];
|
||||
}
|
||||
|
||||
205
src/buildExec.ts
205
src/buildExec.ts
@@ -3,7 +3,6 @@
|
||||
import * as core from '@actions/core';
|
||||
import * as github from '@actions/github';
|
||||
|
||||
import {version} from '../package.json';
|
||||
|
||||
const context = github.context;
|
||||
|
||||
@@ -18,207 +17,6 @@ const isTrue = (variable) => {
|
||||
);
|
||||
};
|
||||
|
||||
const buildExec = () => {
|
||||
const clean = core.getInput('move_coverage_to_trash');
|
||||
const commitParent = core.getInput('commit_parent');
|
||||
const dryRun = isTrue(core.getInput('dry_run'));
|
||||
const envVars = core.getInput('env_vars');
|
||||
const failCi = isTrue(core.getInput('fail_ci_if_error'));
|
||||
const file = core.getInput('file');
|
||||
const files = core.getInput('files');
|
||||
const flags = core.getInput('flags');
|
||||
const fullReport = core.getInput('full_report');
|
||||
const functionalities = core.getInput('functionalities');
|
||||
const gcov = core.getInput('gcov');
|
||||
const gcovArgs = core.getInput('gcov_args');
|
||||
const gcovExecutable = core.getInput('gcov_executable');
|
||||
const gcovIgnore = core.getInput('gcov_ignore');
|
||||
const gcovInclude = core.getInput('gcov_include');
|
||||
const name = core.getInput('name');
|
||||
const networkFilter = core.getInput('network_filter');
|
||||
const networkPrefix = core.getInput('network_prefix');
|
||||
const os = core.getInput('os');
|
||||
const overrideBranch = core.getInput('override_branch');
|
||||
const overrideBuild = core.getInput('override_build');
|
||||
const overrideCommit = core.getInput('override_commit');
|
||||
const overridePr = core.getInput('override_pr');
|
||||
const overrideTag = core.getInput('override_tag');
|
||||
const rootDir = core.getInput('root_dir');
|
||||
const searchDir = core.getInput('directory');
|
||||
const slug = core.getInput('slug');
|
||||
const swift = core.getInput('swift');
|
||||
const swiftProject = core.getInput('swift_project');
|
||||
const token = core.getInput('token');
|
||||
const upstream = core.getInput('upstream_proxy');
|
||||
const url = core.getInput('url');
|
||||
const verbose = isTrue(core.getInput('verbose'));
|
||||
const workingDir = core.getInput('working-directory');
|
||||
const xcode = core.getInput('xcode');
|
||||
const xcodeArchivePath = core.getInput('xcode_archive_path');
|
||||
const xtraArgs = core.getInput('xtra_args');
|
||||
let uploaderVersion = core.getInput('version');
|
||||
|
||||
const execArgs = [];
|
||||
execArgs.push(
|
||||
'-n',
|
||||
`${name}`,
|
||||
'-Q',
|
||||
`github-action-${version}`,
|
||||
);
|
||||
|
||||
const options:any = {};
|
||||
options.env = Object.assign(process.env, {
|
||||
GITHUB_ACTION: process.env.GITHUB_ACTION,
|
||||
GITHUB_RUN_ID: process.env.GITHUB_RUN_ID,
|
||||
GITHUB_REF: process.env.GITHUB_REF,
|
||||
GITHUB_REPOSITORY: process.env.GITHUB_REPOSITORY,
|
||||
GITHUB_SHA: process.env.GITHUB_SHA,
|
||||
GITHUB_HEAD_REF: process.env.GITHUB_HEAD_REF || '',
|
||||
});
|
||||
|
||||
const envVarsArg = [];
|
||||
for (const envVar of envVars.split(',')) {
|
||||
const envVarClean = envVar.trim();
|
||||
if (envVarClean) {
|
||||
options.env[envVarClean] = process.env[envVarClean];
|
||||
envVarsArg.push(envVarClean);
|
||||
}
|
||||
}
|
||||
|
||||
if (token) {
|
||||
options.env.CODECOV_TOKEN = token;
|
||||
}
|
||||
if (clean) {
|
||||
execArgs.push('-c');
|
||||
}
|
||||
if (commitParent) {
|
||||
execArgs.push('-N', `${commitParent}`);
|
||||
}
|
||||
if (dryRun) {
|
||||
execArgs.push('-d');
|
||||
}
|
||||
if (envVarsArg.length) {
|
||||
execArgs.push('-e', envVarsArg.join(','));
|
||||
}
|
||||
if (functionalities) {
|
||||
functionalities.split(',').map((f) => f.trim()).forEach((f) => {
|
||||
execArgs.push('-X', `${f}`);
|
||||
});
|
||||
}
|
||||
if (failCi) {
|
||||
execArgs.push('-Z');
|
||||
}
|
||||
if (file) {
|
||||
execArgs.push('-f', `${file}`);
|
||||
}
|
||||
if (files) {
|
||||
files.split(',').map((f) => f.trim()).forEach((f) => {
|
||||
execArgs.push('-f', `${f}`);
|
||||
});
|
||||
}
|
||||
if (fullReport) {
|
||||
execArgs.push('--full', `${fullReport}`);
|
||||
}
|
||||
if (flags) {
|
||||
flags.split(',').map((f) => f.trim()).forEach((f) => {
|
||||
execArgs.push('-F', `${f}`);
|
||||
});
|
||||
}
|
||||
|
||||
if (gcov) {
|
||||
execArgs.push('-g');
|
||||
}
|
||||
if (gcovArgs) {
|
||||
execArgs.push('--ga', `${gcovArgs}`);
|
||||
}
|
||||
if (gcovIgnore) {
|
||||
execArgs.push('--gi', `${gcovIgnore}`);
|
||||
}
|
||||
if (gcovInclude) {
|
||||
execArgs.push('--gI', `${gcovInclude}`);
|
||||
}
|
||||
if (gcovExecutable) {
|
||||
execArgs.push('--gx', `${gcovExecutable}`);
|
||||
}
|
||||
|
||||
if (networkFilter) {
|
||||
execArgs.push('-i', `${networkFilter}`);
|
||||
}
|
||||
if (networkPrefix) {
|
||||
execArgs.push('-k', `${networkPrefix}`);
|
||||
}
|
||||
|
||||
if (overrideBranch) {
|
||||
execArgs.push('-B', `${overrideBranch}`);
|
||||
}
|
||||
if (overrideBuild) {
|
||||
execArgs.push('-b', `${overrideBuild}`);
|
||||
}
|
||||
if (overrideCommit) {
|
||||
execArgs.push('-C', `${overrideCommit}`);
|
||||
} else if (
|
||||
`${context.eventName}` == 'pull_request' ||
|
||||
`${context.eventName}` == 'pull_request_target'
|
||||
) {
|
||||
execArgs.push('-C', `${context.payload.pull_request.head.sha}`);
|
||||
}
|
||||
if (overridePr) {
|
||||
execArgs.push('-P', `${overridePr}`);
|
||||
} else if (
|
||||
`${context.eventName}` == 'pull_request_target'
|
||||
) {
|
||||
execArgs.push('-P', `${context.payload.number}`);
|
||||
}
|
||||
if (overrideTag) {
|
||||
execArgs.push('-T', `${overrideTag}`);
|
||||
}
|
||||
if (rootDir) {
|
||||
execArgs.push('-R', `${rootDir}`);
|
||||
}
|
||||
if (searchDir) {
|
||||
execArgs.push('-s', `${searchDir}`);
|
||||
}
|
||||
if (slug) {
|
||||
execArgs.push('-r', `${slug}`);
|
||||
}
|
||||
if (swift) {
|
||||
execArgs.push('--xs');
|
||||
}
|
||||
if (swift && swiftProject) {
|
||||
execArgs.push('--xsp', `${swiftProject}`);
|
||||
}
|
||||
if (upstream) {
|
||||
execArgs.push('-U', `${upstream}`);
|
||||
}
|
||||
if (url) {
|
||||
execArgs.push('-u', `${url}`);
|
||||
}
|
||||
if (verbose) {
|
||||
execArgs.push('-v');
|
||||
}
|
||||
if (xcode && xcodeArchivePath) {
|
||||
execArgs.push('--xc');
|
||||
execArgs.push('--xp', `${xcodeArchivePath}`);
|
||||
}
|
||||
|
||||
if (uploaderVersion == '') {
|
||||
uploaderVersion = 'latest';
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
console.debug({execArgs});
|
||||
}
|
||||
|
||||
if (workingDir) {
|
||||
options.cwd = workingDir;
|
||||
}
|
||||
|
||||
if (xtraArgs) {
|
||||
execArgs.push(`${xtraArgs}`);
|
||||
}
|
||||
|
||||
return {execArgs, options, failCi, os, uploaderVersion, verbose};
|
||||
};
|
||||
|
||||
const buildCommitExec = () => {
|
||||
const commitParent = core.getInput('commit_parent');
|
||||
@@ -287,7 +85,7 @@ const buildGeneralExec = () => {
|
||||
if (verbose) {
|
||||
args.push('-v');
|
||||
}
|
||||
return args;
|
||||
return {args, verbose};
|
||||
};
|
||||
|
||||
const buildReportExec = () => {
|
||||
@@ -456,7 +254,6 @@ const buildUploadExec = () => {
|
||||
|
||||
|
||||
export {
|
||||
buildExec,
|
||||
buildCommitExec,
|
||||
buildGeneralExec,
|
||||
buildReportExec,
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
isValidPlatform,
|
||||
isWindows,
|
||||
PLATFORMS,
|
||||
getCommand,
|
||||
} from './helpers';
|
||||
|
||||
let OLDOS = process.env.RUNNER_OS;
|
||||
@@ -39,34 +40,35 @@ test('getBaseUrl', () => {
|
||||
expect(PLATFORMS.map((platform) => {
|
||||
return getBaseUrl(platform, 'latest');
|
||||
})).toEqual([
|
||||
'https://uploader.codecov.io/latest/aarch64/codecov',
|
||||
'https://uploader.codecov.io/latest/alpine/codecov',
|
||||
'https://uploader.codecov.io/latest/linux/codecov',
|
||||
'https://uploader.codecov.io/latest/macos/codecov',
|
||||
'https://uploader.codecov.io/latest/windows/codecov.exe',
|
||||
'https://cli.codecov.io/latest/linux/codecov',
|
||||
'https://cli.codecov.io/latest/macos/codecov',
|
||||
'https://cli.codecov.io/latest/windows/codecov.exe',
|
||||
]);
|
||||
|
||||
expect(PLATFORMS.map((platform) => {
|
||||
return getBaseUrl(platform, 'v0.1.0_8880');
|
||||
})).toEqual([
|
||||
'https://uploader.codecov.io/v0.1.0_8880/aarch64/codecov',
|
||||
'https://uploader.codecov.io/v0.1.0_8880/alpine/codecov',
|
||||
'https://uploader.codecov.io/v0.1.0_8880/linux/codecov',
|
||||
'https://uploader.codecov.io/v0.1.0_8880/macos/codecov',
|
||||
'https://uploader.codecov.io/v0.1.0_8880/windows/codecov.exe',
|
||||
'https://cli.codecov.io/v0.1.0_8880/linux/codecov',
|
||||
'https://cli.codecov.io/v0.1.0_8880/macos/codecov',
|
||||
'https://cli.codecov.io/v0.1.0_8880/windows/codecov.exe',
|
||||
]);
|
||||
});
|
||||
|
||||
test('isWindows', () => {
|
||||
expect(PLATFORMS.map((platform) => {
|
||||
return isWindows(platform);
|
||||
})).toEqual([false, false, false, false, true]);
|
||||
})).toEqual([false, false, true]);
|
||||
});
|
||||
|
||||
test('isValidPlatform', () => {
|
||||
expect(PLATFORMS.map((platform) => {
|
||||
return isValidPlatform(platform);
|
||||
})).toEqual([true, true, true, true, true]);
|
||||
})).toEqual([true, true, true]);
|
||||
|
||||
expect(isValidPlatform('fakeos')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('getCommand', () => {
|
||||
expect(getCommand('path', ['-v', '-x'], 'do-upload'))
|
||||
.toEqual(['path', '-v', '-x', 'do-upload']);
|
||||
});
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import * as core from '@actions/core';
|
||||
|
||||
const PLATFORMS = [
|
||||
'aarch64',
|
||||
'alpine',
|
||||
'linux',
|
||||
'macos',
|
||||
'windows',
|
||||
@@ -50,7 +48,17 @@ const getPlatform = (os?: string): string => {
|
||||
};
|
||||
|
||||
const getBaseUrl = (platform: string, version: string): string => {
|
||||
return `https://uploader.codecov.io/${version}/${platform}/${getUploaderName(platform)}`;
|
||||
return `https://cli.codecov.io/${version}/${platform}/${getUploaderName(platform)}`;
|
||||
};
|
||||
|
||||
const getCommand = (
|
||||
filename: string,
|
||||
generalArgs:string[],
|
||||
command: string,
|
||||
): string[] => {
|
||||
const fullCommand = [filename, ...generalArgs, command];
|
||||
core.info(`==> Running command '${fullCommand.join(' ')}'`);
|
||||
return fullCommand;
|
||||
};
|
||||
|
||||
export {
|
||||
@@ -61,4 +69,5 @@ export {
|
||||
isValidPlatform,
|
||||
isWindows,
|
||||
setFailure,
|
||||
getCommand,
|
||||
};
|
||||
|
||||
65
src/index.ts
65
src/index.ts
@@ -4,12 +4,18 @@ import * as path from 'path';
|
||||
|
||||
import * as exec from '@actions/exec';
|
||||
|
||||
import {buildExec} from './buildExec';
|
||||
import {
|
||||
buildCommitExec,
|
||||
buildGeneralExec,
|
||||
buildReportExec,
|
||||
buildUploadExec,
|
||||
} from './buildExec';
|
||||
import {
|
||||
getBaseUrl,
|
||||
getPlatform,
|
||||
getUploaderName,
|
||||
setFailure,
|
||||
getCommand,
|
||||
} from './helpers';
|
||||
|
||||
import verify from './validate';
|
||||
@@ -18,7 +24,18 @@ import versionInfo from './version';
|
||||
let failCi;
|
||||
|
||||
try {
|
||||
const {execArgs, options, failCi, os, uploaderVersion, verbose} = buildExec();
|
||||
const {commitExecArgs, commitOptions, commitCommand} = buildCommitExec();
|
||||
const {reportExecArgs, reportOptions, reportCommand} = buildReportExec();
|
||||
const {
|
||||
uploadExecArgs,
|
||||
uploadOptions,
|
||||
failCi,
|
||||
os,
|
||||
uploaderVersion,
|
||||
uploadCommand,
|
||||
} = buildUploadExec();
|
||||
const {args, verbose} = buildGeneralExec();
|
||||
|
||||
const platform = getPlatform(os);
|
||||
|
||||
const filename = path.join( __dirname, getUploaderName(platform));
|
||||
@@ -49,14 +66,52 @@ try {
|
||||
}
|
||||
});
|
||||
};
|
||||
await exec.exec(filename, execArgs, options)
|
||||
const doUpload = async () => {
|
||||
await exec.exec(getCommand(filename, args, uploadCommand).join(' '),
|
||||
uploadExecArgs,
|
||||
uploadOptions)
|
||||
.catch((err) => {
|
||||
setFailure(
|
||||
`Codecov: Failed to properly upload: ${err.message}`,
|
||||
`Codecov:
|
||||
Failed to properly upload report: ${err.message}`,
|
||||
failCi,
|
||||
);
|
||||
}).then(() => {
|
||||
});
|
||||
};
|
||||
const createReport = async () => {
|
||||
await exec.exec(
|
||||
getCommand(filename, args, reportCommand).join(' '),
|
||||
reportExecArgs,
|
||||
reportOptions)
|
||||
.then(async (exitCode) => {
|
||||
if (exitCode == 0) {
|
||||
await doUpload();
|
||||
}
|
||||
}).catch((err) => {
|
||||
setFailure(
|
||||
`Codecov:
|
||||
Failed to properly create report: ${err.message}`,
|
||||
failCi,
|
||||
);
|
||||
});
|
||||
};
|
||||
await exec.exec(
|
||||
getCommand(
|
||||
filename,
|
||||
args,
|
||||
commitCommand,
|
||||
).join(' '),
|
||||
commitExecArgs, commitOptions)
|
||||
.then(async (exitCode) => {
|
||||
if (exitCode == 0) {
|
||||
await createReport();
|
||||
}
|
||||
unlink();
|
||||
}).catch((err) => {
|
||||
setFailure(
|
||||
`Codecov: Failed to properly create commit: ${err.message}`,
|
||||
failCi,
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user