#!/bin/sh # Copyright (C) 2022-2023 Denis 'GNUtoo' Carikli # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # For compatibility with sysexits.h (see man 3 sysexits.h for more details) EX_USAGE=64 lbwww_uri="https://git.sr.ht/~libreboot/lbwww" lbwww_path="" untitled_uri="https://git.sr.ht/~libreboot/untitled" untitled_path="" help() { echo "Usage: $0 [options]" echo "" echo "Available options:" echo -e "\t-h, --help" echo -e "\t\tDisplay this help and exit." echo -e "\t--with-lbwww-path PATH" echo -e "\t\tUse a local lbwww directory from PATH\n" \ "\t\tinstead of downloading the latest version from\n" \ "\t\t${lbwww_uri}" echo -e "\t--with-untitled-path PATH" echo -e "\t\tUse a local untitled directory from PATH\n" \ "\t\tinstead of downloading the latest version from\n" \ "\t\t${untitled_uri}" } sync_repo() { dst_path="$1" src_uri="$2" src_path="$3" src_revision="$4" if [ -z "${src_path}" ] && [ ! -d "${dst_path}" ] ; then git clone "${src_uri}" "${dst_path}" git -C "${dst_path}" checkout "${src_revision}" elif [ ! -d "${dst_path}" ] ; then mkdir -p "$(dirname ${dst_path})" cp -a "${src_path}" "${dst_path}" if [ -n "${src_revision}" ] ; then git -C "${dst_path}" checkout "${src_revision}" fi elif [ -z "${src_path}" ] ; then git -C "${dst_path}" remote get-url origin || \ git -C "${dst_path}" remote add origin "${src_uri}" git -C "${dst_path}" remote set-url origin "${src_uri}" git -C "${dst_path}" clean -dfx git -C "${dst_path}" pull --rebase else rm -rf "${dst_path}" cp -a "${src_path}" "${dst_path}" if [ -n "${src_revision}" ] ; then git -C "${dst_path}" checkout "${src_revision}" fi fi } help_missing_arg() { printf "Error: Argument of %s is missing.\n\n" "$1" help } i=1 while [ $i -le $# ] ; do opt="$(eval echo \$$i)" case "${opt}" in -h|--help) help exit 0 ;; --with-lbwww-path) if [ $i -ge $# ] ; then help_missing_arg "--with-lbwww-path" exit ${EX_USAGE} fi lbwww_path="$(eval echo \$$(expr $i + 1))" i="$(expr $i + 1)" ;; --with-untitled-path) if [ $i -ge $# ] ; then help_missing_arg "--with-untitled-path" exit ${EX_USAGE} fi untitled_path="$(eval echo \$$(expr $i + 1))" i="$(expr $i + 1)" ;; *) help exit ${EX_USAGE} ;; esac i="$(expr $i + 1)" done set -e sync_repo "untitled" "${untitled_uri}" "${untitled_path}" sync_repo "untitled/www/lbwww" "${lbwww_uri}" "${lbwww_path}" cd untitled ./build sites lbwww