mirror of
https://github.com/MillironX/setup-nextflow.git
synced 2024-11-23 18:09:55 +00:00
feat: Add nf-core website API wrapper
Basically, a stand-in for OctoKit, but smarter.
This commit is contained in:
parent
a1e3fd897a
commit
ba9bc8bd26
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