Skip to content

Commit

Permalink
feat(cli): support GPG sign commit message
Browse files Browse the repository at this point in the history
1. can turn on option `useCommitSignGPG`
2. run command `czg gpg`: no-configure use GPG sign commit message

link #58

Co-authored-by: Zhengqbbb <1074059947@qq.com>
  • Loading branch information
Zhengqbbb committed Aug 20, 2022
1 parent 13251ad commit c9caa97
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 2 deletions.
1 change: 1 addition & 0 deletions packages/cli/src/generator/czg.ts
Expand Up @@ -28,6 +28,7 @@ export const czg = (version: string, argvs: CzgitParseArgs, environment: any = {
injectEnvFlag('break', argvs.czgitArgs.subCommand?.break)
injectEnvFlag('emoji', argvs.czgitArgs.subCommand?.emoji)
injectEnvFlag('checkbox', argvs.czgitArgs.subCommand?.checkbox)
injectEnvFlag('CzCommitSignGPG', argvs.czgitArgs.subCommand?.gpg)
injectEnvValue('cz_alias', argvs.czgitArgs.flag?.alias)

console.log(`czg@${version}\n`)
Expand Down
1 change: 1 addition & 0 deletions packages/cli/src/generator/help.ts
Expand Up @@ -20,6 +20,7 @@ ${style.yellow('SUBCOMMAND:')}
${style.cyan('break')} ${style.red('Turn on BREAKING CHANGE mode, Add ! mark on header')}
${style.cyan('emoji')} ${style.red('Turn on output message with emoji mode')}
${style.cyan('checkbox')} ${style.red('Turn on scope checkbox mode')}
${style.cyan('gpg')} ${style.red('Turn on use GPG sign commit message')}
${style.yellow('OPTIONS:')}
${style.cyan('--config')} ${style.red('Specify the configuration file to use')}
Expand Down
4 changes: 3 additions & 1 deletion packages/cli/src/shared/types/czg.ts
Expand Up @@ -32,7 +32,7 @@ export interface InitFlag {
yes?: boolean
}

export type CzgitSubCommandList = 'init' | 'emoji' | 'checkbox' | 'break'
export type CzgitSubCommandList = 'init' | 'emoji' | 'checkbox' | 'break' | 'gpg'
export interface CzgitSubCommand {
/** option: init */
init?: boolean
Expand All @@ -42,6 +42,8 @@ export interface CzgitSubCommand {
checkbox?: boolean
/** subcmd: break */
break?: boolean
/** subcmd: gpg */
gpg?: boolean
}

/**
Expand Down
4 changes: 3 additions & 1 deletion packages/cli/src/shared/utils/git.ts
Expand Up @@ -63,7 +63,9 @@ export const gitCommit = (
* use `git cimmit -m "...message..."`
*/
if (!options.hookMode) {
const args = ['commit', '-m', dedent(message), ...(options.args || [])]
const args = process.env.CzCommitSignGPG !== '1'
? ['commit', '-m', dedent(message), ...(options.args || [])]
: ['commit', '-S', '-m', dedent(message), ...(options.args || [])]
const child = spawn('git', args, {
cwd: repoPath,
stdio: options.quiet ? 'ignore' : 'inherit',
Expand Down
1 change: 1 addition & 0 deletions packages/cli/src/shared/utils/parse.ts
Expand Up @@ -81,6 +81,7 @@ export const resovleArgs = (argv: string[]): CzgitParseArgs => {
result = resovleSubCmd(parseArgv._[i], 'emoji', result)
result = resovleSubCmd(parseArgv._[i], 'checkbox', result)
result = resovleSubCmd(parseArgv._[i], 'break', result)
result = resovleSubCmd(parseArgv._[i], 'gpg', result)
// resolve alias
result = resovleAlias(parseArgv._[i], result)
}
Expand Down
1 change: 1 addition & 0 deletions packages/cz-git/src/generator/option.ts
Expand Up @@ -61,6 +61,7 @@ export const generateOptions = (config: UserConfig): CommitizenGitOptions => {
defaultBody: promptConfig.defaultBody ?? defaultConfig.defaultBody,
defaultFooterPrefix: promptConfig.defaultFooterPrefix ?? defaultConfig.defaultFooterPrefix,
defaultIssues: promptConfig.defaultIssues ?? defaultConfig.defaultIssues,
useCommitSignGPG: promptConfig.useCommitSignGPG ?? defaultConfig.useCommitSignGPG,
formatMessageCB: promptConfig.formatMessageCB ?? defaultConfig.formatMessageCB,
}
}
2 changes: 2 additions & 0 deletions packages/cz-git/src/index.ts
Expand Up @@ -23,6 +23,8 @@ export const prompter = (
configLoader({ configPath }).then((config) => {
const options = generateOptions(config)

if (options.useCommitSignGPG)
process.env.CzCommitSignGPG = '1'
if ('cz_alias' in process.env) {
commit(getAliasMessage(options, process.env.cz_alias))
return
Expand Down
9 changes: 9 additions & 0 deletions packages/cz-git/src/shared/types/options.ts
Expand Up @@ -398,6 +398,14 @@ export interface CommitizenGitOptions {
*/
defaultIssues?: string

/**
* @description: Whether to use GPG sign commit message (git commit -S -m)
* @note the options only support `czg` cz-git cli and no support git hooks mode
* @usage_see https://github.com/Zhengqbbb/cz-git/issues/58
* @default: false
*/
useCommitSignGPG?: boolean

/**
* @description: provide user custom finally message, can use the callback to change format
* @param CommitMessageOptions: provide subdivides each message part
Expand Down Expand Up @@ -471,5 +479,6 @@ export const defaultConfig = Object.freeze({
defaultSubject: '',
defaultFooterPrefix: '',
defaultIssues: '',
useCommitSignGPG: false,
formatMessageCB: undefined,
} as CommitizenGitOptions)

0 comments on commit c9caa97

Please sign in to comment.