Refactor of README.md. Change daisy_help to source directly from READEME.md
to prevent data duplication. Made daisy_help granular (e.g. runnig "daisy_help
bak" returns solely the description of the "bak" utility.
Added the following utils/functions:
- daisy_list: Provides a list of utilities similar to daisy_help but without
the descriptions.
- daisy_(un)alias: Adds/removes user-bound aliases inside of the lackadaisical
config files.
- grab: Alias of "awk '{primt $num}".
This commit is contained in:
parent
434a50987e
commit
3eeb4e2d7f
4 changed files with 274 additions and 1299 deletions
0
LICENSE
Normal file → Executable file
0
LICENSE
Normal file → Executable file
222
README.md
Normal file → Executable file
222
README.md
Normal file → Executable file
|
|
@ -1,94 +1,140 @@
|
|||
# LACKADAISICAL
|
||||
*This project is still under heavy development!*
|
||||
---*This project is still under heavy development!*---
|
||||
# L A C K A D A I S I C A L
|
||||
A collection of easy-to-understand, easy-to-use scripts, functions and aliases. Designed to be beginner-friendly but also useful!
|
||||
|
||||
A collection of easy-to-understand, easy-to-use scripts and functions. Designed to be beginner-friendly but also useful!
|
||||
## Disclaimer
|
||||
Some aspects of this project were generated by Google Gemini (in particular, daisy_help and daisy_liist). While we are generally against using LLMs for code, the added functionality of being able to get information for individual tools is useful and not considered to be vital functionality.
|
||||
|
||||
# How to use
|
||||
Simply open your shell's RC-file (.bashrc, .zshrc, etc) and include `source <lackadaisical-folder>/daisy.source` preferably at the bottom of the file. We recommend setting your editor before sourcing `lackadaisical`. For instance, putting `export EDITOR=/usr/bin/nano` near thec\ top of your RC-file. It may later be overridden by `lackadaisical` itself if you use (or have used) `ched`.
|
||||
## How to use
|
||||
Simply open your shell's RC-file (.bashrc, .zshrc, etc) and include `source <la
|
||||
ckadaisical-folder>/daisy.source`, preferably at the bottom of the file. We recommend setting your editor before sourcing `lackadaisical`. For instance, putting `export EDITOR=/usr/bin/nano` near the top of your RC-file. It may later be overridden by `lackadaisical` itself if you use (or have used) `ched`.
|
||||
|
||||
You can also try out the utilities by simply sourcing the file while running your shell. It will automatically include itself into your `PATH` variable.
|
||||
You can also try out the utilities by simply sourcing the file while running your shell of choice. It will automatically include itself into your `PATH` variable.
|
||||
|
||||
# Contents
|
||||
*(taken from `daisy_help`)*
|
||||
At first use, `lackadaisical` will provide you with information via `daisy_help`. This information is identical to what can be read in the `Getting Started` section below.
|
||||
|
||||
## Getting started
|
||||
```
|
||||
--- BEGIN OF DAISY HELP ---
|
||||
===============================================================================
|
||||
Thanks for installing LACKADAISICAL!
|
||||
This project aims to provide useful utilities as well as learning material.
|
||||
|
||||
It is still under heavy development, not all of the things on this
|
||||
list are present/implemented. Utils marked with * are incomplete.
|
||||
|
||||
This suite provides a number of functions, aliases and scripts.
|
||||
They are all aimed at enhancing your efficiency.
|
||||
|
||||
To uninstall LACKADAISICAL, simply remove the source line from your
|
||||
shell RC, and reload it. This does not remove the files!
|
||||
You will also need to manually clear the configuration data in '<home>/.config/
|
||||
lackadaisical` if you so desire.
|
||||
|
||||
To read this notice again, call the function 'daisy_help'.
|
||||
===============================================================================
|
||||
These are the included binaries and utilities:
|
||||
- calm:
|
||||
Reduce a process 'niceness' to 0.
|
||||
- cdz:
|
||||
This utility extracts an archive to /tmp and changes
|
||||
directory to it in a new shell instance. Upon exit,
|
||||
the files are wiped. If `archivemount` is present,
|
||||
it will be used to mount the archive instead! You can
|
||||
bypass this behavior by specifying an env value of;
|
||||
NO_ARCHIVEMOUNT=1. The standard script supports zip,
|
||||
tarballs, and rar archives. We recommend relying on
|
||||
archivemount` if you have it installed.
|
||||
- editx:
|
||||
Uses your standard CLI editor to create/modify a
|
||||
file and make it executable.
|
||||
- filewait:
|
||||
This tool is given a filename of a file that does
|
||||
not exist yet. When the file appears on disk, the
|
||||
tool quits and simply returns the filename. This
|
||||
can be used in personal workflows to stall a longer
|
||||
command that relies on the existence of said file.
|
||||
- newday:
|
||||
A basic but powerful journaling system. Recommended
|
||||
to be set up via crontab. Can be used for everything
|
||||
from diaries to general file storage to even BTRFS
|
||||
snapshots.
|
||||
- own:
|
||||
A simple utility. It's effectively an alias for
|
||||
"sudo chown -R user:user" on the target dir/file.
|
||||
Root permissions required!
|
||||
- shrc:
|
||||
This tool allows you to edit the RC file for your
|
||||
shell in your preferred editor. After saving, the
|
||||
file is sourced by your shell if modified.
|
||||
- sw:
|
||||
A basic function that swaps two files by content.
|
||||
Useful for restoring backups.
|
||||
- what:
|
||||
This is a tool similar to which and others, the key
|
||||
difference is that it returns partial matches. It can
|
||||
be used to search for binaries.
|
||||
- binbox:
|
||||
This tool can be used to pack bash scripts into one
|
||||
big megascript, much like how `busybox` works.
|
||||
You can also make symlinks to it to invoke a specific
|
||||
script (as of writing, 11/25, symlinks do not work well).
|
||||
- bak/unbak:
|
||||
These small utilities make backups of files by making
|
||||
a copy with a .bak suffix. Unbak reverses the process
|
||||
by using sw and removes the backup.
|
||||
- lsa:
|
||||
A simple alias for ls -lah.
|
||||
- lsn:
|
||||
A simple alias for ls -lah --sort=time --reverse.
|
||||
- lss:
|
||||
A simple alias for ls -lah --sort=size --reverse.
|
||||
- editbin:
|
||||
An alias for editx $\(which <x>\). Saves on typing.
|
||||
- editpeco:
|
||||
This function uses peco+tree like 'cdp', but opens
|
||||
your editor on the selected file(s). After you exit
|
||||
your editor(s), you are returned to peco where you left
|
||||
off.
|
||||
- ched:
|
||||
Like chsh but for your editor (EDITOR env). A list
|
||||
from which you can choose an installed editor
|
||||
(CLI or GUI) is shown. This list is by no means complete.
|
||||
- cdf:
|
||||
Use fzf to find a file and then cd to its location.
|
||||
- cdp:
|
||||
Similar to 'cdf' but uses tree+peco for the query.
|
||||
- ldrc:
|
||||
Edits daisy.source and re-sources it, similarly to shrc.
|
||||
- daisy_init:
|
||||
Alias for directly sourcing this file from any
|
||||
LACKADAISICAL binary. You may use this yourself.
|
||||
- grab:
|
||||
Alias for awk "'{print $x}'", where x is a number.
|
||||
E.g. "echo 'a b c' | grab 2" returns 'b'.
|
||||
- daisy_cbin:
|
||||
Contains the name of the current LACKADAISICAL
|
||||
binary being run.
|
||||
- daisy_enc:
|
||||
Converts a file/stdin to a base64 block that can be
|
||||
decoded by passing the output(s) to daisy_dec.
|
||||
- daisy_enc_multi:
|
||||
A version of daisy_enc that encodes multiple
|
||||
files and outputs daisy_base64_data blocks to a file
|
||||
or stdout.
|
||||
- daisy_dec:
|
||||
Converts daisy_base64_data blocks back to the form
|
||||
it was in originally.
|
||||
- daisy_dec_multi:
|
||||
A version of daisy_dec that runs on multiple input
|
||||
blocks that are either stored in a file or stdin.
|
||||
- daisy_alias/daisy_unalias:
|
||||
This utility sets persistent user aliases stored in
|
||||
.daisy_aliases in the lackadaisical config folder.
|
||||
They will remain persistent until unaliased.
|
||||
Call 'daisy_alias' without parameters to get a list.
|
||||
Use 'daisy_unalias' to remove an alias.
|
||||
- daisy_list:
|
||||
List all available commands without description.
|
||||
--- END OF DAISY HELP ---
|
||||
```
|
||||
===================================================================
|
||||
|
||||
Thanks for installing LACKADAISICAL!
|
||||
This project aims to provide useful utilities as well as learning
|
||||
material.
|
||||
It is still under heavy development, not all of the things on this
|
||||
list are present/implemented.
|
||||
|
||||
===================================================================
|
||||
|
||||
This suite provides a number of functions, aliases and scripts.
|
||||
They are all aimed at enhancing your efficiency.
|
||||
|
||||
===================================================================
|
||||
|
||||
These are the included binaries:
|
||||
- calm: Reduce a process niceness to 0.
|
||||
- cdz: This utility extracts an archive to /tmp and changes
|
||||
directory to it in a new shell instance. Upon exit,
|
||||
the files are wiped.
|
||||
- editx: Uses your standard CLI editor to create/modify a
|
||||
file and make it executable.
|
||||
- filewait: This tool is given a filename of a file that does
|
||||
not exist yet. When the file appears on disk, the
|
||||
program quits and simply returns the filename. This
|
||||
can be used in personal workflows.
|
||||
- newday: A basic but powerful journaling system. Recommended
|
||||
to set up via crontab. Can be used for everything
|
||||
from diaries to BTRFS snapshots.
|
||||
- own: A simple utility. It effectively uses chown -R
|
||||
user:user on its target. Root permissions required!
|
||||
- short: This tool allows you to set up directory shortcuts.
|
||||
It enhances cd t to integrate itsef using its own
|
||||
syntax. It is similar to wd.
|
||||
- shrc: This tool allows you to edit the RC file for your
|
||||
shell in your preferred editor. After saving, the
|
||||
file is sourced by your shell.
|
||||
- sw: A basic function that swaps two files by content.
|
||||
Useful for restoring backups.
|
||||
- what: This is a tool similar to which and others, the key
|
||||
difference is that it returns partial matches. It can
|
||||
be used to search for binaries.
|
||||
|
||||
===================================================================
|
||||
|
||||
There are aliases and functions included within this file as well:
|
||||
- bak/unbak: These small utilities make backups of files by making
|
||||
a copy with a .bak suffix. Unbak reverses the process
|
||||
using sw and removes the backup.
|
||||
- lsa: A simple alias for ls -lah.
|
||||
- lsn: A simple alias for ls -lah --sort=time --reverse.
|
||||
- editbin: An alias for editx $(which <x>). Saves on typing.
|
||||
- ched: Like chsh but for your editor (EDITOR env). A list
|
||||
from which you can choose an installed editor
|
||||
(CLI or GUI) is shown.
|
||||
- cdf: Use fzf to find a file and then cd to its location.
|
||||
- ldrc: Edits this file and source it, similarly to shrc.
|
||||
- daisy_init: Alias for directly sourcing this file from any
|
||||
LACKADAISICAL binary. You may use this yourself.
|
||||
- daisy_cbin: Contains the name of the current LACKADAISICAL
|
||||
binary being run.
|
||||
- daisy_enc: Converts a file/stdin to a base64 block that can be
|
||||
decoded by passing the output(s) to daisy_dec.
|
||||
- *_multi: A version of daisy_enc that runs encodes multiple
|
||||
files and outputs daisy_base64_data blocks to a file
|
||||
or stdout.
|
||||
- daisy_dec: Converts daisy_base64_data blocks back to the form
|
||||
it was in originally.
|
||||
- *_multi: A version of daisy_dec that runs on multiple input
|
||||
blocks that are either stored in a file or stdin.
|
||||
|
||||
===================================================================
|
||||
|
||||
To uninstall LACKADAISICAL, simply remove the source line from your
|
||||
shell RC, and reload it. This does not remove the files!
|
||||
|
||||
To read this notice again, call the function 'daisy_help'.
|
||||
|
||||
===================================================================
|
||||
```
|
||||
|
|
|
|||
283
daisy.source
283
daisy.source
|
|
@ -25,7 +25,7 @@ then
|
|||
fi
|
||||
|
||||
# Check for dependencies
|
||||
function daisy_dependency_check()
|
||||
function daisy_dependency_check
|
||||
{
|
||||
command -v $1 1>/dev/null 2>/dev/null;
|
||||
res=$?
|
||||
|
|
@ -78,7 +78,7 @@ fi
|
|||
###############################################################################
|
||||
|
||||
# bak and unbak
|
||||
function bak()
|
||||
function bak
|
||||
{
|
||||
# Input: <file>
|
||||
target=$1
|
||||
|
|
@ -108,12 +108,12 @@ alias lsn="ls -a -l -tu -r -h"
|
|||
alias lss="ls -a -l -S -r -h"
|
||||
|
||||
# Simple version of `cdf`
|
||||
function cdf()
|
||||
function cdf
|
||||
{
|
||||
cd $(dirname $(fzf))
|
||||
}
|
||||
|
||||
function cdp()
|
||||
function cdp
|
||||
{
|
||||
if [[ $DAISY_HAS_peco != 1 || $DAISY_HAS_tree != 1 ]];
|
||||
then
|
||||
|
|
@ -136,13 +136,13 @@ function editpeco
|
|||
}
|
||||
|
||||
# for convenience purposes
|
||||
function editbin()
|
||||
function editbin
|
||||
{
|
||||
editx $(which $1)
|
||||
}
|
||||
|
||||
# sets a new editor based on commony available ones, and some visual ones
|
||||
function ched()
|
||||
function ched
|
||||
{
|
||||
editors=("nano" "vim" "nvim" "vi" "emacs" "gedit" "kate" "mousepad" "micro" \
|
||||
"code" "subl" "joe" "kwrite" "gnome-text-editor")
|
||||
|
|
@ -189,7 +189,7 @@ function ched()
|
|||
source "$DAISY_CONFIG_FOLDER/editor.src"
|
||||
}
|
||||
|
||||
function wait_for_editor()
|
||||
function wait_for_editor
|
||||
{
|
||||
pname="$1"
|
||||
fname="$2"
|
||||
|
|
@ -208,13 +208,13 @@ function wait_for_editor()
|
|||
done
|
||||
}
|
||||
|
||||
function ldrc()
|
||||
function ldrc
|
||||
{
|
||||
FROM_RC=0 $EDITOR "$DAISY_SOURCE_FILE"
|
||||
source "$DAISY_SOURCE_FILE"
|
||||
}
|
||||
|
||||
function daisy_enc()
|
||||
function daisy_enc
|
||||
{
|
||||
has_file=$([[ ! -z $1 ]] && file $1 1>/dev/null; echo $?)
|
||||
has_file=$([[ has_file -eq 0 ]] && echo 1)
|
||||
|
|
@ -234,9 +234,8 @@ function daisy_enc()
|
|||
}
|
||||
|
||||
# Will only take input files, always outputs to stdout
|
||||
function daisy_enc_multi()
|
||||
function daisy_enc_multi
|
||||
{
|
||||
[[ ! -d $1 ]] && echo "daisy_dec_multi: No input files specified" && return
|
||||
for file in "$@"; do
|
||||
if [[ -f "$file" ]]; then
|
||||
daisy_enc "$file"
|
||||
|
|
@ -247,7 +246,7 @@ function daisy_enc_multi()
|
|||
done
|
||||
}
|
||||
|
||||
function daisy_dec()
|
||||
function daisy_dec
|
||||
{
|
||||
data=$(cat ${1:-/dev/stdin} | grep -v "#" )
|
||||
echo -e "$data" | cut -d "=" -f 2- | cut -b 2- | head -c -2 | base64 -d
|
||||
|
|
@ -255,7 +254,7 @@ function daisy_dec()
|
|||
|
||||
# Will only take a file and directory, sources it to find all encoded data
|
||||
# Extracts to the directory
|
||||
function daisy_dec_multi()
|
||||
function daisy_dec_multi
|
||||
{
|
||||
[[ ! -f $1 ]] && echo "daisy_dec_multi: No input file specified" && return
|
||||
[[ ! -d $2 ]] && echo "daisy_dec_multi: No output directory specified" && return
|
||||
|
|
@ -266,11 +265,59 @@ function daisy_dec_multi()
|
|||
|
||||
if [[ ! "$file" == '' ]]
|
||||
then
|
||||
daisy_dec <(echo "$enc") | tee "$2"/"$file"
|
||||
daisy_dec <(echo "$enc") > "$2"/"$file"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Saves a bit on typing
|
||||
function grab
|
||||
{
|
||||
[[ -z $@ ]] && return;
|
||||
awk '{print $'$1'}'
|
||||
}
|
||||
|
||||
# Functions for aliases that are added once, but always available
|
||||
daisy_aliasfile="$DAISY_CONFIG_FOLDER"/.daisy_aliases
|
||||
touch $daisy_aliasfile
|
||||
|
||||
function daisy_unalias
|
||||
{
|
||||
unalias_param=$@
|
||||
|
||||
if [[ -z $unalias_param ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
unalias $@ 2>/dev/null
|
||||
|
||||
# Remove from aliases list
|
||||
newdata=$(cat $daisy_aliasfile | grep -v "alias $unalias_param")
|
||||
echo -e $newdata > $daisy_aliasfile
|
||||
}
|
||||
|
||||
function daisy_alias
|
||||
{
|
||||
alias_param="$@"
|
||||
|
||||
if [[ -z $alias_param ]]; then
|
||||
echo "Active lackadaisical alias lines:"
|
||||
cat $daisy_aliasfile | sed 's/alias //g'
|
||||
return
|
||||
fi
|
||||
|
||||
# Plain name and contents
|
||||
alias_name=$(echo -e $alias_param | grep -o ".*=" | tr --delete =)
|
||||
|
||||
# Make persistent
|
||||
daisy_unalias $alias_name
|
||||
echo alias ${alias_param%=*}"="\"${alias_param#*=}\" >> $daisy_aliasfile
|
||||
|
||||
alias $alias_param
|
||||
}
|
||||
|
||||
source $daisy_aliasfile
|
||||
|
||||
alias daisy_init='source "$DAISY_SOURCE_FILE"'
|
||||
|
||||
###############################################################################
|
||||
|
|
@ -281,7 +328,7 @@ alias daisy_init='source "$DAISY_SOURCE_FILE"'
|
|||
export DAISY_AVAILABLE=1
|
||||
|
||||
# Start of internal section
|
||||
function daisy_quit_if_no()
|
||||
function daisy_quit_if_no
|
||||
{
|
||||
has_dep=$DAISY_HAS_$1
|
||||
|
||||
|
|
@ -303,133 +350,83 @@ function daisy_quit_if_no()
|
|||
|
||||
[ -d "$DAISY_FOLDER" ] && export DAISY_AVAILABLE=1
|
||||
|
||||
# Help function
|
||||
function daisy_help()
|
||||
{
|
||||
OLD_IFS="$IFS"
|
||||
IFS=
|
||||
echo -e "==================================================================="
|
||||
echo -e ""
|
||||
echo -e "Thanks for installing LACKADAISICAL!"
|
||||
echo -e "This project aims to provide useful utilities as well as learning"
|
||||
echo -e "material."
|
||||
echo -e ""
|
||||
echo -e "It is still under heavy development, not all of the things on this"
|
||||
echo -e "list are present/implemented. Utils marked with * are incomplete."
|
||||
echo -e ""
|
||||
echo -e "==================================================================="
|
||||
echo -e ""
|
||||
echo -e "This suite provides a number of functions, aliases and scripts."
|
||||
echo -e "They are all aimed at enhancing your efficiency."
|
||||
echo -e ""
|
||||
echo -e "==================================================================="
|
||||
echo -e ""
|
||||
echo -e "These are the included binaries:"
|
||||
echo -e " - calm:"
|
||||
echo -e " Reduce a process niceness to 0."
|
||||
echo -e " - cdz:"
|
||||
echo -e " This utility extracts an archive to /tmp and changes"
|
||||
echo -e " directory to it in a new shell instance. Upon exit,"
|
||||
echo -e " the files are wiped. If \`archivemount\` is present,"
|
||||
echo -e " it will be used to mount the archive instead! You can"
|
||||
echo -e " bypass this behavior by specifying an env value of;"
|
||||
echo -e " NO_ARCHIVEMOUNT=1. The standard script supports zip,"
|
||||
echo -e " tarballs, and rar archives. We recommend relying on"
|
||||
echo -e " archivemount\` if you have it installed."
|
||||
echo -e " - editx:"
|
||||
echo -e " Uses your standard CLI editor to create/modify a"
|
||||
echo -e " file and make it executable."
|
||||
echo -e " - filewait:"
|
||||
echo -e " This tool is given a filename of a file that does"
|
||||
echo -e " not exist yet. When the file appears on disk, the"
|
||||
echo -e " program quits and simply returns the filename. This"
|
||||
echo -e " can be used in personal workflows."
|
||||
echo -e " - newday:"
|
||||
echo -e " A basic but powerful journaling system. Recommended"
|
||||
echo -e " to set up via crontab. Can be used for everything"
|
||||
echo -e " from diaries to BTRFS snapshots."
|
||||
echo -e " - own:"
|
||||
echo -e " A simple utility. It effectively uses chown -R"
|
||||
echo -e " user:user on its target. Root permissions required!"
|
||||
echo -e " - short:"
|
||||
echo -e " This tool allows you to set up directory shortcuts."
|
||||
echo -e " It enhances cd t to integrate itsef using its own"
|
||||
echo -e " syntax. It is similar to wd."
|
||||
echo -e " - shrc:"
|
||||
echo -e " This tool allows you to edit the RC file for your"
|
||||
echo -e " shell in your preferred editor. After saving, the"
|
||||
echo -e " file is sourced by your shell."
|
||||
echo -e " - sw:"
|
||||
echo -e " A basic function that swaps two files by content."
|
||||
echo -e " Useful for restoring backups."
|
||||
echo -e " - what:"
|
||||
echo -e " This is a tool similar to which and others, the key"
|
||||
echo -e " difference is that it returns partial matches. It can"
|
||||
echo -e " be used to search for binaries."
|
||||
echo -e " -*binbox:"
|
||||
echo -e " This tool can be used to pack bash scripts into one"
|
||||
echo -e " big megascript, much like how \`busybox\` works."
|
||||
echo -e " You can also make symlinks to it to invoke a specific"
|
||||
echo -e " script (current symlinks do not work well)."
|
||||
echo -e ""
|
||||
echo -e "==================================================================="
|
||||
echo -e ""
|
||||
echo -e "There are aliases and functions included within this file as well:"
|
||||
echo -e " - bak/unbak:"
|
||||
echo -e " These small utilities make backups of files by making"
|
||||
echo -e " a copy with a .bak suffix. Unbak reverses the process"
|
||||
echo -e " using sw and removes the backup."
|
||||
echo -e " - lsa:"
|
||||
echo -e " A simple alias for ls -lah."
|
||||
echo -e " - lsn:"
|
||||
echo -e " A simple alias for ls -lah --sort=time --reverse."
|
||||
echo -e " - lss:"
|
||||
echo -e " A simple alias for ls -lah --sort=size --reverse."
|
||||
echo -e " - editbin:"
|
||||
echo -e " An alias for editx $\(which <x>\). Saves on typing."
|
||||
echo -e " - editpeco:"
|
||||
echo -e " This function uses peco+tree like 'cdp', but opens"
|
||||
echo -e " your editor on the selected file(s). After you exit"
|
||||
echo -e " your editor(s), you are returned to peco where you left"
|
||||
echo -e " off."
|
||||
echo -e " - ched:"
|
||||
echo -e " Like chsh but for your editor (EDITOR env). A list"
|
||||
echo -e " from which you can choose an installed editor"
|
||||
echo -e " (CLI or GUI) is shown."
|
||||
echo -e " - cdf:"
|
||||
echo -e " Use fzf to find a file and then cd to its location."
|
||||
echo -e " - cdp:"
|
||||
echo -e " Similar to 'cdf' but uses tree+peco for the query."
|
||||
echo -e " - ldrc:"
|
||||
echo -e " Edits this file and sources it, similarly to shrc."
|
||||
echo -e " - daisy_init:"
|
||||
echo -e " Alias for directly sourcing this file from any"
|
||||
echo -e " LACKADAISICAL binary. You may use this yourself."
|
||||
echo -e " - daisy_cbin:"
|
||||
echo -e " Contains the name of the current LACKADAISICAL"
|
||||
echo -e " binary being run."
|
||||
echo -e " -*daisy_enc:"
|
||||
echo -e " Converts a file/stdin to a base64 block that can be"
|
||||
echo -e " decoded by passing the output(s) to daisy_dec."
|
||||
echo -e " - *_multi:"
|
||||
echo -e " A version of daisy_enc that runs encodes multiple"
|
||||
echo -e " files and outputs daisy_base64_data blocks to a file"
|
||||
echo -e " or stdout."
|
||||
echo -e " -*daisy_dec:"
|
||||
echo -e " Converts daisy_base64_data blocks back to the form"
|
||||
echo -e " it was in originally."
|
||||
echo -e " - *_multi:"
|
||||
echo -e " A version of daisy_dec that runs on multiple input"
|
||||
echo -e " blocks that are either stored in a file or stdin."
|
||||
echo -e ""
|
||||
echo -e "==================================================================="
|
||||
echo -e ""
|
||||
echo -e "To uninstall LACKADAISICAL, simply remove the source line from your"
|
||||
echo -e "shell RC, and reload it. This does not remove the files!"
|
||||
echo -e ""
|
||||
echo -e "To read this notice again, call the function 'daisy_help'."
|
||||
echo -e ""
|
||||
echo -e "==================================================================="
|
||||
# Help function, courtesy of Google Gemini
|
||||
function daisy_help() {
|
||||
local target_tool="$1"
|
||||
local file="README.md" # Updated filename
|
||||
|
||||
IFS="$OLD_IFS"
|
||||
# 1. Extract the block between the new headers
|
||||
sed -n '/--- BEGIN OF DAISY HELP ---/,/--- END OF DAISY HELP ---/{//!p;}' "$file" | \
|
||||
|
||||
if [ -z "$target_tool" ]; then
|
||||
# If no argument, print the whole help text
|
||||
cat
|
||||
else
|
||||
# 2. Parse specific tool
|
||||
awk -v query="$target_tool" '
|
||||
BEGIN { found=0; printing=0 }
|
||||
|
||||
# Match lines defining tools (e.g., " - calm:" or " - bak/unbak:")
|
||||
$0 ~ /^[[:space:]]*- / {
|
||||
printing=0 # Stop printing previous tool
|
||||
|
||||
# Clean the line to get the "signature"
|
||||
# " - bak/unbak:" becomes "bak/unbak"
|
||||
sig = $0
|
||||
sub(/^[[:space:]]*- /, "", sig)
|
||||
sub(/:[[:space:]]*$/, "", sig)
|
||||
|
||||
# Check for exact match OR match within a slash-separated list
|
||||
# This handles "bak", "unbak", and "daisy_alias"
|
||||
split(sig, names, "/")
|
||||
|
||||
is_match = 0
|
||||
if (sig == query) is_match = 1
|
||||
else {
|
||||
for (i in names) {
|
||||
if (names[i] == query) { is_match = 1; break }
|
||||
}
|
||||
}
|
||||
|
||||
if (is_match) {
|
||||
printing=1
|
||||
found=1
|
||||
print $0 # Print the header line (e.g., " - bak/unbak:")
|
||||
next
|
||||
}
|
||||
}
|
||||
|
||||
# Print description lines if we are in a "found" block
|
||||
printing {
|
||||
# Stop if we hit the start of the NEXT tool
|
||||
if ($0 ~ /^[[:space:]]*- /) { printing=0; next }
|
||||
print
|
||||
}
|
||||
|
||||
END {
|
||||
if (found == 0) {
|
||||
print "Tool '"'"'" query "'"'"' not found in README.md."
|
||||
}
|
||||
}
|
||||
'
|
||||
fi
|
||||
}
|
||||
|
||||
# Courtesy of Google Gemini
|
||||
daisy_list() {
|
||||
local file="README.md"
|
||||
|
||||
echo "Available LACKADAISICAL commands:"
|
||||
|
||||
# Extract block -> Find tool lines -> Clean formatting -> Print
|
||||
sed -n '/--- BEGIN OF DAISY HELP ---/,/--- END OF DAISY HELP ---/{//!p;}' "$file" | \
|
||||
awk '
|
||||
/^[[:space:]]*- / {
|
||||
# Remove indentation and "- "
|
||||
sub(/^[[:space:]]*- /, "");
|
||||
# Remove trailing ":"
|
||||
sub(/:[[:space:]]*$/, "");
|
||||
print " " $0
|
||||
}
|
||||
' | sort
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue