68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
|
// node
|
||
|
const fs = require('fs')
|
||
|
const path = require('path')
|
||
|
|
||
|
// npm
|
||
|
const fetch = require('node-fetch')
|
||
|
const semver = require('semver')
|
||
|
|
||
|
// pkg
|
||
|
const pkg = require('../package.json')
|
||
|
|
||
|
const ghBase = 'https://api.github.com'
|
||
|
const repoUrlPath = 'fomantic/Fomantic-UI'
|
||
|
const npmBase = 'https://registry.npmjs.org'
|
||
|
const npmPackage = 'fomantic-ui'
|
||
|
|
||
|
|
||
|
const getGitHubVersion = async function () {
|
||
|
return fetch(`${ghBase}/repos/${repoUrlPath}/milestones`)
|
||
|
.then(r => r.json())
|
||
|
.then(milestones => milestones.filter(m => m.title.indexOf('x') === -1).map(m => m.title).sort()[0])
|
||
|
}
|
||
|
|
||
|
const getCurrentNpmVersion = async function () {
|
||
|
return fetch(`${npmBase}/${npmPackage}`)
|
||
|
.then(r => r.json())
|
||
|
.then(p => p['dist-tags'].nightly)
|
||
|
}
|
||
|
|
||
|
const getNpmPreRelease = async function () {
|
||
|
return fetch(`${npmBase}/${npmPackage}`)
|
||
|
.then(r => r.json())
|
||
|
.then(p => p['dist-tags'].nightly)
|
||
|
.then(v => semver.prerelease(v))
|
||
|
.then(pr => pr === null ? ['beta', 0] : pr)
|
||
|
}
|
||
|
|
||
|
const getNightlyVersion = async function () {
|
||
|
const nextVersion = await getGitHubVersion()
|
||
|
const currentNightlyWithPre = semver.parse(await getCurrentNpmVersion())
|
||
|
const currentNightly = `${currentNightlyWithPre.major}.${currentNightlyWithPre.minor}.${currentNightlyWithPre.patch}`
|
||
|
|
||
|
if (!semver.gt(nextVersion, currentNightly)) {
|
||
|
if (semver.minor(nextVersion) === semver.minor(currentNightly)) {
|
||
|
const preRelease = await getNpmPreRelease()
|
||
|
|
||
|
return semver.inc(
|
||
|
`${nextVersion}-${preRelease[0]}.${preRelease[1]}`,
|
||
|
'prerelease'
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return `${nextVersion}-beta.0`
|
||
|
}
|
||
|
|
||
|
getNightlyVersion()
|
||
|
.then(nightlyVersion => {
|
||
|
pkg.version = nightlyVersion
|
||
|
})
|
||
|
.then(() => {
|
||
|
fs.writeFileSync(
|
||
|
path.resolve(__dirname, '../package.json'),
|
||
|
JSON.stringify(pkg, null, 2)
|
||
|
)
|
||
|
})
|
||
|
.then(() => console.log(`Done (${pkg.version})`))
|