Skip to content

Commit

Permalink
chore: update script now supports bumping deps in files
Browse files Browse the repository at this point in the history
  • Loading branch information
brc-dd committed Jul 15, 2024
1 parent 367a061 commit 4cd1779
Show file tree
Hide file tree
Showing 5 changed files with 441 additions and 133 deletions.
89 changes: 14 additions & 75 deletions deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions deps.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
export { abortable, deadline, debounce, delay, retry } from 'jsr:@std/async@^1.0.0-rc.4'
export { walk } from 'jsr:@std/fs@^1.0.0-rc.5'
export { serveDir, type ServeDirOptions, STATUS_CODE, STATUS_TEXT, type StatusCode } from 'jsr:@std/http@^1.0.0-rc.4'
export { joinGlobs, toFileUrl } from 'jsr:@std/path@^1.0.0-rc.4'
export { joinGlobs, toFileUrl } from 'jsr:@std/path@^1.0.0'
export { normalize as posixNormalize } from 'jsr:@std/path@^1.0.0/posix/normalize'
export { escape } from 'jsr:@std/regexp@^1.0.0-rc.1'
export { escape } from 'jsr:@std/regexp@^1.0.0'
export { watch } from 'npm:chokidar@^3.6.0'
export type { ZodType } from 'npm:zod@^3.23.8'
22 changes: 17 additions & 5 deletions dev_deps.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import { $ as _$ } from 'jsr:@david/dax@^0.41.0'

