-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathcommit.js
More file actions
25 lines (19 loc) · 710 Bytes
/
commit.js
File metadata and controls
25 lines (19 loc) · 710 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
module.exports = class Commit {
constructor({ date, name, message }) {
this.date = date;
this.name = name;
this.message = message;
}
static fromCommitLine(line) {
const [header, entry] = line.split('\t');
const headers = header.split(' ');
const date = new Date(0);
date.setUTCSeconds(headers.slice(-2, -1));
if (date instanceof Date && isFinite(date)) {
const name = headers.slice(2, -3).join(' ');
const message = entry.split(' ').slice(1).join(' ');
return new Commit({ date, name, message });
}
throw new Error('Could not parse commit message. Date is invalid.');
}
}