in hack/release/wizard/releaseWizard.py [0:0]
def main():
global state
global dry_run
global templates
print("Solr Operator releaseWizard %s" % getScriptVersion())
c = parse_config()
try:
ConsoleMenu(clear_screen=True)
except Exception as e:
sys.exit("You need to install 'consolemenu' package version 0.7.1 for the Wizard to function. Please run 'pip "
"install -r requirements.txt'")
if c.dry:
print("Entering dry-run mode where all commands will be echoed instead of executed")
dry_run = True
release_root = os.path.expanduser("~/.solr-operator-releases")
if not load_rc() or c.init:
print("Initializing")
dir_ok = False
root = str(input("Choose root folder: [~/.solr-operator-releases] "))
if os.path.exists(root) and (not os.path.isdir(root) or not os.access(root, os.W_OK)):
sys.exit("Root %s exists but is not a directory or is not writable" % root)
if not root == '':
if root.startswith("~/"):
release_root = os.path.expanduser(root)
else:
release_root = os.path.abspath(root)
if not os.path.exists(release_root):
try:
print("Creating release root %s" % release_root)
os.makedirs(release_root)
except Exception as e:
sys.exit("Error while creating %s: %s" % (release_root, e))
release_version = get_release_version()
else:
conf = load_rc()
release_root = conf['root']
if 'release_version' in conf:
release_version = conf['release_version']
else:
release_version = get_release_version()
store_rc(release_root, release_version)
check_prerequisites()
try:
y = yaml.load(open(os.path.join(script_path, "releaseWizard.yaml"), "r"), Loader=yaml.Loader)
templates = y.get('templates')
todo_list = y.get('groups')
state = ReleaseState(release_root, release_version, getScriptVersion())
state.init_todos(bootstrap_todos(todo_list))
state.load()
except Exception as e:
sys.exit("Failed initializing. %s" % e)
state.save()
main_menu = ConsoleMenu(title="Solr Operator ReleaseWizard",
subtitle=get_releasing_text,
prologue_text="Welcome to the release wizard. From here you can manage the process including creating new RCs. "
"All changes are persisted, so you can exit any time and continue later. Make sure to read the Help section.",
epilogue_text="® 2020 The Solr Operator project. Licensed under the Apache License 2.0\nScript version %s)" % getScriptVersion(),
clear_screen=False)
todo_menu = ConsoleMenu(title=get_releasing_text,
subtitle=get_subtitle,
prologue_text=None,
epilogue_text=None,
clear_screen=False)
todo_menu.exit_item = CustomExitItem("Return")
for todo_group in state.todo_groups:
if todo_group.num_applies() >= 0:
menu_item = todo_group.get_menu_item()
menu_item.set_menu(todo_menu)
todo_menu.append_item(menu_item)
main_menu.append_item(SubmenuItem(get_todo_menuitem_title, todo_menu, menu=main_menu))
main_menu.append_item(FunctionItem(get_start_new_rc_menu_title, start_new_rc))
main_menu.append_item(FunctionItem('Clear and restart current RC', state.clear_rc))
main_menu.append_item(FunctionItem("Clear all state, restart the %s release" % state.release_version, reset_state))
main_menu.append_item(FunctionItem('Start release for a different version', release_other_version))
main_menu.append_item(FunctionItem('Generate Asciidoc guide for this release', generate_asciidoc))
# main_menu.append_item(FunctionItem('Dump YAML', dump_yaml))
main_menu.append_item(FunctionItem('Help', help))
main_menu.show()