Skip to content

Commit

Permalink
add version update preview to cli
Browse files Browse the repository at this point in the history
  • Loading branch information
TimurRin committed Jul 21, 2024
1 parent c1a8db2 commit 924edc4
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 24 deletions.
4 changes: 2 additions & 2 deletions anca.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
"dataVersion": 0,
"version": {
"latest": "0.1.2",
"latestNext": "0.1.2+next.20240721_161313",
"timestamp": 1721578393
"latestNext": "0.1.2+next.20240721_163603",
"timestamp": 1721579763
},
"files": [
{
Expand Down
4 changes: 2 additions & 2 deletions src/cinnabar.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// This file was generated by Cinnabar Meta. Do not edit.

export const CINNABAR_PROJECT_TIMESTAMP = 1721578393;
export const CINNABAR_PROJECT_VERSION = "0.1.2+next.20240721_161313";
export const CINNABAR_PROJECT_TIMESTAMP = 1721579763;
export const CINNABAR_PROJECT_VERSION = "0.1.2+next.20240721_163603";
77 changes: 58 additions & 19 deletions src/cli.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { parseCli, promptOptions, promptText } from "clivo";

import { checkGithubRepo } from "./git.js";
import { CinnabarMetaParsedVersion } from "./types.js";
import { updatePrerelease, updateVersion } from "./version.js";

export type Option = "build" | "interactive" | "prerelease" | "pwd" | "update";

Expand All @@ -22,27 +24,64 @@ export function setupCli(): Record<Option, string[]> {

/**
* Ask the user to choose the update type
* @param isPrerelease
* @param parsedVersion
* @param oldVersion
*/
export async function askUpdateType(isPrerelease: boolean): Promise<string> {
const answers = isPrerelease
? [
{ label: "Update prerelease", name: "prerelease-update" },
{ label: "Change prerelease", name: "prerelease-change" },
{ label: "Release prerelease", name: "prerelease-release" },
{ label: "Build", name: "build" },
]
: [
{ label: "Major", name: "major" },
{ label: "Minor", name: "minor" },
{ label: "Patch", name: "patch" },
{ label: "Major prerelease", name: "major-prerelease" },
{ label: "Minor prerelease", name: "minor-prerelease" },
{ label: "Patch prerelease", name: "patch-prerelease" },
{ label: "Build", name: "build" },
];
export async function askUpdateType(
parsedVersion: CinnabarMetaParsedVersion,
oldVersion: string,
): Promise<string> {
const answers =
parsedVersion.prerelease != null
? [
{
label: `Update (${updatePrerelease(parsedVersion, parsedVersion.prerelease)})`,
name: "prerelease-update",
},
{
label: `Change tag (${updatePrerelease(parsedVersion, "newtag")})`,
name: "prerelease-change",
},
{
label: `Release (${updatePrerelease(parsedVersion, "yes")})`,
name: "prerelease-release",
},
{ label: `Mark build info`, name: "build" },
]
: [
{
label: `Major (${updateVersion(parsedVersion, "major")})`,
name: "major",
},
{
label: `Minor (${updateVersion(parsedVersion, "minor")})`,
name: "minor",
},
{
label: `Patch (${updateVersion(parsedVersion, "patch")})`,
name: "patch",
},
{
label: `Major prerelease (${updateVersion(parsedVersion, "major", "tag")})`,
name: "major-prerelease",
},
{
label: `Minor prerelease (${updateVersion(parsedVersion, "minor", "tag")})`,
name: "minor-prerelease",
},
{
label: `Patch prerelease (${updateVersion(parsedVersion, "patch", "tag")})`,
name: "patch-prerelease",
},
{ label: `Mark build info`, name: "build" },
];

const answer = await promptOptions("Choose the update type", answers);
const answer = await promptOptions(
parsedVersion.prerelease != null
? `What to do with prerelease version ${oldVersion}?`
: `Update version ${oldVersion} to...`,
answers,
);
return answer.name;
}

Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ async function main() {
let newVersion;

if (options.interactive) {
const updateType = await askUpdateType(parsedVersion.prerelease != null);
const updateType = await askUpdateType(parsedVersion, oldVersion);

switch (updateType) {
case "prerelease-update":
Expand Down

0 comments on commit 924edc4

Please sign in to comment.