All files action.ts

0% Statements 0/27
0% Branches 0/12
0% Functions 0/1
0% Lines 0/27

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41                                                                                 
import path from 'path';
import fs from 'fs-extra';
import { setFailed, getInput, setOutput, info, startGroup, endGroup } from '@actions/core';
import { badge, BadgeOption } from './badges';
 
;(async () => {
  try {
    const { version } = require('../package.json');
    info(`coverage-badges-cli v\x1b[32;1m${version}\x1b[0m`);
    const output = path.resolve(process.cwd(), getInput('output') || 'coverage/badges.svg');
    const source = path.resolve(process.cwd(), getInput('source') || 'coverage/coverage-summary.json');
    const label = getInput('label') || 'coverage';
    const jsonPath = getInput('jsonPath') || 'total.statements.pct';
    const style = (getInput('style') || 'classic') as BadgeOption['style'];
    fs.ensureDirSync(path.dirname(output));
    if (!fs.existsSync(source)) {
      setFailed(`File \x1b[31m${source}\x1b[0m does not exist.\n please specify the file directory\n\x1b[35mnpm\x1b[0m coverage-badges-cli \x1b[33m--source\x1b[0m coverage/coverage-summary.json`);
      return
    }
    info(`Source Path: \x1b[32;1m${source}\x1b[0m`);
    info(`Output Path: \x1b[32;1m${output}\x1b[0m`);
    
    const sourceData: object = fs.readJSONSync(source);
    startGroup(`Source Path: \x1b[32;1m${source}\x1b[0m`);
    info(`${JSON.stringify(sourceData, null, 2)}`);
    endGroup();
    
    const svgStr = badge({ label, style, jsonPath } as BadgeOption, sourceData);
 
    setOutput('svg', svgStr);
 
    startGroup(`SVG String: \x1b[32;1m${output}\x1b[0m`);
    info(`${svgStr}`);
    endGroup();
 
    fs.writeFileSync(output, svgStr);
    info(`\nCreate Coverage Badges: \x1b[32;1m${path.relative(process.cwd(), output)}\x1b[0m\n`);
  } catch (error) {
    setFailed(error.message);
  }
})();