aiot-toolkit 1.0.20-importfile-dev.1 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,240 @@
1
- "use strict";var _path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_glob=_interopRequireDefault(require("glob")),_inquirer=_interopRequireDefault(require("inquirer")),_chalk=_interopRequireDefault(require("chalk")),_sharedUtils=require("@aiot-toolkit/shared-utils"),_template=_interopRequireDefault(require("@aiot-toolkit/dsl-xvm/lib/template")),_template2=_interopRequireDefault(require("@aiot-toolkit/dsl-vue/lib/template")),_utils=require("@aiot-toolkit/compiler/lib/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const allSupportedDeviceArray=["phone","tv","car","watch","tv-h5"],allSupportedDevicesString=allSupportedDeviceArray.join(",");async function generate(e,t){""===e&&(e="HelloWorld");const a=await _inquirer.default.prompt([{type:"input",name:"name",message:"Init your project",default:e}]),r=_path.default.join(process.cwd(),a.name);try{await createProject(a.name,r,t)}catch(a){_sharedUtils.colorconsole.error(a.message),a.message.match(/Please pick a new name/)&&await generate(e,t)}}async function createProject(e,t,a={}){if(_fsExtra.default.existsSync(t))throw new Error(`"${t}" exists! Please pick a new name.`);if(!(0,_sharedUtils.mkdirsSync)(t))throw new Error('failed to created folder "'+t+'"!.');const{dsl:r,deviceType:l,templateType:i,web:o,minaH5:n,minaTv:s}=a;let p="";if(i&&!l)throw new Error("there is no deviceType specified");p=(0,_utils.hyphenedToCamelCase)(`${l}-${i}`);let u=["phone"];if(s&&(u=["tv-quickapp"]),n&&(u=["tv-h5"]),l&&l.length>0){const e=l.split(",");let t=new Set,a=new Set;e.map((e=>{e=e.toLowerCase();allSupportedDeviceArray.includes(e)||a.add(e),t.add(e)})),u=Array.from(t),a.size>0&&(_sharedUtils.colorconsole.warn(`These device types have not been officially supported by Quickapp: "${Array.from(a).join(",")}"`),_sharedUtils.colorconsole.warn(`Now Quickapp officially supports device types: "${allSupportedDevicesString}"`))}let c=null,d=null;switch(r){case"vue":c=_template2.default.app.demo,d=_template2.default.app.deviceJsonTemplate;break;default:c=o?_template.default.app.webDemo:n?_template.default.app.minaH5Demo:s?_template.default.app.minaTvDemo:p&&_template.default.app[p]?_template.default.app[p]:u.includes("watch")?_template.default.app.velaDemo:_template.default.app.demo,d=_template.default.app.deviceJsonTemplate}const f=_path.default.resolve(__dirname,c);await copyFiles(t,f,{_gitignore:".gitignore"});const _={appName:e,toolkitVersion:require("../../package.json").version};(n?["package.json","manifest.json"]:["src/manifest.json","package.json"]).map((e=>_path.default.join(t,e))).forEach((e=>{let t=_fsExtra.default.readFileSync(e,"utf-8");if(t=(0,_sharedUtils.renderString)(t,_),e.includes("manifest.json")){let e=JSON.parse(t.toString());e.deviceTypeList=u,e.minAPILevel=1,t=JSON.stringify(e,null,2)}_fsExtra.default.writeFileSync(e,t)})),n||u.map((a=>{const r=`config-${a}.json`,l=_path.default.join(d,r);let i="{}";_fsExtra.default.existsSync(l)&&(i=_fsExtra.default.readFileSync(l,"utf-8")),console.log(`${e}/src/${r} created`),_fsExtra.default.writeFileSync(_path.default.join(t,`src/config-${a}.json`),i)}))}function copyFiles(e,t,a){const r=_path.default.join(t,"**/{*,.*}"),l=_glob.default.sync(r,{nodir:!0,dot:!0}).map((r=>new Promise((l=>{const i=_path.default.relative(t,r),o=_path.default.join(e,a[i]||i);_fsExtra.default.existsSync(o)?l(_chalk.default.yellow(`${(0,_sharedUtils.relateCwd)(o)} already existed.`)):(l(`${(0,_sharedUtils.relateCwd)(o)} created.`),_fsExtra.default.copySync(r,o))}))));return Promise.all(l).then((e=>{console.log(e.join("\n"))}))}module.exports=generate;
1
+ "use strict";
2
+
3
+ var _path = _interopRequireDefault(require("path"));
4
+
5
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
6
+
7
+ var _glob = _interopRequireDefault(require("glob"));
8
+
9
+ var _inquirer = _interopRequireDefault(require("inquirer"));
10
+
11
+ var _chalk = _interopRequireDefault(require("chalk"));
12
+
13
+ var _sharedUtils = require("@aiot-toolkit/shared-utils");
14
+
15
+ var _template = _interopRequireDefault(require("@aiot-toolkit/dsl-xvm/lib/template"));
16
+
17
+ var _template2 = _interopRequireDefault(require("@aiot-toolkit/dsl-vue/lib/template"));
18
+
19
+ var _utils = require("@aiot-toolkit/compiler/lib/utils");
20
+
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+
23
+ /*
24
+ * Copyright (C) 2017, hapjs.org. All rights reserved.
25
+ */
26
+ const allSupportedDeviceArray = ['phone', 'tv', 'car', 'watch', 'tv-h5'];
27
+ const allSupportedDevicesString = allSupportedDeviceArray.join(',');
28
+ /**
29
+ * 生成工程目录
30
+ * @param {String} name - 项目名
31
+ * @param {Object} options - 参数
32
+ */
33
+
34
+ async function generate(name, options) {
35
+ if (name === '') {
36
+ name = 'HelloWorld';
37
+ }
38
+
39
+ const answers = await _inquirer.default.prompt([{
40
+ type: 'input',
41
+ name: 'name',
42
+ message: 'Init your project',
43
+ default: name
44
+ }]);
45
+
46
+ const dirpath = _path.default.join(process.cwd(), answers.name);
47
+
48
+ try {
49
+ await createProject(answers.name, dirpath, options);
50
+ } catch (err) {
51
+ _sharedUtils.colorconsole.error(err.message);
52
+
53
+ if (err.message.match(/Please pick a new name/)) {
54
+ await generate(name, options);
55
+ }
56
+ }
57
+ }
58
+ /**
59
+ * 创建项目目录
60
+ * @param name 项目名
61
+ * @param dirpath 目标项目路径
62
+ */
63
+
64
+
65
+ async function createProject(name, dirpath, options = {}) {
66
+ if (_fsExtra.default.existsSync(dirpath)) {
67
+ throw new Error(`"${dirpath}" exists! Please pick a new name.`);
68
+ }
69
+
70
+ if (!(0, _sharedUtils.mkdirsSync)(dirpath)) {
71
+ throw new Error('failed to created folder "' + dirpath + '"!.');
72
+ }
73
+
74
+ const {
75
+ dsl: dslName,
76
+ deviceType: deviceTypeList,
77
+ templateType,
78
+ web: webDemo,
79
+ minaH5: minaH5Demo,
80
+ minaTv
81
+ } = options;
82
+ let finalTemplateType = '';
83
+
84
+ if (templateType && !deviceTypeList) {
85
+ throw new Error('there is no deviceType specified');
86
+ } else {
87
+ // 更新templateType值
88
+ finalTemplateType = (0, _utils.hyphenedToCamelCase)(`${deviceTypeList}-${templateType}`);
89
+ }
90
+
91
+ let finalDeviceTypeList = ['phone']; // 默认设备列表为 phone
92
+
93
+ if (minaTv) {
94
+ finalDeviceTypeList = ['tv-quickapp'];
95
+ }
96
+
97
+ if (minaH5Demo) {
98
+ finalDeviceTypeList = ['tv-h5'];
99
+ } // 获取设备类型
100
+
101
+
102
+ if (deviceTypeList && deviceTypeList.length > 0) {
103
+ const deviceTypeArray = deviceTypeList.split(',');
104
+ let deviceSet = new Set();
105
+ let notSupportedDeviceSet = new Set();
106
+ deviceTypeArray.map(deviceType => {
107
+ deviceType = deviceType.toLowerCase();
108
+ const isValidDeviceTypeFlag = allSupportedDeviceArray.includes(deviceType);
109
+
110
+ if (!isValidDeviceTypeFlag) {
111
+ notSupportedDeviceSet.add(deviceType);
112
+ }
113
+
114
+ deviceSet.add(deviceType);
115
+ });
116
+ finalDeviceTypeList = Array.from(deviceSet);
117
+
118
+ if (notSupportedDeviceSet.size > 0) {
119
+ _sharedUtils.colorconsole.warn(`These device types have not been officially supported by Quickapp: "${Array.from(notSupportedDeviceSet).join(',')}"`);
120
+
121
+ _sharedUtils.colorconsole.warn(`Now Quickapp officially supports device types: "${allSupportedDevicesString}"`);
122
+ }
123
+ } // 获取dsl名称
124
+ // 获取项目模板的路径
125
+
126
+
127
+ let tplPath = null; // 获取设备配置文件模板的路径
128
+
129
+ let deviceJsonTemplatePath = null; // 匹配路径
130
+
131
+ switch (dslName) {
132
+ case 'vue':
133
+ tplPath = _template2.default.app.demo;
134
+ deviceJsonTemplatePath = _template2.default.app.deviceJsonTemplate;
135
+ break;
136
+
137
+ default:
138
+ if (webDemo) {
139
+ tplPath = _template.default.app.webDemo;
140
+ } else if (minaH5Demo) {
141
+ tplPath = _template.default.app.minaH5Demo;
142
+ } else if (minaTv) {
143
+ tplPath = _template.default.app.minaTvDemo;
144
+ } else if (finalTemplateType && _template.default.app[finalTemplateType]) {
145
+ tplPath = _template.default.app[finalTemplateType];
146
+ } else if (finalDeviceTypeList.includes('watch')) {
147
+ tplPath = _template.default.app.velaDemo;
148
+ } else {
149
+ tplPath = _template.default.app.demo;
150
+ }
151
+
152
+ deviceJsonTemplatePath = _template.default.app.deviceJsonTemplate;
153
+ } // 拷贝project
154
+
155
+
156
+ const projectpath = _path.default.resolve(__dirname, tplPath);
157
+
158
+ await copyFiles(dirpath, projectpath, {
159
+ _gitignore: '.gitignore'
160
+ });
161
+ const renderData = {
162
+ appName: name,
163
+ toolkitVersion: require('../../package.json').version
164
+ };
165
+ const configFiles = minaH5Demo ? ['package.json', 'manifest.json'] : ['src/manifest.json', 'package.json'];
166
+ const files = configFiles.map(file => _path.default.join(dirpath, file)); // render files
167
+
168
+ files.forEach(filePath => {
169
+ let content = _fsExtra.default.readFileSync(filePath, 'utf-8');
170
+
171
+ content = (0, _sharedUtils.renderString)(content, renderData); // 加入deviceTypeList 进 manifest.json
172
+
173
+ if (filePath.includes('manifest.json')) {
174
+ let manifestJson = JSON.parse(content.toString());
175
+ manifestJson.deviceTypeList = finalDeviceTypeList; // 添加minAPILevel
176
+
177
+ manifestJson.minAPILevel = 1;
178
+ content = JSON.stringify(manifestJson, null, 2);
179
+ }
180
+
181
+ _fsExtra.default.writeFileSync(filePath, content);
182
+ });
183
+ if (minaH5Demo) return; // 配置文件json的创建
184
+
185
+ finalDeviceTypeList.map(deviceType => {
186
+ const deviceJsonName = `config-${deviceType}.json`;
187
+
188
+ const jsonTemplatePath = _path.default.join(deviceJsonTemplatePath, deviceJsonName);
189
+
190
+ let jsonContent = '{}';
191
+
192
+ if (_fsExtra.default.existsSync(jsonTemplatePath)) {
193
+ jsonContent = _fsExtra.default.readFileSync(jsonTemplatePath, 'utf-8');
194
+ }
195
+
196
+ console.log(`${name}/src/${deviceJsonName} created`);
197
+
198
+ _fsExtra.default.writeFileSync(_path.default.join(dirpath, `src/config-${deviceType}.json`), jsonContent);
199
+ });
200
+ }
201
+ /**
202
+ * 拷贝模板目录
203
+ * @param {String} dest - 目标路径
204
+ * @param {String} src - 模板文件路径
205
+ * @param {Object} alias - 别名表,可用于复制时更名
206
+ */
207
+
208
+
209
+ function copyFiles(dest, src, alias) {
210
+ // 遍历收集文件列表
211
+ const pattern = _path.default.join(src, '**/{*,.*}');
212
+
213
+ const files = _glob.default.sync(pattern, {
214
+ nodir: true,
215
+ dot: true
216
+ });
217
+
218
+ const promises = files.map(file => {
219
+ return new Promise(resolve => {
220
+ const relative = _path.default.relative(src, file);
221
+
222
+ const finalPath = _path.default.join(dest, alias[relative] || relative);
223
+
224
+ if (!_fsExtra.default.existsSync(finalPath)) {
225
+ resolve(`${(0, _sharedUtils.relateCwd)(finalPath)} created.`);
226
+
227
+ _fsExtra.default.copySync(file, finalPath);
228
+ } else {
229
+ resolve(_chalk.default.yellow(`${(0, _sharedUtils.relateCwd)(finalPath)} already existed.`));
230
+ }
231
+ });
232
+ });
233
+ return Promise.all(promises).then(messages => {
234
+ console.log(messages.join('\n'));
235
+ });
236
+ } // 创建工程目录
237
+
238
+
239
+ module.exports = generate;
2
240
  //# sourceMappingURL=init.js.map
@@ -1,2 +1,87 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.packages=packages;var _path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_glob=_interopRequireDefault(require("glob")),_sharedUtils=require("@aiot-toolkit/shared-utils"),_config=require("@aiot-toolkit/shared-utils/config"),_index=require("@aiot-toolkit/packager/lib/process/index");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}async function packages(e={}){const t=_path.default.resolve(_config.projectPath,e.file),r=_path.default.resolve(_config.projectPath,e.output),a=_glob.default.sync("**/*.*",{cwd:t});if(!a.length)return _sharedUtils.colorconsole.error(`### App Loader ### ${e.file} folder is empty!`);let o="";try{const e=_path.default.resolve(t,"manifest.json"),r=(0,_sharedUtils.readJson)(e),{package:a}=r;o=a}catch(e){throw new _sharedUtils.KnownError(e)}const{fullPackage:i}=(0,_index.createPackagesDefinition)(o);(0,_index.allocateResourceToPackages)(a,t,i);const{rpkBuffer:l}=await(0,_index.buildProjectAndOutput)(i);_fsExtra.default.emptyDirSync(r),generateDistFile(l,r,`${o}.rpk`)}function generateDistFile(e,t,r){const a=_path.default.resolve(t,r);_fsExtra.default.writeFileSync(a,e);const o=_path.default.extname(r);_sharedUtils.colorconsole.log(`### App Loader ### Generate the ${o} file:${r} in the ${(0,_sharedUtils.relateCwd)(t)} directory!`)}
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.packages = packages;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
11
+
12
+ var _glob = _interopRequireDefault(require("glob"));
13
+
14
+ var _sharedUtils = require("@aiot-toolkit/shared-utils");
15
+
16
+ var _config = require("@aiot-toolkit/shared-utils/config");
17
+
18
+ var _index = require("@aiot-toolkit/packager/lib/process/index");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ /*
23
+ * Copyright (C) 2017, hapjs.org. All rights reserved.
24
+ */
25
+
26
+ /**
27
+ * 生成一个rpk
28
+ * @param { Object } options 生成一个rpk的选项
29
+ * @param { String } options.file 需要生成rpk的文件夹
30
+ * @param { String } options.output 生成rpk的存储文件夹
31
+ */
32
+ async function packages(options = {}) {
33
+ const buildDirPath = _path.default.resolve(_config.projectPath, options.file);
34
+
35
+ const outputDirPath = _path.default.resolve(_config.projectPath, options.output); // 需要打包的文件
36
+
37
+
38
+ const files = _glob.default.sync('**/*.*', {
39
+ cwd: buildDirPath
40
+ });
41
+
42
+ if (!files.length) {
43
+ return _sharedUtils.colorconsole.error(`### App Loader ### ${options.file} folder is empty!`);
44
+ } // 获取manifest的包名作为打包生成rpk的名称
45
+
46
+
47
+ let appPackageName = '';
48
+
49
+ try {
50
+ const manifestFile = _path.default.resolve(buildDirPath, 'manifest.json');
51
+
52
+ const manifest = (0, _sharedUtils.readJson)(manifestFile);
53
+ const {
54
+ package: packageName
55
+ } = manifest;
56
+ appPackageName = packageName;
57
+ } catch (error) {
58
+ throw new _sharedUtils.KnownError(error);
59
+ } // 创建完整包定义
60
+
61
+
62
+ const {
63
+ fullPackage
64
+ } = (0, _index.createPackagesDefinition)(appPackageName); // 遍历所有文件,将文件内容buffer增加到fullPackage
65
+
66
+ (0, _index.allocateResourceToPackages)(files, buildDirPath, fullPackage); // 生成最终产出带签名的rpk文件buffer
67
+
68
+ const {
69
+ rpkBuffer
70
+ } = await (0, _index.buildProjectAndOutput)(fullPackage); // 提前清空一下输出目录
71
+
72
+ _fsExtra.default.emptyDirSync(outputDirPath); // 生成最终的rpk文件
73
+
74
+
75
+ generateDistFile(rpkBuffer, outputDirPath, `${appPackageName}.rpk`);
76
+ }
77
+
78
+ function generateDistFile(buffer, output, item) {
79
+ const outputFile = _path.default.resolve(output, item);
80
+
81
+ _fsExtra.default.writeFileSync(outputFile, buffer);
82
+
83
+ const extName = _path.default.extname(item);
84
+
85
+ _sharedUtils.colorconsole.log(`### App Loader ### Generate the ${extName} file:${item} in the ${(0, _sharedUtils.relateCwd)(output)} directory!`);
86
+ }
2
87
  //# sourceMappingURL=packages.js.map
