📦 YMFE / ykit

📄 GlobalManager.js · 56 lines
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'use strict';


// Project
let Project = require('../models/Project.js');
let projectCache = {};

exports.getProject = (cwd, options) => {
    if (!projectCache[cwd] || !options.cache) {
        projectCache[cwd] = new Project(cwd);
    }
    return projectCache[cwd];
};

// Command
exports.getCommands = () => {
    return globby.sync(['*.js'], {
        cwd: YKIT_COMMANDS_PATH
    }).map((name) => {
        return {
            name: sysPath.basename(name, '.js'),
            abbr: require(sysPath.join(YKIT_COMMANDS_PATH, name)).abbr,
            module: require(sysPath.join(YKIT_COMMANDS_PATH, name))
        };
    }).concat((readRC().commands || []).map((item) => {
        return {
            name: item.name,
            module: require(item.path)
        };
    })).filter((command) => !!command.module);
};

// ykitrc
let readRC = exports.readRC = () => {
    try {
        return JSON5.parse(fs.readFileSync(YKIT_RC, 'UTF-8'));
    } catch (e) {
        // warn('读取 .ykitrc 失败!');
    }
    return {};
};

exports.writeRC = (rc) => {
    fs.writeFileSync(YKIT_RC, JSON.stringify(rc, {}, 4), 'UTF-8');
};

let ykitConfig = {};

exports.mixYkitConf = (options) => {
    extend(true, ykitConfig, options);
};

exports.getYkitConf = (name) => {
    return ykitConfig[name];
};