Remove graphql-request dependency from changelog script

This commit is contained in:
Pavel Djundik 2020-08-17 12:46:28 +03:00
parent 1ef7d5ed49
commit f63f1abb7c
3 changed files with 23 additions and 43 deletions

View File

@ -88,7 +88,6 @@
"eslint-config-prettier": "6.11.0", "eslint-config-prettier": "6.11.0",
"eslint-plugin-vue": "6.2.2", "eslint-plugin-vue": "6.2.2",
"fuzzy": "0.1.3", "fuzzy": "0.1.3",
"graphql-request": "1.8.2",
"husky": "4.2.5", "husky": "4.2.5",
"mini-css-extract-plugin": "0.10.0", "mini-css-extract-plugin": "0.10.0",
"mocha": "8.1.1", "mocha": "8.1.1",

View File

@ -49,7 +49,7 @@ const _ = require("lodash");
const colors = require("chalk"); const colors = require("chalk");
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");
const GraphQLClient = require("graphql-request").GraphQLClient; const got = require("got");
const dayjs = require("dayjs"); const dayjs = require("dayjs");
const semver = require("semver"); const semver = require("semver");
const util = require("util"); const util = require("util");
@ -236,19 +236,31 @@ function fullChangelogUrl(v1, v2) {
// This class is a facade to fetching details about commits / PRs / tags / etc. // This class is a facade to fetching details about commits / PRs / tags / etc.
// for a given repository of our organization. // for a given repository of our organization.
class RepositoryFetcher { class RepositoryFetcher {
// Holds a GraphQLClient and the name of the repository within the // Holds a Github token and repository name
// organization https://github.com/thelounge. constructor(githubToken, repositoryName) {
constructor(graphqlClient, repositoryName) { this.githubToken = githubToken;
this.graphqlClient = graphqlClient;
this.repositoryName = repositoryName; this.repositoryName = repositoryName;
} }
// Base function that actually makes the GraphQL API call // Base function that actually makes the GraphQL API call
async fetch(query, variables = {}) { async fetch(query, variables = {}) {
return this.graphqlClient.request( const response = await got
query, .post("https://api.github.com/graphql", {
Object.assign(variables, {repositoryName: this.repositoryName}) json: {
); query: query,
variables: Object.assign(variables, {repositoryName: this.repositoryName}),
},
headers: {
Authorization: `Bearer ${this.githubToken}`,
},
})
.json();
if (!response.errors && response.data) {
return response.data;
}
throw new Error(`GraphQL request returned no data: ${JSON.stringify(response)}`);
} }
// Returns the git commit that is attached to a given tag // Returns the git commit that is attached to a given tag
@ -789,12 +801,6 @@ function extractContributors(entries) {
return Array.from(set).sort((a, b) => a.localeCompare(b, "en", {sensitivity: "base"})); return Array.from(set).sort((a, b) => a.localeCompare(b, "en", {sensitivity: "base"}));
} }
const client = new GraphQLClient("https://api.github.com/graphql", {
headers: {
Authorization: `bearer ${token}`,
},
});
// Main function. Given a version string (i.e. not a tag!), returns a changelog // Main function. Given a version string (i.e. not a tag!), returns a changelog
// entry and the list of contributors, for both pre-releases and stable // entry and the list of contributors, for both pre-releases and stable
// releases. Templates are located at the top of this file. // releases. Templates are located at the top of this file.
@ -803,7 +809,7 @@ async function generateChangelogEntry(changelog, targetVersion) {
let template; let template;
let contributors = []; let contributors = [];
const codeRepo = new RepositoryFetcher(client, "thelounge"); const codeRepo = new RepositoryFetcher(token, "thelounge");
const previousVersion = await codeRepo.fetchPreviousVersion(targetVersion); const previousVersion = await codeRepo.fetchPreviousVersion(targetVersion);
if (isPrerelease(targetVersion)) { if (isPrerelease(targetVersion)) {
@ -817,7 +823,7 @@ async function generateChangelogEntry(changelog, targetVersion) {
items = parse(codeCommitsAndPullRequests); items = parse(codeCommitsAndPullRequests);
items.milestone = await codeRepo.fetchMilestone(targetVersion); items.milestone = await codeRepo.fetchMilestone(targetVersion);
const websiteRepo = new RepositoryFetcher(client, "thelounge.github.io"); const websiteRepo = new RepositoryFetcher(token, "thelounge.github.io");
const previousWebsiteVersion = await websiteRepo.fetchPreviousVersion(targetVersion); const previousWebsiteVersion = await websiteRepo.fetchPreviousVersion(targetVersion);
const websiteCommitsAndPullRequests = await websiteRepo.fetchCommitsAndPullRequestsSince( const websiteCommitsAndPullRequests = await websiteRepo.fetchCommitsAndPullRequestsSince(
"v" + previousWebsiteVersion "v" + previousWebsiteVersion

View File

@ -2575,14 +2575,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
sha.js "^2.4.8" sha.js "^2.4.8"
cross-fetch@2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723"
integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=
dependencies:
node-fetch "2.1.2"
whatwg-fetch "2.0.4"
cross-spawn@^6.0.5: cross-spawn@^6.0.5:
version "6.0.5" version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@ -4157,13 +4149,6 @@ grapheme-splitter@^1.0.4:
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
graphql-request@1.8.2:
version "1.8.2"
resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe"
integrity sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==
dependencies:
cross-fetch "2.2.2"
growl@1.10.5: growl@1.10.5:
version "1.10.5" version "1.10.5"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
@ -5957,11 +5942,6 @@ node-addon-api@2.0.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.0.tgz#f9afb8d777a91525244b01775ea0ddbe1125483b" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.0.tgz#f9afb8d777a91525244b01775ea0ddbe1125483b"
integrity sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA== integrity sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==
node-fetch@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5"
integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=
node-forge@0.9.1: node-forge@0.9.1:
version "0.9.1" version "0.9.1"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5"
@ -9695,11 +9675,6 @@ webpack@4.44.1:
watchpack "^1.7.4" watchpack "^1.7.4"
webpack-sources "^1.4.1" webpack-sources "^1.4.1"
whatwg-fetch@2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
which-module@^2.0.0: which-module@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"