def _rmtree(path): """ Remove directory and all its contents, but only after user confirmation, or if the -y option is set """ from PyInstaller.config import CONF if CONF['noconfirm']: choice = 'y' elif sys.stdout.isatty(): choice = compat.stdin_input( 'WARNING: The output directory "%s" and ALL ITS ' 'CONTENTS will be REMOVED! Continue? (y/N)' % path) else: raise SystemExit('Error: The output directory "%s" is not empty. ' 'Please remove all its contents or use the ' '-y option (remove output directory without ' 'confirmation).' % path) if choice.strip().lower() == 'y': if not CONF['noconfirm']: print("On your own risk, you can use the option `--noconfirm` " "to get rid of this question.") logger.info('Removing dir %s', path) shutil.rmtree(path) else: raise SystemExit('User aborted')
def main(name, brief, debug, rec_debug, **unused_options): global stack if not os.path.isfile(name): print(name, "is an invalid file name!") return 1 arch = get_archive(name) stack.append((name, arch)) if debug or brief: show_log(arch, rec_debug, brief) raise SystemExit(0) else: show(name, arch) while 1: try: toks = stdin_input('? ').split(None, 1) except EOFError: # Ctrl-D print() # Clear line. break if not toks: usage() continue if len(toks) == 1: cmd = toks[0] arg = '' else: cmd, arg = toks cmd = cmd.upper() if cmd == 'U': if len(stack) > 1: arch = stack[-1][1] arch.lib.close() del stack[-1] name, arch = stack[-1] show(name, arch) elif cmd == 'O': if not arg: arg = stdin_input('open name? ') arg = arg.strip() try: arch = get_archive(arg) except NotAnArchiveError as e: print(e) continue if arch is None: print(arg, "not found") continue stack.append((arg, arch)) show(arg, arch) elif cmd == 'X': if not arg: arg = stdin_input('extract name? ') arg = arg.strip() data = get_data(arg, arch) if data is None: print("Not found") continue filename = stdin_input('to filename? ') if not filename: print(repr(data)) else: with open(filename, 'wb') as fp: fp.write(data) elif cmd == 'Q': break else: usage() do_cleanup()
def main(name, brief, debug, rec_debug, **unused_options): misc.check_not_running_as_root() global stack if not os.path.isfile(name): print(name, "is an invalid file name!") return 1 arch = get_archive(name) stack.append((name, arch)) if debug or brief: show_log(arch, rec_debug, brief) raise SystemExit(0) else: show(name, arch) while 1: try: toks = stdin_input("? ").split(None, 1) except EOFError: # Ctrl-D print() # Clear line. break if not toks: usage() continue if len(toks) == 1: cmd = toks[0] arg = "" else: cmd, arg = toks cmd = cmd.upper() if cmd == "U": if len(stack) > 1: arch = stack[-1][1] arch.lib.close() del stack[-1] name, arch = stack[-1] show(name, arch) elif cmd == "O": if not arg: arg = stdin_input("open name? ") arg = arg.strip() try: arch = get_archive(arg) except NotAnArchiveError as e: print(e) continue if arch is None: print(arg, "not found") continue stack.append((arg, arch)) show(arg, arch) elif cmd == "X": if not arg: arg = stdin_input("extract name? ") arg = arg.strip() data = get_data(arg, arch) if data is None: print("Not found") continue filename = stdin_input("to filename? ") if not filename: print(repr(data)) else: open(filename, "wb").write(data) elif cmd == "Q": break else: usage() do_cleanup()