Browse Source

Use request-promise-native.

Herbert Vojčík 7 years ago
parent
commit
d95fa3336a
2 changed files with 36 additions and 21 deletions
  1. 34 20
      gh2gogs.js
  2. 2 1
      package.json

+ 34 - 20
gh2gogs.js

@@ -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];

+ 2 - 1
package.json

@@ -13,6 +13,7 @@
   "author": "Herbert Vojčík <herby@mailbox.sk>",
   "license": "MIT",
   "dependencies": {
-    "request": "^2.72.0"
+    "request": "^2.72.0",
+    "request-promise-native": "^1.0.3"
   }
 }