#!/bin/sh set -e . ${A3_LIB_PATH:-/usr/lib/a3}/include.sh a3include_lib a3 a3include_lib log a3include_lib util A3_FILE=$1 [ -z "$A3_FILE" ] && exit 1 if ! [ -f "$A3_FILE" ]; then LOGD "lfa3" A3_FILE=$(a3index_find $A3_FILE) [ -z "$A3_FILE" ] && fatal_log "no a3 file found" fi shift name=$(a3ff a3read_meta name) description=$(a3ff a3read_meta description) author=$(a3ff a3read_meta author) url=$(a3ff a3read_meta url) require_value meta:a3.name $name echo "name: $name" [ -n "$description" ] && echo "description: $description" [ -n "$author" ] && echo "author: $author" [ -n "$url" ] && echo "url: $url" echo "status: $(a3index_current_status $name || echo "not installed")" echo "---" A3_INSTALL_BIN_PATH=${A3_INSTALL_BIN_PATH:-/usr/bin} A3_INSTALL_LIB_PATH=${A3_INSTALL_LIB_PATH:-/usr/lib} main() { case $1 in update) a3index_is $name installed || fatal_log not installed. a3index_update $name pending A3_FILE=$(a3index_find $name) main install ;; install) a3index_is $name installed && fatal_log "$name is already installed." oldpwd=$(pwd) if [ -n "$(a3ff a3read_declaration declare_workdir | head -n 1)" ]; then cd $(a3ff a3read_declaration declare_workdir | head -n 1) fi a3ff a3index_create $name a3ff a3read_declaration declare_executable | while read ex; do [ -z "$ex" ] && continue filename=$(basename $ex) if [ -f "$A3_INSTALL_BIN_PATH/$filename" ]; then LOGW "overwriting $A3_INSTALL_BIN_PATH/$filename..." else LOGI "copying $ex to $A3_INSTALL_BIN_PATH/$filename..." fi cp $ex $A3_INSTALL_BIN_PATH/$filename chmod +x $A3_INSTALL_BIN_PATH/$filename done a3ff a3read_declaration declare_library | while read lib; do [ -z "$lib" ] && continue if [ -d "$A3_INSTALL_LIB_PATH/$name" ]; then LOGW "overwriting $A3_INSTALL_LIB_PATH/$name..." else LOGI "copying library..." fi cp -r $lib/. $A3_INSTALL_LIB_PATH/$name done a3index_update $name installed cd $oldpwd ;; eval) shift; $@ ;; remove) a3index_is $name installed || fatal_log "$name is not installed." a3ff a3read_declaration declare_executable | while read ex; do filename=$(basename $ex) [ -f "$A3_INSTALL_BIN_PATH/$filename" ] || fatal_log "$A3_INSTALL_BIN_PATH/$filename does not exist" LOGI "removing $A3_INSTALL_BIN_PATH/$filename..." rm $A3_INSTALL_BIN_PATH/$filename done a3ff a3read_declaration declare_library | while read lib; do [ -d "$A3_INSTALL_LIB_PATH/$name" ] || continue LOGI "removing library..." rm -r $A3_INSTALL_LIB_PATH/$name done a3index_update $name cache ;; list) for f in $(find $A3_INDEX_ROOT -iname "*.a3"); do echo "$(a3read_meta "$f" name): $(basename $(dirname $f))" done esac } main $@