Revert "Start re-write-- mainly lib/stic progress"
This reverts commit 6b06055eb8
.
This commit is contained in:
parent
f0c50f588e
commit
253fb0f059
52
README.md
52
README.md
|
@ -1,52 +0,0 @@
|
|||
OK, I'm re-writing shelltube.
|
||||
It worked, but it was inflexible and total shit.
|
||||
Yes, the dream is still POSIX. :)
|
||||
Here is a general plan:
|
||||
|
||||
./shelltube Wrapper script for everything else. Slim and simple
|
||||
./lib/yts Searches YT, outputs a comp-friendly list of results
|
||||
./lib/ytc Lists videos on a YT channel/user-page
|
||||
./lib/ytd Downloads/streams a YT video
|
||||
./lib/stc Helps configure shelltube
|
||||
./lib/stic Helps with cli arguments
|
||||
./lib/sti Helps with trapped user input
|
||||
|
||||
Planned inputs & details:
|
||||
./shelltube
|
||||
shelltube [command(s) to run after startup]
|
||||
./lib/yts
|
||||
$ yts query [-o $outfile]
|
||||
* Prints the results in the following format:
|
||||
artist \t name \t length (?) \t ID
|
||||
./lib/ytc
|
||||
$ ytc query [-o $outfile]
|
||||
* Prints the results in the following format:
|
||||
name \t length (?) \t ID
|
||||
./lib/ytd
|
||||
$ ytd URL||ID [-o $outfile||-s]
|
||||
./lib/stc
|
||||
$ stc [-h||--home $homedir]
|
||||
* Just creates/edits $HOME/.config/shelltube
|
||||
./lib/stic
|
||||
$ stic "$@" "[[syntax]] shortargf longargf argf
|
||||
* Outputs commandline args to the specified files
|
||||
for easier parsing
|
||||
* dargf contains args like -c, -o, --config, etc.
|
||||
* argf contains everything else, like 'filename' etc.
|
||||
* [[syntax]] consists of something like this:
|
||||
"[[(1|1|c|config)(1|0|v|verbose)(0|1|infile)(0|2|outfile)]]"
|
||||
* Does it look terrible painful? Let me show you the anatomy of
|
||||
one of those listed potential arugments:
|
||||
* In a dashed arg (--config or -c), the syntax is this:
|
||||
(1|0=no subsequent arg 1=subs. arg|short form|long form)
|
||||
The "subsequent arg" means like 'file' in "--config file"
|
||||
* In a non-dashed arg (infile or outfile), the syntax is this:
|
||||
(0|position in input|name)
|
||||
"Position in input" refers to the position it has in relation
|
||||
to other non-dashed args.
|
||||
The "name"
|
||||
|
||||
|
||||
I'm working on stic riggt now. I think it'll really make shelltube (and
|
||||
probably any other shell script I'll ever write!) a lot better and more
|
||||
usable.
|
73
lib/stic
73
lib/stic
|
@ -1,73 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
#####################################################################################
|
||||
# Name: stic
|
||||
# Lisc: GPLv3
|
||||
# Main: jadedctrl | jadedml@openmailbox.org
|
||||
# Usage: $ stic "$@" "SYNTAX" argfile longargfile
|
||||
# Desc: Makes handling cli arguments easier-- no more shitty case or if statements
|
||||
# for us! ... or I'll throw myself against the nearest sharp object
|
||||
#####################################################################################
|
||||
|
||||
|
||||
ALL="$1"
|
||||
SYNTAX="$2"
|
||||
ARGFILE="$3"
|
||||
LONGARGFILE="$4"
|
||||
|
||||
RANDID=$(mktemp -u XXXXXX)
|
||||
LONGARGPROCFILE="/tmp/stic-long-${RANDID}.proc"
|
||||
SHORTARGPROCFILE="/tmp/stic-short-${RANDID}.proc"
|
||||
|
||||
|
||||
# Go through every () syntax statement; output in awk+grep-friendly format
|
||||
syntaxproc="$(echo $SYNTAX | sed 's^ ^^g' | sed 's^)(^) (^g')"
|
||||
for synarg in $(echo "$syntaxproc")
|
||||
do
|
||||
synargproc="$(echo "$synarg" | sed 's/(//' | sed 's/)//')"
|
||||
argtype=$(echo "$synargproc" | awk -F "|" '{ print $1 }')
|
||||
|
||||
# Longargs go first
|
||||
if [ $argtype -eq 0 ]
|
||||
then
|
||||
position=$(echo "$synargproc" | awk -F "|" '{ print $2 }')
|
||||
name=$(echo "$synargproc" | awk -F "|" '{ print $3 }')
|
||||
printf "%s\t%s\n" $position $name >> $LONGARGPROCFILE
|
||||
|
||||
# Now for the shortargs
|
||||
elif [ $argtype -eq 1 ]
|
||||
then
|
||||
subsarg=$(echo "$synargproc" | awk -F "|" '{ print $2 }')
|
||||
shortname=$(echo "$synargproc" | awk -F "|" '{ print $3 }')
|
||||
longname=$(echo "$synargproc" | awk -F "|" '{ print $4 }')
|
||||
printf "%s\t%s\t%s" $subsarg $shortname $longname >> $SHORTARGPROCFILE
|
||||
if [ $subsarg -eq 1 ]
|
||||
then
|
||||
subsname=$(echo "$synargproc" | awk -F "|" '{ print $5 }')
|
||||
printf "\t%s" $subsname >> $SHORTARGPROCFILE
|
||||
fi
|
||||
printf "\n" >> $SHORTARGPROCFILE
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
printf "Session ID: %s\n" $RANDID
|
||||
cat $SHORTARGPROCFILE
|
||||
cat $LONGARGPROCFILE
|
||||
|
||||
# At this point, the syntax is easy awk-parseable stored in the $*ARGPROCFILE files
|
||||
|
||||
position=0
|
||||
for argument in "$(echo "$ALL")"
|
||||
do
|
||||
if echo "$argument" | grep "^\--"
|
||||
then
|
||||
argtype=1
|
||||
if
|
||||
else
|
||||
if [ $insubsarg -eq 1 ]
|
||||
then
|
||||
printf "\t%s\n" $argument >> $SHORTARGFILE
|
||||
argtype=0
|
||||
position=$((position+1))
|
Reference in New Issue