Skip to content

Instantly share code, notes, and snippets.

@Jolg42
Created November 5, 2021 08:46
Show Gist options
  • Save Jolg42/cdfa37fcd7686d5f5905e2d15e16c47a to your computer and use it in GitHub Desktop.
Save Jolg42/cdfa37fcd7686d5f5905e2d15e16c47a to your computer and use it in GitHub Desktop.
Run with `deno run --allow-net deno.ts`
import { Octokit } from 'https://cdn.skypack.dev/@octokit/core'
// import { Endpoints } from 'https://cdn.skypack.dev/@octokit/types'
// type listMilestonesParameters = Endpoints['GET /repos/{owner}/{repo}/milestones']['parameters']
// type listMilestonesResponse = Endpoints['GET /repos/{owner}/{repo}/milestones']['response']
const token = 'ghp_....'
const octokit = new Octokit({ auth: token })
// const repos = await octokit.request('GET /user/repos')
// console.log(repos.data)
const milestones = [
{
title: '3.5.0',
// "description": ""
due_on: '2021-11-16T07:00:00Z',
},
]
const repos = [
'studio',
'studio-code',
'prisma-engines',
'pdp-control-plane',
'prisma-examples',
'introspection-ci',
'migrations-ci',
'e2e-tests',
'language-tools',
'engines-wrapper',
'prisma-client-go',
'checkpoint.prisma.io',
'checkpoint-client',
're-introspection-ci',
// 'quaint', // no permission
'nexus-prisma',
'lens',
'migrations-team',
'prisma-private',
'error-reporting-gui',
'database-schema-examples',
]
// // https://docs.github.com/en/rest/reference/issues#milestones
// // const milestonesPrisma = await octokit.request(`GET /repos/{owner}/{repo}/milestones`)
// // console.log(milestonesPrisma)
for (let r = 0; r < repos.length; r++) {
const repo = repos[r]
// // List and close a specific milestone
const milestoneTitleToClose = '3.4.0'
if (milestoneTitleToClose) {
const milestones = await octokit.request(`GET /repos/{owner}/{repo}/milestones`, {
owner: 'prisma',
repo: repo,
})
// @ts-ignore
const milestoneToClose = milestones.data.find((it) => it.title === milestoneTitleToClose && it.state === 'open')
console.log('Found a milestone to close')
if (milestoneToClose) {
const closeMilestoneResult = await octokit.request(`patch /repos/{owner}/{repo}/milestones/{milestone_number}`, {
owner: 'prisma',
repo: repo,
milestone_number: milestoneToClose.number,
state: 'closed',
})
console.log(`Closed id:${closeMilestoneResult.data.number} title:${closeMilestoneResult.data.title}`)
}
}
// // Create milestones
// for (let m = 0; m < milestones.length; m++) {
// const milestone = milestones[m]
// const payload = {
// owner: 'prisma',
// repo: repo,
// title: milestone.title,
// // description: milestone.description,
// due_on: milestone.due_on,
// }
// try {
// const result = await octokit.request(`POST /repos/{owner}/{repo}/milestones`, payload)
// console.log(result)
// } catch (e) {
// if (e.status === 422) {
// console.log(`${repo} - ${milestone.title} already exists`)
// } else {
// throw e
// }
// }
// }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment