diff --git a/pyproject.toml b/pyproject.toml index 029509e..ab9befc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,6 @@ classifiers = [ "Environment :: Console", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", ] -requires-python = ">=3.11" dependencies = [ "pyclip", ] diff --git a/src/sshare/cli.py b/src/sshare/cli.py index a6141ad..4994850 100644 --- a/src/sshare/cli.py +++ b/src/sshare/cli.py @@ -14,65 +14,15 @@ import argparse import getpass +import importlib.util import os import os.path +import pkg_resources import pyclip import time -import tomllib import subprocess import sys -from _version import version - -class Config: - def __init__(self): - config_directory = os.environ.get("XDG_CONFIG_DIR") - if config_directory == None: - config_directory = f"{os.environ["HOME"]}/.config" - _config = self._load_from_file(f"{config_directory}/sshare/config.toml") - - self.source_directory = _config.get("source_directory") - - host = _config.get("host") - if host == None: - print("Error: 'host' cannot be 'None'") - sys.exit(1) - self.host_protocol = host.get("protocol") - self.host_name = host.get("name") - self.host_port = host.get("port") - self.host_path = host.get("path") - if self.host_protocol == None: - self.host_protocol = "https" - if self.host_name == None: - print("Error: 'host.name' cannot be 'None'") - sys.exit(1) - if self.host_port == None: - self.host_port = "" - else: - self.host_port = f":{self.host_port}" - if self.host_path == None: - self.host_path = "" - - ssh = _config.get("ssh") - if ssh == None: - print("Error: 'ssh' cannot be 'None'") - sys.exit(1) - self.ssh_port = ssh.get("port") - self.ssh_user = ssh.get("user") - self.ssh_host = ssh.get("target") - self.ssh_directory = ssh.get("directory") - if self.ssh_port == None: - self.ssh_port = 22 - if self.ssh_user == None: - self.ssh_user = getpass.getuser() - if self.ssh_host == None: - self.ssh_host = self.host_name; - if self.ssh_directory == None: - print("Error: 'ssh.directory' cannot be 'None'") - sys.exit(1) - - def _load_from_file(self, config_path): - with open(config_path, mode="rb") as file: - return tomllib.load(file) +import _version def main(): arguments = parse_arguments() @@ -84,31 +34,28 @@ def main(): if arguments.latest or arguments.file != None: file_path = "" if arguments.latest: - if config.source_directory == "": - print("Option 'latest' requires source directory to be specified") - sys.exit(1) file_path = _latest(config.source_directory) else: file_path = arguments.file - print(f"Uploading file '{file_path}'") + print(f"=> Uploading file '{file_path}'") with open(file_path, mode="rb") as file: contents = file.read() (_, target_file_extension) = os.path.splitext(file_path) elif arguments.paste: - print("Uploading contents of clipboard") + print("=> Uploading contents of clipboard") contents = pyclip.paste() target_file_extension = ".txt" else: - print("Error: must specify one of -f FILE, -l, -p") + print("=> Error: must specify one of -f FILE, -l, -p") sys.exit(1) target_id = time.time_ns() target_file_name = f"{target_id}{target_file_extension}" - target_file = f"{config.ssh_directory}/{target_file_name}" - target_destination = f"{config.ssh_user}@{config.ssh_host}" - print(f"Uploading to host: {target_destination}, port: {config.ssh_port}, file: {target_file}") + target_file = f"{config.ssh_dir}/{target_file_name}" + target_destination = f"{config.ssh_user}@{config.ssh_target}" + print(f"=> Uploading to '{target_destination}:{target_file}'") process = subprocess.run([ "ssh", f"-p {config.ssh_port}", @@ -119,14 +66,14 @@ def main(): input = contents, ) if process.returncode != 0: - print("Error: failed to upload file") + print("=> Error: failed to upload file") sys.exit(1) - target_url = f"{config.host_protocol}://{config.host_name}{config.host_port}{config.host_path}/{target_file_name}" - print(f"File available at '{target_url}'") + target_url = f"https://{config.ssh_target}/sshare/{target_file_name}" + print(f"=> File available at '{target_url}'") if arguments.copy: pyclip.copy(target_url) - print("URL copied to clipboard") + print("=> URL copied to clipboard") sys.exit(0) @@ -141,7 +88,7 @@ def parse_arguments(): "-v", "--version", action="version", - version=f"%(prog)s version {version}", + version=f"%(prog)s version {_version.version}", ) parser.add_argument( "-l", @@ -184,3 +131,12 @@ def _latest(directory, key=os.path.getmtime): selection = file selection_key = key return selection + + +class Config: + def __init__(self): + self.source_directory = "/home/gnarwhal/Pictures/Screenshots" + self.ssh_port = 2222 + self.ssh_user = getpass.getuser() + self.ssh_target = "monodon.me" + self.ssh_dir = "/srv/gnarwhal/sshare"