AbdulElahGwaith's picture
Upload folder using huggingface_hub
88df9e4 verified
import { Octokit } from '@octokit/rest'
import { retry } from '@octokit/plugin-retry'
const DEFAULT_MIN_DAYS = 30
type Options = {
prefix: string
minDays: number
repository: string
}
export async function cleanUpOldBranches(options: Options) {
const minDays = parseInt(`${options.minDays || DEFAULT_MIN_DAYS}`, 10)
if (!process.env.GITHUB_TOKEN) {
throw new Error('You must set the GITHUB_TOKEN environment variable.')
}
const octokit = retryingOctokit(process.env.GITHUB_TOKEN)
const [owner, repo] = options.repository.split('/')
const { data: refs } = await octokit.request(
'GET /repos/{owner}/{repo}/git/matching-refs/{ref}',
{
owner,
repo,
ref: `heads/${options.prefix}`,
},
)
for (const ref of refs) {
const branchName = ref.ref.replace('refs/heads/', '')
const { data: branch } = await octokit.request('GET /repos/{owner}/{repo}/branches/{branch}', {
owner,
repo,
branch: branchName,
})
const { name, commit } = branch
if (!commit.commit.author || !commit.commit.author.date) continue
const lastUpdated = new Date(commit.commit.author.date)
const ageDays = (Date.now() - lastUpdated.getTime()) / (1000 * 60 * 60 * 24)
console.log(
`Branch ${name} was last updated ${ageDays.toFixed(1)} days ago (${lastUpdated.toISOString()})`,
)
if (ageDays > minDays) {
console.log(`Deleting branch ${name} !!`)
await octokit.request('DELETE /repos/{owner}/{repo}/git/refs/{ref}', {
owner,
repo,
ref: `heads/${name}`,
})
} else {
console.log(`Branch ${name} is not old enough (min days: ${minDays})`)
}
}
}
function retryingOctokit(token: string) {
const RetryingOctokit = Octokit.plugin(retry)
return new RetryingOctokit({
auth: `token ${token}`,
})
}