#!/usr/bin/env bash ### ### arching-kaos-tools ### Tools to interact and build an Arching Kaos Infochain ### Copyright (C) 2021 - 2025 kaotisk ### ### 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 . ### source $AK_LIBDIR/_ak_log # Wanna talk about it? function _ak_new_line(){ printf '\n' } function _ak_exit_program(){ # Needs rework: # cd $curdir # if [ "$3" == "save_log" ] # then # tar cvfz $curdir/$(basename $tempdir)-$launch_timestamp.tgz $tempdir # fi # rm -rf $tempdir if [ $1 -ne 0 ] then _ak_log_error "$2 ($1)" else _ak_log_exit "$2" fi exit $1 } function _ak_help(){ if [ ! -z $fullprogrampath ] && [ -n "$fullprogrampath" ] then cat $fullprogrampath | grep -v '^###' | grep '^##'| sed 's/^##//g;s/^ //g' >&2 #| \ # cat | while read line # do # echo -n "$line" | xxd # _ak_log_info "$line" # done exit 1 else _ak_log_error "fullprogrampath was not set" exit 1 fi } function _ak_license(){ if [ ! -z $fullprogrampath ] && [ -n "$fullprogrampath" ] then cat $fullprogrampath | grep '^###' | sed 's/^###//g;s/^ //g' >&2 else _ak_log_error "fullprogrampath was not set" exit 1 fi } function _ak_title_description(){ if [ ! -n "$descriptionString" ] then # Choose to exit with error to enforce standard _ak_log_error "No description string" exit 1 # Alternative solution # full_title="$(printf '%s' "$PROGRAM")" fi full_title="$(printf '%s - %s' "$PROGRAM" "$descriptionString")" delimiter_count=`echo -n $full_title | wc -c` ( printf '%s' "$full_title" _ak_new_line while [ $delimiter_count -gt 0 ] do printf '=' delimiter_count=$(($delimiter_count-1)) done _ak_new_line ) 1>&2 } function _ak_usage(){ ( _ak_title_description 2>&1 _ak_license 2>&1 _ak_help 2>&1 ) | sed 's/^/# /g' | while read line; do _ak_log_info "$line"; done } function _ak_print_version(){ git_repo="$(ls -l $AK_LIBDIR/_ak_script | cut -d '>' -f 2 | sed 's/^ //' | rev | cut -d '/' -f 3- | rev)" patch_version="$(git --git-dir="${git_repo}/.git" -P log --reverse --oneline --decorate | tail -n 1 | cut -d ' ' -f 1)" gtags="$(git --git-dir="${git_repo}/.git" -P tag | tail -n 1)" if [ -f "$AK_WORKDIR/version" ] then cat $AK_WORKDIR/version elif [ -n "${gtags}" ] then echo "${gtags}" else echo "v0.0.0-${patch_version}" fi } function _ak_version(){ printf '%s - ' "$PROGRAM" _ak_print_version 2>&1 } function _ak_not_implemented(){ #_ak_title_description _ak_log_error "Not implemented: $*" } function _ak_make_temp_directory(){ AK_TEMP="$(mktemp -d /tmp/aktmp-XXXXXXX)" if [ ! -d "$AK_TEMP" ] then _ak_log_error "Could not make $AK_TEMP directory to work in" exit 1 fi _ak_log_info "Directory $AK_TEMP created successfully" echo "$AK_TEMP" } function _ak_make_temp_file(){ AK_TEMP="$(mktemp /tmp/aktmp-XXXXXXX)" if [ ! -f "$AK_TEMP" ] then _ak_log_error "Could not make $AK_TEMP file to work in" exit 1 fi _ak_log_info "File $AK_TEMP created successfully" echo "$AK_TEMP" } function _ak_check_and_create_dir(){ if [ ! -d "$1" ] then mkdir -p "$1" if [ $? -eq 0 ] then _ak_log_info "Directory $1 created!" else _ak_log_error "Problem occured while creating $1" exit 1 fi else _ak_log_debug "$1 dir found" fi } function _ak_let_there_be_file(){ if [ ! -f "$1" ] then touch "$1" if [ $? -eq 0 ] then _ak_log_info "File $1 created!" else _ak_log_error "Problem occured while creating $1" exit 1 fi else _ak_log_debug "$1 file found" fi }