Implemented github-wrapper with return type declarations

dependabot/npm_and_yarn/BuildServer/eslint-7.2.0
Inga 🏳‍🌈 8 years ago
parent 4346148207
commit 89f8b61713
  1. 3
      BuildServer/lib/builder.ts
  2. 37
      BuildServer/lib/commenter.ts
  3. 48
      BuildServer/lib/github-wrapper.ts
  4. 2
      BuildServer/types.d.ts

@ -8,6 +8,7 @@ import { join } from "path";
import settings from "../settings";
import { ReportResult } from "../types";
import { createGithub } from "./github-wrapper";
import { gitLoader } from "./git/loader";
import { send as sendMail } from "./mail-sender";
import { writeReport } from "./report-processor";
@ -45,7 +46,7 @@ const notifyStatus = (options, notifyStatusCallback) => {
target_url: `${settings.siteRoot}status/${options.owner}/${options.reponame}/${options.hash}`,
};
settings.createGithub(options.owner).repos.createStatus(status, (createStatusErr) => {
createGithub(options.owner).repos.createStatus(status, (createStatusErr) => {
if (createStatusErr) {
console.log(`Error while creating status: ${createStatusErr}`);
console.log(status);

@ -3,8 +3,21 @@
import * as _ from "underscore";
import settings from "../settings";
import { createGithub, IGithub } from "./github-wrapper";
import { getStatusMessageFromRelease } from "./report-processor";
interface ICommentOnPullRequestOptions {
readonly action: string;
readonly app: any;
readonly baseRepoOptions: any;
readonly headRepoOptions: any;
}
interface ICheckPullRequestOptions extends ICommentOnPullRequestOptions {
readonly github: IGithub;
readonly onTenthAttempt: () => void;
}
const featureNamePattern = /^feature-(\d+)(?:-[a-zA-Z0-9]+)+$/;
const versionNamePattern = /^v\d+(\.\d+)*$/;
const masterNamePattern = /^master$/;
@ -32,35 +45,35 @@ const closePullRequest = (options, message, callback) => writeComment(options, m
}, callback);
});
const checkHasIssue = (options, issueNumber, callback) => options.github.issues.get({
const checkHasIssue = (options: ICheckPullRequestOptions, issueNumber, callback) => options.github.issues.get({
number: issueNumber,
owner: options.baseRepoOptions.owner,
repo: options.baseRepoOptions.reponame,
}, (getIssueErr, result) => {
if (getIssueErr) {
if (getIssueErr.code !== httpNotFound) {
if (getIssueErr.code && getIssueErr.code !== httpNotFound) {
return callback(getIssueErr.message);
}
return callback(null, false);
}
if (!result.number) {
return callback(`Unable to get issue info for ${options.baseRepoOptions.owner}/${options.baseRepoOptions.reponame}/#${issueNumber}: ${JSON.stringify(result)}`);
if (!result) {
return callback("Result is empty");
}
if (result.number.toString() !== issueNumber) {
if (result.data.number.toString() !== issueNumber) {
return callback(null, false);
}
if (result.pull_request && result.pull_request.url) {
if (result.data.pull_request && result.data.pull_request.url) {
return callback(null, false);
}
return callback(null, true, result.title);
return callback(null, true, result.data.title);
});
const checkHasReleases = (options, callback) => options.github.repos.getReleases({
const checkHasReleases = (options: ICheckPullRequestOptions, callback) => options.github.repos.getReleases({
owner: options.baseRepoOptions.owner,
per_page: 1,
repo: options.baseRepoOptions.reponame,
@ -69,10 +82,10 @@ const checkHasReleases = (options, callback) => options.github.repos.getReleases
return callback(getReleasesErr);
}
return callback(null, result && result.length);
return callback(null, result && result.data && result.data.length);
});
const checkPullRequest = (options, callback) => {
const checkPullRequest = (options: ICheckPullRequestOptions, callback) => {
const head = options.headRepoOptions;
const base = options.baseRepoOptions;
@ -146,10 +159,10 @@ const checkPullRequest = (options, callback) => {
});
};
export const commentOnPullRequest = (originalOptions, callback) => {
export const commentOnPullRequest = (originalOptions: ICommentOnPullRequestOptions, callback) => {
const optionsGithub = {
...originalOptions,
github: settings.createGithub(originalOptions.baseRepoOptions.owner),
github: createGithub(originalOptions.baseRepoOptions.owner),
};
const options = {
...optionsGithub,

@ -0,0 +1,48 @@
"use strict";
import * as RawGithub from "github";
import settings from "../settings";
interface IHttpError extends Error {
readonly message: string;
readonly code: number;
readonly status: any;
readonly headers: any;
}
type ICallback<T> = (error: IHttpError, result?: { data: T }) => void;
interface IIssueData {
readonly id: number;
readonly number: number;
readonly state: "open" | "closed";
readonly title: string;
readonly pull_request?: {
readonly url: string;
};
}
interface IReleaseData {
readonly id: number;
}
interface IStatusData {
readonly id: number;
}
interface IGithub {
readonly issues: {
get(params: RawGithub.IssuesGetParams, callback: ICallback<IIssueData>): void;
};
readonly repos: {
createStatus(params: RawGithub.ReposCreateStatusParams, callback: ICallback<IStatusData>);
getReleases(params: RawGithub.ReposGetReleasesParams, callback: ICallback<IReleaseData[]>);
};
}
const createGithub = (repoOwner) => settings.createGithub(repoOwner) as any as IGithub;
export {
IGithub,
createGithub,
};

@ -73,5 +73,5 @@ export {
TaskProcessor,
TaskProcessorCore,
TaskProcessorCallback,
Tasks
Tasks,
}

Loading…
Cancel
Save