1 | const fse = require("fs-extra");
|
2 | const mtldev = require("mtl-dev-sdk");
|
3 | const utils = require("./m_util.js");
|
4 | const inquirer = require("inquirer");
|
5 | const shell = require("shelljs");
|
6 | const join = require("path").join;
|
7 |
|
8 | const promptList = [
|
9 | {
|
10 | type: "list",
|
11 | message: "请选择插件模板:",
|
12 | name: "name",
|
13 | choices: ["helloWord"],
|
14 | filter: function(val) {
|
15 |
|
16 | return val;
|
17 | }
|
18 | }
|
19 | ];
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | async function createPlugin( source ) {
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | if (utils.isMtlProject()) {
|
33 | return utils.consoleLog(" 请不要在 mtl 工程中创建原生插件 ,这样会导致工程报错!!!"); ;
|
34 | }
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | let plugins;
|
44 | if (source=="mtl"){
|
45 | plugins = mtldev.getPluginInfos(source);
|
46 | }else{
|
47 | plugins = mtldev.getPluginInfos("upesn");
|
48 | }
|
49 | if (!plugins || plugins.length <= 0) {
|
50 | return utils.consoleLog("当前没有模板可用-");
|
51 | }
|
52 | getPluginsOptionByTl(plugins);
|
53 | }
|
54 |
|
55 |
|
56 |
|
57 | function getPluginsOptionByTl( plugins) {
|
58 | utils.consoleLog(JSON.stringify(plugins));
|
59 | let list = [];
|
60 | let urls ={};
|
61 | for (let key in plugins){
|
62 | let va = plugins[key].name;
|
63 |
|
64 | urls[va] = plugins[key].url;
|
65 | list.push(va)
|
66 | }
|
67 | if(list.length <=0 ){
|
68 | return utils.consoleLog("前没有模板可用");
|
69 | }
|
70 | promptList[0].choices = list;
|
71 | inquirer.prompt(promptList).then(answers => {
|
72 | utils.consoleLog(answers.name);
|
73 |
|
74 | for (let key in plugins){
|
75 | if(answers.name.trim() == plugins[key].name ){
|
76 | downloadPluginTl(answers.name,plugins[key].url);
|
77 | }
|
78 | }
|
79 |
|
80 | });
|
81 | }
|
82 |
|
83 |
|
84 | function downloadPluginTl(tl,url) {
|
85 | utils.consoleLog("插件模板下载地址:"+url);
|
86 | let workspace = shell.pwd().toString();
|
87 | if (fse.existsSync(tl)) {
|
88 | return utils.consoleLog(
|
89 | "本地已存在- " + tl + " 插件 ,同一目录下不能重名!如果想要下载新模板,可以将本地模板文件夹改名。"
|
90 | );
|
91 | }
|
92 | let result = mtldev.downloadPluginByTemplate(workspace, tl, url);
|
93 | let code = result.code;
|
94 | if (code == 200) {
|
95 | utils.consoleLog(`插件模板创建完成: ${tl}`);
|
96 | } else {
|
97 | utils.consoleLog(JSON.stringify(result));
|
98 | }
|
99 | }
|
100 |
|
101 | module.exports = {
|
102 | createPlugin
|
103 | };
|
104 |
|