# This file is part of SSHare. # # SSHare is free software: you can redistribute it and/or modify it under the terms of # the GNU General Public License as published by the Free Software Foundation, # either version 3 of the License, or (at your option) any later version. # # SSHare is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # SSHare. If not, see . import os from pathlib import Path from sshare.plugins.config import Argument from sshare.plugins.config import Flag from sshare.plugins.config import NoDefault from sshare.plugins.source import File plugin_type = "source" activate = [ "directory" ] config = { "directory": NoDefault } args = { "directory": Argument( short="l", long="latest", nargs="?", const=Flag, help="Upload the latest file from a directory", ) } def init(): directory = Path(config.directory) if not directory.is_dir(): logger.fatal(f"Error: 'plugins.latest.directory => {config.directory}' is not a directory") config.directory = directory def source(): key = os.path.getmtime files = config.directory.iterdir() selection = next(files) selection_key = key(selection) for file in files: file = file.as_posix() new_key = key(file) if new_key > selection_key: selection = file selection_key = new_key logger.info(f"Uploading file '{selection}'") return File(selection)