cbuild/config.sh
2024-07-12 03:19:09 +03:00

80 lines
2.4 KiB
Bash

#!/usr/bin/env bash
include cbuild/myprint.sh
include cbuild/functions.sh
include cbuild/detect_os.sh
function load_config {
local current_config_path="$1"
local default_config_path="$2"
TASK="$3"
if [ -z "$current_config_path" ]; then
error "current_config_path is null"
fi
if [ -z "$default_config_path" ]; then
error "default_config_path is null"
fi
OS=$(detect_os)
myprint "${GREEN}detected OS: $OS"
function exec_script_line {
local script="$1"
local line_num="$2"
myprint "${BLUE}reading line $line_num from $script"
local line_str="$(sed $line_num'!d' $script)"
myprint "$line_str"
eval "$line_str"
}
# getting version of cbuild installation
if [ -z "$INSTALLED_CBUILD_VERSION" ]; then
error "couldnt get current cbuild installation version"
fi
# getting version of default config
exec_script_line "$default_config_path" 3
DEFAULT_CONFIG_VERSION="$CONFIG_VERSION"
unset CONFIG_VERSION
# undefined task
[ -z "$TASK" ] && TASK="no_task"
# error on undefined
set -u
# reading current config or creating default
if [ ! -f "$current_config_path" ]; then
myprint "${YELLOW}$current_config_path doesn't exist"
cp "$default_config_path" "$current_config_path"
myprint "${YELLOW}Created copy (${current_config_path}) of default config (${default_config_path})"
fi
myprint "${BLUE}reading $current_config_path"
include "$current_config_path"
myprint "${WHITE}project: ${CYAN}$PROJECT"
myprint "${WHITE}${current_config_path} cbuild version: ${CYAN}$CBUILD_VERSION"
myprint "${WHITE}installed cbuild version: ${CYAN}$INSTALLED_CBUILD_VERSION"
myprint "${WHITE}${current_config_path} version: ${CYAN}$CONFIG_VERSION"
myprint "${WHITE}${default_config_path} version: ${CYAN}$DEFAULT_CONFIG_VERSION"
# checking versions
if [ ! "$CBUILD_VERSION" -eq "$INSTALLED_CBUILD_VERSION" ]; then
error "config was created for outdated cbuild version"
fi
if [ ! "$CONFIG_VERSION" -eq "$DEFAULT_CONFIG_VERSION" ]; then
error "config version isn't correct"
fi
mkdir -p "$OUTDIR"
mkdir -p "$OBJDIR/libs"
mkdir -p "$OBJDIR/objects"
mkdir -p "$OBJDIR/profile"
# dont thorw error on undefined variable
set +u
myprint "${GREEN}cbuild initialized!"
}