t-comm
Version:
专业、稳定、纯粹的工具库
87 lines (84 loc) • 3.13 kB
JavaScript
import { a as __spreadArray } from '../tslib.es6-096fffdd.js';
import { execCommand } from '../node/node-command.mjs';
import { checkValidReplaceList } from './helper.mjs';
import '@babel/runtime/helpers/typeof';
function transformString(str) {
if (str === void 0) {
str = '';
}
return str.replace(/(\/|")/g, '\\$1');
}
function replaceContent(_a) {
var replaceList = _a.replaceList,
targetProject = _a.targetProject;
var _loop_1 = function _loop_1(item) {
var dirList = item.dirList,
to = item.to,
from = item.from,
list = item.list;
var newDir = Array.isArray(dirList) ? dirList : [dirList];
if (!(newDir === null || newDir === void 0 ? void 0 : newDir.length)) return "continue";
if (list === null || list === void 0 ? void 0 : list.length) {
checkValidReplaceList(list);
list.forEach(function (inner) {
replaceEachContent({
dirList: newDir,
to: transformString(inner[1]),
from: transformString(inner[0]),
targetProject: targetProject
});
});
return "continue";
}
if (!from || !to) return "continue";
replaceEachContent({
dirList: newDir,
to: transformString(to),
from: transformString(from),
targetProject: targetProject
});
};
for (var _i = 0, replaceList_1 = replaceList; _i < replaceList_1.length; _i++) {
var item = replaceList_1[_i];
_loop_1(item);
}
}
function execCommandInTarget(command, targetProject) {
execCommand(command, targetProject, 'inherit');
}
function replaceEachContent(_a) {
var dirList = _a.dirList,
to = _a.to,
from = _a.from,
targetProject = _a.targetProject;
for (var _i = 0, dirList_1 = dirList; _i < dirList_1.length; _i++) {
var dir = dirList_1[_i];
try {
// sed -i "" 's/@xxx\/press-ui/press-ui/g' README.md
// find . | xargs grep string # 查找当前目录下文件内容包含字符串string的文件
// 报错:RE error: illegal byte sequence'
// 解决办法:export LC_COLLATE='C'
// export LC_CTYPE='C'
// 参考:https://blog.csdn.net/wqhjfree/article/details/39032533
log("\u6B63\u5728\u66FF\u6362 ".concat(from, " to ").concat(to));
// eslint-disable-next-line @typescript-eslint/no-require-imports
var os = require('os');
var platform = os.platform();
var keyword = platform === 'linux' ? '-i' : '-i \'\'';
var command = "sed ".concat(keyword, " \"s/").concat(from, "/").concat(to, "/g\" `grep -rl \"").concat(from, "\" ").concat(dir, "` || true");
execCommandInTarget(command, targetProject);
} catch (err) {
console.log('replaceEachContent.err', err);
}
}
}
function log(content) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
// eslint-disable-next-line @typescript-eslint/no-require-imports
var symbols = require('log-symbols');
console.log.apply(console, __spreadArray(["".concat(symbols.info, " ").concat(content)], args, false));
}
export { execCommandInTarget, log, replaceContent, replaceEachContent };