diff options
Diffstat (limited to 'gnu/packages/shellutils.scm')
-rw-r--r-- | gnu/packages/shellutils.scm | 252 |
1 files changed, 212 insertions, 40 deletions
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index 94b5536df7..7a868f0789 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -10,6 +10,10 @@ ;;; Copyright © 2020 aecepoglu <aecepoglu@fastmail.fm> ;;; Copyright © 2020 Dion Mendel <guix@dm9.info> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> +;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com> +;;; Copyright © 2021 Wiktor Żelazny <wzelazny@vurv.cz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,18 +44,59 @@ #:use-module (gnu packages bison) #: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 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 +105,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 +156,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 +191,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") @@ -226,7 +330,7 @@ between various shells or commands.") (string-append "\"" libc "/lib/libc.so.6\"\n")) (("\"df\"") (string-append "\"" coreutils "/bin/df\""))))))))) - (inputs `(("coreutils" ,coreutils))) + (inputs (list coreutils)) (home-page "https://github.com/andreafrancia/trash-cli") (synopsis "Trash can management tool") (description @@ -239,7 +343,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 +352,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 +375,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 +435,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 +444,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 +458,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 +494,79 @@ 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 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+))) |