@@ -1,2 +1,20 @@
1
- "use strict";var _sharedUtils=require("@aiot-toolkit/shared-utils/"),_createPreview=_interopRequireDefault(require("@aiot-toolkit/server/lib/preview/create-preview"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}module.exports=async function(e,{port:t}){(await(0,_createPreview.default)(e)).listen(t,(()=>{console.log(`> Visit the following address to see a preview of ${e}:\n> local: http://localhost:${t}/preview\n> LAN(Local Area Network): http://${(0,_sharedUtils.getIPv4IPAddress)()}:${t}/preview`)}))};
1
+ "use strict";
2
+
3
+ var _sharedUtils = require("@aiot-toolkit/shared-utils/");
4
+
5
+ var _createPreview = _interopRequireDefault(require("@aiot-toolkit/server/lib/preview/create-preview"));
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ /**
10
+ * Copyright (C) 2017, hapjs.org. All rights reserved.
11
+ */
12
+ module.exports = async function preview(target, {
13
+ port
14
+ }) {
15
+ const previewApp = await (0, _createPreview.default)(target);
16
+ previewApp.listen(port, () => {
17
+ console.log(`> Visit the following address to see a preview of ${target}:\n` + `> local: http://localhost:${port}/preview\n` + `> LAN(Local Area Network): http://${(0, _sharedUtils.getIPv4IPAddress)()}:${port}/preview`);
18
+ });
19
+ };
2
20
  //# sourceMappingURL=preview.js.map
@@ -1,2 +1,61 @@
1
- "use strict";var _child_process=_interopRequireDefault(require("child_process")),_os=_interopRequireDefault(require("os")),_path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_chalk=_interopRequireDefault(require("chalk"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function report(){const e=process.versions,r=_child_process.default.execSync("npm -v").toString(),o=process.arch,t=_os.default.release(),n=_os.default.type();console.log(_chalk.default.green("Collecting environmental information...")),_child_process.default.exec("npm list --json",{maxBuffer:10485760},((i,s,l)=>{if(i||l)return void console.error(i||l);const a=JSON.parse(s.toString()),u={nodeVersion:e,npmVersion:r,arch:o,osVersion:t,osType:n,dependenciesTree:a};_fsExtra.default.writeFileSync(_path.default.join(process.cwd(),"report.log"),JSON.stringify(u,null,2)),console.log(_chalk.default.green("Environmental information collected"))}))}module.exports=report;
1
+ "use strict";
2
+
3
+ var _child_process = _interopRequireDefault(require("child_process"));
4
+
5
+ var _os = _interopRequireDefault(require("os"));
6
+
7
+ var _path = _interopRequireDefault(require("path"));
8
+
9
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
10
+
11
+ var _chalk = _interopRequireDefault(require("chalk"));
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ /*
16
+ * Copyright (C) 2017, hapjs.org. All rights reserved.
17
+ */
18
+
19
+ /**
20
+ * 收集用户的环境信息,生成report.log,用于反馈和重现问题
21
+ */
22
+ function report() {
23
+ const nodeVersion = process.versions;
24
+
25
+ const npmVersion = _child_process.default.execSync(`npm -v`).toString();
26
+
27
+ const arch = process.arch; // 操作系统架构
28
+
29
+ const osVersion = _os.default.release();
30
+
31
+ const osType = _os.default.type();
32
+
33
+ console.log(_chalk.default.green('Collecting environmental information...'));
34
+
35
+ _child_process.default.exec('npm list --json', {
36
+ maxBuffer: 1024 * 1024 * 10 // 10M
37
+
38
+ }, (error, stdout, stderr) => {
39
+ if (error || stderr) {
40
+ console.error(error || stderr);
41
+ return;
42
+ }
43
+
44
+ const dependenciesTree = JSON.parse(stdout.toString());
45
+ const content = {
46
+ nodeVersion,
47
+ npmVersion,
48
+ arch,
49
+ osVersion,
50
+ osType,
51
+ dependenciesTree
52
+ };
53
+
54
+ _fsExtra.default.writeFileSync(_path.default.join(process.cwd(), 'report.log'), JSON.stringify(content, null, 2));
55
+
56
+ console.log(_chalk.default.green('Environmental information collected'));
57
+ });
58
+ }
59
+
60
+ module.exports = report;
2
61
  //# sourceMappingURL=report.js.map
@@ -1,2 +1,89 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resign=resign;var _path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_glob=_interopRequireDefault(require("glob")),_index=require("@aiot-toolkit/packager/lib/index"),_sharedUtils=require("@aiot-toolkit/shared-utils"),_config=require("@aiot-toolkit/shared-utils/config");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}async function resign(e={}){const t=_path.default.resolve(_config.projectPath,e.dest);_fsExtra.default.emptyDirSync(t);const a=_fsExtra.default.readFileSync(_path.default.resolve(_config.projectPath,e.sign,"private.pem")),r=_fsExtra.default.readFileSync(_path.default.resolve(_config.projectPath,e.sign,"certificate.pem"));let i=[],o="";e.file?(o=_path.default.resolve(process.cwd(),e.file),i=[_path.default.basename(o)]):i=_glob.default.sync("**/*.{rpks,rpk}",{cwd:_path.default.resolve(_config.projectPath,e.origin)});const l=_path.default.resolve(_config.projectPath,e.dest),s=_path.default.resolve(_config.projectPath,e.origin),n=i.map((async t=>{const i=e.file?o:_path.default.resolve(s,t);let n=_fsExtra.default.readFileSync(i);t.endsWith(".rpk")&&(n=await(0,_index.signForRpk)(n,a,r)),t.endsWith(".rpks")&&(n=await(0,_index.signForRpks)(n,a,r)),generateDistFile(n,l,t)}));await Promise.all(n)}function generateDistFile(e,t,a){const r=_path.default.resolve(t,a);_fsExtra.default.writeFileSync(r,e);const i=_path.default.extname(a);_sharedUtils.colorconsole.log(`### App Loader ### Sign the ${(0,_sharedUtils.relateCwd)(t)} directory and generate the ${i} file:${a}`)}
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resign = resign;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
11
+
12
+ var _glob = _interopRequireDefault(require("glob"));
13
+
14
+ var _index = require("@aiot-toolkit/packager/lib/index");
15
+
16
+ var _sharedUtils = require("@aiot-toolkit/shared-utils");
17
+
18
+ var _config = require("@aiot-toolkit/shared-utils/config");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ /*
23
+ * Copyright (C) 2017, hapjs.org. All rights reserved.
24
+ */
25
+
26
+ /**
27
+ * 对rpk重新签名
28
+ * @param { Object } options 重新签名的选项
29
+ * @param { String } options.sign 传入存放公钥和私钥的签名文件夹
30
+ * @param { String } options.file 需要重新签名的文件,若没有传入则使用origin文件夹
31
+ * @param { String } options.dest 重新签名之后的输出文件夹名
32
+ * @param { String } options.origin 需要重新签名的输入文件夹名,默认为dist
33
+ */
34
+ async function resign(options = {}) {
35
+ // 清除无用文件
36
+ const destDir = _path.default.resolve(_config.projectPath, options.dest);
37
+
38
+ _fsExtra.default.emptyDirSync(destDir); // 获取公钥和私钥的内容
39
+
40
+
41
+ const privatekeyContent = _fsExtra.default.readFileSync(_path.default.resolve(_config.projectPath, options.sign, 'private.pem'));
42
+
43
+ const certificateContent = _fsExtra.default.readFileSync(_path.default.resolve(_config.projectPath, options.sign, 'certificate.pem'));
44
+
45
+ let files = [];
46
+ let fullpath = '';
47
+
48
+ if (options.file) {
49
+ fullpath = _path.default.resolve(process.cwd(), options.file);
50
+ files = [_path.default.basename(fullpath)];
51
+ } else {
52
+ // 如果没有指定具体的rpk包,则对默认指定的dist中的rpk进行重新签名
53
+ files = _glob.default.sync('**/*.{rpks,rpk}', {
54
+ cwd: _path.default.resolve(_config.projectPath, options.origin)
55
+ });
56
+ }
57
+
58
+ const output = _path.default.resolve(_config.projectPath, options.dest);
59
+
60
+ const reletivePath = _path.default.resolve(_config.projectPath, options.origin);
61
+
62
+ const filePromises = files.map(async item => {
63
+ const filePath = options.file ? fullpath : _path.default.resolve(reletivePath, item);
64
+
65
+ let fileBuffer = _fsExtra.default.readFileSync(filePath);
66
+
67
+ if (item.endsWith('.rpk')) {
68
+ fileBuffer = await (0, _index.signForRpk)(fileBuffer, privatekeyContent, certificateContent);
69
+ }
70
+
71
+ if (item.endsWith('.rpks')) {
72
+ fileBuffer = await (0, _index.signForRpks)(fileBuffer, privatekeyContent, certificateContent);
73
+ }
74
+
75
+ generateDistFile(fileBuffer, output, item);
76
+ });
77
+ await Promise.all(filePromises);
78
+ }
79
+
80
+ function generateDistFile(buffer, output, item) {
81
+ const outputFile = _path.default.resolve(output, item);
82
+
83
+ _fsExtra.default.writeFileSync(outputFile, buffer);
84
+
85
+ const extName = _path.default.extname(item);
86
+
87
+ _sharedUtils.colorconsole.log(`### App Loader ### Sign the ${(0, _sharedUtils.relateCwd)(output)} directory and generate the ${extName} file:${item}`);
88
+ }
2
89
  //# sourceMappingURL=resign.js.map