Skip to content

Commit

Permalink
control over caching pre-release, stable release or latest
Browse files Browse the repository at this point in the history
  • Loading branch information
safinn authored and Dimitris committed Dec 23, 2021
1 parent a06e6c5 commit ca380fe
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 14 deletions.
13 changes: 10 additions & 3 deletions lib/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ module.exports = class Cache {
}

async refreshCache() {
const { account, repository, pre, token } = this.config
const { account, repository, pre, only_pre, token } = this.config
const repo = account + '/' + repository
const url = `https://api.github.com/repos/${repo}/releases?per_page=100`
const headers = { Accept: 'application/vnd.github.preview' }
Expand Down Expand Up @@ -106,8 +106,14 @@ module.exports = class Cache {
}

const release = data.find(item => {
const isPre = Boolean(pre) === Boolean(item.prerelease)
return !item.draft && isPre
if (item.draft) return false
if (only_pre) {
return item.prerelease
}
if (!pre) {
return !item.prerelease
}
return true
})

if (!release || !release.assets || !Array.isArray(release.assets)) {
Expand All @@ -127,6 +133,7 @@ module.exports = class Cache {
this.latest.version = tag_name
this.latest.notes = release.body
this.latest.pub_date = release.published_at
this.latest.prerelease = release.prerelease

// Clear list of download links
this.latest.platforms = {}
Expand Down
2 changes: 2 additions & 0 deletions lib/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const {
ACCOUNT: account,
REPOSITORY: repository,
PRE: pre,
ONLY_PRE: only_pre,
TOKEN: token,
URL: PRIVATE_BASE_URL,
VERCEL_URL
Expand All @@ -17,6 +18,7 @@ module.exports = hazel({
account,
repository,
pre,
only_pre,
token,
url
})
36 changes: 36 additions & 0 deletions test/cache.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,42 @@ describe('Cache', () => {
expect(typeof storage.platforms).toBe('object')
})

it('a pre-release is cached', async () => {
const config = {
account: 'zeit',
repository: 'hyper',
token: process.env.TOKEN,
url: process.env.URL,
pre: false,
only_pre: true
}

const cache = new Cache(config)
await cache.refreshCache()
const storage = cache.loadCache()

expect(typeof storage.version).toBe('string')
expect(typeof storage.platforms).toBe('object')
expect(storage.prerelease).toBe(true)
})

it('a stable release is cached', async () => {
const config = {
account: 'zeit',
repository: 'hyper',
token: process.env.TOKEN,
url: process.env.URL
}

const cache = new Cache(config)
await cache.refreshCache()
const storage = cache.loadCache()

expect(typeof storage.version).toBe('string')
expect(typeof storage.platforms).toBe('object')
expect(storage.prerelease).toBe(false)
})

it('should set platforms correctly', async () => {
const config = {
account: 'zeit',
Expand Down
77 changes: 66 additions & 11 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,10 @@ abab@^2.0.0:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==

abab@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"

abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
Expand Down Expand Up @@ -691,6 +695,12 @@ capture-exit@^1.2.0:
dependencies:
rsvp "^3.3.3"

capture-exit@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f"
dependencies:
rsvp "^3.3.3"

capture-stack-trace@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
Expand Down Expand Up @@ -972,7 +982,6 @@ cosmiconfig@^4.0.0:
is-directory "^0.3.1"
js-yaml "^3.9.0"
parse-json "^4.0.0"
require-from-string "^2.0.1"

create-error-class@^3.0.0:
version "3.0.2"
Expand Down Expand Up @@ -2260,6 +2269,18 @@ ignore-walk@^3.0.1:
dependencies:
minimatch "^3.0.4"

iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
version "0.4.23"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
dependencies:
safer-buffer ">= 2.1.2 < 3"

ignore-walk@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
dependencies:
minimatch "^3.0.4"

ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.6:
version "3.3.10"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
Expand Down Expand Up @@ -3302,6 +3323,10 @@ js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=

"js-tokens@^3.0.0 || ^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"

js-types@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/js-types/-/js-types-1.0.0.tgz#d242e6494ed572ad3c92809fc8bed7f7687cbf03"
Expand Down Expand Up @@ -3483,23 +3508,25 @@ [email protected]:
app-root-path "^2.0.1"
chalk "^2.3.1"
commander "^2.14.1"
cosmiconfig "^4.0.0"
cosmiconfig "^5.0.2"
debug "^3.1.0"
dedent "^0.7.0"
execa "^0.9.0"
find-parent-dir "^0.3.0"
is-glob "^4.0.0"
jest-validate "^22.4.0"
listr "^0.13.0"
is-windows "^1.0.2"
jest-validate "^23.0.0"
listr "^0.14.1"
lodash "^4.17.5"
log-symbols "^2.2.0"
micromatch "^3.1.8"
npm-which "^3.0.1"
p-map "^1.1.1"
path-is-inside "^1.0.2"
pify "^3.0.0"
please-upgrade-node "^3.0.1"
staged-git-files "1.1.0"
please-upgrade-node "^3.0.2"
staged-git-files "1.1.1"
string-argv "^0.0.2"
stringify-object "^3.2.2"

listr-silent-renderer@^1.1.1:
Expand Down Expand Up @@ -3536,11 +3563,11 @@ listr@^0.13.0:
resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d"
integrity sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=
dependencies:
chalk "^1.1.3"
"@samverschueren/stream-to-observable" "^0.3.0"
cli-truncate "^0.2.1"
figures "^1.7.0"
indent-string "^2.1.0"
is-observable "^0.2.0"
is-observable "^1.1.0"
is-promise "^2.1.0"
is-stream "^1.1.0"
listr-silent-renderer "^1.1.1"
Expand All @@ -3550,8 +3577,7 @@ listr@^0.13.0:
log-update "^1.0.2"
ora "^0.2.3"
p-map "^1.1.1"
rxjs "^5.4.2"
stream-to-observable "^0.2.0"
rxjs "^6.1.0"
strip-ansi "^3.0.1"

load-json-file@^2.0.0:
Expand Down Expand Up @@ -3900,6 +3926,19 @@ minizlib@^1.1.1:
dependencies:
minipass "^2.2.1"

minipass@^2.2.1, minipass@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233"
dependencies:
safe-buffer "^5.1.2"
yallist "^3.0.0"

minizlib@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
dependencies:
minipass "^2.2.1"

mixin-deep@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
Expand Down Expand Up @@ -3981,6 +4020,14 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==

needle@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
dependencies:
debug "^2.1.2"
iconv-lite "^0.4.4"
sax "^1.2.4"

[email protected]:
version "2.0.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.0.0.tgz#982bba43ecd4f2922a29cc186a6bbb0bb73fcba6"
Expand Down Expand Up @@ -4959,7 +5006,7 @@ rxjs@^5.4.2:
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc"
integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==
dependencies:
symbol-observable "1.0.1"
tslib "^1.9.0"

safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
Expand Down Expand Up @@ -5005,6 +5052,10 @@ semver-compare@^1.0.0:
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=

semver-compare@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"

semver-diff@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
Expand Down Expand Up @@ -5556,6 +5607,10 @@ trim-right@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=

tslib@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"

tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
Expand Down

0 comments on commit ca380fe

Please sign in to comment.