summaryrefslogtreecommitdiff
path: root/gnu/packages/shellutils.scm
diff options
context:
space:
mode:
authorMaxim Cournoyer <[email protected]>2022-01-25 22:07:13 -0500
committerMaxim Cournoyer <[email protected]>2022-01-25 22:07:13 -0500
commit1a5302435ff0d2822b823f5a6fe01faa7a85c629 (patch)
treeac7810c88b560532f22d2bab2e59609cd7305c21 /gnu/packages/shellutils.scm
parent3ff2ac4980dacf10087e4b42bd9fbc490591900c (diff)
parent070b8a893febd6e7d8b2b7c8c4dcebacf7845aa9 (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.scm368
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)))