#!/bin/bash ############################################################################## # Add your custom helpers here. Remember, this is just Bash! ############################################################################## # Init all paths and make sure the directories exist function init_paths_and_vars { # Directory for projects WORKSPACE="$HOME/workspace" # This is in bashrc USER_BIN="$HOME/bin" # Local prefix LOCAL_PREFIX="$HOME/.local" # Local bin LOCAL_BIN="$HOME/.local/bin" # Temp dir for downloads TMP_DIR="$PROJECT_DIR/tmp" # System uname UNAME_STR=$(uname) # XGD_DATA XDG_DATA_HOME="$HOME/.local/share" # XGD_CONFIG XDG_CONFIG_HOME="$HOME/.config" # Create workspace dir mkdir -p "$WORKSPACE" mkdir -p "$USER_BIN" mkdir -p "$LOCAL_PREFIX" mkdir -p "$LOCAL_BIN" mkdir -p "$TMP_DIR" mkdir -p "$XDG_DATA_HOME" mkdir -p "$XDG_CONFIG_HOME" } # Create a dotfile and source a synced version function source_dotfile { local RC_PATH=$1 local RC_NAME="" RC_NAME=$(basename "$1") local SOURCE_CMD="source" # If a source command was passed in, we can use that [ "$2" != "" ] && SOURCE_CMD=$2 # Check if .bash* file exists if [[ ! ( -f "$HOME/.$RC_NAME" ) ]]; then # Create a blank one touch "$HOME/.$RC_NAME" fi try_link "$RC_PATH" "$HOME/.${RC_NAME}_sync" add_line "#import $RC_NAME from synced" "$HOME/.$RC_NAME" add_line "$SOURCE_CMD ~/.${RC_NAME}_sync" "$HOME/.$RC_NAME" } # Check if a recipe is installed, if not install it and mark it installed function install() { if ! is_installed "$1" ; then recipe "$1" set_installed "$1" fi }