#!/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 .
###
##
## Tools for zchains
##
## Usage:
##
## -h, --help Prints this help message
## -r, --reset Reset zchain
## Backs up your latest block into IPFS
## filesystem, replaces it with an empty file
## (GENESIS hardcode) and pushes its IPFS link
## as your zchain's latest zblock.
## Disclaimer:
## This program, does NOT delete anything from
## your IPFS repository, neither denies access to
## previously created blocks.
## --rebase Rebase zchain to a zblock
## Backs up your latest block into IPFS
## filesystem, replaces it with a zblock and
## pushes its IPFS link as your zchain's latest
## zblock.
## Disclaimer:
## This program, does NOT delete anything from
## your IPFS repository, neither denies access to
## previously created blocks.
## --rebase-back-one Rebase zchain one zblock back
## --extract-cids Extracts IPFS CIDv0 links of a zchain
## --extract-data-cids Extracts data IPFS CIDv0 links from a zchain
## --calculate-size Calculates the size of a zchain
## --crawl Crawls zchains ( --crawl --help for more
## options)
## --crawl-self Crawls the local zchain
## --crawl-remote-ipfs Crawls a remote zchain
## --crawl-remote-ipns Crawls a remote zchain from ipns key
## --get-latest Returns the latest zblock from your zchain
##
fullprogrampath="$(realpath $0)"
PROGRAM=$(basename $0)
descriptionString="Zchain tools"
source $AK_LIBDIR/_ak_log
source $AK_LIBDIR/_ak_script
source $AK_LIBDIR/_ak_zchain
# Flags to run
if [ ! -z $1 ]; then
case $1 in
-h | --help) _ak_usage; exit;;
-r | --reset) _ak_zchain_reset; exit;;
--rebase) if [ ! -z $2 ]; then _ak_zchain_rebase $2; else exit 1; fi; exit;;
--rebase-back-one) _ak_zchain_rebase "`_ak_zchain_crawl -l 2 | jq -r '.[1].zblock'`" ; exit ;;
--extract-cids) _ak_zchain_extract_cids $2; exit;;
--extract-data-cids) _ak_zchain_extract_data_cids $2; exit;;
--calculate-size) _ak_zchain_calculate_size $2; exit;;
--crawl) shift; _ak_zchain_crawl $*; exit;;
--crawl-self) _ak_zchain_crawl_self; exit;;
--crawl-remote-ipfs) _ak_zchain_crawl_remote_ipfs $2; exit;;
--crawl-remote-ipns) _ak_zchain_crawl_remote_ipns $2; exit;;
--get-latest) _ak_zchain_get_latest; exit;;
* ) _ak_usage;;
esac
else _ak_usage
fi