From 26fa84ebce364aef3c3e041b7c01d4cb84db192d Mon Sep 17 00:00:00 2001 From: Phillip Cloud <417981+cpcloud@users.noreply.github.com> Date: Thu, 22 Apr 2021 22:27:29 -0400 Subject: [PATCH] scmpuff: init (#1921) scmpuff is a command line tool that allows you to work quicker with Git by substituting numeric shortcuts for files --- .github/CODEOWNERS | 3 ++ modules/modules.nix | 1 + modules/programs/scmpuff.nix | 46 +++++++++++++++++++++ tests/default.nix | 1 + tests/modules/programs/scmpuff/bash.nix | 15 +++++++ tests/modules/programs/scmpuff/default.nix | 7 ++++ tests/modules/programs/scmpuff/no-bash.nix | 15 +++++++ tests/modules/programs/scmpuff/no-shell.nix | 18 ++++++++ tests/modules/programs/scmpuff/no-zsh.nix | 15 +++++++ tests/modules/programs/scmpuff/zsh.nix | 15 +++++++ 10 files changed, 136 insertions(+) create mode 100644 modules/programs/scmpuff.nix create mode 100644 tests/modules/programs/scmpuff/bash.nix create mode 100644 tests/modules/programs/scmpuff/default.nix create mode 100644 tests/modules/programs/scmpuff/no-bash.nix create mode 100644 tests/modules/programs/scmpuff/no-shell.nix create mode 100644 tests/modules/programs/scmpuff/no-zsh.nix create mode 100644 tests/modules/programs/scmpuff/zsh.nix diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 475150fd4..965d56208 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -141,6 +141,9 @@ /modules/programs/sbt.nix @kubukoz /tests/modules/programs/sbt @kubukoz +/modules/programs/scmpuff.nix @cpcloud +/tests/modules/programs/scmpuff @cpcloud + /modules/programs/ssh.nix @rycee /modules/programs/starship.nix @marsam diff --git a/modules/modules.nix b/modules/modules.nix index 0e4e7fef2..952abc1ed 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -118,6 +118,7 @@ let (loadModule ./programs/rofi.nix { }) (loadModule ./programs/rofi-pass.nix { }) (loadModule ./programs/rtorrent.nix { }) + (loadModule ./programs/scmpuff.nix { }) (loadModule ./programs/skim.nix { }) (loadModule ./programs/starship.nix { }) (loadModule ./programs/sbt.nix { }) diff --git a/modules/programs/scmpuff.nix b/modules/programs/scmpuff.nix new file mode 100644 index 000000000..5f34e7db6 --- /dev/null +++ b/modules/programs/scmpuff.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: +with lib; +let cfg = config.programs.scmpuff; +in { + meta.maintainers = [ maintainers.cpcloud ]; + + options.programs.scmpuff = { + enable = mkEnableOption + "scmpuff, a command line tool that allows you to work quicker with Git by substituting numeric shortcuts for files"; + + package = mkOption { + type = types.package; + default = pkgs.gitAndTools.scmpuff; + defaultText = literalExample "pkgs.gitAndTools.scmpuff"; + description = "Package providing the scmpuff tool."; + }; + + enableBashIntegration = mkOption { + default = true; + type = types.bool; + description = '' + Whether to enable Bash integration. + ''; + }; + + enableZshIntegration = mkOption { + default = true; + type = types.bool; + description = '' + Whether to enable Zsh integration. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + programs.bash.initExtra = mkIf cfg.enableBashIntegration '' + eval "$(${cfg.package}/bin/scmpuff init -s)" + ''; + + programs.zsh.initExtra = mkIf cfg.enableZshIntegration '' + eval "$(${cfg.package}/bin/scmpuff init -s)" + ''; + }; +} diff --git a/tests/default.nix b/tests/default.nix index c2202759d..de0a2eb3d 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -71,6 +71,7 @@ import nmt { ./modules/programs/qutebrowser ./modules/programs/readline ./modules/programs/sbt + ./modules/programs/scmpuff ./modules/programs/ssh ./modules/programs/starship ./modules/programs/texlive diff --git a/tests/modules/programs/scmpuff/bash.nix b/tests/modules/programs/scmpuff/bash.nix new file mode 100644 index 000000000..8011e2d54 --- /dev/null +++ b/tests/modules/programs/scmpuff/bash.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + config = { + programs = { + scmpuff.enable = true; + bash.enable = true; + }; + + nmt.script = '' + assertFileExists home-files/.bashrc + assertFileContains \ + home-files/.bashrc \ + 'eval "$(${pkgs.gitAndTools.scmpuff}/bin/scmpuff init -s)"' + ''; + }; +} diff --git a/tests/modules/programs/scmpuff/default.nix b/tests/modules/programs/scmpuff/default.nix new file mode 100644 index 000000000..5852c5b69 --- /dev/null +++ b/tests/modules/programs/scmpuff/default.nix @@ -0,0 +1,7 @@ +{ + scmpuff-bash = ./bash.nix; + scmpuff-no-bash = ./no-bash.nix; + scmpuff-no-shell = ./no-shell.nix; + scmpuff-no-zsh = ./no-zsh.nix; + scmpuff-zsh = ./zsh.nix; +} diff --git a/tests/modules/programs/scmpuff/no-bash.nix b/tests/modules/programs/scmpuff/no-bash.nix new file mode 100644 index 000000000..0b67e1f64 --- /dev/null +++ b/tests/modules/programs/scmpuff/no-bash.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + config = { + programs = { + scmpuff = { + enable = true; + enableBashIntegration = false; + }; + bash.enable = true; + }; + + nmt.script = '' + assertFileNotRegex home-files/.bashrc '${pkgs.gitAndTools.scmpuff}/bin/scmpuff' + ''; + }; +} diff --git a/tests/modules/programs/scmpuff/no-shell.nix b/tests/modules/programs/scmpuff/no-shell.nix new file mode 100644 index 000000000..02657e023 --- /dev/null +++ b/tests/modules/programs/scmpuff/no-shell.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: { + config = { + programs = { + scmpuff = { + enable = true; + enableBashIntegration = false; + enableZshIntegration = false; + }; + bash.enable = true; + zsh.enable = true; + }; + + nmt.script = '' + assertFileNotRegex home-files/.zshrc '${pkgs.gitAndTools.scmpuff} init -s' + assertFileNotRegex home-files/.bashrc '${pkgs.gitAndTools.scmpuff} init -s' + ''; + }; +} diff --git a/tests/modules/programs/scmpuff/no-zsh.nix b/tests/modules/programs/scmpuff/no-zsh.nix new file mode 100644 index 000000000..b2d3eec2b --- /dev/null +++ b/tests/modules/programs/scmpuff/no-zsh.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + config = { + programs = { + scmpuff = { + enable = true; + enableZshIntegration = false; + }; + zsh.enable = true; + }; + + nmt.script = '' + assertFileNotRegex home-files/.zshrc '${pkgs.gitAndTools.scmpuff} init -s' + ''; + }; +} diff --git a/tests/modules/programs/scmpuff/zsh.nix b/tests/modules/programs/scmpuff/zsh.nix new file mode 100644 index 000000000..183b0544e --- /dev/null +++ b/tests/modules/programs/scmpuff/zsh.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + config = { + programs = { + scmpuff.enable = true; + zsh.enable = true; + }; + + nmt.script = '' + assertFileExists home-files/.zshrc + assertFileContains \ + home-files/.zshrc \ + 'eval "$(${pkgs.gitAndTools.scmpuff}/bin/scmpuff init -s)"' + ''; + }; +}