#!/bin/bash # Copyright (C) 2022 Ortega Froysa, Nicolás # Author: Ortega Froysa, Nicolás # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . ISIDORE_VERSION="0.1.0" ISIDORE_CONFIG_DIR="" ISIDORE_CONFIG_DIR_OPTIONS=( "$XDG_CONFIG_HOME/isidore" "$HOME/.isidore") ISIDORE_AUTHOR_NAME="" ## # Create the configuration file. This function is called if it does not already # exist. ## function create_config_file() { echo "Creating $ISIDORE_CONFIG_DIR/config file..." echo "Please enter the following..." echo -n "Author name: " read ISIDORE_AUTHOR_NAME echo "ISIDORE_AUTHOR_NAME=\"$ISIDORE_AUTHOR_NAME\"" > $ISIDORE_CONFIG_DIR/config } ## # Read the configuration file and set the basic config variables. ## function set_config_vars() { for i in "${ISIDORE_CONFIG_DIR_OPTIONS[@]}" do if [ -d $i ] then ISIDORE_CONFIG_DIR=$i break fi done if [ -z "$ISIDORE_CONFIG_DIR" ] then if [ -z "$XDG_CONFIG_HOME" ] then ISIDORE_CONFIG_DIR="$XDG_CONFIG_HOME/isidore" else ISIDORE_CONFIG_DIR="$HOME/.isidore" fi echo "Creating new Jerome configuration directory in $ISIDORE_CONFIG_DIR" mkdir -p $ISIDORE_CONFIG_DIR create_config_file fi if ! [ -f "$ISIDORE_CONFIG_DIR/config" ] then create_config_file fi source $ISIDORE_CONFIG_DIR/config } function print_usage() { echo "USAGE: $1 [options]" } ## # Check to see if at the root of an Isidore project. ## function check_in_project() { if ! [ -f "./config.php" ] || ! [ -f "./.isidore-version" ] then echo "ERROR: You are not currently in the root of an Isidore project." exit 1 fi } ## # Create a new project. # # Params: # $1 - The project directory # $2 - The project name ## function new_project() { NEW_PROJECT_DIR=$1 NEW_PROJECT_NAME=$2 mkdir $NEW_PROJECT_DIR mkdir -p $NEW_PROJECT_DIR/site/ mkdir -p $NEW_PROJECT_DIR/templates/ echo \ "" >> $NEW_PROJECT_DIR/config.php echo "$ISIDORE_VERSION" > $NEW_PROJECT_DIR/.isidore-version } ## # Clean a project's build. ## function clean_project() { check_in_project if [ -d "./output/" ] then rm -r ./output/ fi echo "Project cleaned." } set_config_vars case $1 in new) new_project $2 $3;; clean) clean_project;; *) echo "Unknown command $1. Use the 'help' command." print_usage $0;; esac