108 lines
3.0 KiB
JavaScript
108 lines
3.0 KiB
JavaScript
/*
|
|
* Author : OBKoro1
|
|
* Date : 2019-12-19 20:23:57
|
|
* LastEditors : OBKoro1
|
|
* LastEditTime : 2019-12-23 19:56:54
|
|
* FilePath : /autoCommit/index.js
|
|
* Description : 自动commit
|
|
* https://github.com/OBKoro1
|
|
*/
|
|
|
|
const { execSync } = require('child_process');
|
|
const moment = require('moment');
|
|
const fs = require('fs');
|
|
|
|
class autoCommit {
|
|
constructor() {
|
|
this.init();
|
|
}
|
|
getData() {
|
|
this.getAllDay(this.paramsObj.beginDay, this.paramsObj.endDay);
|
|
this.readyCommit();
|
|
console.log('timeArr', this.timeArr);
|
|
}
|
|
formatTime(time) {
|
|
return `${time} 08:00`;
|
|
}
|
|
getAllDay(begin, end) {
|
|
this.timeArr = [];
|
|
const beginSplit = begin.split('-');
|
|
const endSplit = end.split('-');
|
|
const beginDate = new Date();
|
|
beginDate.setUTCFullYear(beginSplit[0], beginSplit[1] - 1, beginSplit[2]);
|
|
const endDate = new Date();
|
|
endDate.setUTCFullYear(endSplit[0], endSplit[1] - 1, endSplit[2]);
|
|
const beginNumber = beginDate.getTime();
|
|
const endNumber = endDate.getTime();
|
|
for (let k = beginNumber; k <= endNumber; ) {
|
|
const day = new Date(parseInt(k));
|
|
const dayFormat = moment(day).format('YYYY-MM-DD');
|
|
this.timeArr.push(dayFormat);
|
|
k = k + 24 * 60 * 60 * 1000;
|
|
}
|
|
}
|
|
// 只commit今天
|
|
commitToday() {
|
|
const time = moment().format('DD/MM/YYYY HH:MM:ss');
|
|
// TODO:
|
|
}
|
|
init() {
|
|
let paramsObj = {
|
|
beginDay: '2019-02-02',
|
|
endDay: '2019-03-02',
|
|
itemSrc: '../../testCommit', // 要commit的项目地址
|
|
commitNumber: 1 // 每天commit 次数
|
|
};
|
|
let defaultOption = {
|
|
endDay: moment().format('YYYY-MM-DD'), // 默认为今天
|
|
fileSrc: `${paramsObj.itemSrc}/commit.md`
|
|
};
|
|
this.paramsObj = paramsObj;
|
|
this.getData();
|
|
// this.commit();
|
|
}
|
|
readyCommit() {
|
|
// 遍历日期
|
|
this.timeArr.forEach(item => {
|
|
// 每个日期commit次数
|
|
for (let i = 0; i++; i < this.paramsObj.commitNumber) {
|
|
let time = this.formatTime(item); // 2019-01-02 08:00
|
|
time = moment(time).format(); // 2019-01-02T00:00:00+0800
|
|
fs.writeFileSync(
|
|
`${this.paramsObj.itemSrc}/commit.md`,
|
|
`${time}${i}`,
|
|
'utf-8'
|
|
);
|
|
console.log('each', time);
|
|
}
|
|
// this.commit()
|
|
});
|
|
}
|
|
commit(commitTime) {
|
|
// git commit --amend --date="2019-01-02T00:00:00+0800" -am 'autoCommit'
|
|
// TODO: cd 项目 重写文件和commit
|
|
this.myExecSync(
|
|
`cd ${this.paramsObj.itemSrc} && git add . && git commit -m 'autoCommit' --date='${commitTime}' && git pull && git push origin master`
|
|
);
|
|
}
|
|
|
|
myExecSync(cmd) {
|
|
// 除了该方法直到子进程完全关闭后才返回 执行完毕 返回
|
|
try {
|
|
const res = execSync(cmd, {
|
|
encoding: 'utf8',
|
|
timeout: 0,
|
|
maxBuffer: 200 * 1024,
|
|
killSignal: 'SIGTERM',
|
|
cwd: undefined,
|
|
env: undefined
|
|
});
|
|
return res;
|
|
} catch (err) {
|
|
console.log(`执行命令出错:${cmd}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
new autoCommit();
|