#!/bin/bash # core/workflow.sh - top-level install workflow orchestration. # # This is the single place that defines the install order. install.sh only # bootstraps the environment and calls main(); all flow control lives here. # Each step delegates to a focused module so install.sh stays a thin entry # point with no business logic of its own. main() { init_environment # root check, banner, set oneinstack_dir, cd load_configs # config/versions.txt / config/options.conf / color / check_os / ... init_variables # random credentials (overrides config/options.conf dbrootpwd) parse_arguments "$@" # getopt -> sets *_option / *_flag globals check_environment # guard that the OS was detected show_menu # interactive only when ARG_NUM == 0 validate_options # final idempotent option re-check prepare_install # dirs, base dev tools, IP, download libs, checkDownload init_os # OS hardening + base dependency packages install_prereqs # OpenSSL + Jemalloc install_modules # DB -> Web(Nginx) -> PHP -> addons -> ... configure_modules # default demo site + re-read install dirs start_services # start DB, reload php-fpm print_summary # summary + reboot prompt }