Files
mdrs-client-python/mdrsclient/__main__.py
T
orrisroot 68670a6588 fix(ls): rename --quick to --quiet; add version command; bump to 1.3.14
- 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>
2026-04-17 17:41:37 +09:00

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()