AutoCommit/src/index.js

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();