apercova/atom-path-intellisense

View on GitHub
lib/util/paths-utils.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';
/**
 *
 * @description Path utils module. Contains common used functions related to paths and fs .
 * @module util/paths-utils
 * @author
 *  [{@link https://github.com/apercova|github@apercova}],
 *  [{@link https://twitter.com/apercova|twitter@apercova}],
 *  [{@link https://www.npmjs.com/~apercova|npmjs/~apercova}]
 *
 * @since 1.2.0
 */
const fs = require('fs');

/**
 * pathDoesExistSync - Determines whether a path exists or not.
 *
 * @param  {string}  somePath Path to test for existence.
 * @return {boolean}          true if given path does exist. false otherwise.
 */
function pathDoesExistSync(somePath) {
  try {
    fs.accessSync(somePath || '', fs.constants.F_OK);
    return true;
  } catch (e) {
    return false;
  }
}

/**
 * getPathStatsSync - Retrieves path stats.
 *
 * @param  {string}   somePath Path to get stats from.
 * @return {fs.Stats}          Path stats.
 */
function getPathStatsSync(somePath) {
  return fs.statSync(somePath);
}

/**
 * pathIsDirectory - Evaluates wheter a given path is a directory or not.
 *
 * @param  {string} somePath       Path to evaluate.
 * @param  {string} checkExistense Indicates whether check for path to exist. Default is false.
 * @return {boolean}               true if path is a directory. false otherwise.
 */
function pathIsDirectory(somePath, checkExistense) {
  let res = checkExistense ? this.pathDoesExistSync(somePath) : true;
  return res && this.getPathStatsSync(somePath).isDirectory();
}

module.exports = { pathDoesExistSync, getPathStatsSync, pathIsDirectory };