|
@@ -1,7 +1,7 @@
|
|
|
'use strict';
|
|
|
|
|
|
const fs = require('fs'),
|
|
|
- request = require('request');
|
|
|
+ rp = require('request-promise-native');
|
|
|
|
|
|
const sourceDir = process.argv[2],
|
|
|
sourceRepo = process.argv[3],
|
|
@@ -30,30 +30,44 @@ IssuesAndPRs = IssuesAndPRs
|
|
|
.filter(each => each.repository.slice(-sourceRepo.length) === sourceRepo)
|
|
|
.sort((a, b) => +a.url.split('/').pop() - +b.url.split('/').pop());
|
|
|
|
|
|
-function postIssue (issues) {
|
|
|
- const issue = issues.shift();
|
|
|
- if (!issue) return;
|
|
|
-
|
|
|
+function createIssue (issue) {
|
|
|
const user = userByUrl(issue.user),
|
|
|
username = user && user.name || `${user ? user.login : "???"}@github`;
|
|
|
|
|
|
- request.post(`${destUrl}/api/v1/repos/${destRepo}/issues`, {
|
|
|
- json: true,
|
|
|
- body: {
|
|
|
- title: issue.title,
|
|
|
- body: `Originally at ${issue.created_at} by ${username}${issue.closed_at ? ` closed at ${issue.closed_at}` : ""}${issue.type === "pull_request" ? " (pull request)" : ""}\r\n\r\n${issue.body}`,
|
|
|
- closed: !!issue.closed_at,
|
|
|
- labels: [] //issue.labels.map(each => each.split('/').pop())
|
|
|
- }
|
|
|
- }, (err, res, body) => {
|
|
|
- if (err) console.error(err);
|
|
|
- console.log(issue.title);
|
|
|
- console.log(res.statusCode);
|
|
|
- postIssue(issues);
|
|
|
- });
|
|
|
+ return rp
|
|
|
+ .post(`${destUrl}/api/v1/repos/${destRepo}/issues`, {
|
|
|
+ json: true,
|
|
|
+ resolveWithFullResponse: true,
|
|
|
+ body: {
|
|
|
+ title: issue.title,
|
|
|
+ body: `Originally at ${issue.created_at} by ${username}${issue.closed_at ? ` closed at ${issue.closed_at}` : ""}${issue.type === "pull_request" ? " (pull request)" : ""}\r\n\r\n${issue.body}`,
|
|
|
+ closed: !!issue.closed_at,
|
|
|
+ labels: [] //issue.labels.map(each => each.split('/').pop())
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.error(err);
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ console.log(issue.title);
|
|
|
+ if (res) console.log(res.statusCode);
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+function processIssue (issues) {
|
|
|
+ const issue = issues.shift();
|
|
|
+ if (!issue) return Promise.resolve();
|
|
|
+
|
|
|
+ return Promise.resolve()
|
|
|
+ .then(() => createIssue(issue))
|
|
|
+ .then(() => processIssue(issues));
|
|
|
}
|
|
|
|
|
|
-postIssue(IssuesAndPRs.slice());
|
|
|
+processIssue(IssuesAndPRs.slice())
|
|
|
+ .then(() => {
|
|
|
+ console.log(`${IssuesAndPRs.length} issues processed.`);
|
|
|
+ setTimeout(() => null, 600);
|
|
|
+ });
|
|
|
|
|
|
function userByUrl (url) {
|
|
|
return Users.filter(each => each.url === url)[0];
|