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

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

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("33[46;31mERROR SATR");
                    console.log("33[46;31mERROR 33[40;31m 未添加的SDK文件请检查", files[i]);
                    console.log("33[46;31mERROR OVER", "33[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("33[46;31mERROR SATR");
                console.log("33[46;31mERROR 33[40;31m libs目录下没有找到目标文件");
                console.log("33[46;31mERROR 33[40;31m 读取build好的屏蔽文件可能出现错误请检查");
                console.log("33[46;31mERROR OVER", "33[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("33[46;31mDEL ERROR33[40;31m 有剩余未删除文件", delectArr, "33[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("33[46;31mERROR33[40;31m 删除文件出错目录", error.path, "33[0m");
            } else {
                console.log('33[40;32m删除文件', list1, "成功", "33[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 FilesTortoiseSVNbin

rem SVN需要update文件的本地项目目录
set testPath1=

rem SVN自动更新 *** 作命令
call "%svn_home%"TortoiseProc.exe /command:update /path:"%testPath1%" /closeonend:0
exit

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5665871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存