diff --git a/archivebox/cli/archivebox_init.py b/archivebox/cli/archivebox_init.py index 352f5c86..5f39fba2 100755 --- a/archivebox/cli/archivebox_init.py +++ b/archivebox/cli/archivebox_init.py @@ -21,10 +21,18 @@ def main(args: Optional[List[str]]=None, stdin: Optional[IO]=None, pwd: Optional add_help=True, formatter_class=SmartFormatter, ) - parser.parse_args(args or ()) + parser.add_argument( + '--force', # '-f', + action='store_true', + help='Ignore unrecognized files in current directory and initialize anyway', + ) + command = parser.parse_args(args or ()) reject_stdin(__command__, stdin) - init(out_dir=pwd or OUTPUT_DIR) + init( + force=command.force, + out_dir=pwd or OUTPUT_DIR, + ) if __name__ == '__main__': diff --git a/archivebox/main.py b/archivebox/main.py index 231d27e0..00529743 100644 --- a/archivebox/main.py +++ b/archivebox/main.py @@ -238,7 +238,7 @@ def run(subcommand: str, @enforce_types -def init(out_dir: str=OUTPUT_DIR) -> None: +def init(force: bool=False, out_dir: str=OUTPUT_DIR) -> None: """Initialize a new ArchiveBox collection in the current directory""" os.makedirs(out_dir, exist_ok=True) @@ -254,15 +254,19 @@ def init(out_dir: str=OUTPUT_DIR) -> None: print(f' {out_dir}') print('{green}------------------------------------------------------------------{reset}'.format(**ANSI)) else: - stderr( - ("{red}[X] This folder appears to already have files in it, but no index.json is present.{reset}\n\n" - " You must run init in a completely empty directory, or an existing data folder.\n\n" - " {lightred}Hint:{reset} To import an existing data folder make sure to cd into the folder first, \n" - " then run and run 'archivebox init' to pick up where you left off.\n\n" - " (Always make sure your data folder is backed up first before updating ArchiveBox)" - ).format(out_dir, **ANSI) - ) - raise SystemExit(1) + if force: + stderr('[!] This folder appears to already have files in it, but no index.json is present.', color='lightyellow') + stderr(' Because --force was passed, ArchiveBox will initialize anyway (which may overwrite existing files).') + else: + stderr( + ("{red}[X] This folder appears to already have files in it, but no index.json is present.{reset}\n\n" + " You must run init in a completely empty directory, or an existing data folder.\n\n" + " {lightred}Hint:{reset} To import an existing data folder make sure to cd into the folder first, \n" + " then run and run 'archivebox init' to pick up where you left off.\n\n" + " (Always make sure your data folder is backed up first before updating ArchiveBox)" + ).format(out_dir, **ANSI) + ) + raise SystemExit(2) if existing_index: print('\n{green}[*] Verifying archive folder structure...{reset}'.format(**ANSI))