Browse Source

功能修复

master
1549469775 3 years ago
parent
commit
6f60e5748e
  1. 1
      README.MD
  2. 74
      dist/pp.cjs.js
  3. 2
      dist/pp.cjs.js.map
  4. 2
      package.json
  5. 44
      pnpm-lock.yaml
  6. 12
      src/data/data.ts
  7. 49
      src/func.ts
  8. 15
      src/index.ts
  9. 11
      src/writefile.ts

1
README.MD

@ -35,6 +35,7 @@ Commands:
* [x] 增删查模板列表
* [x] 克隆项目到本地
* [x] 克隆时ejs模板变量渲染
* [x] 代码整理
* [x] 同步功能

74
dist/pp.cjs.js

@ -150,6 +150,15 @@ var Data = (function () {
var data = this.getData();
return data[name];
};
Data.prototype.modifyUrl = function (name, opts) {
var data = this.findOne(name);
Object.keys(opts).forEach(function (v) {
if (opts[v] != undefined) {
data[v] = opts[v];
}
});
this.sync();
};
Data.prototype.addUrl = function (opts) {
var data = this.getData();
if (!data[opts.name]) {
@ -229,6 +238,7 @@ function isExist(file) {
}
return result;
}
var exclude = ['.png', '.jpg', '.jpeg', '.zip', '.rar', '.webp'];
function writefile(fromDir, toDir, opts, force) {
if (opts === void 0) { opts = {}; }
if (force === void 0) { force = false; }
@ -254,8 +264,14 @@ function writefile(fromDir, toDir, opts, force) {
encoding: "utf8",
});
try {
var html = ejs__default["default"].render(originRoot, opts);
fs__default["default"].writeFileSync(toRes, html);
var ext = path__default["default"].parse(fromRes).ext;
if (exclude.includes(ext)) {
fs__default["default"].copyFileSync(fromRes, toRes);
}
else {
var html = ejs__default["default"].render(originRoot, opts);
fs__default["default"].writeFileSync(toRes, html);
}
}
catch (e) {
errorFile.push(toRes);
@ -542,7 +558,21 @@ function onCopy(templateDir, opts) {
console.log(chalk__default["default"].red("安全起见,不覆写已存在的目录,请先删除相同目录文件夹"));
return;
}
writefile(templateDir, opts.targetDir);
var vars = {};
if (opts.p) {
try {
opts.p.split(',').forEach(function (v) {
var temp = v.split(":");
if (temp[0] != undefined && temp[1] != undefined) {
vars[temp[0]] = temp[1];
}
});
}
catch (e) {
console.log(chalk__default["default"].red("您存储的变量解析出错了,请先检查"));
}
}
writefile(templateDir, opts.targetDir, vars);
}
function onClone(name, target) {
var item = Data.getInstance().findOne(name);
@ -557,6 +587,20 @@ function onClone(name, target) {
console.log(chalk__default["default"].red("安全起见,不覆写已存在的目录,请先删除相同目录文件夹"));
return;
}
var opts = {};
if (item.p) {
try {
item.p.split(',').forEach(function (v) {
var temp = v.split(":");
if (temp[0] != undefined && temp[1] != undefined) {
opts[temp[0]] = temp[1];
}
});
}
catch (e) {
console.log(chalk__default["default"].red("您存储的变量解析出错了,请先检查"));
}
}
download__default["default"](git_url, tempPath, { clone: true }, function (err) {
if (err)
throw err;
@ -577,6 +621,16 @@ function onRemove(name) {
console.error(chalk__default["default"].red("不存在该模板"));
}
}
function onModify(name, opt) {
var http = /^(http|https)\:\/\//g;
var git = /(git|root)\@/g;
if (opt.url && !git.test(opt.url) && !http.test(opt.url)) {
console.error(chalk__default["default"].red("请添加正确的Git仓库地址"));
return;
}
Data.getInstance().modifyUrl(name, opt);
console.log(chalk__default["default"].green("修改成功"));
}
function onAdd(url, name, opt) {
var http = /^(http|https)\:\/\//g;
var git = /(git|root)\@/g;
@ -605,13 +659,25 @@ program
.command("add <url> <name>")
.option("-d --desc <desc>", "模板具体描述")
.option("-t --tag <tag>", "模板标签")
.option("-v --var <var>", "模板变量")
.description("添加一个模板仓库")
.action(onAdd);
program
.command("m <name>")
.option("-d --desc <desc>", "模板具体描述")
.option("-t --tag <tag>", "模板标签")
.option("-u --url <url>", "仓库地址")
.option("-p --p <p>", "模板变量")
.description("修改模板仓库")
.action(onModify);
program
.command("remove <name>")
.description("删除一个模板仓库")
.action(onRemove);
program.command("clone <name> <target>").description("克隆模板仓库").action(onClone);
program.command("copy <templateDir>").requiredOption("-d --targetDir <targetDir>", "目标路径").description("简单文件夹克隆").action(onCopy);
program.command("copy <templateDir>")
.requiredOption("-d --targetDir <targetDir>", "目标路径")
.option("-p --p <p>", "模板变量")
.description("简单文件夹克隆").action(onCopy);
program.parse(process.argv);
//# sourceMappingURL=pp.cjs.js.map

2
dist/pp.cjs.js.map

@ -1 +1 @@
{"version":3,"file":"pp.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"pp.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

2
package.json

@ -1,6 +1,6 @@
{
"name": "@noderun/pp",
"version": "0.0.3",
"version": "0.0.4",
"description": "命令行管理模板项目",
"main": "dist/pp.umd.js",
"module": "dist/pp.esm.js",

44
pnpm-lock.yaml

@ -35,12 +35,16 @@ specifiers:
uuid: ^8.3.2
dependencies:
chalk: registry.nlark.com/chalk/4.1.2
commander: registry.npmmirror.com/commander/8.3.0
download-git-repo: 3.0.2
ejs: 3.1.6
fs-extra: registry.nlark.com/fs-extra/9.1.0
ini: 2.0.0
node-fetch: registry.npmmirror.com/node-fetch/2.6.6
ora: registry.nlark.com/ora/5.4.1
qs: 6.10.1
tslib: registry.nlark.com/tslib/2.3.1
uuid: 8.3.2
devDependencies:
@ -56,18 +60,14 @@ devDependencies:
'@types/node-fetch': registry.nlark.com/@types/node-fetch/2.5.12
'@types/qs': 6.9.7
'@types/uuid': 8.3.1
chalk: registry.nlark.com/chalk/4.1.2
cross-env: registry.nlark.com/cross-env/7.0.3
dts-bundle: registry.npmmirror.com/dts-bundle/0.7.3
execa: registry.nlark.com/execa/4.1.0
fs-extra: registry.nlark.com/fs-extra/9.1.0
inquirer: registry.npmmirror.com/inquirer/8.2.0
lodash: registry.nlark.com/lodash/4.17.21
ora: registry.nlark.com/ora/5.4.1
rollup: registry.npmmirror.com/rollup/2.59.0
rollup-plugin-sourcemaps: registry.npmmirror.com/rollup-plugin-sourcemaps/0.6.3_0f119b75fee2067b54923714521665fe
rollup-plugin-typescript2: registry.nlark.com/rollup-plugin-typescript2/0.27.3_rollup@2.59.0+typescript@4.4.4
tslib: registry.nlark.com/tslib/2.3.1
typescript: registry.npmmirror.com/typescript/4.4.4
packages:
@ -185,7 +185,6 @@ packages:
engines: {node: '>=7.0.0'}
dependencies:
color-name: 1.1.4
dev: true
/color-name/1.1.3:
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
@ -193,7 +192,6 @@ packages:
/color-name/1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
@ -492,7 +490,6 @@ packages:
/has-flag/4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
dev: true
/has-symbol-support-x/1.4.2:
resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==}
@ -1004,7 +1001,6 @@ packages:
name: ansi-regex
version: 5.0.1
engines: {node: '>=8'}
dev: true
registry.nlark.com/ansi-styles/4.3.0:
resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz}
@ -1013,7 +1009,6 @@ packages:
engines: {node: '>=8'}
dependencies:
color-convert: 2.0.1
dev: true
registry.nlark.com/asynckit/0.4.0:
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/asynckit/download/asynckit-0.4.0.tgz}
@ -1026,7 +1021,7 @@ packages:
name: at-least-node
version: 1.0.0
engines: {node: '>= 4.0.0'}
dev: true
dev: false
registry.nlark.com/atob/2.1.2:
resolution: {integrity: sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/atob/download/atob-2.1.2.tgz}
@ -1058,7 +1053,6 @@ packages:
buffer: registry.nlark.com/buffer/5.7.1
inherits: registry.nlark.com/inherits/2.0.4
readable-stream: registry.nlark.com/readable-stream/3.6.0
dev: true
registry.nlark.com/buffer/5.7.1:
resolution: {integrity: sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/buffer/download/buffer-5.7.1.tgz}
@ -1094,7 +1088,6 @@ packages:
dependencies:
ansi-styles: registry.nlark.com/ansi-styles/4.3.0
supports-color: registry.nlark.com/supports-color/7.2.0
dev: true
registry.nlark.com/cli-cursor/3.1.0:
resolution: {integrity: sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-cursor/download/cli-cursor-3.1.0.tgz}
@ -1103,7 +1096,6 @@ packages:
engines: {node: '>=8'}
dependencies:
restore-cursor: registry.nlark.com/restore-cursor/3.1.0
dev: true
registry.nlark.com/cli-width/3.0.0:
resolution: {integrity: sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-width/download/cli-width-3.0.0.tgz}
@ -1117,7 +1109,6 @@ packages:
name: clone
version: 1.0.4
engines: {node: '>=0.8'}
dev: true
registry.nlark.com/combined-stream/1.0.8:
resolution: {integrity: sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/combined-stream/download/combined-stream-1.0.8.tgz}
@ -1175,7 +1166,6 @@ packages:
version: 1.0.3
dependencies:
clone: registry.nlark.com/clone/1.0.4
dev: true
registry.nlark.com/delayed-stream/1.0.0:
resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/delayed-stream/download/delayed-stream-1.0.0.tgz}
@ -1302,7 +1292,7 @@ packages:
graceful-fs: registry.npmmirror.com/graceful-fs/4.2.8
jsonfile: registry.nlark.com/jsonfile/6.1.0
universalify: registry.nlark.com/universalify/2.0.0
dev: true
dev: false
registry.nlark.com/fs.realpath/1.0.0:
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz}
@ -1373,7 +1363,6 @@ packages:
name: is-interactive
version: 1.0.0
engines: {node: '>=8'}
dev: true
registry.nlark.com/is-module/1.0.0:
resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-module/download/is-module-1.0.0.tgz}
@ -1401,7 +1390,6 @@ packages:
name: is-unicode-supported
version: 0.1.0
engines: {node: '>=10'}
dev: true
registry.nlark.com/isexe/2.0.0:
resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/isexe/download/isexe-2.0.0.tgz}
@ -1425,7 +1413,7 @@ packages:
universalify: registry.nlark.com/universalify/2.0.0
optionalDependencies:
graceful-fs: registry.npmmirror.com/graceful-fs/4.2.8
dev: true
dev: false
registry.nlark.com/locate-path/5.0.0:
resolution: {integrity: sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/locate-path/download/locate-path-5.0.0.tgz}
@ -1450,7 +1438,6 @@ packages:
dependencies:
chalk: registry.nlark.com/chalk/4.1.2
is-unicode-supported: registry.nlark.com/is-unicode-supported/0.1.0
dev: true
registry.nlark.com/magic-string/0.25.7:
resolution: {integrity: sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/magic-string/download/magic-string-0.25.7.tgz}
@ -1480,7 +1467,6 @@ packages:
name: mimic-fn
version: 2.1.0
engines: {node: '>=6'}
dev: true
registry.nlark.com/minimist/0.1.0:
resolution: {integrity: sha1-md9lelJXTCHJBXSX33QnkLK0wN4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/minimist/download/minimist-0.1.0.tgz}
@ -1515,7 +1501,6 @@ packages:
engines: {node: '>=6'}
dependencies:
mimic-fn: registry.nlark.com/mimic-fn/2.1.0
dev: true
registry.nlark.com/ora/5.4.1:
resolution: {integrity: sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ora/download/ora-5.4.1.tgz}
@ -1532,7 +1517,6 @@ packages:
log-symbols: registry.nlark.com/log-symbols/4.1.0
strip-ansi: registry.npmmirror.com/strip-ansi/6.0.1
wcwidth: registry.nlark.com/wcwidth/1.0.1
dev: true
registry.nlark.com/os-tmpdir/1.0.2:
resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/os-tmpdir/download/os-tmpdir-1.0.2.tgz}
@ -1625,7 +1609,6 @@ packages:
inherits: registry.nlark.com/inherits/2.0.4
string_decoder: registry.nlark.com/string_decoder/1.1.1
util-deprecate: registry.nlark.com/util-deprecate/1.0.2
dev: true
registry.nlark.com/resolve/1.17.0:
resolution: {integrity: sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/resolve/download/resolve-1.17.0.tgz?cache=0&sync_timestamp=1631501917799&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fresolve%2Fdownload%2Fresolve-1.17.0.tgz}
@ -1652,7 +1635,6 @@ packages:
dependencies:
onetime: registry.nlark.com/onetime/5.1.2
signal-exit: registry.npmmirror.com/signal-exit/3.0.5
dev: true
registry.nlark.com/rollup-plugin-typescript2/0.27.3_rollup@2.59.0+typescript@4.4.4:
resolution: {integrity: sha1-zZRVrAJtMlsgxXKNLMVKCKdxtos=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/rollup-plugin-typescript2/download/rollup-plugin-typescript2-0.27.3.tgz}
@ -1683,7 +1665,6 @@ packages:
resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz}
name: safe-buffer
version: 5.1.2
dev: true
registry.nlark.com/safer-buffer/2.1.2:
resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz}
@ -1742,7 +1723,6 @@ packages:
version: 1.1.1
dependencies:
safe-buffer: registry.nlark.com/safe-buffer/5.1.2
dev: true
registry.nlark.com/strip-final-newline/2.0.0:
resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz}
@ -1758,7 +1738,6 @@ packages:
engines: {node: '>=8'}
dependencies:
has-flag: 4.0.0
dev: true
registry.nlark.com/through/2.3.8:
resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/through/download/through-2.3.8.tgz}
@ -1791,7 +1770,7 @@ packages:
resolution: {integrity: sha1-6KM1rdXOrlGqJh0ypJAVjvBC7wE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/tslib/download/tslib-2.3.1.tgz}
name: tslib
version: 2.3.1
dev: true
dev: false
registry.nlark.com/universalify/0.1.2:
resolution: {integrity: sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz}
@ -1805,13 +1784,12 @@ packages:
name: universalify
version: 2.0.0
engines: {node: '>= 10.0.0'}
dev: true
dev: false
registry.nlark.com/util-deprecate/1.0.2:
resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz}
name: util-deprecate
version: 1.0.2
dev: true
registry.nlark.com/wcwidth/1.0.1:
resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/wcwidth/download/wcwidth-1.0.1.tgz}
@ -1819,7 +1797,6 @@ packages:
version: 1.0.1
dependencies:
defaults: registry.nlark.com/defaults/1.0.3
dev: true
registry.nlark.com/webidl-conversions/3.0.1:
resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/webidl-conversions/download/webidl-conversions-3.0.1.tgz}
@ -1948,7 +1925,6 @@ packages:
name: cli-spinners
version: 2.6.1
engines: {node: '>=6'}
dev: true
registry.npmmirror.com/commander/2.20.3:
resolution: {integrity: sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1634887824095&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz}
@ -2165,7 +2141,6 @@ packages:
resolution: {integrity: sha1-nj6MwMdamUcrRDIQM6dwLnc4JS8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.5.tgz}
name: signal-exit
version: 3.0.5
dev: true
registry.npmmirror.com/string-width/4.2.3:
resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string-width/download/string-width-4.2.3.tgz}
@ -2185,7 +2160,6 @@ packages:
engines: {node: '>=8'}
dependencies:
ansi-regex: registry.nlark.com/ansi-regex/5.0.1
dev: true
registry.npmmirror.com/tr46/0.0.3:
resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tr46/download/tr46-0.0.3.tgz}

