From e158d0f6d1e31ce31b5de8219b121436e8f4d9e3 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Thu, 19 Oct 2023 17:42:00 +0100 Subject: [PATCH] Add url command to {en,de}code text --- .gitignore | 2 +- tasks.yaml | 4 ++++ url/_url | 22 ++++++++++++++++++++++ url/url | 22 ++++++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 url/_url create mode 100755 url/url diff --git a/.gitignore b/.gitignore index df55767..1248c5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ # Ignore all plugin files in subdirectories -*/ +zsh-*/ local diff --git a/tasks.yaml b/tasks.yaml index ba73137..9d4a7a0 100644 --- a/tasks.yaml +++ b/tasks.yaml @@ -86,6 +86,10 @@ dest: ~/.local/bin/cmake-uninstall - src: ~/.config/zsh/$ dest: ~/.local/bin/$ + - src: ~/.config/zsh/url/url + dest: ~/.local/bin/url + - src: ~/.config/zsh/url/_url + dest: ~/.local/share/zsh/site-functions/_url - name: zsh get absolute path shell: command -v zsh diff --git a/url/_url b/url/_url new file mode 100644 index 0000000..1735c40 --- /dev/null +++ b/url/_url @@ -0,0 +1,22 @@ +#compdef url + +_url() { + local ret=1 context curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C -w -s \ + '(-h --help)'{-h,--help}'[show this help message and exit]' \ + '1: :->command' + + case $state in + (command) + declare -a commands + local commands=( + encode:'encode unencoded text' + decode:'decode encoded text' + ) + _describe -t commands command commands && ret=0 ;; + esac + + return ret +} diff --git a/url/url b/url/url new file mode 100755 index 0000000..7d0e90c --- /dev/null +++ b/url/url @@ -0,0 +1,22 @@ +#!/usr/bin/env python + +from argparse import ArgumentParser +from urllib import parse + + +def main(): + cli = ArgumentParser(description=__doc__) + cli.add_argument('command', choices=['encode', 'decode']) + cli.add_argument('text') + args = cli.parse_args() + { + 'encode': parse.quote, + 'decode': parse.unquote, + }[args.command](args.text) + + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + exit(130)