🦊 An interactive cli for creating conventional commits.

Overview

🦊 koji

An interactive cli for creating conventional commits, built on cocogitto and inspired by cz-cli.

GitHub Workflow Status Conventional Commits License

Commit with koji

Installation

Not yet. 😔

Usage

Using koji

# Create a conventional commit
koji

# For extra fun, use emoji
koji -e # or, --emoji

Add custom commit types

You can add custom commit types via a koji.toml file in the working directory. An example can be found here.

Comments
  • Build problem for 1.5.2

    Build problem for 1.5.2

    Describe the bug Fails to build.

    To Reproduce

    cargo +nightly  install-update koji
        Updating registry 'https://github.com/rust-lang/crates.io-index'
    
    Package  Installed  Latest  Needs update
    koji     v1.5.1     v1.5.2  Yes
    
    Updating koji
    

    ...snip...

       Compiling cocogitto v5.2.0
       Compiling koji v1.5.2
    error[E0061]: this function takes 7 arguments but 6 arguments were supplied
       --> /Users/berkus/.cargo/registry/src/github.com-1ecc6299db9ec823/koji-1.5.2/src/lib/commit.rs:43:15
        |
    43  |     cocogitto.conventional_commit(&commit_type, scope, summary, body, None, is_breaking_change)?;
        |               ^^^^^^^^^^^^^^^^^^^-------------------------------------------------------------- an argument of type `bool` is missing
        |
    note: associated function defined here
       --> /Users/berkus/.cargo/registry/src/github.com-1ecc6299db9ec823/cocogitto-5.2.0/src/lib.rs:364:12
        |
    364 |     pub fn conventional_commit(
        |            ^^^^^^^^^^^^^^^^^^^
    help: provide the argument
        |
    43  |     cocogitto.conventional_commit(&commit_type, scope, summary, body, None, is_breaking_change, /* bool */)?;
        |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    

    Expected behavior Builds.

    Screenshots N/A

    Additional context N/A

    bug 
    opened by berkus 3
  • Koji does not work on M1 MacBook Pro with macOS v12.3 (21E230)

    Koji does not work on M1 MacBook Pro with macOS v12.3 (21E230)

    Describe the bug The koji tool fails to run on the latest macOS. This is possibly due to dependency on OpenSSLv3.

    To Reproduce Install Koji using the following command in the terminal: curl -sS https://webinstall.dev/koji | bash Run koji: koji

    This problem occurs even if the release is directly downloaded from Github release page.

    Expected behavior Koji should run

    Screenshots dyld[54780]: Library not loaded: /usr/local/opt/openssl@3/lib/libssl.3.dylib Referenced from: ~/.local/opt/koji-v1.4.0/bin/koji Reason: tried: '/usr/local/opt/openssl@3/lib/libssl.3.dylib' (no such file), '/usr/local/lib/libssl.3.dylib' (no such file), '/usr/lib/libssl.3.dylib' (no such file) [1] 54780 abort koji

    Additional context On macOS openssl version yields the following: LibreSSL 2.8.3

    bug 
    opened by Kiran-B 3
  • Cannot --version from HOME directory

    Cannot --version from HOME directory

    Describe the bug

    koji --version
    
    Error: could not find repository from '/Users/aj'; class=Repository (6); code=NotFound (-3)
    

    Expected behavior

    Should be able to print version from any directory, not just from project directories with a .git.

    bug 
    opened by coolaj86 2
  • koji --hook does not handle the message from `git commit -m

    koji --hook does not handle the message from `git commit -m "msg"`

    Describe the bug

    I've got koji set up as a git hook:

    .git/modules/installers/hooks/prepare-commit-msg

    #!/bin/bash
    koji --hook
    

    When I run git commit -m "some description", it does not use the description that I gave:

    app@beta ~/project> git commit -m "blah blah blah"
    ✔ What type of change are you committing? · feat
    ✔ What is the scope of this change? (press enter to skip) ·
    ? Write a short, imperative tense description of the change. ›
    

    Expected behavior

    When I run git commit -m "some description", koji should pre-populate the message with some description.

    Ideally, I would like to be able to use git commit -m "feature(thing): something nice" or git commit -m "doc: more words" and koji suggest a fix for my spelling mistake, such as feat or docs.

    enhancement 
    opened by coolaj86 2
  • windows version missing

    windows version missing

    Hey,

    I had 1.2.0 installed and there was a windows version but after that version you changed the publish process and you don't built windows anymore.

    Is there a limitation or something like that, why you don't provide it anymore.

    bug 
    opened by rexlManu 1
  • Does not work with git modules

    Does not work with git modules

    Error: Not a directory (os error 20)
    

    Describe the bug

    If you're working directory is a git submodule, then .git will be a text file with the parameter gitdir acting as a (sym)link to the real module directory.

    .git:

    gitdir: ../.git/modules/installers
    
    app@beta ~/project> git commit
    ✔ What type of change are you committing? · docs
    ✔ What is the scope of this change? (press enter to skip) · koji
    ✔ Write a short, imperative tense description of the change. · update docs for webi users as target audience
    ✔ Provide a longer description of the change. (press enter to skip) ·
    ✔ Are there any breaking changes? · No
    ✔ Does this change affect any open issues? · No
    Error: Not a directory (os error 20)
    
    bug 
    opened by coolaj86 1
  • Look for toml in user config directory, or .kojirc.toml in the git directory

    Look for toml in user config directory, or .kojirc.toml in the git directory

    Is your feature request related to a problem? Please describe.

    First

    Most config files for tooling begin with . and end in rc.<ext>:

    • .jshintrc
    • .eslintrc.json
    • .prettierrc.json

    I would prefer that koji.toml follow this convention.

    Second

    Most tools allow for a top-level config file in ~/.config/<name>/config.<ext>.

    It would be great if koji would do this as a fallback.

    For example, if I don't have a local .kojirc.toml in my git directory, but I have one in ~/.config/koji/config.toml, then that should be used instead.

    enhancement 
    opened by coolaj86 1
  • type to select

    type to select

    Is your feature request related to a problem? Please describe.

    Currently when I use koji my only option to select text is to use the arrow keys. 😢

    Describe the solution you'd like

    If I start typing, let's say f, then feat should be selected. Or if I type d, then docs should be selected.

    enhancement 
    opened by coolaj86 1
  • cache scopes

    cache scopes

    config file needs to change to accept a scopes array. on first run (with --autocomplete), save the found scopes to the config via appending it. this allows the user to set up their own list when starting a fresh repo, while also populating it with new ones. every time you commit with koji, the list should be updated.

    for this to work, commit_types needs to work differently. when we load a config, we need to check for commit_types and use the default if they don't exist. currently we only use the default if a config file doesn't exist at all.

    this sounds like the correct thing to do, but i'm no totally sure it's necessary. autocomplete is an optional flag, and in a large repo it only slows startup down by milliseconds.

    enhancement maybe 
    opened by its-danny 0
Releases(1.5.3)
Owner
Danny
Danny
Universal changelog generator using conventional commit+ with monorepo support. Written in Rust.

chlog Universal changelog generator using conventional commit+ with monorepo support. chlog can generate the changelog from the conventional commits w

Jeff Yang 3 Nov 27, 2022
Command palette-style Git client for blazing-fast commits.

?? About Commit Commit is the world's simplest Git client. Open it with a keyboard shortcut, write your commit, and you're done! Commit will automatic

Miguel Piedrafita 190 Aug 18, 2023
Creating CLI's just got a whole lot better.

Staq Creating CLI's just got a whole lot better. Don't worry about CLI colouring, networking, Size of Executables, Speed ever again Have any doubts? R

null 12 Jun 6, 2021
A gitmoji interactive client for using gitmojis on commit messages.

gitmoji in Rust This is just an opinionated version of gitmoji-cli written in Rust . A gitmoji interactive client for using gitmojis on commit message

igor 2 Aug 16, 2022
A playground for creating generative art, buit with Rust🦀 and WASM🕸

Genny A playground for creating generative art, buit with Rust ?? and WASM ?? About This is a simple playground that allows me to explore ideas around

João Paiva 3 Mar 12, 2022
A swiss army knife for creating binary modules for Garry's Mod in Rust.

A swiss army knife for creating binary modules for Garry's Mod in Rust.

William 38 Dec 24, 2022
Mononym is a library for creating unique type-level names for each value in Rust.

Mononym is a library for creating unique type-level names for each value in Rust.

MaybeVoid 52 Dec 16, 2022
Another attempt at creating a wrapper for fastcdc in node.js

Another attempt at creating a wrapper for fastcdc in node.js. This time using wasmbindgen instead of neon.

Mikola Lysenko 5 Jul 28, 2022
Rust crate for creating filters with DirectX shaders. Includes Scale, Color conversion using DirectX api.

DxFilter Scale and ColorConversion done with DirectX filters. You can also create your own filters with the provided api. Crate contains various tools

null 4 Aug 13, 2022
A proc macro for creating compile-time checked CSS class sets, in the style of classNames

semester Semester is a declarative CSS conditional class name joiner, in the style of React's classnames. It's intended for use in web frameworks (lik

Nathan West 11 Oct 20, 2022
Concrete is a simple programming language specifically crafted for creating highly scalable systems that are reliable, efficient, and easy to maintain.

The Concrete Programming Language Most ideas come from previous ideas - Alan C. Kay, The Early History Of Smalltalk In the realm of low-level programm

Lambdaclass 126 Nov 22, 2024
Utilities and tools based around Amazon S3 to provide convenience APIs in a CLI

s3-utils Utilities and tools based around Amazon S3 to provide convenience APIs in a CLI. This tool contains a small set of command line utilities for

Isaac Whitfield 47 Dec 15, 2022
CLI & Utilities for fractional.art

fractional-rs CLI & Utilities for fractional.art CLI Usage The CLI uses Flashbots' relay to submit the transactions. No bribe is required as you pay v

Georgios Konstantopoulos 20 Dec 27, 2022
Make the github cli even better with fuzzy finding

github-repo-clone (grc) Github Repo Clone is a command line utility written in rust that leverages the power of fuzzy finding with the github cli Usag

Jared Moulton 2 Jul 9, 2022
A cli utility written in Rust that allows fetching all the labels of a project, save those as a YAML file

A cli utility written in Rust that allows fetching all the labels of a project, save those as a YAML file that you can easily edit or save as backup and apply a saved preset to new repositories.

Chevdor 4 May 5, 2022
✨🥞The magic pancakes cli currently supports one command

✨ ?? Magic Pancakes The magic pancakes cli currently supports one command: $ pancakes generate Installing $ cargo build --release $ cargo install --pa

Kevin Rodríguez 3 May 6, 2022
lipsum-cli is a small terminal application written in Rust language.

lipsum-cli is a small terminal application written in Rust language. It's used for generating pseudo-Latin lorem ipsum filler text in terminal.

Civan YavuzÅŸen 5 Nov 28, 2022
A CLI tool that automatically writes commit messages for you.

Automagically-generated commit messages A CLI tool that generates commit messages from your staged changes, built in Rust and using OpenAI's Codex. In

Miguel Piedrafita 839 Jan 6, 2023
Tudo is a fast and simple CLI tool for managing to-do lists.

Tudo is a fast and simple CLI tool for managing to-do lists. With Tudo, you can easily add, remove, clear, and mark tasks as done, all from the command line. Tudo is written in Rust, making it a BLAZINGLY high-performance and efficient tool for staying organized.

Daniel Ramirez 3 Apr 18, 2023