aboutsummaryrefslogtreecommitdiff
path: root/bin/ak
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ak')
-rwxr-xr-xbin/ak59
1 files changed, 50 insertions, 9 deletions
diff --git a/bin/ak b/bin/ak
index 8dbd0bd..5724ce2 100755
--- a/bin/ak
+++ b/bin/ak
@@ -1,4 +1,22 @@
-#!/bin/bash
+#!/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/>.
+###
export AK_DEBUG="yes"
##
## Arching Kaos CLI tool is the main executable script to use for exploring,
@@ -12,9 +30,13 @@ export AK_DEBUG="yes"
##
## -h, --help Prints this help message
##
+## -s, --shell Starts an interactive shell
+##
## -m, --module [module] Run a specified module. If no module provided
## the list of available modules will be printed.
##
+## -f, --function [function] Get the list of available functions
+##
## [command] [args] Run a command. If none provided a list of
## commands will be printed.
##
@@ -23,12 +45,14 @@ PROGRAM="$(basename $0)"
descriptionString="Arching Kaos CLI"
source $HOME/.arching-kaos/rc
-source $AK_LIBDIR/_ak_log
-source $AK_LIBDIR/_ak_script
+source $AK_LIBDIR/_ak_lib_load
+_ak_lib_load _ak_log
+_ak_lib_load _ak_script
if [ $# -eq 0 ]
then
_ak_log_warning "No command given"
+ _ak_log_info "Available commands:"
(
find $AK_BINDIR | grep 'ak-' | while read available
do
@@ -41,7 +65,7 @@ then
#$(echo $subcmd) $args
fi
done
- ) | sort | uniq
+ ) | sort | uniq | sed 's/^/# /g' | while read line; do _ak_log_info "$line";done
exit 1
fi
@@ -52,6 +76,10 @@ then
_ak_usage
exit 1
;;
+ -v|--version)
+ _ak_version
+ exit 1
+ ;;
esac
fi
@@ -68,7 +96,7 @@ case "$1" in
shift
if [ ! -z $1 ] && [ -n "$1" ]
then
- grep -rnF "$1(){" $AK_BINDIR/* $AK_LIBDIR/* $AK_MODULESDIR/*
+ grep -rnF "$1(){" $AK_BINDIR/* $AK_LIBDIR/* $AK_MODULESDIR/* > /dev/null 2>&1
if [ $? -ne 0 ]
then
_ak_log_error "No function $1 found"
@@ -81,13 +109,20 @@ case "$1" in
fi
filename="$(grep -rnF "$1(){" $AK_LIBDIR/* $AK_MODULESDIR/* | cut -d ':' -f 1)"
line="$(grep -rnF "$1(){" $AK_LIBDIR/* $AK_MODULESDIR/* | cut -d ':' -f 2)"
- functionname="$(grep -rnF "$1(){" $AK_LIBDIR/* $AK_MODULESDIR/* | cut -d ':' -f 3)"
- printf 'Use with:\n' >&2
+ functionname="$(grep -rnF "$1(){" $AK_LIBDIR/* $AK_MODULESDIR/* | cut -d ':' -f 3|sed -e 's/function //g')"
+ _ak_log_info "Use with:"
printf 'source %s\n%s\n' "$filename" "$(echo -n $functionname | sed 's/(){//')"
exit
else
+ _ak_log_error "No function selected"
+ _ak_log_info "Available functions:"
grep -rnF "(){" $AK_LIBDIR/* $AK_MODULESDIR/* | \
- sed -e "s#$AK_WORKDIR/##g" | sed -e 's/(){//g' | cut -d ':' -f 1,3 | tr ':' $'\t'
+ sed -e "s#$AK_WORKDIR/##g" | \
+ sed -e 's/function //g;s/(){//g' | \
+ cut -d ':' -f 1,3 | \
+ tr ':' ' ' | \
+ awk '{print $1 " " $2}' | \
+ sort | while read line; do _ak_log_info "${line}"; done
exit
fi
;;
@@ -100,7 +135,8 @@ case "$1" in
if [ ! -n "$1" ]
then
_ak_log_error "No module selected"
- ls -1 $AK_MODULESDIR
+ _ak_log_info "Modules available:"
+ ls -1 $AK_MODULESDIR | sed 's/^/# /g' | while read line; do _ak_log_info "$line";done
exit 1
fi
shift
@@ -117,6 +153,10 @@ case "$1" in
$subcmd/main.sh $subargs
_ak_exit_program $? "$subcmd module finished";
;;
+ -s|--shell)
+ rlwrap ak sh -s
+ _ak_exit_program $? "Shell terminated";
+ ;;
esac
if [ -f "$AK_BINDIR/ak-$subcmd" ]
@@ -139,6 +179,7 @@ else
fi
counter=$(($counter + 1))
done
+ _ak_usage
find $AK_BINDIR | while read available
do
echo $(basename $available) |\