12
src/data/data.ts

@ -6,7 +6,7 @@ import config from "@/config";
import {readIniFile, writeIniFile} from "@/util";
const dataPath = config.listPath
type a = keyof { url?: string, desc?:string, p?: string, tag?: string}
/**
*
*/
@ -47,6 +47,16 @@ export default class Data {
return data[name]
}
modifyUrl(name: string, opts: { url?: string, desc?:string, p?: string, tag?: string}){
let data = this.findOne(name);
(Object.keys(opts) as a[]).forEach((v:a)=>{
if(opts[v]!=undefined){
data[v] = opts[v]
}
})
this.sync()
}
addUrl(opts: { url: string, name: string, desc?:string, force?: boolean}){
let data = this.getData()
if(!data[opts.name]){

49
src/func.ts

@ -70,7 +70,7 @@ export function onList(opt?: { all?: boolean, tag:string }) {
});
}
export function onCopy(templateDir: string, opts: { targetDir: string }){
export function onCopy(templateDir: string, opts: { targetDir: string, p:string }){
if(!isExist(templateDir)){
console.log(
chalk.red("请提供模板目录")
@ -83,7 +83,23 @@ export function onCopy(templateDir: string, opts: { targetDir: string }){
);
return;
}
writefile(templateDir, opts.targetDir);
let vars = {}
if(opts.p){
try{
opts.p.split(',').forEach((v:string)=>{
let temp = v.split(":")
if (temp[0]!=undefined&&temp[1]!=undefined){
// @ts-ignore
vars[temp[0]] = temp[1]
}
})
}catch (e) {
console.log(
chalk.red("您存储的变量解析出错了,请先检查")
);
}
}
writefile(templateDir, opts.targetDir, vars);
}
export function onClone(name: string, target: string) {
@ -101,6 +117,22 @@ export function onClone(name: string, target: string) {
);
return;
}
let opts = {}
if(item.p){
try{
item.p.split(',').forEach((v:string)=>{
let temp = v.split(":")
if (temp[0]!=undefined&&temp[1]!=undefined){
// @ts-ignore
opts[temp[0]] = temp[1]
}
})
}catch (e) {
console.log(
chalk.red("您存储的变量解析出错了,请先检查")
);
}
}
download(git_url, tempPath, { clone: true }, function (err: Error) {
if (err) throw err;
console.log("临时文件夹为:" + tempPath);
@ -121,7 +153,18 @@ export function onRemove(name: string) {
}
}
export function onAdd(url: string, name: string, opt: { desc?: string,tag?:string }) {
export function onModify(name: string, opt: { desc?: string, url?:string,tag?:string,p?:string }) {
const http = /^(http|https)\:\/\//g;
const git = /(git|root)\@/g;
if (opt.url&&!git.test(opt.url) && !http.test(opt.url)) {
console.error(chalk.red("请添加正确的Git仓库地址"));
return;
}
Data.getInstance().modifyUrl(name, opt);
console.log(chalk.green("修改成功"));
}
export function onAdd(url: string, name: string, opt: { desc?: string,tag?:string,var?:string }) {
const http = /^(http|https)\:\/\//g;
const git = /(git|root)\@/g;
if (!git.test(url) && !http.test(url)) {

15
src/index.ts

@ -24,15 +24,26 @@ program
.command("add <url> <name>")
.option("-d --desc <desc>", "模板具体描述")
.option("-t --tag <tag>", "模板标签")
.option("-v --var <var>", "模板变量")
.description("添加一个模板仓库")
.action(func.onAdd);
program
.command("m <name>")
.option("-d --desc <desc>", "模板具体描述")
.option("-t --tag <tag>", "模板标签")
.option("-u --url <url>", "仓库地址")
.option("-p --p <p>", "模板变量")
.description("修改模板仓库")
.action(func.onModify);
program
.command("remove <name>")
.description("删除一个模板仓库")
.action(func.onRemove);
program.command("clone <name> <target>").description("克隆模板仓库").action(func.onClone);
program.command("copy <templateDir>").requiredOption("-d --targetDir <targetDir>", "目标路径").description("简单文件夹克隆").action(func.onCopy);
program.command("copy <templateDir>")
.requiredOption("-d --targetDir <targetDir>", "目标路径")
.option("-p --p <p>", "模板变量")
.description("简单文件夹克隆").action(func.onCopy);
program.parse(process.argv);

11
src/writefile.ts

@ -31,6 +31,8 @@ export function isExist (file: string) {
return result
}
const exclude = ['.png','.jpg','.jpeg','.zip','.rar','.webp']
export default function writefile (fromDir: string, toDir: string, opts = {}, force = false) {
if (!fromDir) {
console.log(chalk.red("缺少模板目录"))
@ -54,8 +56,13 @@ export default function writefile (fromDir: string, toDir: string, opts = {}, fo
encoding: "utf8",
});
try{
const html = ejs.render(originRoot, opts);
fs.writeFileSync(toRes, html);
let ext = path.parse(fromRes).ext
if(exclude.includes(ext)){
fs.copyFileSync(fromRes, toRes)
}else {
const html = ejs.render(originRoot, opts);
fs.writeFileSync(toRes, html);
}
}catch (e) {
errorFile.push(toRes)
errors.push(e)

Loading…
Cancel
Save