UNPKG

ccommit

Version:

๐Ÿ˜œ โž• ๐Ÿ‘” ๐ŸŸฐ ccommit Conventional Commit Generator that translates conventional commits to gitmoji.

50 lines (44 loc) โ€ข 18.8 kB
#!/usr/bin/env node import e from"meow";import t from"node:process";import n from"enquirer";import r from"node:fs";import{execa as i}from"execa";import a from"ansi-colors";import{execSync as o}from"node:child_process";import{join as s}from"node:path";const c={COMMIT:`commit`,HOOK:`hook`,LIST:`list`},l={CONVENTIONAL:`conventional`,CONVENTIONAL_NO_EMOJI:`conventional-no-emoji`,GITMOJI:`gitmoji`},u={CLIENT:`client`,HOOK:`hook`},d={EMOJI:`emoji`,TYPE:`type`},f=Object.freeze({BREAKING:`breaking`,COMMIT:`commit`,DRYRUN:`dryrun`,EMOJI:`emoji`,HELP:`help`,HOOK:`hook`,LIST:`list`,SKIP:`skip`,VERSION:`version`}),p={[l.CONVENTIONAL]:`{type}{scope}{breaking}: {emoji}{title}`,[l.CONVENTIONAL_NO_EMOJI]:`{type}{scope}{breaking}: {title}`,[l.GITMOJI]:`{emoji}{breaking}{scope}{title}`},m={MESSAGES:{COMMAND_LINE_WITHOUT_REQUIRED:`โฏ Command line option requires both: --title, --type`,COMMIT_FAIL:`โฏ โฏ Oops! An error occurred. There is likely additional logging output above. โฏ You can run the same commit with this command: โฏ {REPLACE} `,GENERATOR_TAKING_OVER:`โฏ Generator will take it from here (CTRL+C to quit)`,MODE_CONFLICT:`โฏ Please choose one or the other: --commit, -c | --hook, -u`,REPLACE:`{REPLACE}`,STAGED_FILES:`โฏ There are no staged files for git. Did you mean to do a dry-run (-n)?`,TYPE_INCORRECT:`โฏ There is no gitmoji/type associated with: {REPLACE}`},TYPES:{ERROR:`error`,INFO:`info`,SUCCESS:`success`,WARNING:`warning`}},h=Object.freeze({FORMAT:`format`,MESSAGE:`message`,SCOPE:`scope`,TITLE:`title`,TYPE:`type`}),g={MAX:12,MIN:3},_={MAJOR:`major`,MINOR:`minor`,NULL:`null`,PATCH:`patch`},v={MAX:48,MAX_SWAG:40,MIN:3,MIN_SWAG:15},y={MAX:15},b=()=>i(`git`,[`rev-parse`,`--absolute-git-dir`]).then(({stdout:e})=>{ /*! * reference: https://github.com/carloscuesta/gitmoji-cli */ (r.existsSync(e+`/rebase-merge`)||r.existsSync(e+`/rebase-apply`))&&t.exit(0)}),x=()=>new Promise(e=>{let n=t.argv[4];n&&(n.startsWith(`commit`)||n.startsWith(`merge`))&&t.exit(0),e()}),S=()=>x().then(b),C=[{code:`:wheelchair:`,description:`Improve Accessibility`,emoji:`โ™ฟ๏ธ`,emojiLength:1,semver:_.PATCH,type:`access`},{code:`:chart_with_upwards_trend:`,description:`Add or Update Analytics or Track Code`,emoji:`๐Ÿ“ˆ`,emojiLength:1,semver:_.PATCH,type:`analytics`},{code:`:dizzy:`,description:`Add or Update Animations and Transitions`,emoji:`๐Ÿ’ซ`,emojiLength:1,semver:_.PATCH,type:`animation`},{code:`:building_construction:`,description:`Make Architectural Changes`,emoji:`๐Ÿ—๏ธ`,emojiLength:0,semver:_.NULL,type:`arch`},{code:`:bento:`,description:`Add or Update Assets`,emoji:`๐Ÿฑ`,emojiLength:1,semver:_.PATCH,type:`assets`},{code:`:t-rex:`,description:`Backwards Compatibility`,emoji:`๐Ÿฆ–`,emojiLength:1,semver:_.NULL,type:`backwards`},{code:`:beers:`,description:`Write Code Drunkenly`,emoji:`๐Ÿป`,emojiLength:1,semver:_.NULL,type:`beer`},{code:`:boom:`,description:`Introduce Breaking Changes`,emoji:`๐Ÿ’ฅ`,emojiLength:1,semver:_.MAJOR,type:`breaking`},{code:`:hammer:`,description:`Add or Update Development Scripts`,emoji:`๐Ÿ”จ`,emojiLength:1,semver:_.NULL,type:`build`},{code:`:goal_net:`,description:`Catch Errors`,emoji:`๐Ÿฅ…`,emojiLength:1,semver:_.PATCH,type:`catch`},{code:`:computer_disk:`,description:`Changes That Donโ€™t Modify Src or Test Files`,emoji:`๐Ÿ’ฝ๏ธ`,emojiLength:1,semver:_.NULL,type:`chore`},{code:`:construction_worker:`,description:`Add or Update CI Build System`,emoji:`๐Ÿ‘ท`,emojiLength:1,semver:_.NULL,type:`ci`},{code:`:wastebasket:`,description:`Deprecate Code That Needs to Be Cleaned Up`,emoji:`๐Ÿ—‘๏ธ`,emojiLength:0,semver:_.PATCH,type:`clean`},{code:`:alien:`,description:`Update Code Due to External API Changes`,emoji:`๐Ÿ‘ฝ๏ธ`,emojiLength:1,semver:_.PATCH,type:`compat`},{code:`:thread:`,description:`Add or Update Code Related to Multithreading or Concurrency`,emoji:`๐Ÿงต`,emojiLength:1,semver:_.NULL,type:`concurrency`},{code:`:wrench:`,description:`Add or Update Configuration Files`,emoji:`๐Ÿ”ง`,emojiLength:1,semver:_.PATCH,type:`config`},{code:`:busts_in_silhouette:`,description:`Add or Update Contributor(s)`,emoji:`๐Ÿ‘ฅ`,emojiLength:1,semver:_.NULL,type:`contrib-add`},{code:`:monocle_face:`,description:`Data Exploration/inspection`,emoji:`๐Ÿง`,emojiLength:1,semver:_.NULL,type:`data`},{code:`:card_file_box:`,description:`Perform Database Related Changes`,emoji:`๐Ÿ—ƒ๏ธ`,emojiLength:0,semver:_.PATCH,type:`db`},{code:`:heavy_plus_sign:`,description:`Add a Dependency`,emoji:`โž•`,emojiLength:1,semver:_.PATCH,type:`dep-add`},{code:`:heavy_minus_sign:`,description:`Remove a Dependency`,emoji:`โž–`,emojiLength:1,semver:_.PATCH,type:`dep-rm`},{code:`:package:`,description:`Add or Update Compiled Files or Packages`,emoji:`๐Ÿ“ฆ๏ธ`,emojiLength:1,semver:_.PATCH,type:`dep-up`},{code:`:rocket:`,description:`Deploy Stuff`,emoji:`๐Ÿš€`,emojiLength:1,semver:_.NULL,type:`deploy`},{code:`:bulb:`,description:`Add or Update Comments in Source Code`,emoji:`๐Ÿ’ก`,emojiLength:1,semver:_.NULL,type:`docs-code`},{code:`:memo:`,description:`Add or Update Documentation`,emoji:`๐Ÿ“`,emojiLength:1,semver:_.NULL,type:`docs`},{code:`:arrow_down:`,description:`Downgrade Dependencies`,emoji:`โฌ‡๏ธ`,emojiLength:0,semver:_.PATCH,type:`downgrade`},{code:`:technologist:`,description:`Improve Developer Experience`,emoji:`๐Ÿ’ป`,emojiLength:1,semver:_.NULL,type:`dx`},{code:`:egg:`,description:`Add or Update an Easter Egg`,emoji:`๐Ÿฅš`,emojiLength:1,semver:_.PATCH,type:`egg`},{code:`:alembic:`,description:`Perform Experiments`,emoji:`โš—๏ธ`,emojiLength:0,semver:_.PATCH,type:`experiment`},{code:`:sparkles:`,description:`Introduce New Features`,emoji:`โœจ`,emojiLength:1,semver:_.MINOR,type:`feat`},{code:`:bug:`,description:`Fix a Bug`,emoji:`๐Ÿ›`,emojiLength:1,semver:_.PATCH,type:`fix`},{code:`:green_heart:`,description:`Fix CI Build`,emoji:`๐Ÿ’š`,emojiLength:1,semver:_.NULL,type:`fix-ci`},{code:`:triangular_flag_on_post:`,description:`Add Update or Remove Feature Flags`,emoji:`๐Ÿšฉ`,emojiLength:1,semver:_.PATCH,type:`flags`},{code:`:stethoscope:`,description:`Add or Update Healthcheck`,emoji:`๐Ÿฉบ`,emojiLength:1,semver:_.NULL,type:`healthcheck`},{code:`:ambulance:`,description:`Critical Hotfix`,emoji:`๐Ÿš‘๏ธ`,emojiLength:1,semver:_.PATCH,type:`hotfix`},{code:`:globe_with_meridians:`,description:`Internationalization and Localization`,emoji:`๐ŸŒ`,emojiLength:1,semver:_.PATCH,type:`i18n`},{code:`:see_no_evil:`,description:`Add or Update a Gitignore File.`,emoji:`๐Ÿ™ˆ`,emojiLength:1,semver:_.NULL,type:`ignore`},{code:`:bricks:`,description:`Infrastructure Related Changes`,emoji:`๐Ÿงฑ`,emojiLength:1,semver:_.NULL,type:`inf`},{code:`:tada:`,description:`Begin a Project`,emoji:`๐ŸŽ‰`,emojiLength:1,semver:_.PATCH,type:`init`},{code:`:iphone:`,description:`Work on Responsive Design`,emoji:`๐Ÿ“ฑ`,emojiLength:1,semver:_.PATCH,type:`iphone`},{code:`:page_facing_up:`,description:`Add or Update License`,emoji:`๐Ÿ“„`,emojiLength:1,semver:_.NULL,type:`license`},{code:`:rotating_light:`,description:`Fix Compiler / Linter Warnings`,emoji:`๐Ÿšจ`,emojiLength:1,semver:_.NULL,type:`lint`},{code:`:loud_sound:`,description:`Add or Update Logs`,emoji:`๐Ÿ”Š`,emojiLength:1,semver:_.NULL,type:`log-add`},{code:`:mute:`,description:`Remove Logs`,emoji:`๐Ÿ”‡`,emojiLength:1,semver:_.NULL,type:`log-rm`},{code:`:necktie:`,description:`Add or Update Business Logic`,emoji:`๐Ÿ‘”`,emojiLength:1,semver:_.PATCH,type:`logic`},{code:`:twisted_rightwards_arrows:`,description:`Merge Branches`,emoji:`๐Ÿ”€`,emojiLength:1,semver:_.NULL,type:`merge`},{code:`:clown_face:`,description:`Mock Things`,emoji:`๐Ÿคก`,emojiLength:1,semver:_.NULL,type:`mock`},{code:`:truck:`,description:`Move or Rename Resources (Eg.: Files Paths Routes).`,emoji:`๐Ÿšš`,emojiLength:1,semver:_.NULL,type:`mv`},{code:`:airplane:`,description:`Provide offline support`,emoji:`โœˆ๏ธ`,emojiLength:1,semver:_.PATCH,type:`offline`},{code:`:adhesive_bandage:`,description:`Simple Fix for a Non-Critical Issue`,emoji:`๐Ÿฉน`,emojiLength:1,semver:_.PATCH,type:`patch`},{code:`:zap:`,description:`Improve Performance`,emoji:`โšก๏ธ`,emojiLength:1,semver:_.PATCH,type:`perf`},{code:`:poop:`,description:`Write Bad Code That Needs to Be Improved`,emoji:`๐Ÿ’ฉ`,emojiLength:1,semver:_.NULL,type:`poo`},{code:`:fire:`,description:`Remove Code or Files`,emoji:`๐Ÿ”ฅ`,emojiLength:1,semver:_.NULL,type:`prune`},{code:`:pushpin:`,description:`Pin Dependencies to Specific Versions`,emoji:`๐Ÿ“Œ`,emojiLength:1,semver:_.PATCH,type:`pushpin`},{code:`:recycle:`,description:`Refactor Code`,emoji:`โ™ป๏ธ`,emojiLength:0,semver:_.NULL,type:`refactor`},{code:`:bookmark:`,description:`Release / Version Tags`,emoji:`๐Ÿ”–`,emojiLength:1,semver:_.NULL,type:`release`},{code:`:rewind:`,description:`Revert Changes`,emoji:`โช๏ธ`,emojiLength:1,semver:_.PATCH,type:`revert`},{code:`:coffin:`,description:`Remove Dead Code`,emoji:`โšฐ๏ธ`,emojiLength:0,semver:_.NULL,type:`rip`},{code:`:passport_control:`,description:`Work on Code Related to Authorization Roles and Permissions`,emoji:`๐Ÿ›‚`,emojiLength:1,semver:_.PATCH,type:`roles`},{code:`:fast_forward:`,description:`Create Rollforward Version`,emoji:`โฉ๏ธ`,emojiLength:1,semver:_.NULL,type:`rollforward`},{code:`:rocket:`,description:`Custom Type for CI/CD to Hook into Run Build Override`,emoji:`๐Ÿš€๏ธ`,emojiLength:1,semver:_.PATCH,type:`run-build`},{code:`:closed_lock_with_key:`,description:`Add or Update Secrets`,emoji:`๐Ÿ”`,emojiLength:1,semver:_.NULL,type:`secrets`},{code:`:lock:`,description:`Fix Security Issues`,emoji:`๐Ÿ”’๏ธ`,emojiLength:1,semver:_.PATCH,type:`security`},{code:`:seedling:`,description:`Add or Update Seed Files`,emoji:`๐ŸŒฑ`,emojiLength:1,semver:_.NULL,type:`seed`},{code:`:mag:`,description:`Improve Seo`,emoji:`๐Ÿ”๏ธ`,emojiLength:1,semver:_.PATCH,type:`seo`},{code:`:camera_flash:`,description:`Add or Update Snapshots`,emoji:`๐Ÿ“ธ`,emojiLength:1,semver:_.NULL,type:`snapshot`},{code:`:money_with_wings:`,description:`Add Sponsorships or Money Related Infrastructure`,emoji:`๐Ÿ’ธ`,emojiLength:1,semver:_.NULL,type:`sponsor`},{code:`:art:`,description:`Improve Structure / Format of the Code`,emoji:`๐ŸŽจ`,emojiLength:1,semver:_.NULL,type:`style`},{code:`:test_tube:`,description:`Add a Failing Test`,emoji:`๐Ÿงช`,emojiLength:1,semver:_.NULL,type:`test-fail`},{code:`:white_check_mark:`,description:`Add Update or Pass Tests`,emoji:`โœ…`,emojiLength:1,semver:_.NULL,type:`test`},{code:`:speech_balloon:`,description:`Add or Update Text and Literals`,emoji:`๐Ÿ’ฌ`,emojiLength:1,semver:_.PATCH,type:`texts`},{code:`:label:`,description:`Add or Update Types`,emoji:`๐Ÿท๏ธ`,emojiLength:0,semver:_.PATCH,type:`types`},{code:`:pencil2:`,description:`Fix Typos`,emoji:`โœ๏ธ`,emojiLength:0,semver:_.PATCH,type:`typo`},{code:`:lipstick:`,description:`Add or Update the UI and Style Files`,emoji:`๐Ÿ’„`,emojiLength:1,semver:_.PATCH,type:`ui`},{code:`:arrow_up:`,description:`Upgrade Dependencies`,emoji:`โฌ†๏ธ`,emojiLength:0,semver:_.PATCH,type:`upgrade`},{code:`:children_crossing:`,description:`Improve User Experience / Usability`,emoji:`๐Ÿšธ`,emojiLength:1,semver:_.PATCH,type:`ux`},{code:`:safety_vest:`,description:`Add or update code related to validation`,emoji:`๐Ÿฆบ`,emojiLength:1,semver:_.PATCH,type:`validation`},{code:`:construction:`,description:`Work in Progress`,emoji:`๐Ÿšง`,emojiLength:1,semver:_.NULL,type:`wip`}],w=(e,t,n)=>C[C.findIndex(n=>n[t]===e)]?.[n],T=(e,t)=>[f.COMMIT,f.HOOK].includes(e)?{dryrun:t[f.DRYRUN],emoji:t[f.EMOJI],format:t[h.FORMAT]===l.CONVENTIONAL?t[f.EMOJI]?l.CONVENTIONAL:l.CONVENTIONAL_NO_EMOJI:l.GITMOJI,message:t[h.MESSAGE],mode:e===f.HOOK?u.HOOK:u.CLIENT,scope:t[h.SCOPE],skip:t[f.SKIP],title:t[h.TITLE],type:t[h.TYPE]}:null,E=(e,n)=>{let r=e.flags,i=Object.keys(r).map(e=>r[e]&&e).find(e=>n[e]),a=I();!r[f.DRYRUN]&&!a&&(console.log(j(m.TYPES.ERROR,m.MESSAGES.STAGED_FILES)),t.exit(2)),r[f.COMMIT]&&r[f.HOOK]&&(console.log(j(m.TYPES.ERROR,m.MESSAGES.MODE_CONFLICT)),t.exit(2)),(r[h.MESSAGE]||r[h.SCOPE]||r[h.TITLE]||r[h.TYPE])&&(r[f.SKIP]=!0),r[f.SKIP]&&(r[h.TITLE]&&r[h.TYPE]?r[f.SKIP]=!0:(r[f.SKIP]=!1,console.log(j(m.TYPES.ERROR,m.MESSAGES.COMMAND_LINE_WITHOUT_REQUIRED)),r[h.TITLE]=void 0,r[h.TYPE]=void 0));let o=T(i,r);return n[i]?n[i](o):e.showHelp()},D=({emoji:e,emojiLength:t})=>t===0?`${e} `:`${e} `,O=e=>e?.padEnd(y.MAX),k=e=>e.map(({description:e,emoji:t,emojiLength:n,type:r})=>{console.log(`${D({emoji:t,emojiLength:n})} ${O(r)} ${e}`)}),A=(e,t)=>{let n=p[e?.format],r=t?.gitmoji?`${t?.gitmoji} `:``,i=t?.scope?`(${t?.scope.replace(/ {2}/g,`--`).replace(/ /g,`-`).toLowerCase().trim()})`:``;return i=i&&e?.format===l.GITMOJI?`${i} `:i,n.replace(/\{emoji\}/g,r).replace(/\{scope\}/g,i).replace(/\{breaking\}/g,``).replace(/\{title\}/g,t?.title).replace(/\{type\}/g,t?.type)},j=(e,t,n)=>{let r=n?t.replace(/\{REPLACE\}/g,n):t;return r=`\n${r}\n`,e===m.TYPES.ERROR?a.magenta.bold(r):e===m.TYPES.INFO?a.blue.bold(r):e===m.TYPES.WARNING?a.yellow.bold(r):a.green.bold(r)},M=(e,t,n)=>{let r=n?t.replace(/\{REPLACE\}/g,n):t;return e===m.TYPES.ERROR?a.red.bold(r):e===m.TYPES.INFO?a.white.bold(r):e===m.TYPES.WARNING?a.yellow.bold(r):a.green.bold(r)},N=e=>{let t=e.length,n=t.toString(),r=m.TYPES.SUCCESS;return t<v.MIN||t>v.MAX?r=m.TYPES.ERROR:(t<v.MIN_SWAG||t>v.MAX_SWAG)&&(r=m.TYPES.WARNING),M(r,m.MESSAGES.REPLACE,n)},P=()=>o(`git rev-parse --show-toplevel 2>`+(process.platform===`win32`?` nul`:`/dev/null`)).toString().trim(),F=()=>{let e,t=``;e=o(`git rev-parse --abbrev-ref HEAD`),e=e.toString().trim().split(`/`);let n=e[0],r=(e[1]?e[1]:n).split(`-`),i=r[0],a=r[1]?r[1]:i,s=`${i}-${a}`;return!isNaN(parseFloat(a))&&isFinite(parseFloat(a))&&(t=s),t},I=()=>!!o(`git diff --name-only --staged`).toString().trim(),L=e=>{console.log(a.magenta.bold(`โฏ dry-run mode: ${e}\n`))},R=()=>{ /*! * reference: https://github.com/carloscuesta/gitmoji-cli */ t.on(`SIGINT`,()=>{console.log(a.magenta.bold(`โฏ [ccommit] interrupted`)),t.exit(0)})},z=()=>C.map(({description:e,emoji:t,emojiLength:n,type:r})=>({description:e,emoji:t,emojiLength:n,type:r})),B=(e,t)=>{let n=`Character Count (${N(e)}/${t})`;return`${a.dim.cyan(`โ€บ`)} ${a.dim.bold(n)}`},V=e=>e.submitted?e.cancelled?a.magenta(`โœ–`):a.green(`โœ”`):a.cyan(`?`),H=[{default:`(y/N)`,format(e){let t=e?`yes`:`no`;return this.state.submitted?a.green(t):a.dim(t)},initial:!1,message:`Is there a breaking change?`,name:`breaking`,prefix(){return V(this.state)},styles:{primary:a.white},type:`confirm`},{footer(){return B(this.state.input,v.MAX)},message:`Please share breaking change info`,name:`messageBreaking`,result(e){return e?`BREAKING CHANGE: ${e.trim()}`:``},skip(){return!this.state.answers.breaking},type:`input`,validate(e){let t=e?.length||0;return this.state.answers.breaking?t<15?`Must have at least 15 characters`:t>v.MAX?`Cannot exceed ${v.MAX} characters`:!0:!0}},{choices:z().map(({description:e,emoji:t,emojiLength:n,type:r})=>{let i=t;return{name:` ${D({emoji:t,emojiLength:n})} ${O(r)} ${e}`,value:i}}),footer(){return`${a.dim.cyan(`โ€บ`)} ${a.dim.bold(`scroll up and down to reveal more โ†•`)}`},highlight(e){return a.cyanBright(e)},limit:18,message:`Please choose a commit type`,name:`gitmoji`,type:`autocomplete`},{footer(){return B(this.state.input,g.MAX)},format(){return this.state.submitted?a.green(this.value):this.value},message:`Please share the scope (if any)`,name:`scope`,type:`input`,validate(e){let t=e.length;return t===0?!0:t<g.MIN?`Must have at least ${g.MIN} characters`:t>g.MAX?`Cannot exceed ${g.MAX} characters`:!0}},{footer(){return B(this.state.input,v.MAX)},hint(){return this.state.initial?`โ€ฆ tab to use initial value`:``},initial:F()?`${F()} `:``,message:`Please enter the commit title`,name:`title`,type:`input`,validate(e){let t=e.length;return t<v.MIN?`Must have at least ${v.MIN} characters`:t>v.MAX?`Cannot exceed ${v.MAX} characters`:!0}},{footer(){return`${a.dim.cyan(`โ€บ`)} ${a.dim(`Return twice to submit/skip: โฎ‘ โฎ‘`)}`},message:`Please share a more detailed commit message (if applicable)`,multiline:!0,name:`message`,result(e){return e===` `?``:e},type:`input`}],U=async(e,n)=>{try{let t=e?.subject,r=e?.message,a=e?.messageBreaking,o=[`commit`,`-m`,t];r&&o.push(`-m`,r),a&&o.push(`-m`,a),n?.dryrun?L([`git`,...o].join(` `)):await i(`git`,o,{buffer:!1,stdio:`inherit`})}catch(e){console.error(j(m.TYPES.ERROR,m.MESSAGES.COMMIT_FAIL,e.escapedCommand)),t.exit(1)}},W=s(P(),`.git`,`COMMIT_EDITMSG`),G=(e,n)=>{try{let t=e?.subject;e?.message&&e?.message!==` `&&(t+=`\n\n${e.message}`),e?.messageBreaking&&e?.messageBreaking!==` `&&(t+=`\n\n${e.messageBreaking}`),n?.dryrun?L(t):r.writeFileSync(W,t)}catch(e){console.error(e),t.exit(1)}finally{t.exit(0)}},{prompt:K}=n,q=async e=>{let n={};return e.skip?(n=e,n.gitmoji=w(n.type,d.TYPE,d.EMOJI),n.gitmoji||(console.log(j(m.TYPES.ERROR,m.MESSAGES.TYPE_INCORRECT,n.type)),t.exit(2))):await K(H).then(e=>(e.type=w(e.gitmoji,d.EMOJI,d.TYPE),e)).then(e=>{n=e}).catch(console.error),n.subject=n?A(e,n):``,e.mode===u.HOOK?G(n,e):U(n,e)};var J=e=>e.mode===u.HOOK?(R(),S().then(()=>q(e))):q(e),Y=()=>k(C); /*! * For license information please see index.js.LICENSE.txt */ E(e(` Usage $ ccommit -c Flags --${f.BREAKING}, -b ๐Ÿ’ฅ Breaking Change --${f.COMMIT}, -c ๐Ÿ’ฝ Mode: Client --${f.DRYRUN}, -n ๐ŸŽฝ Mode: Dry Run --${f.EMOJI}, -e ๐Ÿ˜œ Emoji (default) --${f.HOOK}, -u ๐Ÿช Mode: Hook --${f.LIST}, -l ๐Ÿ“– List all types --${f.VERSION}, -v ๐Ÿ“ฆ Print installed version Options --${h.FORMAT} ๐Ÿ˜œ Commit Format: conventional|gitmoji (default) --${h.MESSAGE} ๐Ÿ“ Commit Message --${h.SCOPE} ๐Ÿ”ฌ Commit Scope --${h.TITLE} ๐Ÿ““ Commit Title --${h.TYPE} โœจ Commit Type Notes - Pass any non-format options the following will be required: --title, --type - If you do not pass any options the Conventional Commit Generator prompt will run - Branch Name detection is enabled to pre-populate Issue Tracker information in prompt `,{flags:{[f.BREAKING]:{default:!1,shortFlag:`b`,type:`boolean`},[f.COMMIT]:{shortFlag:`c`,type:`boolean`},[f.DRYRUN]:{shortFlag:`n`,type:`boolean`},[f.EMOJI]:{default:!0,shortFlag:`e`,type:`boolean`},[f.HELP]:{shortFlag:`h`,type:`boolean`},[f.HOOK]:{shortFlag:`u`,type:`boolean`},[f.LIST]:{shortFlag:`l`,type:`boolean`},[f.SKIP]:{default:!1,type:`boolean`},[f.VERSION]:{shortFlag:`v`,type:`boolean`},[h.FORMAT]:{default:l.GITMOJI,type:`string`},[h.MESSAGE]:{type:`string`},[h.SCOPE]:{type:`string`},[h.TITLE]:{type:`string`},[h.TYPE]:{type:`string`}},importMeta:import.meta}),{[c.COMMIT]:e=>J(e),[c.HOOK]:e=>J(e),[c.LIST]:()=>Y()});export{}; //# sourceMappingURL=index.mjs.map