JuMastro/node-rotation-file

View on GitHub
src/archives.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const path = require('path')
const { COMPRESSION_TYPES } = require('./compresser.js')

/**
 * Generate an name for an archive based on birthtime as milliseconds.
 * @param {string} src - The source file path.
 * @param {Date} birthtime - The file birthtime.
 * @returns {string}
 */
function getArchiveName (src, birthtime) {
  const srcExt = path.extname(src)
  const srcName = path.basename(src, srcExt)
  const timeTag = birthtime.getTime()
  return `${srcName}_${timeTag}${srcExt}`
}

/**
 * Generate a regex matcher for the archives.
 * @param {string} src - The source file path.
 * @param {string} compressType - The archives compression type.
 * @returns {RegExp}
 */
function getArchivePattern (src, compressType) {
  const srcExt = path.extname(src)
  const srcName = path.basename(src, srcExt)
  const compressExt = compressType
    ? ('.' + COMPRESSION_TYPES[compressType].extention)
    : ''
  return new RegExp(`^${srcName}_[0-9]{13}${srcExt}${compressExt}$`)
}

module.exports = {
  getArchiveName,
  getArchivePattern
}