-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
71 lines (63 loc) · 2.27 KB
/
index.js
File metadata and controls
71 lines (63 loc) · 2.27 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'use strict';
const url = require('url');
const fs = require('fs');
const path = require('path');
const uuidv5 = require('uuid/v5');
function githubDataHelper(config = {}, post = {}) {
let blogUrl = config.url
const issueUrl = new URL(url.resolve(config.github.url, 'issues/new'));
if (config.root) {
blogUrl = url.resolve(blogUrl, config.root);
}
const postUrl = url.resolve(blogUrl, post.path);
const postId = uuidv5(postUrl, uuidv5.URL)
const title = post.title;
let sourceFileName;
const postsDir = config.github.posts_dir;
if (postsDir) {
sourceFileName = path.join(postsDir, post.source.replace('_posts', ''));
} else {
const sourceDir = config.source_dir ? config.source_dir : 'source';
sourceFileName = path.join(sourceDir, post.source);
}
//for windows
sourceFileName = sourceFileName.replace(/\\/g,'/');
const editRoot = url.resolve(config.github.url, 'edit/master/');
const blobRoot = url.resolve(config.github.url, 'blob/master/');
const editUrl = url.resolve(editRoot, sourceFileName);
const sourceUrl = url.resolve(blobRoot, sourceFileName);
const author = post.author;
let template;
try {
template = fs.readFileSync('./github-issue-template.md', 'utf8');
} catch (error) {
console.error(error);
console.error('');
console.error('Use default template: ');
template = `
---
#### Document Details
⚠ *Do not edit this section.
* Article ID: {{ID}}
* 対象記事: [{{TITLE}}]({{PostURL}})
* Content Source: [{{SourceFileName}}]({{SourceURL}})
* Author: {{Author}}`;
console.log(template);
}
let documentBody = template.replace(/\{\{TITLE\}\}/g, title)
.replace(/\{\{ID\}\}/g, postId)
.replace(/\{\{SourceFileName\}\}/g, sourceFileName)
.replace(/\{\{SourceURL\}\}/g, sourceUrl)
.replace(/\{\{PostURL\}\}/g, postUrl)
.replace(/\{\{Author\}\}/g, author ? author : '')
.replace('\r\n', '\n');
issueUrl.searchParams.append('title', '');
issueUrl.searchParams.append('body', documentBody);
return {
postId,
issueUrl: issueUrl.href,
sourceUrl: sourceUrl,
editUrl: editUrl
}
}
hexo.extend.helper.register('githubData', githubDataHelper);