allow forcing init in dirty directory

This commit is contained in:
Nick Sweeting 2019-05-01 02:27:50 -04:00
parent cb2dd1ee28
commit ad3898add6
2 changed files with 24 additions and 12 deletions

View file

@ -21,10 +21,18 @@ def main(args: Optional[List[str]]=None, stdin: Optional[IO]=None, pwd: Optional
add_help=True, add_help=True,
formatter_class=SmartFormatter, 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) reject_stdin(__command__, stdin)
init(out_dir=pwd or OUTPUT_DIR) init(
force=command.force,
out_dir=pwd or OUTPUT_DIR,
)
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -238,7 +238,7 @@ def run(subcommand: str,
@enforce_types @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""" """Initialize a new ArchiveBox collection in the current directory"""
os.makedirs(out_dir, exist_ok=True) os.makedirs(out_dir, exist_ok=True)
@ -254,15 +254,19 @@ def init(out_dir: str=OUTPUT_DIR) -> None:
print(f' {out_dir}') print(f' {out_dir}')
print('{green}------------------------------------------------------------------{reset}'.format(**ANSI)) print('{green}------------------------------------------------------------------{reset}'.format(**ANSI))
else: else:
stderr( if force:
("{red}[X] This folder appears to already have files in it, but no index.json is present.{reset}\n\n" stderr('[!] This folder appears to already have files in it, but no index.json is present.', color='lightyellow')
" You must run init in a completely empty directory, or an existing data folder.\n\n" stderr(' Because --force was passed, ArchiveBox will initialize anyway (which may overwrite existing files).')
" {lightred}Hint:{reset} To import an existing data folder make sure to cd into the folder first, \n" else:
" then run and run 'archivebox init' to pick up where you left off.\n\n" stderr(
" (Always make sure your data folder is backed up first before updating ArchiveBox)" ("{red}[X] This folder appears to already have files in it, but no index.json is present.{reset}\n\n"
).format(out_dir, **ANSI) " 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"
raise SystemExit(1) " 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: if existing_index:
print('\n{green}[*] Verifying archive folder structure...{reset}'.format(**ANSI)) print('\n{green}[*] Verifying archive folder structure...{reset}'.format(**ANSI))