此工具的出生起因:
某渠道打包不能包含其他渠道SDK文件,所以每次打包前要将其他渠道SDK文件屏蔽比较麻烦,种种原因吧需要一个半自动的工具来完成操作。
缺点:
随着渠道的增加需要及时添加新增的SDK文件 也算是一劳半永逸吧
更新中...............
需要引入的模块
var path = require("path");
var fs = require("fs");
/**替换的文件夹名称需要往后加
* 此数组用来做一些文件对比
*/
var delectArr = [
'XX渠道文件',
'XX渠道文件'
];
A文件复制到B:
var route = "./Files/";//A的地址
var copyRoute = "";//B的地址
var copyConfig = function () {
//先读取到需要屏蔽的SDK文件
fs.readdir(route, function (err, files) {
(function iterator(i) {
if (i == files.length) return;
fs.stat(path.join(route, files[i]), function (err, data) {
if (data.isFile() && delectArr.indexOf(files[i]) != -1) {
copyFile(files[i]);
} else if (data.isFile() && delectArr.indexOf(files[i]) == -1) {
console.log("\033[46;31mERROR SATR");
console.log("\033[46;31mERROR \033[40;31m 未添加的SDK文件请检查", files[i]);
console.log("\033[46;31mERROR OVER", "\033[0m");
}
iterator(i + 1);
});
})(0);
});
//复制需要屏蔽的SDK文件
var copyFile = function (list1) {
// console.log("将", list1, "文件复制到", copyRoute + "目录下");
fs.copyFile(route + list1, copyRoute + list1, function (err) {
if (err) console.log('something wrong was happened: ', err)
else console.log('文件' + list1 + '复制成功');
})
}
}
打包就不说了
将打包文件移动到C
var moveRoute = "";//打包文件目录
var moveCopyRoute = "";//C目录
var fileName = "";//打包文件名称
var moveConfig = function () {
//读取build好的屏蔽文件
fs.readdir(moveRoute, function (err, files) {
(function iterator(i) {
if (i == files.length) {
console.log("\033[46;31mERROR SATR");
console.log("\033[46;31mERROR \033[40;31m libs目录下没有找到目标文件");
console.log("\033[46;31mERROR \033[40;31m 读取build好的屏蔽文件可能出现错误请检查");
console.log("\033[46;31mERROR OVER", "\033[0m");
return;
}
fs.stat(path.join(moveRoute, files[i]), function (err, data) {
if (data.isFile() && files[i] == fileName) {
copyFile(files[i]);
return;
}
iterator(i + 1);
});
})(0);
});
//复制build好的屏蔽文件
var copyFile = function (list1) {
// console.log("将", list1, "文件复制到", copyRoute + "目录下");
fs.copyFile(moveRoute + list1, moveCopyRoute + list1, function (err) {
if (err) console.log('移动到华为的文件发生错误请检查: ', err)
else {
console.log('文件' + list1 + '复制成功');
delcetConfig();
}
})
}
}
删除B
var delcetRoute = "";//B的目录
var delcetConfig = function () {
fs.readdir(delcetRoute, function (err, files) {
(function iterator(i) {
if (i == files.length) {
if (!delectArr || delectArr.length > 0) {
console.log("\033[46;31mDEL ERROR\033[40;31m 有剩余未删除文件", delectArr, "\033[0m");
}
return;
}
fs.stat(path.join(delcetRoute, files[i]), function (err, data) {
if (data.isFile() && delectArr.indexOf(files[i]) != -1) {
delectFile(files[i]);
}
iterator(i + 1);
});
})(0);
});
var delectFile = function (list1) {
fs.unlink(delcetRoute + list1, function (error) {
if (error) {
console.log("\033[46;31mERROR\033[40;31m 删除文件出错目录", error.path, "\033[0m");
} else {
console.log('\033[40;32m删除文件', list1, "成功", "\033[0m");
let index = delectArr.indexOf(list1);
if (index != -1) delectArr.splice(index, 1);
}
})
}
}
更新SVN还原A
这是创建的.cmd文件
• /closeonend:0 不自动关闭对话框
• /closeonend:1 如果没发生错误则自动关闭对话框
• /closeonend:2 如果没发生错误和冲突则自动关闭对话框
• /closeonend:3 如果没有错误、冲突和合并,会自动关闭
@echo off
rem SVN的bin目录
set svn_home=C:\Program Files\TortoiseSVN\bin\
rem SVN需要update文件的本地项目目录
set testPath1=
rem SVN自动更新操作命令
call "%svn_home%"\TortoiseProc.exe /command:update /path:"%testPath1%" /closeonend:0
exit