UNPKG

3.67 kBJavaScriptView Raw
1const fs = require('fs');
2const path = require("path");
3const inquirer = require('inquirer');
4const logger = require('../utils/logger');
5const utils = require("./index");
6
7let packageFile = path.resolve(process.cwd(), "package.json");
8let templateDir = path.resolve(process.cwd(), "../eeui-template");
9let templatePackageFile = path.resolve(process.cwd(), "../eeui-template/package.json");
10let iosVersionFile = path.resolve(process.cwd(), "../eeui-template/plugins/eeui/framework/ios/eeui/eeuiVersion.m");
11let iosPodspecFile = path.resolve(process.cwd(), "../eeui-template/plugins/eeui/framework/ios/eeui.podspec");
12if (!fs.existsSync(templatePackageFile)) {
13 logger.fatal(`error dir`);
14}
15
16let androidGradle = function(name, newValue) {
17 let file = templateDir + '/platforms/android/eeuiApp/build.gradle';
18 if (!fs.existsSync(file)) {
19 return "";
20 }
21 //
22 let value = "";
23 let result = fs.readFileSync(file, 'utf8');
24 let reg = new RegExp(`${name}\\s*=\\s*("*|'*)(.+?)\\1\\r*\\n`);
25 let match = result.match(reg);
26 if (utils.count(match) > 2) {
27 value = match[2].trim();
28 if (typeof newValue !== "undefined") {
29 let newResult = result.replace(new RegExp(match[0], "g"), `${name} = ${match[1]}${newValue}${match[1]}\n`);
30 fs.writeFileSync(file, newResult, 'utf8');
31 value = newValue;
32 }
33 }
34 return value;
35};
36
37inquirer.prompt([{
38 type: 'input',
39 name: 'eeuiVersionCode',
40 message: "请输入版本号",
41 default: function () {
42 return androidGradle("eeuiVersionCode") || 1;
43 },
44 validate: function (value) {
45 if (Math.ceil(value) === Math.floor(value) && Math.ceil(value) > 0) {
46 return true;
47 }
48 return '输入格式错误,版本号应为整数。';
49 }
50}, {
51 type: 'input',
52 name: 'eeuiVersionName',
53 message: "请输入版本名称",
54 default: function () {
55 return androidGradle("eeuiVersionName") || "1.0.0";
56 },
57 validate: function (value) {
58 return value !== ''
59 }
60}, {
61 type: 'confirm',
62 message: "是否要求脚手架版本与框架版本一致?",
63 name: 'cliEqual',
64}]).then(answers => {
65 //修改eeui-cli版本
66 let newResult = fs.readFileSync(packageFile, 'utf8').replace(/"version":\s*"(.*?)"/, `"version": "${answers.eeuiVersionName}"`);
67 fs.writeFileSync(packageFile, newResult, 'utf8');
68 //修改eeui-template版本
69 newResult = fs.readFileSync(templatePackageFile, 'utf8').replace(/"version":\s*"(.*?)"/, `"version": "${answers.eeuiVersionName}"`);
70 if (answers.cliEqual === true) {
71 newResult = newResult.replace(/"eeuiclimin":\s*"(.*?)"/, `"eeuiclimin": "${answers.eeuiVersionName}"`);
72 }
73 fs.writeFileSync(templatePackageFile, newResult, 'utf8');
74 //修改Android版本
75 androidGradle("eeuiVersionCode", answers.eeuiVersionCode);
76 androidGradle("eeuiVersionName", answers.eeuiVersionName);
77 //修改iOS版本
78 newResult = fs.readFileSync(iosVersionFile, 'utf8').replace(/return @"(.*?)";\s*\/\/versionCode/, `return @"${answers.eeuiVersionCode}"; //versionCode`);
79 newResult = newResult.replace(/return @"(.*?)";\s*\/\/versionName/, `return @"${answers.eeuiVersionName}"; //versionName`);
80 fs.writeFileSync(iosVersionFile, newResult, 'utf8');
81 newResult = fs.readFileSync(iosPodspecFile, 'utf8').replace(/s.version(\s*)=(\s*)"(.*?)"/, `s.version$1=$2"${answers.eeuiVersionName}"`);
82 fs.writeFileSync(iosPodspecFile, newResult, 'utf8');
83 //修改完成
84 console.log();
85 console.log("操作成功!");
86}).catch(console.error);