[Bin] Nicer elisp, tables formatting and code output
This commit is contained in:
parent
ff045fdc3a
commit
c3a8a7cf4a
@ -48,8 +48,9 @@ of said command running.
|
|||||||
#+header: :wrap "src bash :exports code"
|
#+header: :wrap "src bash :exports code"
|
||||||
#+BEGIN_SRC emacs-lisp :var table=autostart-table :cache yes
|
#+BEGIN_SRC emacs-lisp :var table=autostart-table :cache yes
|
||||||
(mapconcat (lambda (start-command)
|
(mapconcat (lambda (start-command)
|
||||||
(let* ((command (replace-regexp-in-string "~" "" (nth 0 start-command)))
|
(let* ((clean-string (lambda (str) (replace-regexp-in-string "~" "" str)))
|
||||||
(arguments (replace-regexp-in-string "~" "" (nth 1 start-command)))
|
(command (funcall clean-string (nth 0 start-command)))
|
||||||
|
(arguments (funcall clean-string (nth 1 start-command)))
|
||||||
(oncep (string= "yes" (nth 2 start-command)))
|
(oncep (string= "yes" (nth 2 start-command)))
|
||||||
(full-command (replace-regexp-in-string
|
(full-command (replace-regexp-in-string
|
||||||
" +"
|
" +"
|
||||||
@ -681,13 +682,13 @@ some global variables that won’t change:
|
|||||||
#+NAME: ytdl-default-vars
|
#+NAME: ytdl-default-vars
|
||||||
| Variable Name | Default Value | String? |
|
| Variable Name | Default Value | String? |
|
||||||
|------------------+-----------------------------------------------------------+---------|
|
|------------------+-----------------------------------------------------------+---------|
|
||||||
| YTDL_SHARED_DIR | $HOME/.local/share/ytdl | no |
|
| ~YTDL_SHARED_DIR~ | ~$HOME/.local/share/ytdl~ | no |
|
||||||
| FORMAT_DEFAULT | %(uploader)s/%(upload_date)s - %(title)s.%(ext)s | yes |
|
| ~FORMAT_DEFAULT~ | ~%(uploader)s/%(upload_date)s ~- ~%(title)s.%(ext)s~ | yes |
|
||||||
| DOWNFILE_DEFAULT | $YTDL_SHARED_DIR/downloaded | no |
|
| ~DOWNFILE_DEFAULT~ | ~$YTDL_SHARED_DIR/downloaded~ | no |
|
||||||
| ERRFILE_DEFAULT | $YTDL_SHARED_DIR/video-errors | no |
|
| ~ERRFILE_DEFAULT~ | ~$YTDL_SHARED_DIR/video-errors~ | no |
|
||||||
| LOGFILE_DEFAULT | $YTDL_SHARED_DIR/ytdl.log | no |
|
| ~LOGFILE_DEFAULT~ | ~$YTDL_SHARED_DIR/ytdl.log~ | no |
|
||||||
| PREFFERED_FORMAT | bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio | yes |
|
| ~PREFFERED_FORMAT~ | ~bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio~ | yes |
|
||||||
| VERSION | 0.3 | yes |
|
| ~VERSION~ | ~0.3~ | yes |
|
||||||
|
|
||||||
There is one more default variable pointing to ytdl’s root directory which
|
There is one more default variable pointing to ytdl’s root directory which
|
||||||
depends on whether the videos directory has a French or English name:
|
depends on whether the videos directory has a French or English name:
|
||||||
@ -701,25 +702,28 @@ end
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+NAME: ytdl-default-vars-make
|
#+NAME: ytdl-default-vars-make
|
||||||
#+BEGIN_SRC emacs-lisp :var vars=ytdl-default-vars
|
#+header: :wrap "src fish :tangle no"
|
||||||
(mapconcat (lambda (var)
|
#+BEGIN_SRC emacs-lisp :var vars=ytdl-default-vars :exports results
|
||||||
(let ((varname (car var))
|
(let ((clean-string (lambda (str) (replace-regexp-in-string "~" "" str))))
|
||||||
(varvalue (cadr var))
|
(mapconcat (lambda (var)
|
||||||
(string? (string= (nth 2 var) "yes")))
|
(let ((varname (funcall clean-string (car var)))
|
||||||
(format "set -g %-16s %s" varname (if string? (format "\"%s\"" varvalue)
|
(varvalue (funcall clean-string (cadr var)))
|
||||||
varvalue))))
|
(string? (string= (nth 2 var) "yes")))
|
||||||
vars
|
(format "set -g %-16s \"%s\"" varname varvalue)))
|
||||||
"\n")
|
vars
|
||||||
|
"\n"))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+RESULTS: ytdl-default-vars-make
|
#+RESULTS: ytdl-default-vars-make
|
||||||
: set -g YTDL_SHARED_DIR $HOME/.local/share/ytdl
|
#+begin_src fish :tangle no
|
||||||
: set -g FORMAT_DEFAULT "%(uploader)s/%(upload_date)s - %(title)s.%(ext)s"
|
set -g YTDL_SHARED_DIR "$HOME/.local/share/ytdl"
|
||||||
: set -g DOWNFILE_DEFAULT $YTDL_SHARED_DIR/downloaded
|
set -g FORMAT_DEFAULT "%(uploader)s/%(upload_date)s - %(title)s.%(ext)s"
|
||||||
: set -g ERRFILE_DEFAULT $YTDL_SHARED_DIR/video-errors
|
set -g DOWNFILE_DEFAULT "$YTDL_SHARED_DIR/downloaded"
|
||||||
: set -g LOGFILE_DEFAULT $YTDL_SHARED_DIR/ytdl.log
|
set -g ERRFILE_DEFAULT "$YTDL_SHARED_DIR/video-errors"
|
||||||
: set -g PREFFERED_FORMAT "bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio"
|
set -g LOGFILE_DEFAULT "$YTDL_SHARED_DIR/ytdl.log"
|
||||||
: set -g VERSION "0.3"
|
set -g PREFFERED_FORMAT "bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio"
|
||||||
|
set -g VERSION "0.3"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+BEGIN_SRC fish :noweb yes
|
#+BEGIN_SRC fish :noweb yes
|
||||||
<<ytdl-default-vars-make()>>
|
<<ytdl-default-vars-make()>>
|
||||||
@ -811,15 +815,15 @@ do:
|
|||||||
#+NAME: ytdl-table-arguments
|
#+NAME: ytdl-table-arguments
|
||||||
| Short | Long | Takes a value? | Associated Variable | Default Value | What it does |
|
| Short | Long | Takes a value? | Associated Variable | Default Value | What it does |
|
||||||
|-------+------------+----------------+---------------------+-------------------+----------------------|
|
|-------+------------+----------------+---------------------+-------------------+----------------------|
|
||||||
| 4 | ipv4 | no | IPV4 | None | Force IPv4 |
|
| 4 | ipv4 | no | ~IPV4~ | None | Force IPv4 |
|
||||||
| 6 | ipv6 | no | IPV6 | None | Force IPv6 |
|
| 6 | ipv6 | no | ~IPV6~ | None | Force IPv6 |
|
||||||
| a | batch-file | yes | FILE | None | Batch file |
|
| a | batch-file | yes | ~FILE~ | None | Batch file |
|
||||||
| c | cache | yes | DOWNFILE | $DOWNFILE_DEFAULT | Cache file |
|
| c | cache | yes | ~DOWNFILE~ | ~$DOWNFILE_DEFAULT~ | Cache file |
|
||||||
| d | directory | yes | ROOTDIR | $ROOTDIR_DEFAULT | Root directory |
|
| d | directory | yes | ~ROOTDIR~ | ~$ROOTDIR_DEFAULT~ | Root directory |
|
||||||
| e | error-file | yes | ERRFILE | $ERRFILE_DEFAULT | Error logs |
|
| e | error-file | yes | ~ERRFILE~ | ~$ERRFILE_DEFAULT~ | Error logs |
|
||||||
| f | format | yes | FORMAT | $FORMAT_DEFAULT | Filename format |
|
| f | format | yes | ~FORMAT~ | ~$FORMAT_DEFAULT~ | Filename format |
|
||||||
| l | logs | yes | LOGFILE | $LOGFILE_DEFAULT | Logs |
|
| l | logs | yes | ~LOGFILE~ | ~$LOGFILE_DEFAULT~ | Logs |
|
||||||
| V | verbose | no | VERBOSE | 1 | Verbose output |
|
| V | verbose | no | ~VERBOSE~ | ~1~ | Verbose output |
|
||||||
| v | version | command | None | None | Script version |
|
| v | version | command | None | None | Script version |
|
||||||
| h | help | command | None | None | Display this message |
|
| h | help | command | None | None | Display this message |
|
||||||
|
|
||||||
@ -827,25 +831,27 @@ We can also pass individual YouTube URLs without any options or switches
|
|||||||
associated to them, they will be downloaded as part of a single queue.
|
associated to them, they will be downloaded as part of a single queue.
|
||||||
|
|
||||||
#+NAME: ytdl-arg-handling-gen
|
#+NAME: ytdl-arg-handling-gen
|
||||||
#+BEGIN_SRC emacs-lisp :var args=ytdl-table-arguments
|
#+header: :cache yes :wrap "src fish :tangle no :exports code"
|
||||||
(mapconcat (lambda (arg)
|
#+BEGIN_SRC emacs-lisp :var args=ytdl-table-arguments :exports results
|
||||||
(let* ((short (format "%s" (nth 0 arg)))
|
(let ((clean-string (lambda (str) (replace-regexp-in-string "~" "" str))))
|
||||||
(long (nth 1 arg))
|
(mapconcat (lambda (arg)
|
||||||
(arg? (string= "yes" (nth 2 arg)))
|
(let* ((short (format "%s" (nth 0 arg)))
|
||||||
(var (unless (string= "None" (nth 3 arg))
|
(long (nth 1 arg))
|
||||||
(nth 3 arg))))
|
(arg? (string= "yes" (nth 2 arg)))
|
||||||
(format "case %s %s\n\t%s"
|
(var (unless (string= "None" (nth 3 arg))
|
||||||
short long
|
(funcall clean-string (nth 3 arg)))))
|
||||||
(if var (format "set -g %s %s" var
|
(format "case %s %s\n\t%s"
|
||||||
(if arg? "$value" ""))
|
short long
|
||||||
(format "_ytdl_%s && exit"
|
(if var (format "set -g %s %s" var
|
||||||
(if (string= "h" short) "help" "version"))))))
|
(if arg? "$value" ""))
|
||||||
args
|
(format "_ytdl_%s && exit"
|
||||||
"\n")
|
(if (string= "h" short) "help" "version"))))))
|
||||||
|
args
|
||||||
|
"\n"))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+RESULTS: ytdl-arg-handling-gen
|
#+RESULTS[df04709ff17a3d37a20528a5066a2efcda0cad5c]: ytdl-arg-handling-gen
|
||||||
#+begin_example
|
#+begin_src fish :tangle no :exports code
|
||||||
case 4 ipv4
|
case 4 ipv4
|
||||||
set -g IPV4
|
set -g IPV4
|
||||||
case 6 ipv6
|
case 6 ipv6
|
||||||
@ -868,7 +874,7 @@ case v version
|
|||||||
_ytdl_version && exit
|
_ytdl_version && exit
|
||||||
case h help
|
case h help
|
||||||
_ytdl_help && exit
|
_ytdl_help && exit
|
||||||
#+end_example
|
#+end_src
|
||||||
|
|
||||||
The following shows how ~getopts~ is used to catch the options and switches
|
The following shows how ~getopts~ is used to catch the options and switches
|
||||||
passed to the script:
|
passed to the script:
|
||||||
@ -886,24 +892,28 @@ end
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+NAME: ytdl-arg-set-default-value-gen
|
#+NAME: ytdl-arg-set-default-value-gen
|
||||||
|
#+header: :cache yes :wrap "src fish :tangle no :exports code"
|
||||||
#+BEGIN_SRC emacs-lisp :var args=ytdl-table-arguments
|
#+BEGIN_SRC emacs-lisp :var args=ytdl-table-arguments
|
||||||
(let* ((args (seq-filter (lambda (arg)
|
(let* ((clean-string (lambda (str) (replace-regexp-in-string "~" "" str)))
|
||||||
(let* ((var (unless (string= "None" (nth 3 arg)) (nth 3 arg)))
|
(args (seq-filter (lambda (arg)
|
||||||
(default (format "%s" (nth 4 arg)))
|
(let* ((var (unless (string= "None" (nth 3 arg))
|
||||||
(default (unless (string= "None" default) default)))
|
(funcall clean-string (nth 3 arg))))
|
||||||
|
(default (funcall clean-string (format "%s" (nth 4 arg))))
|
||||||
|
(default (unless (string= "None" default)
|
||||||
|
default)))
|
||||||
(and var default)))
|
(and var default)))
|
||||||
args)))
|
args)))
|
||||||
(mapconcat (lambda (arg)
|
(mapconcat (lambda (arg)
|
||||||
(let* ((var (nth 3 arg))
|
(let* ((var (funcall clean-string (nth 3 arg)))
|
||||||
(default (format "%s" (nth 4 arg))))
|
(default (funcall clean-string (format "%s" (nth 4 arg)))))
|
||||||
(format "if set -q $%s\n\tset -g %s %s\nend"
|
(format "if set -q $%s\n\tset -g %s %s\nend"
|
||||||
var var default)))
|
var var default)))
|
||||||
args
|
args
|
||||||
"\n"))
|
"\n"))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+RESULTS: ytdl-arg-set-default-value-gen
|
#+RESULTS[5a32e875ea434a3522bd2272f4e5fd422d722dca]: ytdl-arg-set-default-value-gen
|
||||||
#+begin_example
|
#+begin_src fish :tangle no :exports code
|
||||||
if set -q $DOWNFILE
|
if set -q $DOWNFILE
|
||||||
set -g DOWNFILE $DOWNFILE_DEFAULT
|
set -g DOWNFILE $DOWNFILE_DEFAULT
|
||||||
end
|
end
|
||||||
@ -922,7 +932,7 @@ end
|
|||||||
if set -q $VERBOSE
|
if set -q $VERBOSE
|
||||||
set -g VERBOSE 1
|
set -g VERBOSE 1
|
||||||
end
|
end
|
||||||
#+end_example
|
#+end_src
|
||||||
|
|
||||||
Some values need to be set to their default, so let’s assign them their value if
|
Some values need to be set to their default, so let’s assign them their value if
|
||||||
no user value was passed:
|
no user value was passed:
|
||||||
|
Loading…
Reference in New Issue
Block a user