ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

node 自动复制粘贴并提交git

2021-12-29 22:33:41  阅读:198  来源: 互联网

标签:node src git console log 复制粘贴 fs stderr



const fs = require('fs')
let utils = require('./utils')

/**
* 允许被复制的文件后缀列表
* @type {string[]}
*/
const copyExt = ['.html', '.php']
/**
* 复制一个文件夹下的文件到另一个文件夹
* @param src 源文件夹
* @param dst 目标文件夹
*/
const copyDir = function (src, dst) {
// 读取目录中的所有文件/目录
fs.readdir(src, function (err, paths) {
if (err) {
throw err
}
utils.emptyDir(dst)
paths.forEach(function (path) {
const _src = src + '/' + path
const _dst = dst + '/' + path
let readable
let writable
fs.stat(_src, function (err, st) {
if (err) {
throw err
}
// 判断是否为文件
if (st.isFile()) {
// 允许的后缀才可以被复制
// if (utils.contains(copyExt, _src)) {
// // 创建读取流
// readable = fs.createReadStream(_src)
// // 创建写入流
// writable = fs.createWriteStream(_dst)
// // 通过管道来传输流
// readable.pipe(writable)
// } else {
//
// // console.log(_src + ' 不允许被复制!!!')
// }

setTimeout(() => {
// 创建读取流
readable = fs.createReadStream(_src)
// 创建写入流
writable = fs.createWriteStream(_dst)
// 通过管道来传输流
readable.pipe(writable)
}, 500)
}
// 如果是目录则递归调用自身
else if (st.isDirectory()) {
utils.exists(_src, _dst, copyDir)
}
})
})
})
}

// 打包后的git本地仓库的路径
const cwd = '/Users/ff/Desktop/git1/h5_build'
// 被复制的目录
utils.exists('/Users/ff/Desktop/git2/web/unpackage/dist/build/h5', cwd, copyDir)

const exec = require('child_process').exec

// 执行提交git
function autoGit () {
exec('git add .', { cwd }, function (error, stdout, stderr) {
if (error) {
errIndexLock(stderr)
console.log(stdout)
console.log(`git add 失败${stderr}`)
return false
}
console.log(`git add 成功`)

exec('git commit -am "自动提交成功"', { cwd }, function (error, stdout, stderr) {
if (error) {
errIndexLock(stderr)
console.log(stdout)
console.log(`git commit 失败${stderr}`)
} else {
console.log(`git commit 成功`)
}

exec('git push origin dev', { cwd }, function (error, stdout, stderr) {
if (error) {
console.log(stdout)
console.log(`git push 失败 ${stderr}`)
}
console.log(`git push 成功`)
})
})
})

function errIndexLock(stderr) {
// 删除文件 路径 解决提交报index.lock存在的错误
fs.exists(cwd + '/.git/index.lock', function(exists) {
if(exists && stderr.indexOf('index.lock')) {
fs.unlink(cwd + '/.git/index.lock',err=>{
if(err) return console.log(err)
})
setTimeout(() => {
autoGit()
}, 500)
}
});

}
}
setTimeout(() => {
autoGit();
}, 3000)



标签:node,src,git,console,log,复制粘贴,fs,stderr
来源: https://www.cnblogs.com/anans/p/15746980.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有