Files
shields/services/spack/spack.service.js
T
Axel HueblandPierre-Yves B 6cdb2a6b98 Spack Package Manager: Latest Version (#3536)
Add support for the Spack package manager (https://spack.io).
Spack is a modern multi-language, multi-variant software package
manager in high-performance computing (HPC).
2019-06-08 17:12:50 +01:00

57 lines
1.2 KiB
JavaScript

'use strict'
const Joi = require('@hapi/joi')
const { renderVersionBadge } = require('..//version')
const { BaseJsonService } = require('..')
const schema = Joi.object({
latest_version: Joi.string().required(),
}).required()
module.exports = class SpackVersion extends BaseJsonService {
static get category() {
return 'version'
}
static get route() {
return {
base: 'spack/v',
pattern: ':packageName',
}
}
static get examples() {
return [
{
title: 'Spack',
namedParams: { packageName: 'adios2' },
staticPreview: this.render({ version: '2.3.1' }),
keywords: ['hpc'],
},
]
}
static get defaultBadgeData() {
return { label: 'spack' }
}
static render({ version }) {
return renderVersionBadge({ version })
}
async fetch({ packageName }) {
const firstLetter = packageName[0]
return this._requestJson({
schema,
url: `https://packages.spack.io/api/${firstLetter}/${packageName}.json`,
errorMessages: {
404: 'package not found',
},
})
}
async handle({ packageName }) {
const pkg = await this.fetch({ packageName })
return this.constructor.render({ version: pkg['latest_version'] })
}
}