mirror of
https://github.com/astral-sh/setup-uv.git
synced 2025-12-19 11:04:08 +00:00
Initial commit
This commit is contained in:
65
src/update-default-version.ts
Normal file
65
src/update-default-version.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import * as github from '@actions/github'
|
||||
import * as core from '@actions/core'
|
||||
|
||||
import {OWNER, REPO} from './utils/utils'
|
||||
import {createReadStream, promises as fs} from 'fs'
|
||||
import * as readline from 'readline'
|
||||
import * as semver from 'semver'
|
||||
|
||||
import {updateChecksums} from './download/checksum/update-known-checksums'
|
||||
|
||||
async function run(): Promise<void> {
|
||||
const checksumFilePath = process.argv.slice(2)[0]
|
||||
const defaultVersionFilePath = process.argv.slice(2)[1]
|
||||
const github_token = process.argv.slice(2)[2]
|
||||
|
||||
const octokit = github.getOctokit(github_token)
|
||||
|
||||
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
|
||||
owner: OWNER,
|
||||
repo: REPO
|
||||
})
|
||||
const downloadUrls: string[] = response.flatMap(release =>
|
||||
release.assets
|
||||
.filter(asset => asset.name.endsWith('.sha256'))
|
||||
.map(asset => asset.browser_download_url)
|
||||
)
|
||||
await updateChecksums(checksumFilePath, downloadUrls)
|
||||
|
||||
const latestVersion = response
|
||||
.map(release => release.tag_name)
|
||||
.sort(semver.rcompare)[0]
|
||||
core.setOutput('latest-version', latestVersion)
|
||||
await updateDefaultVersion(defaultVersionFilePath, latestVersion)
|
||||
}
|
||||
|
||||
async function updateDefaultVersion(
|
||||
filePath: string,
|
||||
latestVersion: string
|
||||
): Promise<void> {
|
||||
const fileStream = createReadStream(filePath)
|
||||
|
||||
const rl = readline.createInterface({
|
||||
input: fileStream
|
||||
})
|
||||
|
||||
let foundDescription = false
|
||||
const lines = []
|
||||
|
||||
for await (let line of rl) {
|
||||
if (
|
||||
!foundDescription &&
|
||||
line.includes("description: 'The version of uv to install'")
|
||||
) {
|
||||
foundDescription = true
|
||||
} else if (foundDescription && line.includes('default: ')) {
|
||||
line = line.replace(/'[^']*'/, `'${latestVersion}'`)
|
||||
foundDescription = false
|
||||
}
|
||||
lines.push(line)
|
||||
}
|
||||
|
||||
await fs.writeFile(filePath, lines.join('\n'))
|
||||
}
|
||||
|
||||
run()
|
||||
Reference in New Issue
Block a user