#!/bin/bash # shellcheck disable=SC2250 # # ax-make: Alex' Simple Makefile System # Copyright (c)2014-2023 Alexander Barton (alex@barton.de) # # 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 2 of the License, or # (at your option) any later version. # NAME=$(basename "$0") Usage() { echo "Usage: $NAME [-2|-3|-l ] []" echo echo " -0 Don't create AUTHORS, COPYING and README files." echo ' -2 Use the GNU GPLv2 for the COPYING file.' echo ' -3 Use the GNU GPLv3 for the COPYING file.' echo ' -l Specify license to use for the COPYING file:' echo ' can be "gpl2", "gpl3", "lgpl21", "lgpl3".' echo ' By default an empty COPYING file is created.' echo ' -m Use Markdown, create AUTHORS.md and README.md.' echo echo " Library directory. Default: current working directory." echo exit 2 } Download() { URL="$1" FILE="$2" echo "Downloading $URL to \"$FILE\" ..." if curl --version >/dev/null 2>&1; then curl -#Lo "$FILE" "$URL" && return 0 echo "Failed to download $URL! [curl]" return 1 fi if wget --version >/dev/null 2>&1; then wget -qO "$FILE" --show-progress "$URL" && return 0 echo "Failed to download $URL! [wget]" return 1 fi echo "Can't download $URL, no download tool found!" return 1 } LIB_D="." LICENSE="" ADD_FILES=1 unset SUFFIX while true; do case "$1" in "-0") unset ADD_FILES ;; "-2") LICENSE="gpl2" ;; "-3") LICENSE="gpl3" ;; "-l") LICENSE="$2" shift ;; "-m") SUFFIX=".md" ;; "-"*) Usage ;; *) break ;; esac shift done [[ $# -gt 1 ]] && Usage [[ -n "$1" ]] && LIB_D="$1" if [[ -r "/usr/local/share/ax-make/Makefile.ax" ]]; then MAKEFILE_AX="/usr/local/share/ax-make/Makefile.ax" elif [[ -r "/usr/share/ax-make/Makefile.ax" ]]; then MAKEFILE_AX="/usr/share/ax-make/Makefile.ax" else echo "$NAME: No source \"Makefile.ax\" found!" echo "$NAME: Please check your installation of \"ax-make\" and try again." exit 1 fi # -- Makefile.ax -- if [[ ! -d "$LIB_D" ]]; then mkdir -pv "$LIB_D" || exit 1 fi target="$LIB_D/$(basename "$MAKEFILE_AX")" if [[ ! -e "$target" || "$MAKEFILE_AX" -nt "$target" ]]; then echo "Updating \"$target\" ..." cp -v "$MAKEFILE_AX" "$target" || exit 1 else echo "Makefile \"$target\" is up to date." fi # -- Project Makefile's --- if [[ ! -e "Makefile" ]]; then echo "Creating \"Makefile\" ..." [[ "$LIB_D" != "." ]] && subdirs="$LIB_D" || subdirs="" cat >"Makefile" <"$LIB_D/Makefile" </dev/null 2>&1; then echo "Creating \"AUTHORS$SUFFIX\" file ..." echo "$(git config user.name) <$(git config user.email)>" >>"AUTHORS$SUFFIX" fi fi if [[ ! -e COPYING ]]; then LICENSE_URL="" case "$LICENSE" in "") ;; "gpl2") LICENSE_URL="https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt" ;; "gpl3") LICENSE_URL="https://www.gnu.org/licenses/gpl-3.0.txt" ;; "lgpl21") LICENSE_URL="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt" ;; "lgpl3") LICENSE_URL="https://www.gnu.org/licenses/lgpl-3.0.txt" ;; *) echo "Can't setup unknown \"$LICENSE\" license!" ;; esac [[ -n "$LICENSE_URL" ]] && Download "$LICENSE_URL" COPYING else [[ -n "$LICENSE" ]] && echo "COPYING file already exists, skipping." fi files=() if [[ -n "$ADD_FILES" ]]; then files+=(COPYING) files+=("AUTHORS$SUFFIX" "README$SUFFIX") fi for f in "${files[@]}"; do if [[ ! -e "$f" ]]; then echo "Creating empty \"$f\" file ..." touch "$f" fi done exit 0