export { parseFromJson } from 'https://deno.land/x/[email protected]/mod.ts'
export {
Confirm,
type ConfirmOptions,
Expand All @@ -6,13 +9,22 @@ export {
Select,
type SelectOptions,
} from 'jsr:@cliffy/prompt@^1.0.0-rc.5'
export { $ } from 'jsr:@david/dax@^0.41.0'
export { parse as parseDependency, resolveLatestVersion, stringify } from 'jsr:@molt/core@^0.18.5'
export { assertEquals } from 'jsr:@std/assert@^1.0.0'
export { ensure, is } from 'jsr:@core/unknownutil@^3.18.1'
export { createGraph, load as loadGraph } from 'jsr:@deno/graph@^0.80.1'
export type { DependencyJson, ResolvedDependency } from 'jsr:@deno/graph@^0.80.1/types'
export { Mutex } from 'jsr:@lambdalisue/async@^2.1.1'
export { assertEquals, assertExists } from 'jsr:@std/assert@^1.0.0'
export { parseArgs, Spinner } from 'jsr:@std/cli@^1.0.0-rc.5'
export { filterEntries } from 'jsr:@std/collections@^1.0.4'
export { bold, cyan, dim, green, magenta } from 'jsr:@std/fmt@^1.0.0-rc.1/colors'
export { expandGlob } from 'jsr:@std/fs@^1.0.0-rc.5'
export { getAvailablePort } from 'jsr:@std/net@^1.0.0-rc.1/get-available-port'
export { dirname, relative } from 'jsr:@std/path@^1.0.0'
export { dirname, fromFileUrl, relative, resolve, toFileUrl } from 'jsr:@std/path@^1.0.0'
export { escape } from 'jsr:@std/regexp@^1.0.0'
export { canParse, format, increment, parse as parseSemVer, type ReleaseType } from 'jsr:@std/semver@^1.0.0-rc.2'
export * as SemVer from 'jsr:@std/semver@^1.0.0-rc.2'

export const $ = new Proxy(_$, {
apply(target, _, args: Parameters<typeof _$.raw>) {
return target.raw(...args).quiet()
},
})
53 changes: 27 additions & 26 deletions scripts/release.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,33 +26,37 @@
import {
$,
bold,
canParse,
Confirm as _Confirm,
type ConfirmOptions,
cyan,
dim,
escape,
format,
green,
increment,
Input as _Input,
type InputOptions,
magenta,
parseSemVer,
type ReleaseType,
Select as _Select,
type SelectOptions,
SemVer,
Spinner,
} from '../dev_deps.ts'

const SEMVER_INCREMENTS: ReleaseType[] = ['patch', 'minor', 'major', 'prepatch', 'preminor', 'premajor', 'prerelease']

function isReleaseType(value: string): value is ReleaseType {
return SEMVER_INCREMENTS.includes(value as ReleaseType)
const SEMVER_INCREMENTS: SemVer.ReleaseType[] = [
'patch',
'minor',
'major',
'prepatch',
'preminor',
'premajor',
'prerelease',
]

function isReleaseType(value: string): value is SemVer.ReleaseType {
return SEMVER_INCREMENTS.includes(value as SemVer.ReleaseType)
}

const denoJson = JSON.parse(await Deno.readTextFile('deno.json'))
const oldVersion = parseSemVer(denoJson.version)
const oldVersion = SemVer.parse(denoJson.version)

// #endregion

Expand Down Expand Up @@ -87,7 +91,7 @@ class Select extends _Select<string> {
name = name + ''

if (isReleaseType(name)) {
const newVersion = increment(oldVersion, name)
const newVersion = SemVer.increment(oldVersion, name)

const newMajor = newVersion.major + ''
const newMinor = newVersion.minor + ''
Expand Down Expand Up @@ -242,7 +246,7 @@ async function open(url: string): Promise<void> {
console.error('Unsupported OS. Please open the following URL manually:\n' + url)
return
}
await $.raw`${programAliases[Deno.build.os]} ${$.escapeArg(url)}`
await $`${programAliases[Deno.build.os]} ${$.escapeArg(url)}`
}

// #endregion
Expand All @@ -261,40 +265,38 @@ if (version === 'other') {
message: 'Enter new version',
validate: (value) => {
if (!value) return 'Version is required'
if (!canParse(value)) return 'Invalid semver version'
if (!SemVer.canParse(value)) return 'Invalid semver version'
return true
},
})
}

const newVersion = format(isReleaseType(version) ? increment(oldVersion, version) : parseSemVer(version))
const newVersion = SemVer.format(isReleaseType(version) ? SemVer.increment(oldVersion, version) : SemVer.parse(version))

if (!(await Confirm.prompt({ message: `Bump ${dim(`(${denoJson.version}${newVersion})`)}?` }))) Deno.exit()

await step('Updating version in deno.json...', async () => {
denoJson.version = newVersion
await Deno.writeTextFile('deno.json', JSON.stringify(denoJson, null, 2))
await $.raw`deno fmt deno.json`.quiet()
await $`deno fmt deno.json`
})

await step('Generating changelog...', async () => {
await $
.raw`deno run -A --no-lock npm:conventional-changelog-cli -i CHANGELOG.md -s -p conventionalcommits -k deno.json`
.quiet()
await $.raw`deno fmt CHANGELOG.md`.quiet()
await $`deno run -A --no-lock npm:conventional-changelog-cli -i CHANGELOG.md -s -p conventionalcommits -k deno.json`
await $`deno fmt CHANGELOG.md`
})

if (!(await Confirm.prompt({ message: 'Changelog generated. Does it look good?' }))) Deno.exit()

await step('Committing changes...', async () => {
await $.raw`git add deno.json CHANGELOG.md`.quiet()
await $.raw`git commit -m "release: v${newVersion}"`.quiet()
await $.raw`git tag v${newVersion}`.quiet()
await $`git add deno.json CHANGELOG.md`
await $`git commit -m "release: v${newVersion}"`
await $`git tag v${newVersion}`
})

await step('Pushing to GitHub...', async () => {
await $.raw`git push origin refs/tags/v${newVersion}`.quiet()
await $.raw`git push`.quiet()
await $`git push origin refs/tags/v${newVersion}`
await $`git push`
})

await step('Creating a new release...', async () => {
Expand All @@ -304,7 +306,7 @@ await step('Creating a new release...', async () => {

const url = newGithubReleaseUrl({
body: `${match?.[2]?.trim() ?? ''}\n\n**Full Changelog**: ${match?.[1]?.trim() ?? ''}`,
isPrerelease: (parseSemVer(newVersion).prerelease?.length ?? 0) > 0,
isPrerelease: (SemVer.parse(newVersion).prerelease?.length ?? 0) > 0,
repoUrl: 'https://github.com/globalbrain/hado',
tag: `v${newVersion}`,
})
Expand All @@ -317,5 +319,4 @@ await step('Creating a new release...', async () => {
/**
* TODO:
* - publish stuff from this script as standalone modules
* - remove version from @cliffy/prompt when it's stable
*/
Loading

0 comments on commit 4cd1779

Please sign in to comment.