mirror of
https://github.com/MillironX/setup-nextflow.git
synced 2024-11-22 01:46:04 +00:00
feat: Add nf-core website API wrapper
Basically, a stand-in for OctoKit, but smarter.
This commit is contained in:
parent
98350997f1
commit
1c4afed1ea
1 changed files with 44 additions and 0 deletions
44
src/nf-core-api-wrapper.ts
Normal file
44
src/nf-core-api-wrapper.ts
Normal file
|
@ -0,0 +1,44 @@
|
|||
import { info } from "@actions/core"
|
||||
import { downloadTool } from "@actions/tool-cache"
|
||||
import retry from "async-retry"
|
||||
import { readFileSync } from "fs"
|
||||
|
||||
import { NextflowRelease } from "./nextflow-release"
|
||||
|
||||
async function fetch_nextflow_versions_data(): Promise<object> {
|
||||
// Occasionally the connection is reset for unknown reasons
|
||||
// In those cases, retry the download
|
||||
const versionsFile = await retry(
|
||||
async () => {
|
||||
return await downloadTool("https://nf-co.re/nextflow_version")
|
||||
},
|
||||
{
|
||||
retries: 5,
|
||||
onRetry: (err: Error) => {
|
||||
info(`Download of versions.json failed, trying again. Error: ${err}`)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return JSON.parse(readFileSync(versionsFile).toString())
|
||||
}
|
||||
|
||||
export async function get_nextflow_versions(): Promise<NextflowRelease[]> {
|
||||
const version_dataset = await fetch_nextflow_versions_data()
|
||||
const versions = version_dataset["versions"]
|
||||
const nextflow_releases: NextflowRelease[] = []
|
||||
for (const element of versions) {
|
||||
const release = element as NextflowRelease
|
||||
nextflow_releases.push(release)
|
||||
}
|
||||
return nextflow_releases
|
||||
}
|
||||
|
||||
export async function get_latest_nextflow_version(
|
||||
flavor: string
|
||||
): Promise<NextflowRelease> {
|
||||
const version_dataset = await fetch_nextflow_versions_data()
|
||||
const latest_versions = version_dataset["latest"]
|
||||
const latest_version = latest_versions[flavor] as NextflowRelease
|
||||
return latest_version
|
||||
}
|
Loading…
Reference in a new issue