A文件复制到B,打包,将打包文件移动到C,删除B,更新SVN还原A。

此工具的出生起因:

某渠道打包不能包含其他渠道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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值