summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-11-18 08:12:36 +0100
committerAnton Khirnov <anton@khirnov.net>2021-11-18 08:12:36 +0100
commit4573d659a936e47980ac99bd53d4d627d3ab3f15 (patch)
tree89f909ca6b0bb4b43ccd08be348fa691b189b180
parent76a2be361dc47caf4062a50a0b24d32cbe40b3c6 (diff)
ups: allow setting arbitrary remote filename
-rwxr-xr-xbin/ups27
1 files 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]