diff options
author | Maxim Cournoyer <[email protected]> | 2022-01-25 22:07:13 -0500 |
---|---|---|
committer | Maxim Cournoyer <[email protected]> | 2022-01-25 22:07:13 -0500 |
commit | 1a5302435ff0d2822b823f5a6fe01faa7a85c629 (patch) | |
tree | ac7810c88b560532f22d2bab2e59609cd7305c21 /gnu/packages/shellutils.scm | |
parent | 3ff2ac4980dacf10087e4b42bd9fbc490591900c (diff) | |
parent | 070b8a893febd6e7d8b2b7c8c4dcebacf7845aa9 (diff) |
Merge branch 'master' into staging.
With "conflicts" solved (all in favor of master except git) in:
gnu/local.mk
gnu/packages/databases.scm
gnu/packages/glib.scm
gnu/packages/gnome.scm
gnu/packages/gnupg.scm
gnu/packages/gnuzilla.scm
gnu/packages/graphics.scm
gnu/packages/gstreamer.scm
gnu/packages/gtk.scm
gnu/packages/linux.scm
gnu/packages/machine-learning.scm
gnu/packages/networking.scm
gnu/packages/polkit.scm
gnu/packages/pulseaudio.scm
gnu/packages/rpc.scm
gnu/packages/rust.scm
gnu/packages/version-control.scm
gnu/packages/w3m.scm
Diffstat (limited to 'gnu/packages/shellutils.scm')
-rw-r--r-- | gnu/packages/shellutils.scm | 368 |
1 files changed, 320 insertions, 48 deletions
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index 94b5536df7..3f9f8a27f4 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -10,6 +10,10 @@ ;;; Copyright © 2020 aecepoglu <[email protected]> ;;; Copyright © 2020 Dion Mendel <[email protected]> ;;; Copyright © 2021 Brice Waegeneire <[email protected]> +;;; Copyright © 2021 Alexandr Vityazev <[email protected]> +;;; Copyright © 2021 Xinglu Chen <[email protected]> +;;; Copyright © 2021 Foo Chuan Wei <[email protected]> +;;; Copyright © 2021 Wiktor Żelazny <[email protected]> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +32,7 @@ (define-module (gnu packages shellutils) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) @@ -38,20 +43,63 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bison) + #:use-module (gnu packages check) #:use-module (gnu packages flex) #:use-module (gnu packages golang) + #:use-module (gnu packages libunistring) #:use-module (gnu packages ncurses) + #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) #:use-module (gnu packages shells) - #:use-module (gnu packages tmux)) + #:use-module (gnu packages tmux) + #:use-module (gnu packages vim)) + +(define-public ascii + (package + (name "ascii") + (version "3.18") + (source (origin + (method url-fetch) + (uri (string-append "http://www.catb.org/~esr/ascii/" + "ascii-" version ".tar.gz")) + (sha256 + (base32 + "0b87vy06s8s3a8q70pqavsbk4m4ff034sdml2xxa6qfsykaj513j")))) + (build-system gnu-build-system) + (arguments `(#:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'install 'create-directories + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man1 (string-append out "/share/man/man1"))) + (mkdir-p bin) + (mkdir-p man1))))) + #:tests? #f)) + (home-page "http://www.catb.org/~esr/ascii/") + (synopsis "ASCII name and synonym chart") + (description + "The @code{ascii} utility provides easy conversion between various byte +representations and the American Standard Code for Information Interchange +(ASCII) character table. It knows about a wide variety of hex, binary, octal, +Teletype mnemonic, ISO/ECMA code point, slang names, XML entity names, and +other representations. Given any one on the command line, it will try to +display all others. Called with no arguments it displays a handy small ASCII +chart.") + (license license:bsd-2))) (define-public boxes (package (name "boxes") - (version "1.3") + (version "2.1.1") (source (origin (method git-fetch) (uri (git-reference @@ -60,32 +108,40 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0b12rsynrmkldlwcb62drk33kk0aqwbj10mq5y5x3hjf626gjwsi")))) + "1bf5rnfiw04ffs1l17zhbg4wvq2vfn2qbz1xmd250xqj15lysw88")))) (build-system gnu-build-system) (arguments `(#:test-target "test" #:make-flags (list (string-append "GLOBALCONF=" (assoc-ref %outputs "out") "/etc/boxes-config")) + #:modules + ((ice-9 match) + ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases (delete 'configure) (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (let ((dest (assoc-ref outputs "out"))) - (for-each (lambda (x) - (install-file (car x) - (string-append dest "/" (cdr x)))) - '(("src/boxes" . "bin") - ("doc/boxes.1" . "share/man/man1") - ("boxes-config" . "etc/"))) - #t)))))) - (native-inputs `(("flex" ,flex) ("bison" ,bison))) + (let ((out (assoc-ref outputs "out"))) + (for-each (match-lambda + ((source target) + (install-file source + (string-append out "/" target)))) + '(("out/boxes" "bin/") + ("doc/boxes.1" "share/man/man1/") + ("boxes-config" "etc/"))))))))) + (native-inputs + (list bison flex + ;; For the tests. + xxd)) + (inputs + (list libunistring pcre2)) + (home-page "https://boxes.thomasjensen.com") (synopsis "Command line ASCII boxes") (description "This command-line filter program draws ASCII-art boxes around your input text.") - (home-page "https://boxes.thomasjensen.com/build.html") (license license:gpl2))) (define-public zsh-autosuggestions @@ -103,13 +159,13 @@ text.") "1g3pij5qn2j7v7jjac2a63lxd97mcsgw6xq6k5p7835q9fjiid98")))) (build-system gnu-build-system) (native-inputs - `(("ruby" ,ruby) - ("ruby-byebug" ,ruby-byebug) - ("ruby-pry" ,ruby-pry) - ("ruby-rspec" ,ruby-rspec) - ("ruby-rspec-wait" ,ruby-rspec-wait) - ("tmux" ,tmux) - ("zsh" ,zsh))) + (list ruby + ruby-byebug + ruby-pry + ruby-rspec + ruby-rspec-wait + tmux + zsh)) (arguments '(#:phases (modify-phases %standard-phases @@ -138,6 +194,57 @@ text.") as you type.") (license license:expat))) +(define-public zsh-syntax-highlighting + (package + (name "zsh-syntax-highlighting") + (version "0.7.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zsh-users/zsh-syntax-highlighting") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "039g3n59drk818ylcyvkciv8k9mf739cv6v4vis1h9fv9whbcmwl")))) + (build-system gnu-build-system) + (native-inputs + (list zsh)) + (arguments + ;; FIXME: Tests fail when running test regexp + ;; there is no pcre module in the Guix zsh package + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("/usr/local") out) + (("share/\\$\\(NAME\\)") "share/zsh/plugins/$(NAME)"))))) + (add-after 'patch-paths 'make-writable + (lambda _ + (for-each make-file-writable + '("docs/highlighters.md" + "README.md")))) + (add-before 'build 'add-all-md + (lambda _ + (invoke "make" "all"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "test") + (invoke "make" "perf"))))))) + (home-page "https://github.com/zsh-users/zsh-syntax-highlighting") + (synopsis "Fish shell-like syntax highlighting for Zsh") + (description + "This package provides syntax highlighting for Zsh. It enables +highlighting of commands whilst they are typed at a Zsh prompt into an +interactive terminal. This helps in reviewing commands before running them, +particularly in catching syntax errors.") + (license license:bsd-3))) + (define-public sh-z (package (name "sh-z") @@ -203,19 +310,20 @@ between various shells or commands.") (define-public trash-cli (package (name "trash-cli") - (version "0.17.1.14") + (version "0.21.10.24") (source (origin - (method url-fetch) - (uri (pypi-uri "trash-cli" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/andreafrancia/trash-cli") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "01q0cl04ljf214z6s3g256gsxx3pqsgaf6ac1zh0vrq5bnhnr85h")))) + "01is32lk6prwhajvlmgn3xs4fcpmiqivizcqkj9k80jx6mqjifzs")))) (build-system python-build-system) (arguments - `(#:python ,python-2 - #:tests? #f ; no tests - #:phases + `(#:phases (modify-phases %standard-phases (add-before 'build 'patch-path-constants (lambda* (#:key inputs #:allow-other-keys) @@ -225,8 +333,22 @@ between various shells or commands.") (("\"/lib/libc.so.6\".*") (string-append "\"" libc "/lib/libc.so.6\"\n")) (("\"df\"") - (string-append "\"" coreutils "/bin/df\""))))))))) - (inputs `(("coreutils" ,coreutils))) + (string-append "\"" coreutils "/bin/df\"")))))) + (add-before 'build 'fix-setup.py + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (substitute* "setup.py" + (("add_script\\('") + (string-append "add_script('" bin "/" ))))))))) + (native-inputs + (list python-pytest + python-mock + python-six)) + (inputs (list coreutils)) + (propagated-inputs + (list python-psutil)) (home-page "https://github.com/andreafrancia/trash-cli") (synopsis "Trash can management tool") (description @@ -239,7 +361,7 @@ are already there.") (define-public direnv (package (name "direnv") - (version "2.15.2") + (version "2.28.0") (source (origin (method git-fetch) (uri (git-reference @@ -248,18 +370,12 @@ are already there.") (file-name (git-file-name name version)) (sha256 (base32 - "1y18619pmhfl0vrf4w0h75ybkkwgi9wcb7d9kv4n8drg1xp4aw4w")))) + "0yk53jn7wafklixclka17wyjjs2g5giigjr2bd0xzy10nrzwp7c9")))) (build-system go-build-system) (arguments '(#:import-path "github.com/direnv/direnv" #:phases (modify-phases %standard-phases - (add-after 'unpack 'delete-vendor - (lambda _ - ;; Using a snippet causes issues with the name of the directory, - ;; so delete the extra source code here. - (delete-file-recursively "src/github.com/direnv/direnv/vendor") - #t)) (add-after 'install 'install-manpages (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -277,15 +393,16 @@ are already there.") ;; The following file needs to be writable so it can be ;; modified by the testsuite. (make-file-writable "test/scenarios/base/.envrc") - (invoke "make" "test") + ;; We need to manually run test because make test + ;; tries to use go modules + (invoke "go" "test" "./...") ;; Clean up from the tests, especially so that the extra ;; direnv executable that's generated is removed. (invoke "make" "clean"))) #t))))) (native-inputs - `(("go-github-com-burntsushi-toml" ,go-github-com-burntsushi-toml) - ("go-github-com-direnv-go-dotenv" ,go-github-com-direnv-go-dotenv) - ("which" ,which))) + (list go-github-com-burntsushi-toml go-github-com-direnv-go-dotenv + go-github-com-mattn-go-isatty go-golang-org-x-mod which)) (home-page "https://direnv.net/") (synopsis "Environment switcher for the shell") (description @@ -336,7 +453,7 @@ below the current cursor position, scrolling the screen if necessary.") (define-public hstr (package (name "hstr") - (version "2.3") + (version "2.5") (source (origin (method git-fetch) (uri (git-reference @@ -345,7 +462,7 @@ below the current cursor position, scrolling the screen if necessary.") (file-name (git-file-name name version)) (sha256 (base32 - "1chmfdi1dwg3sarzd01nqa82g65q7wdr6hrnj96l75vikwsg986y")))) + "0xg10jyiq12bcygi6aa9qq9pki7bipdsvsza037p2iqix19jg0x8")))) (build-system gnu-build-system) (arguments `(#:phases @@ -359,12 +476,9 @@ below the current cursor position, scrolling the screen if necessary.") (("ncursesw\\/curses.h") "ncurses.h"))) #t))))) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config))) + (list autoconf automake pkg-config)) (inputs - `(("ncurses" ,ncurses) - ("readline" ,readline))) + (list ncurses readline)) (synopsis "Navigate and search command history with shell history suggest box") (description "HSTR (HiSToRy) is a command-line utility that brings improved Bash and Zsh command completion from the history. It aims to make @@ -398,3 +512,161 @@ the UNIX philosophy, these commands are designed to be composed via pipes. A large collection of functions such as basename, replace, contains or is_dir are provided as arguments to these commands.") (license license:expat))) + +(define-public rig + (package + (name "rig") + (version "1.11") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/rig/rig/" + version "/rig-" + version ".tar.gz")) + (sha256 + (base32 + "1f3snysjqqlpk2kgvm5p2icrj4lsdymccmn3igkc2f60smqckgq0")))) + (build-system gnu-build-system) + (arguments `(#:make-flags + (list (string-append "CXX=" ,(cxx-for-target)) + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'fix-build + (lambda _ + (substitute* "rig.cc" + (("^#include <string>") + "#include <cstring>")) + (substitute* "Makefile" + (("g\\+\\+") + "${CXX} -O2") + (("install -g 0 -m 755 -o 0 -s rig \\$\\(BINDIR\\)") + "install -m 755 -d $(DESTDIR)$(BINDIR)\n\t\ +install -m 755 rig $(DESTDIR)$(BINDIR)/rig") + (("install -g 0 -m 644 -o 0 rig.6 \\$\\(MANDIR\\)/man6/rig.6") + "install -m 755 -d $(DESTDIR)$(MANDIR)/man6/\n\t\ +install -m 644 rig.6 $(DESTDIR)$(MANDIR)/man6/rig.6") + (("install -g 0 -m 755 -o 0 -d \\$\\(DATADIR\\)") + "install -m 755 -d $(DESTDIR)$(DATADIR)") + (("install -g 0 -m 644 -o 0 data/\\*.idx \\$\\(DATADIR\\)") + "install -m 644 data/*.idx $(DESTDIR)$(DATADIR)"))))) + #:tests? #f)) + (home-page "http://rig.sourceforge.net") + (synopsis "Random identity generator") + (description + "RIG (Random Identity Generator) generates random, yet real-looking, +personal data. It is useful if you need to feed a name to a Web site, BBS, or +real person, and are too lazy to think of one yourself. Also, if the Web +site/BBS/person you are giving the information to tries to cross-check the +city, state, zip, or area code, it will check out.") + (license license:gpl2+))) + +(define-public conflict + (package + (name "conflict") + (version "20210108") + (source (origin + (method url-fetch) + (uri (string-append + "https://invisible-mirror.net/archives/conflict/conflict-" + version ".tgz")) + (sha256 + (base32 + "0mls4climvp7v9hnc3zh01mh270kqcj797ng0xslwb027lipis4h")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda _ + (substitute* "run_test.sh" + (("PATH=\".:\\$BIN:/bin\"") + "PATH=\".:$BIN:$PATH\""))))))) + (home-page "https://invisible-island.net/conflict/conflict.html") + (synopsis "Displays conflicting filenames in your execution path") + (description + "@code{conflict} examines the user-specifiable list of programs, looking +for instances in the user's path which conflict (i.e., the name appears in +more than one point in the path).") + (license (license:x11-style "file://COPYING")))) + +(define-public renameutils + (package + (name "renameutils") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/renameutils/" + "renameutils-" version ".tar.gz")) + (sha256 + (base32 + "18xlkr56jdyajjihcmfqlyyanzyiqqlzbhrm6695mkvw081g1lnb")) + (modules '((guix build utils))) + (snippet '(begin + (substitute* "src/Makefile.in" + (("\\(\\$bindir\\)") "$(bindir)")) + #t)))) + (build-system gnu-build-system) + (inputs + (list readline)) + (home-page "https://www.nongnu.org/renameutils/") + (synopsis "File renaming utilities") + (description "The file renaming utilities (renameutils for short) are a +set of programs designed to make renaming of files faster and less cumbersome. +The file renaming utilities consists of five programs: @command{qmv}, +@command{qcp}, @command{imv}, @command{icp}, and @command{deurlname}.") + (license license:gpl3+))) + +(define-public grc + (package + (name "grc") + (version "1.13") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/garabik/grc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1h0h88h484a9796hai0wasi1xmjxxhpyxgixn6fgdyc5h69gv8nl")))) + (build-system gnu-build-system) + (inputs + (list python)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (substitute* "grc" + (("conffilenames = \\[.*\\]") + (string-append + "conffilenames = [" + "os.environ.get('GUIX_ENVIRONMENT', '" #$output "') " + "+ '/etc/grc.conf']"))) + (substitute* "grcat" + (("conffilepath \\+= \\['/usr/.*\\]") + (string-append + "conffilepath += [" + "os.environ.get('GUIX_ENVIRONMENT', '" #$output "') " + "+ '/share/grc/']"))))) ;; trailing slash! + (delete 'check) + (replace 'install + (lambda _ + (invoke "sh" "install.sh" #$output #$output)))))) + (home-page "http://kassiopeia.juls.savba.sk/~garabik/software/grc.html") + (synopsis "Generic colouriser for everything") + (description "@code{grc} can be used to colourise logfiles, output of +shell commands, arbitrary text, etc. Many shell commands are supported out of +the box. + +You might want to add these lines you your @code{~/.bashrc}: +@example +GRC_ALIASES=true +source ${GUIX_ENVIRONMENT:-$HOME/.guix-profile}/etc/profile.d/grc.sh +@end example +") + (license license:gpl2))) |