#!/usr/bin/env bash # commands/init.command.sh # # Initializes the project for a given environment. # Brings the stack to a runnable state: containers up, vendors installed, # proxy started, framework initialized and configured. # # Usage: # dx init [env] [flags] # # Flags: # --skip-vendors Skip composer install # --skip-framework-init Skip framework init # --skip-framework-config Skip framework config generation # --debug Enable shell trace # # ============================================ # Public entrypoint # ============================================ function cmd::init::on_load() { flag::register \ --skip-vendors \ --skip-framework-init \ --skip-framework-config \ --skip-proxy \ --debug } function cmd::init::run() { local env="" local flags=() for arg in "$@"; do case "$arg" in --*) flags+=("$arg") ;; *) [[ -z "$env" ]] && env="$arg" ;; esac done if [[ ${#flags[@]} -gt 0 ]]; then if ! flag::parse "${flags[@]}"; then cmd::init::help return 1 fi fi env="${env:-${ENVIRONMENT:-dev}}" local framework_env framework_env="$(app::resolve_env "$env")" log::env "Initializing environment: ${env} (${framework_env})..." # ============================================ # Docker # ============================================ docker::compose::up -d >/dev/null # ============================================ # Vendors # ============================================ if ! flag::enabled --skip-vendors; then app::install_vendors else log::fs_warning "$(app::vendor_skip_message)" fi # ============================================ # Proxy # ============================================ if ! flag::enabled --skip-proxy; then log::run_step network info "Starting proxy..." \ proxy::start else log::network_warning "Skipping Proxy initialization... (--skip-proxy)" fi # ============================================ # Framework # ============================================ if ! flag::enabled --skip-framework-init; then app::init "$env" else log::env_warning "$(app::init_skip_message)" fi if ! flag::enabled --skip-framework-config; then app::config else log::env_warning "$(app::config_skip_message)" fi # ============================================ # Done # ============================================ log::env_success "Environment '${env}' is ready!" flag::scaffold_defaults_file cmd::init::_hint_post_init } # ============================================ # Help # ============================================ function cmd::init::help() { cat <