diff --git a/eossr/scripts/eossr_upload_directory.py b/eossr/scripts/eossr_upload_directory.py index 13d20be3ba4dea2590e097a08695a8a8e136bca9..5d28a9e078644e3790e2623c07fca21cb9d05a37 100644 --- a/eossr/scripts/eossr_upload_directory.py +++ b/eossr/scripts/eossr_upload_directory.py @@ -1,29 +1,19 @@ #!/usr/bin/env python -import tempfile -import shutil + import argparse -from pathlib import Path from distutils.util import strtobool from eossr.api.zenodo import ZenodoAPI -# TODO: rename into upload_directory -# TODO: make another script upload_repository that will zip repo content and check if a similar record already exists - -def upload(zenodo_token, sandbox_flag, input_directory, record_id=None, erase_previous_files=True): +def upload(zenodo_token, sandbox_flag, input_directory, record_id=None, metadata=None, erase_previous_files=True): zenodo = ZenodoAPI(access_token=zenodo_token, sandbox=sandbox_flag, proj_root_dir=input_directory) - zenodo.upload_dir_content(input_directory, ) - - # with tempfile.TemporaryDirectory() as tmpdir: - # zenodo.zip_root_dir(zip_filename=Path(tmpdir).joinpath(f'{Path(input_directory).absolute().name}.zip')) - # if zenodo.path_codemeta_file.exists(): - # shutil.copy(zenodo.path_codemeta_file, tmpdir) - # - # new_record_id = zenodo.upload_dir_content(tmpdir, record_id=record_id) - # - # return new_record_id + return zenodo.upload_dir_content(input_directory, + record_id=record_id, + metadata=metadata, + erase_previous_files=erase_previous_files, + ) def main(): @@ -44,7 +34,9 @@ def main(): dest='sandbox_flag', help='Set the Zenodo environment.' 'True to use the sandbox, False (default) to use Zenodo.', - default=False) + default=False, + required=False, + ) parser.add_argument('--input-dir', '-i', type=str, dest='input_directory', @@ -52,12 +44,18 @@ def main(): 'All files will be uploaded.', required=True) - parser.add_argument('--record_id', '-id', type=str, + parser.add_argument('--record-id', '-id', type=str, dest='record_id', help='record_id of the deposit that is going to be updated by a new version', default=None, required=False) + parser.add_argument('--erase-old-files', type=lambda x: bool(strtobool(x)), + dest='erase_old_files', + help='erase files from the previous record version (if a record-id has been passed)', + default=True, + required=False) + args = parser.parse_args() new_record_id = upload(args.zenodo_token, args.sandbox_flag, args.input_directory, args.record_id)