UNPKG

2.08 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var fs = require("fs");
4var path = require("path");
5function invertMap(obj, prop) {
6 var ret = {};
7 Object.keys(obj).forEach(function (key) {
8 var v = prop ? obj[key][prop] : obj[key];
9 (ret[v] || (ret[v] = [])).push(key);
10 });
11 return ret;
12}
13exports.invertMap = invertMap;
14function filterMap(xs, f) {
15 var result = [];
16 xs.forEach(function (x) {
17 var mapped = f(x);
18 if (mapped !== undefined)
19 result.push(mapped);
20 });
21 return result;
22}
23exports.filterMap = filterMap;
24function makeModuleNameNoVer(name) {
25 var atPos = name.indexOf("@", 1); // 1 は scoped module の prefix 避け
26 return (atPos !== -1) ? name.substr(0, atPos) : name;
27}
28exports.makeModuleNameNoVer = makeModuleNameNoVer;
29/**
30 * パス文字列の \ を全て / に変換する。
31 */
32// akashic-cli が扱う game.json 内ではパスはすべて / 区切りなので、
33// 環境依存を暗黙に吸収して \ と / を使い分ける path.resolve() が使えない。
34function makeUnixPath(path) {
35 return path.replace(/\\/g, "/");
36}
37exports.makeUnixPath = makeUnixPath;
38/**
39 * カレントディレクトリを変更し、戻すための関数を返す。
40 * @param dirpath 設定するカレントディレクトリ
41 */
42function chdir(dirpath) {
43 var cwd = process.cwd();
44 process.chdir(dirpath);
45 return function (err) {
46 process.chdir(cwd);
47 return err ? Promise.reject(err) : Promise.resolve();
48 };
49}
50exports.chdir = chdir;
51function mkdirpSync(p) {
52 p = path.resolve(p);
53 try {
54 fs.mkdirSync(p);
55 }
56 catch (e) {
57 if (e.code === "ENOENT") {
58 mkdirpSync(path.dirname(p));
59 mkdirpSync(p);
60 }
61 else {
62 var stat;
63 try {
64 stat = fs.statSync(p);
65 }
66 catch (e1) {
67 throw e;
68 }
69 if (!stat.isDirectory())
70 throw e;
71 }
72 }
73}
74exports.mkdirpSync = mkdirpSync;