v1.1.0
Fill in message with Deno
Attributes
Includes Deno configuration
Repository
Current version released
3 years ago
Hoipoi capsule
What is this?
Create a commit message in an interactive format.
Try
# Go to git directory
brew install deno
deno run --allow-net --allow-write --allow-run "https://deno.land/x/hoipoi_capsule/demo/fill_in_commit_message/conventionalcommits_style.ts?source"
cat .git/COMMIT_EDITMSGUse
Run with Git hook.
It works without gh.gh is used to obtain github issues.Please complete the gh
setup in advance.
brew install deno ghPrepare Git hook.
mkdir .githooks
cat <<EOF > .githooks/prepare-commit-msg
#!/bin/sh
exec < /dev/tty deno run --allow-net --allow-write --allow-run "https://deno.land/x/hoipoi_capsule/demo/fill_in_commit_message/conventionalcommits_style.ts?source"
EOF
git config --local core.hooksPath .githooks
chmod +x .githooks/prepare-commit-msgExecution.
touch myFile.txt
git add myFile.txt
git commitCustomize
Here is a reference.
import * as hoipoiCapsule from "https://deno.land/x/hoipoi_capsule@v0.5.0/mod.ts";
const commitMessageTemplate = `{{type}}({{scope}}): {{summary}}
{{body}}
BREAKING CHANGE: {{breakingChange}}`;
hoipoiCapsule.useCase.fillInCommitMessage.run({
commitMessageTemplate,
questionList: [
{
/**
* The answer applies to the {{type}} part of commitMessageTemplate.
*/
target: "type",
/**
* Pre-prepared questions.
*/
q: hoipoiCapsule.preset.fillInCommitMessage.conventionalcommits.qMap.type,
/**
* Thus, you can also create your own questions.
*/
// q: typeQ,
/**
* Modify the commit message.
* Use this function when a message is unanswered, for example.
*/
fixCommitMessage: (p) => {
if (p.answerMap["type"] === "???") {
return p.commitMessage.replace(/\r?\n{2,}/, "\n").trim();
}
return p.commitMessage;
},
},
],
});
/**
* Please check here.
* https://github.com/c4spar/deno-cliffy
*/
const typeQ = () =>
hoipoiCapsule.userInterface.prompt.Select.prompt({
message: "Select type.",
search: true,
options: [
{
name:
"Build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)",
value: "Build",
},
{
name:
"CI: Changes to our CI configuration files and scripts (examples: CircleCi, SauceLabs)",
value: "CI",
},
{ name: "Docs: Documentation only changes", value: "Docs" },
{ name: "Feat: A new feature", value: "Feat" },
{ name: "Fix: A bug fix", value: "Fix:" },
{ name: "Perf: A code change that improves performance", value: "Perf" },
{
name:
"Refactor: A code change that neither fixes a bug nor adds a feature",
value: "Refactor",
},
{
name: "Test: Adding missing tests or correcting existing tests",
value: "Test",
},
],
});