Skip to content

Repository files navigation

1. Lazy commit

This library helps you to use commit templates and a specific git branch naming convention based on questions.

1.1. Installation

$ npm i -S lazy-commit-message

1.2. Usage

First, you need a config file, check the sample config file.

1.2.1. Config parameters

1.2.1.1. Questions

questions (Array): Every item in the array should be an object, only id and label properties are required, this will generate a question based on the data, the question type depends on the object properties:

  • only id and label, expected string answer, id will be the variable name to parse in outputs and label will be the prompted question text
  • with options property, select an option, question answer will be the selected option
  • with exec and output properties, Yes or No question, question answer will be parsed output, exec will be a custom command to run after

Examples:

"questions": [
{
"id": "ticketId",
"label": "Ticket ID:"
},
{
"id": "ticketTitle",
"label": "Ticket title:"
},
{
"id": "testLink",
"label": "Want to create a test Link?",
"exec": "node -e 'console.log(`test command`)'",
"output": "https://CUSTOM.DOMAIN/${ticketId}-${ticketTitle}/"
},
{
"id": "type",
"label": "Type:",
"options": ["feature", "hotfix"]
},
{
"id": "locales",
"label": "Affected locales:",
"options": ["en-us", "es-us", "ja-jp"],
"multiple": true
}
]

This will generate 5 questions:

  • Ticket ID: (expected string answer)
  • Ticket title: (expected string answer)
  • Want to create a test Link?" (expected y or n), will run node -e 'console.log('test command') after
  • Type: (multiple option selector, only one answer)
  • Affected locales: (multiple option selector, multiple answer)

1.2.1.2. Output

output (Array): This will generate the commit message, every new item in the array is a new line in the commit message, it can accept javascript expressions using string literal syntax

Example:

"output": [
"${ticketId} || ${ticketTitle}",
"Ticket url: http://CUSTOM.DOMAIN/${ticketId}",
"Type: ${type}",
"Affected locales: ${locales.join(', ')}"
],

This will generate the following commit message with the following answers:

ticketId = 1234
ticketTitle = Awesome feature
type = feature
locales = en-us, es-us
1234 || Awesome feature
Ticket url: http://CUSTOM.DOMAIN/1234
Type: feature
Affected locales: en-us, es-us

1.2.2. Scripts

Supported scripts:

  • commit
  • new-branch

1.2.2.1. Commit script

Add lazy-commit commit to your package.json scripts.

This script will create a commit message based on the configuration file output, this is an array, each item of the array is a new line in the commit message, this will commit only the staged files.

Example:

config file:

{
"commit": {
"output": [
"${ticketId} || ${ticketTitle}",
"Ticket url: http://CUSTOM.DOMAIN/${ticketId}",
"Type: ${type}",
"Affected locales: ${locales.join(', ')}"
],
"questions": [
{
"id": "ticketId",
"label": "Ticket ID:"
},
{
"id": "ticketTitle",
"label": "Ticket title:"
},
{
"id": "testLink",
"label": "Want to create a test Link?",
"exec": "node -e 'console.log(`test command`)'",
"output": "https://CUSTOM.DOMAIN/${ticketId}-${ticketTitle}/"
},
{
"id": "type",
"label": "Type:",
"options": ["feature", "hotfix"]
},
{
"id": "locales",
"label": "Affected locales:",
"options": ["en-us", "es-us", "ja-jp"],
"multiple": true
}
]
}
}

1.2.2.2. New branch

Add lazy-commit new-branch to your package.json scripts.

This script will create a new git branch with the naming convention configured in the lazy commit config file.

Example:

config file:

{
"new-branch": {
"output": "${type}/${name}",
"questions": [
{
"id": "name",
"label": "Ticket id and title:"
},
{
"id": "type",
"label": "Branch type",
"options": ["feature", "bugfix", "hotfix"]
}
]
}
}

This will generate two questions:

  • Ticket id and title: (expecting a string answer)
  • Branch type: (select an option from the list [feature, bugfix, hotfix])

After answering all the questions, this will create a new branch (i.e: feature/new-stuff if you select feature branch type and enter new stuff as a title)

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages