#!/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 <http://www.gnu.org/licenses/>.
###
##
## Performs various operations on a zblock. Additionally, it can also pack one
## from given information, which can be added on top of your zchain.
##
## Usage:
##    -h, --help                             Prints this help message
##    -s, --show [zblock]                    Shows the zblock provided. In case
##                                           of no zblock, the latest of your
##                                           zchain is shown.
##    -x, --gen-html <zblock>                Generates an HTML document for a
##                                           given zblock
##    -c, --cache                            Caches a zblock
##    -p, --pack <module/action> <hash>      Packs a zblock
##    -r, --repack <zblock> <previous>       Repacks a zblock at previous
##    -a, --announce                         Announces a zblock
##
fullprogrampath="$(realpath $0)"
PROGRAM=$(basename $0)
descriptionString="Various zblock operations"

# At least these
source $AK_LIBDIR/_ak_log
source $AK_LIBDIR/_ak_script
source $AK_LIBDIR/_ak_zblock

# Flags to run
if [ ! -z $1 ]; then
    case $1 in
        -h | --help) _ak_usage; exit;;
        -s | --show)
            _ak_zblock_show $2
            exit
            ;;
        -x | --gen-html)
            _ak_zblock_gen_html $2
            exit
            ;;
        -c | --cache)
            _ak_zblock_cache $2
            exit
            ;;
        -p | --pack)
            _ak_zblock_pack $2 $3
            exit
            ;;
        -r | --repack)
            _ak_zblock_repack $2 $3
            exit
            ;;
        -a | --announce)
            _ak_zblock_announce $2
            exit
            ;;
        * ) _ak_usage;;
    esac
else _ak_usage
fi