From 4573d659a936e47980ac99bd53d4d627d3ab3f15 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 18 Nov 2021 08:12:36 +0100 Subject: ups: allow setting arbitrary remote filename --- bin/ups | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/bin/ups b/bin/ups index eac54f9..2de9dfb 100755 --- a/bin/ups +++ b/bin/ups @@ -1,6 +1,7 @@ #!/usr/bin/python3 # ups.khirnov.net uploader +import argparse import os.path import shutil import subprocess @@ -15,25 +16,27 @@ except ImportError: server = 'https://ups.khirnov.net/' cert_path = os.path.expanduser('~/.local/var/up/cert') -if len(sys.argv) > 2: - sys.stderr.write('Too many arguments\n') - sys.exit(1) -elif len(sys.argv) == 2 and sys.argv[1] != '-': - src_name = sys.argv[1] - dst_name = os.path.basename(src_name) - stdin = subprocess.DEVNULL -else: +parser = argparse.ArgumentParser() +parser.add_argument('-n', '--name') +parser.add_argument('path', nargs = '?', default = '-') + +args = parser.parse_args() + +if args.path == '-' and not args.name: src_name = '-' - dst_name = 'stdin' - stdin = subprocess.PIPE + dst_name = args.name or 'stdin' - # try to guess the extension - if have_magic: + # try to guess the extension when name is not provided + if not args.name and have_magic: m = magic.Magic(extension = True) e = m.from_buffer(sys.stdin.buffer.peek(2048)) if e != '???': dst_name += '.' + e.split('/')[0] +else: + src_name = args.path + dst_name = args.name or os.path.basename(src_name) +stdin = subprocess.PIPE if src_name == '-' else subprocess.DEVNULL curl_cmdline = ['curl', '--silent', '--show-error', '--cert', cert_path, '--data-binary', '@' + src_name, server + dst_name] -- cgit v1.2.3