68670a6588
- Fix ls -q long option name: --quick → --quiet (typo fix) - Remove mdrsclient/VERSION file; read version via importlib.metadata - Bump version 1.3.13 → 1.3.14 - Add Python 3.14 to supported classifiers; promote to Development Status 4 - Beta - Add `version` subcommand (prints "mdrs <version>") - Document `version` command in README Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
import argparse
|
|
import sys
|
|
from json import JSONDecodeError
|
|
|
|
from mdrsclient.commands import (
|
|
ChaclCommand,
|
|
ConfigCommand,
|
|
CpCommand,
|
|
DownloadCommand,
|
|
FileMetadataCommand,
|
|
LabsCommand,
|
|
LoginCommand,
|
|
LogoutCommand,
|
|
LsCommand,
|
|
MetadataCommand,
|
|
MkdirCommand,
|
|
MvCommand,
|
|
RmCommand,
|
|
UploadCommand,
|
|
VersionCommand,
|
|
WhoamiCommand,
|
|
)
|
|
from mdrsclient.exceptions import MDRSException
|
|
|
|
|
|
def main() -> None:
|
|
description = """This is a command-line program for up- and downloading files to and from MDRS based repository."""
|
|
|
|
parser = argparse.ArgumentParser(description=description, formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
parsers = parser.add_subparsers(title="subcommands")
|
|
|
|
ConfigCommand.register(parsers)
|
|
VersionCommand.register(parsers)
|
|
LoginCommand.register(parsers)
|
|
LogoutCommand.register(parsers)
|
|
WhoamiCommand.register(parsers)
|
|
LabsCommand.register(parsers)
|
|
LsCommand.register(parsers)
|
|
MkdirCommand.register(parsers)
|
|
UploadCommand.register(parsers)
|
|
DownloadCommand.register(parsers)
|
|
MvCommand.register(parsers)
|
|
CpCommand.register(parsers)
|
|
RmCommand.register(parsers)
|
|
ChaclCommand.register(parsers)
|
|
MetadataCommand.register(parsers)
|
|
FileMetadataCommand.register(parsers)
|
|
|
|
try:
|
|
args = parser.parse_args()
|
|
if hasattr(args, "func"):
|
|
args.func(args)
|
|
else:
|
|
parser.print_help()
|
|
except MDRSException as e:
|
|
print(f"Error: {e}")
|
|
sys.exit(2)
|
|
except JSONDecodeError:
|
|
print("Unexpected response returned. Please check the configuration or the server's operational status.")
|
|
sys.exit(2)
|
|
except KeyboardInterrupt:
|
|
sys.exit(130)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|