UNPKG

1.77 kBJavaScriptView Raw
1'use strict';
2
3var path = require('path');
4var utils = module.exports = require('lazy-cache')(require);
5var fn = require;
6require = utils;
7
8/**
9 * Lazily required module dependencies
10 */
11
12require('base-questions', 'questions');
13require('cross-spawn', 'spawn');
14require('fs-exists-sync', 'exists');
15require('global-modules', 'gm');
16require('is-valid-app', 'isValid');
17require('log-utils', 'log');
18require('yargs-parser', 'parse');
19require('parser-front-matter', 'matter');
20require('resolve-dir');
21require = fn;
22
23/**
24 * Expose methods from log-utils
25 */
26
27utils.colors = utils.log.colors;
28
29/**
30 * argv options
31 */
32
33utils.opts = {
34 alias: {
35 add: 'a',
36 config: 'c',
37 configfile: 'f',
38 global: 'g',
39 help: 'h',
40 init: 'i',
41 silent: 'S',
42 verbose: 'v',
43 version: 'V',
44 remove: 'r'
45 }
46};
47
48/**
49 * Parse args with `yargs-parser`
50 */
51
52utils.parseArgs = function(argv) {
53 var obj = utils.parse(argv, utils.opts);
54 if (obj.init) {
55 obj._.push('init');
56 delete obj.init;
57 }
58 if (obj.help) {
59 obj._.push('help');
60 delete obj.help;
61 }
62 return obj;
63};
64
65/**
66 * Cast `val` to an array
67 */
68
69utils.arrayify = function(val) {
70 return [].concat(val || []);
71};
72
73/**
74 * Create a regex for matching file extensions
75 */
76
77utils.extRegex = function(exts) {
78 return new RegExp('\\.(' + utils.arrayify(exts).join('|') + ')$');
79};
80
81/**
82 * Get a home-relative filepath
83 */
84
85utils.homeRelative = function(fp) {
86 var dir = path.resolve(utils.resolveDir(fp));
87 var home = path.resolve(utils.resolveDir('~/'));
88 fp = path.relative(home, dir);
89 if (fp.charAt(0) === '/') {
90 fp = fp.slice(1);
91 }
92 return fp;
93};
94
95/**
96 * Get formatted cwd path
97 */
98
99utils.formatDir = function(cwd) {
100 return utils.colors.yellow('~/' + utils.homeRelative(cwd));
101};