UNPKG

@arc-fusion/cli

Version:

CLI for running Arc Fusion on your local machine

74 lines (64 loc) 1.39 kB
'use strict' const childProcess = require('child_process') const fs = require('fs') const path = require('path') const { promisify } = require('util') const exec = promisify(childProcess.exec) const access = promisify(fs.access) const copyFile = promisify(fs.copyFile) const mkdir = promisify(fs.mkdir) const readdir = promisify(fs.readdir) const readFile = promisify(fs.readFile) const stat = promisify(fs.stat) const writeFile = promisify(fs.writeFile) async function mkdirp (dir) { try { const parent = path.dirname(dir) await ( (parent && parent !== dir) ? mkdirp(parent) : Promise.resolve() ) await mkdir(dir) } catch (e) {} } async function dirExists (dirPath) { try { await access(dirPath.replace(/\/*$/, '/')) return true } catch (_) { return false } } async function fileExists (filePath) { try { await access(filePath) return true } catch (_) { return false } } async function gentleCopy (src, dest) { await mkdirp(path.dirname(dest)) if (!(await fileExists(dest))) { return copyFile(src, dest) } } async function touch (filePath) { await mkdirp(path.dirname(filePath)) if (!(await fileExists(filePath))) { return writeFile(filePath, '') } } module.exports = { exec, dirExists, fileExists, gentleCopy, mkdirp, readdir, readFile, stat, touch, writeFile }