From 99d11d94b9ec5ab5b77379cf42ee118b18582ac3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Wed, 15 Apr 2020 00:10:30 +0200 Subject: [PATCH] feat(script): wrapper function --- configs/packages/default.nix | 2 +- packages/scripts/default.nix | 98 +++++++++++++++++------------------- packages/scripts/fzfmenu.sh | 4 +- packages/scripts/nix-git.sh | 3 +- packages/scripts/notetags.sh | 4 +- packages/scripts/vf.sh | 4 -- packages/scripts/vg.sh | 7 ++- 7 files changed, 58 insertions(+), 64 deletions(-) mode change 100644 => 100755 packages/scripts/nix-git.sh delete mode 100755 packages/scripts/vf.sh diff --git a/configs/packages/default.nix b/configs/packages/default.nix index 4ca6fa9..6233e01 100644 --- a/configs/packages/default.nix +++ b/configs/packages/default.nix @@ -110,7 +110,7 @@ scripts.literature-quote scripts.nav # json navigation scripts.n - scripts.vf + scripts.notetags scripts.vg scripts.emoji-menu scripts.fkill diff --git a/packages/scripts/default.nix b/packages/scripts/default.nix index 7a06ca3..d7fd7f7 100644 --- a/packages/scripts/default.nix +++ b/packages/scripts/default.nix @@ -1,7 +1,9 @@ { pkgs, lib, ... }: let - inherit (lib.strings) makeBinPath; - makeScript = { binPath ? [], name, src }: pkgs.writeScriptBin name (builtins.readFile src); + wrapScript = { packages ? [], name, script }: pkgs.writers.writeDashBin name '' + PATH=${lib.makeBinPath (packages ++ [pkgs.coreutils pkgs.findutils])} + ${script} "$@" + ''; in { # https://github.com/LukeSmithxyz/voidrice/blob/9fe6802122f6e0392c7fe20eefd30437771d7f8e/.local/bin/dmenuunicode @@ -11,7 +13,7 @@ in sha256 = "09m2rgb9d5jpiy8q4jz3dw36gkpb4ng2pl7xi7ppsrzzzdvq85qk"; }; in with pkgs; writers.writeDashBin "emoji-menu" '' - PATH=${makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]} + PATH=${lib.makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]} chosen=$(cut -d ';' -f1 ${emoji-file} | dmenu -i -l 10 | sed "s/ .*//") [ "$chosen" != "" ] || exit @@ -25,97 +27,91 @@ in fi ''; - instaget = makeScript { - binPath = [ pkgs.jq pkgs.curl pkgs.gnugrep ]; - src = ./instaget.sh; + instaget = wrapScript { + packages = [ pkgs.jq pkgs.curl pkgs.gnugrep ]; + script = ./instaget.sh; name = "instaget"; }; - n = makeScript { - src = ./n.sh; + n = wrapScript { + script = ./n.sh; name = "n"; }; - dirmir = makeScript { + dirmir = wrapScript { name = "dirmir"; - src = ./dirmir.sh; + script = ./dirmir.sh; }; - favicon = makeScript { - binPath = [ pkgs.imagemagick ]; + favicon = wrapScript { + packages = [ pkgs.imagemagick ]; name = "favicon"; - src = ./favicon.sh; + script = ./favicon.sh; }; - genius = makeScript { - binPath = [ pkgs.curl pkgs.gnused pkgs.pandoc ]; + genius = wrapScript { + packages = [ pkgs.curl pkgs.gnused pkgs.pandoc ]; name = "genius"; - src = ./genius.sh; + script = ./genius.sh; }; - literature-quote = makeScript { - binPath = [ pkgs.xsv pkgs.curl pkgs.gnused ]; + literature-quote = wrapScript { + packages = [ pkgs.xsv pkgs.curl pkgs.gnused ]; name = "literature-quote"; - src = ./literature-quote.sh; + script = ./literature-quote.sh; }; - man-pdf = makeScript { - binPath = [ pkgs.man pkgs.ghostscript ]; + man-pdf = wrapScript { + packages = [ pkgs.man pkgs.ghostscript ]; name = "man-pdf"; - src = ./man-pdf.sh; + script = ./man-pdf.sh; }; - odyssey = makeScript { - binPath = [ pkgs.curl pkgs.xmlstarlet ]; + odyssey = wrapScript { + packages = [ pkgs.curl pkgs.xmlstarlet ]; name = "odyssey"; - src = ./odyssey.sh; + script = ./odyssey.sh; }; - tolino-screensaver = makeScript { - binPath = [ pkgs.imagemagick ]; + tolino-screensaver = wrapScript { + packages = [ pkgs.imagemagick ]; name = "tolino-screensaver"; - src = ./tolino-screensaver.sh; + script = ./tolino-screensaver.sh; }; - wttr = makeScript { - binPath = [ pkgs.curl ]; + wttr = wrapScript { + packages = [ pkgs.curl ]; name = "wttr"; - src = ./wttr.sh; + script = ./wttr.sh; }; - vf = makeScript { - binPath = [ pkgs.fd pkgs.fzf ]; - name = "vf"; - src = ./vf.sh; - }; - - vg = makeScript { - binPath = [ pkgs.ripgrep pkgs.fzf pkgs.gawk ]; + vg = wrapScript { + packages = [ pkgs.ripgrep pkgs.fzf pkgs.gawk ]; name = "vg"; - src = ./vg.sh; + script = ./vg.sh; }; - fkill = makeScript { - binPath = [ pkgs.procps pkgs.gawk pkgs.gnused pkgs.fzf ]; - src = ./fkill.sh; + fkill = wrapScript { + packages = [ pkgs.procps pkgs.gawk pkgs.gnused pkgs.fzf pkgs.bash ]; + script = ./fkill.sh; name = "fkill"; }; - nix-git = makeScript { - binPath = [ pkgs.nix-prefetch-git pkgs.jq ]; - src = ./nix-git.sh; + nix-git = wrapScript { + packages = [ pkgs.nix-prefetch-git pkgs.jq ]; + script = ./nix-git.sh; name = "nix-git"; }; - notetags = makeScript { - src = ./notetags.sh; + notetags = wrapScript { + script = ./notetags.sh; name = "notetags"; }; - fzfmenu = makeScript { - src = ./fzfmenu.sh; + fzfmenu = wrapScript { + script = ./fzfmenu.sh; name = "fzfmenu"; - binPath = [ pkgs.st pkgs.fzf ]; + packages = [ pkgs.st pkgs.fzf pkgs.dash ]; }; bvg = pkgs.callPackage ./bvg.nix {}; diff --git a/packages/scripts/fzfmenu.sh b/packages/scripts/fzfmenu.sh index 9d64bfa..093fedf 100755 --- a/packages/scripts/fzfmenu.sh +++ b/packages/scripts/fzfmenu.sh @@ -10,7 +10,9 @@ mkfifo "$output" chmod 600 "$input" "$output" # it's better to use st here (starts a lot faster than pretty much everything else) -st -c fzfmenu -n fzfmenu -g 85x15 -e sh -c "cat $input | fzf $* | tee $output" & disown +st -c fzfmenu -n fzfmenu -g 85x10 \ + -e dash \ + -c "cat $input | fzf --print-query $* | tee $output" & disown # handle ctrl+c outside child terminal window trap 'kill $! 2>/dev/null; rm -f $input $output' EXIT diff --git a/packages/scripts/nix-git.sh b/packages/scripts/nix-git.sh old mode 100644 new mode 100755 index 731f847..9c70b34 --- a/packages/scripts/nix-git.sh +++ b/packages/scripts/nix-git.sh @@ -1,2 +1,3 @@ #!/bin/sh -nix-prefetch-git "$@" 2> /dev/null | jq -r '"rev = \"\(.rev)\";\nsha256 = \"\(.sha256)\";"' +nix-prefetch-git "$@" 2> /dev/null \ + | jq -r '"rev = \"\(.rev)\";\nsha256 = \"\(.sha256)\";"' diff --git a/packages/scripts/notetags.sh b/packages/scripts/notetags.sh index 3dc73ee..faf44e4 100755 --- a/packages/scripts/notetags.sh +++ b/packages/scripts/notetags.sh @@ -1,10 +1,10 @@ -#!/usr/bin/env bash +#!/bin/sh # inspired by https://github.com/connermcd/bin/blob/1d38cb98812906d8b95dc6e51e1149e29261617d/notetags cd "$HOME/notes/" || exit -[[ -f tags ]] && rm tags +[ -f tags ] && rm tags grep -r 'tags:' ./* | while read -r line; do file=$(echo "$line" | cut -d: -f1) unparsed_tags=$(echo "$line" | cut -d: -f3) # diff --git a/packages/scripts/vf.sh b/packages/scripts/vf.sh deleted file mode 100755 index 5210415..0000000 --- a/packages/scripts/vf.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -fd -t f -H -I \ - | fzf -m --preview="bat {}" \ - | xargs -ro -d "\n" "$EDITOR" 2>&- diff --git a/packages/scripts/vg.sh b/packages/scripts/vg.sh index d84b71b..2f360ee 100755 --- a/packages/scripts/vg.sh +++ b/packages/scripts/vg.sh @@ -1,7 +1,6 @@ -#!/usr/bin/env bash +#!/bin/sh file="$(rg "$@" | fzf -0 -1 | awk -F: '{print $1}')" -if [[ -n $file ]] -then - ${EDITOR:-vim} "$file" +if [ -n "$file" ]; then + ${EDITOR:-vim} "$file" fi