UNPKG

2.49 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _path = _interopRequireDefault(require("path"));
7
8var _fsExtra = _interopRequireDefault(require("fs-extra"));
9
10var _chalk = _interopRequireDefault(require("chalk"));
11
12var _pkgDir = _interopRequireDefault(require("pkg-dir"));
13
14var _lodash = _interopRequireDefault(require("lodash.camelcase"));
15
16var _lodash2 = _interopRequireDefault(require("lodash.startcase"));
17
18var _ramda = require("ramda");
19
20var _cleanDirectories = _interopRequireDefault(require("./cleanDirectories"));
21
22var _copyUpdateFiles = _interopRequireDefault(require("./copyUpdateFiles"));
23
24var _readDirR = _interopRequireDefault(require("./readDirR"));
25
26function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
28const BASIC = "templates/basic/widget";
29const EXB = "templates/exb/widget";
30const normalize = (0, _ramda.compose)((0, _ramda.replace)(/\s/g, ""), _lodash2.default, _lodash.default);
31
32const createWidget = async ({
33 argv
34}) => {
35 let pkg = null;
36
37 try {
38 pkg = JSON.parse((await _fsExtra.default.readFile(_path.default.resolve(process.cwd(), "package.json"))));
39
40 if (!pkg || pkg && (pkg.arcgis.type !== "jsapi" || pkg.arcgis.type !== "exb")) {
41 console.info(_chalk.default.red.bold("The `widget` command can only be used in a `jsapi` type app scaffolded with 'arcgis-js-cli' or `exb` widgets\n"));
42 return Promise.reject(new Error("The `widget` command can only be used in a `jsapi` type app scaffolded with 'arcgis-js-cli' or `exb` widgets"));
43 }
44 } catch (err) {}
45
46 const directory = argv.type === "exb" ? EXB : BASIC;
47
48 const target = _path.default.resolve(process.cwd(), "tmp");
49
50 const dest = _path.default.resolve(process.cwd(), argv.type === "exb" ? "client" : "src");
51
52 const tests = _path.default.resolve(process.cwd(), "tests");
53
54 const name = normalize(argv.name);
55
56 try {
57 const rootDir = await (0, _pkgDir.default)(__dirname);
58 await _fsExtra.default.copy(`${rootDir}/${directory}`, target, {
59 filter: (s, d) => !s.includes("DS_Store")
60 });
61 await (0, _copyUpdateFiles.default)((0, _readDirR.default)(target), name);
62 await (0, _cleanDirectories.default)(target, dest, tests, argv.type);
63 } catch (error) {
64 console.info(_chalk.default.red.bold(`Widget creation failed: ${error.message}\n`));
65 return Promise.reject(new Error(`Widget creation failed: ${error.message}`));
66 }
67};
68
69var _default = createWidget;
70exports.default = _default;
\No newline at end of file