Skip to content
/ gitv Public

gitv is a terminal-based viewer for GitHub issues. It allows you to view and manage your GitHub issues directly from the terminal.

License

Unlicense, MIT licenses found

Licenses found

Unlicense
UNLICENSE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

JayanAXHF/gitv

Repository files navigation

gitv

Built With Ratatui crates.io

Note

Following in the footsteps of the global regex expression print grep, I introduce to you github issues tui viewer gitv.

gitv is a terminal-based viewer for GitHub issues. It allows you to view and manage your GitHub issues directly from the terminal.

Made with VHS

Features

  • View issues from any GitHub repository
  • View issue conversations, including parsed markdown content
  • Full support for adding and removing reactions
  • Regex search for labels, plus the ability to create, edit, add, and remove labels from issues
  • Commenting on issues, with support for markdown formatting and quoting comments
  • Editing comments
  • Closing issues
  • Assigning and unassigning issues to users
  • Creating new issues
  • Syntax highlighting for code blocks in issue conversations

Installation

Homebrew (macOS)

brew install jayanaxhf/taps/gitv

Using Cargo

cargo install --locked gitv-tui

From Source

  1. Clone the repository:
git clone https://github.com/jayanaxhf/gitv.git
  1. Navigate to the project directory:
cd gitv
  1. Build the project:
cargo install --path .

NixOS

Flake

First add the repository to your inputs.

Point to main branch:

inputs = {
    ...
    gitv.url = "github:JayanAXHF/gitv";
    ...
};

Point to a rev in main branch:

inputs = {
    ...
    gitv.url = "github:JayanAXHF/gitv/d70273b05c5e80b05446e4aa0847758e54435d62";
    ...
};

Point to a tag:

inputs = {
    ...
    gitv.url = "github:JayanAXHF/gitv/refs/tags/gitv-tui-v0.3.2";
    ...
};

Then your outputs should look something like this:

outputs = {...} @ inputs: { 
  # Don't forget to add nixpkgs to your inputs
  nixosConfigurations."nixos" = inputs.nixpkgs.lib.nixosSystem {
    ...
    specialArgs = {inherit inputs;};
    modules = [
      ./configuration.nix
      ... 
    ];
  };
};

And finally, somewhere in your configuration.nix:

{inputs, pkgs, ...}: {
  ...
  environment.systemPackages = [
    inputs.gitv.packages.${pkgs.stdenv.hostPlatform.system}.default
  ];
  ...
}
Non-Flake
Pinning Tool

First add the pin using your pinning tool.

We are going to show examples using npins.

Point to a branch:

npins add github JayanAXHF gitv -b main

Point to a rev in main branch:

npins add github JayanAXHF gitv -b main --at d70273b05c5e80b05446e4aa0847758e54435d62

Point to a tag:

npins add github JayanAXHF gitv --at gitv-tui-v0.3.2

Or point to latest release:

npins add github JayanAXHF gitv

Then add the package to your systemPackages:

let
  sources = import ./npins;
in {
  environment.systemPackages = [
    (import sources.gitv {})
  ];
}
No Pinning Tool
let
  rev = "d70273b05c5e80b05446e4aa0847758e54435d62";
  gitv = import (fetchTarball "https://github.com/JayanAXHF/gitv/archive/${rev}.tar.gz") {};
in {
  environment.systemPackages = [
    gitv
  ];
}

Usage

Usage: gitv [OPTIONS] [OWNER] [REPO]

Arguments:
  [OWNER]
          GitHub repository owner or organization (for example: `rust-lang`).

          This is required unless `--print-log-dir` or `--set-token` is provided.

  [REPO]
          GitHub repository name under `owner` (for example: `rust`).

          This is required unless `--print-log-dir` or `--set-token` is provided.

Options:
  -l, --log-level <LOG_LEVEL>
          Global logging verbosity used by the application logger.

          Defaults to `info`.

          [default: info]
          [possible values: trace, debug, info, warn, error, none]

  -p, --print-log-dir
          Prints the directory where log files are written and exits

  -s, --set-token <SET_TOKEN>
          Stores/updates the GitHub token in the configured credential store.

          When provided, this command updates the saved token value.

      --generate-man
          Generate man pages using clap-mangen and exit

  -e, --env
          When provided, this command will read the GitHub token from the environment variable

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

See KEYBINDINGS.md for a list of keybindings used in the application.

Token Security

Note

To persist the token across reboots (i.e. to store it on disk) on Linux, build with the persist-token feature flag. This requires for dbus to be present and DBUS_SESSION_BUS_ADDRESS to be set.

gitv uses the keyring crate to securely store your GitHub token in your system's credential store. This means that your token is encrypted and protected by your operating system's security features, providing a secure way to manage your authentication credentials.

Contributing

Contributions to gitv are welcome! If you have an idea for a new feature or have found a bug, please open an issue or submit a pull request on the GitHub repository.

Tip

Run the init.py initialization script to set up your development environment. It installs a pre-push hook that runs typos and clippy to help maintain code quality and consistency. Ensure that you have the typos-cli installed and available in your PATH for the pre-push hook to work correctly. You can install it using cargo install typos-cli.

[!TIP]

If you're using nix then you can use the provided devshell to get your development environment up and running, it also includes the pre-push hook provided. You can do so by executing direnv allow or nix develop.

License

gitv is dual-licensed under the MIT License and the Unlicense, at your option. See the MIT and Unlicense for more information.

About

gitv is a terminal-based viewer for GitHub issues. It allows you to view and manage your GitHub issues directly from the terminal.

Topics

Resources

License

Unlicense, MIT licenses found

Licenses found

Unlicense
UNLICENSE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Contributors

Languages