All files / lib/resource-types text.js

100% Statements 61/61
100% Branches 6/6
100% Functions 3/3
100% Lines 61/61

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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 621x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 2x 3x 1x 1x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x  
"use strict";
/**
 * @module resource-types/text
 */
import fs from "fs";
 
/**
 * Set version value in the text resource, replacing all matches of the regex.
 *
 * @param {String} version - version value to set
 * @param {Object} resource - resource configuration
 * @param {String} resource.path - path to the text file
 * @param {String} resource.params.regex - regular expression which matches
 *   the version value
 * @param {Object} opts - optional settings
 * @param {Boolean} [opts.dryRun] - when true, text file won't be modified
 * @param {Function} cb - standard cb(err, result) callback
 */
function setVersion(version, resource, opts, cb) {
  const regex = resource.params.regex;
  let data = fs.readFileSync(resource.path, "UTF-8");
  data = data.replaceAll(new RegExp(regex, "g"), version);
  if (!opts.dryRun) {
    fs.writeFile(resource.path, data, cb);
  } else {
    cb();
  }
}
 
/**
 * Get version value from the text resource, using the first match of the
 * regex.
 *
 * @param {Object} resource - resource configuration
 * @param {String} resource.path - path to the text file
 * @param {String} resource.params.regex - regular expression which matches
 *   the version value
 * @param {Function} cb - standard cb(err, result) callback, result is the
 *   version value
 */
function getVersion(resource, cb) {
  const regex = resource.params.regex;
 
  function readCb(err, result) {
    let version;
    if (!err) {
      const data = result.match(new RegExp(regex));
      version = data[0];
    }
    cb(err, version);
  }
  fs.readFile(resource.path, "UTF-8", readCb);
}
 
const exports = {
  setReleaseVersion: setVersion,
  setPostReleaseVersion: setVersion,
  getVersion: getVersion,
};
 
export { exports as default };