diff options
author | Anton Khirnov <anton@khirnov.net> | 2021-11-18 08:12:36 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2021-11-18 08:12:36 +0100 |
commit | 4573d659a936e47980ac99bd53d4d627d3ab3f15 (patch) | |
tree | 89f909ca6b0bb4b43ccd08be348fa691b189b180 /bin | |
parent | 76a2be361dc47caf4062a50a0b24d32cbe40b3c6 (diff) |
ups: allow setting arbitrary remote filename
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/ups | 27 |
1 files changed, 15 insertions, 12 deletions
@@ -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] |