UNPKG

2.37 kBJavaScriptView Raw
1(function (parser, reporter, getGitData, logger, Promise, util) {
2 'use strict';
3 module.exports = function (input, opts) {
4 opts = opts || {};
5
6 var token = opts.token || process.env.CODACY_PROJECT_TOKEN || process.env.CODACY_REPO_TOKEN;
7 var accountToken = opts.accountToken || process.env.CODACY_ACCOUNT_TOKEN;
8 var username = opts.username;
9 var projectName = opts.projectName;
10 var commit = opts.commit;
11 var format = opts.format || 'lcov';
12 var pathPrefix = opts.prefix || '';
13 var language = opts.language;
14 var loggerImpl;
15
16 loggerImpl = logger({
17 verbose: opts.verbose,
18 debug: opts.debug
19 });
20
21 if (!token && !accountToken) {
22 return Promise.reject(new Error('Token is required'));
23 }
24
25 if (accountToken) {
26 if (!username) {
27 return Promise.reject(new Error('When using an account token, a username is required.'));
28 }
29 if (!projectName) {
30 return Promise.reject(new Error('When using an account token, a project name is required.'));
31 }
32 }
33
34 loggerImpl.info(util.format('Handling input for: token [%j], accountToken [%j], username [%j], projectName [%j], commitId [%j], language [%j], endpoint [%j], format [%j], path prefix [%j], verbose [%j], debug [%j]',
35 token, accountToken, username, projectName, commit, language, opts.endpoint, format, pathPrefix, opts.verbose, opts.debug));
36
37 // Parse the coverage data for the given format and retrieve the commit id if we don't have it.
38 return Promise.all([parser.getParser(format).parse(pathPrefix, input), getGitData.getCommitId(commit)]).spread(function (parsedCoverage, commitId) {
39 // Now that we've parse the coverage data to the correct format, send it to Codacy.
40 loggerImpl.trace(parsedCoverage);
41 loggerImpl.debug('Sending coverage');
42 return reporter({
43 endpoint: opts.endpoint,
44 accountToken: accountToken
45 }).sendCoverage(token, commitId, language, parsedCoverage, accountToken, username, projectName);
46 });
47 };
48}(require('./coverageParser'), require('./reporter'), require('./getGitData'), require('./logger'), require('bluebird'), require('util')));