All files / builtins export-yaml.ts

100% Statements 17/17
100% Branches 1/1
100% Functions 3/3
100% Lines 15/15

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 372x   2x   2x       2x 2x   2x   2x         2x 3x 2x     1x       1x   1x   1x     2x    
import {ERRORS} from '@grnsft/if-core/utils';
 
import {saveYamlFileAs} from '../util/yaml';
 
import {STRINGS} from '../config';
 
import {Context} from '../types/manifest';
 
const {ExhaustOutputArgError} = ERRORS;
const {OUTPUT_REQUIRED, EXPORTING_TO_YAML_FILE} = STRINGS;
 
export const ExportYaml = () => {
  /** Takes string before hashtag. */
  const stripHashtag = (path: string) => path.split('#')[0];
 
  /**
   * Saves output file in YAML format.
   */
  const execute = async (tree: any, context: Context, outputPath: string) => {
    if (!outputPath) {
      throw new ExhaustOutputArgError(OUTPUT_REQUIRED);
    }
 
    const outputFile = {
      ...context,
      tree,
    };
    const path = stripHashtag(outputPath);
 
    console.debug(EXPORTING_TO_YAML_FILE(path));
 
    await saveYamlFileAs(outputFile, `${path}.yaml`);
  };
 
  return {execute};
};