Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
1bce93a24e
|
|||
| f767b846d8 | |||
| 0cac22a7e0 | |||
|
6df1021561
|
|||
| 87edf8cfad | |||
| 47a8b05856 | |||
| b6d749beae |
@@ -3,20 +3,20 @@ const { execSync } = require("child_process");
|
||||
|
||||
const packageFile = fs.readFileSync("./package.json").toString();
|
||||
const newPackageFile = packageFile.replace(
|
||||
/"version": "[0-9]+.[0-9]+.[0-9]+"/,
|
||||
`"version": "${__NEW_VERSION__}"`
|
||||
/"version": "[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc|dev)\.[0-9]+)?"/,
|
||||
`"version": "${__NEW_VERSION__}"`,
|
||||
);
|
||||
|
||||
fs.writeFileSync("./package.json", newPackageFile);
|
||||
|
||||
const indexFile = fs.readFileSync("./src/index.ts").toString();
|
||||
const newIndexFile = indexFile.replace(
|
||||
/version\("[0-9]+\.[0-9]+\.[0-9]+"\)/,
|
||||
`version("${__NEW_VERSION__}")`
|
||||
/version\("[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc|dev)\.[0-9]+)?"\)/,
|
||||
`version("${__NEW_VERSION__}")`,
|
||||
);
|
||||
|
||||
fs.writeFileSync("./src/index.ts", newIndexFile);
|
||||
|
||||
execSync(
|
||||
`rcz changelog --show-hashes --unreleased-as v${__NEW_VERSION__} > CHANGELOG.md`
|
||||
`rcz changelog --show-hashes --unreleased-as v${__NEW_VERSION__} > CHANGELOG.md`,
|
||||
);
|
||||
|
||||
13
CHANGELOG.md
13
CHANGELOG.md
@@ -1,9 +1,22 @@
|
||||
# Changelog
|
||||
Generation of this changelog is based on commits
|
||||
## v1.14.0
|
||||
### Features
|
||||
- [f767b846d] - **commands**: add ability to choose files to stage (#22)
|
||||
### Miscellaneous
|
||||
- [0cac22a7e] - **changelog**: improve generation time by ~2800 times (#23)
|
||||
## v1.13.1
|
||||
### Fixes
|
||||
- [87edf8cfa] - **changelog**: wrong semver sequence generation (#21)
|
||||
### Miscellaneous
|
||||
- [6df102156] - **release**: v1.13.1
|
||||
- [47a8b0585] - **commands**: change head error message
|
||||
- [b6d749bea] - fix version regex to include pre-releases
|
||||
## v1.13.0
|
||||
### Fixes
|
||||
- [7b499d763] - **commands**: commit crash upon missing HEAD (#19)
|
||||
### Miscellaneous
|
||||
- [87a7c4dcc] - **release**: v1.13.0
|
||||
- [6ce6e88d8] - Merge pull request 'Refactor into multiple command files' (#20) from refactor/#18 into main
|
||||
## v1.13.0-rc.0
|
||||
### Miscellaneous
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@resultium/rcz",
|
||||
"version": "1.13.0",
|
||||
"version": "1.14.0",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"description": "Resultium commit standardization library, inspired by conventional commits",
|
||||
"main": "./dist/index.js",
|
||||
|
||||
@@ -20,7 +20,7 @@ along with RCZ. If not, see <https://www.gnu.org/licenses/>.
|
||||
import { Command } from "commander";
|
||||
import simpleGit from "simple-git";
|
||||
import { CommitStack } from "../types";
|
||||
import { sort } from "semver";
|
||||
import { gt, sort } from "semver";
|
||||
|
||||
const command = new Command("changelog")
|
||||
.alias("ch")
|
||||
@@ -51,69 +51,50 @@ const command = new Command("changelog")
|
||||
|
||||
for (const commit of commits) {
|
||||
const tag =
|
||||
sort((await simpleGit().tags([`--contains=${commit.hash}`])).all)[0]! ||
|
||||
unreleased;
|
||||
(commit.refs.match(/tag: (\S+)(?:,|$)/)?.[1] ?? lastTag) || unreleased;
|
||||
|
||||
const currentCommitStack = parsedCommitStacks.find(
|
||||
let currentCommitStackIndex = parsedCommitStacks.findIndex(
|
||||
(commitStack) => commitStack.version === tag,
|
||||
) || {
|
||||
version: tag || unreleased,
|
||||
breaking: [],
|
||||
features: [],
|
||||
fixes: [],
|
||||
miscellaneous: [],
|
||||
};
|
||||
);
|
||||
|
||||
if (lastTag !== tag) {
|
||||
parsedCommitStacks = [currentCommitStack, ...parsedCommitStacks];
|
||||
if (currentCommitStackIndex === -1) {
|
||||
parsedCommitStacks.push({
|
||||
version: tag || unreleased,
|
||||
breaking: [],
|
||||
features: [],
|
||||
fixes: [],
|
||||
miscellaneous: [],
|
||||
});
|
||||
|
||||
currentCommitStackIndex = parsedCommitStacks.findIndex(
|
||||
(commitStack) => commitStack.version === tag,
|
||||
);
|
||||
}
|
||||
|
||||
if (commit.message.includes("!:")) {
|
||||
parsedCommitStacks = [
|
||||
{
|
||||
...currentCommitStack,
|
||||
breaking: [...currentCommitStack.breaking, commit],
|
||||
},
|
||||
...parsedCommitStacks.filter(
|
||||
(commitStack) => commitStack.version !== tag,
|
||||
),
|
||||
];
|
||||
parsedCommitStacks[currentCommitStackIndex].breaking.push(commit);
|
||||
} else if (commit.message.startsWith("feat")) {
|
||||
parsedCommitStacks = [
|
||||
{
|
||||
...currentCommitStack,
|
||||
features: [...currentCommitStack.features, commit],
|
||||
},
|
||||
...parsedCommitStacks.filter(
|
||||
(commitStack) => commitStack.version !== tag,
|
||||
),
|
||||
];
|
||||
parsedCommitStacks[currentCommitStackIndex].features.push(commit);
|
||||
} else if (commit.message.startsWith("fix")) {
|
||||
parsedCommitStacks = [
|
||||
{
|
||||
...currentCommitStack,
|
||||
fixes: [...currentCommitStack.fixes, commit],
|
||||
},
|
||||
...parsedCommitStacks.filter(
|
||||
(commitStack) => commitStack.version !== tag,
|
||||
),
|
||||
];
|
||||
parsedCommitStacks[currentCommitStackIndex].fixes.push(commit);
|
||||
} else {
|
||||
parsedCommitStacks = [
|
||||
{
|
||||
...currentCommitStack,
|
||||
miscellaneous: [...currentCommitStack.miscellaneous, commit],
|
||||
},
|
||||
...parsedCommitStacks.filter(
|
||||
(commitStack) => commitStack.version !== tag,
|
||||
),
|
||||
];
|
||||
parsedCommitStacks[currentCommitStackIndex].miscellaneous.push(commit);
|
||||
}
|
||||
|
||||
lastTag = tag;
|
||||
}
|
||||
|
||||
parsedCommitStacks = parsedCommitStacks.reverse();
|
||||
// Might be confusing so I will leave mdn docs here
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
|
||||
parsedCommitStacks = parsedCommitStacks.sort((a, b) => {
|
||||
if (a.version === unreleased) {
|
||||
return -1;
|
||||
} else if (b.version === unreleased) {
|
||||
return 1;
|
||||
} else {
|
||||
return gt(a.version, b.version) ? -1 : 1;
|
||||
}
|
||||
});
|
||||
|
||||
if (lastOnly) {
|
||||
parsedCommitStacks = [parsedCommitStacks[0]];
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
confirm,
|
||||
intro,
|
||||
isCancel,
|
||||
multiselect,
|
||||
note,
|
||||
outro,
|
||||
select,
|
||||
@@ -31,7 +32,7 @@ import {
|
||||
} from "@clack/prompts";
|
||||
import { existsSync } from "fs";
|
||||
import { join } from "path";
|
||||
import simpleGit from "simple-git";
|
||||
import simpleGit, { ResetMode } from "simple-git";
|
||||
|
||||
const command = new Command("commit")
|
||||
.alias("c")
|
||||
@@ -69,6 +70,37 @@ const command = new Command("commit")
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const stageableFiles = (await simpleGit().status()).files;
|
||||
if (stageAll === false) {
|
||||
const stagedFiles = (await simpleGit().diff(["--name-only", "--cached"]))
|
||||
.split("\n")
|
||||
.filter((file) => file);
|
||||
|
||||
const filesToStage = await multiselect({
|
||||
message: "Which files would you like to stash?",
|
||||
options: stageableFiles.map((file) => ({
|
||||
value: file.path,
|
||||
label: file.path,
|
||||
hint: file.from,
|
||||
})),
|
||||
initialValues: stagedFiles,
|
||||
required: false,
|
||||
});
|
||||
|
||||
if (isCancel(filesToStage)) {
|
||||
cancel("Commit creation cancelled");
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
await simpleGit().reset(ResetMode.MIXED);
|
||||
await simpleGit().add(filesToStage);
|
||||
} else if (stageAll === true) {
|
||||
note(
|
||||
stageableFiles.map((file) => file.path).join("\n"),
|
||||
"Committing following files",
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
const changedLines = (
|
||||
(
|
||||
@@ -94,7 +126,7 @@ const command = new Command("commit")
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
note("HEAD hasn't been found, skipping commit line amount check");
|
||||
note("HEAD hasn't been found, skipping commit line sum check");
|
||||
}
|
||||
|
||||
const type: string | symbol = await select({
|
||||
|
||||
@@ -29,7 +29,7 @@ import { join } from "path";
|
||||
program
|
||||
.name("rcz")
|
||||
.description("Resultium commit standardization command-line interface")
|
||||
.version("1.13.0");
|
||||
.version("1.14.0");
|
||||
|
||||
const commandFiles = await readdir(join(__dirname, "commands"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user