|
|
|
@ -2,7 +2,12 @@
|
|
|
|
|
|
|
|
|
|
DIRECTORY="$(readlink -f "$(dirname "$0")")"
|
|
|
|
|
|
|
|
|
|
#echo "API directory is $DIRECTORY" 1>&2
|
|
|
|
|
function error {
|
|
|
|
|
echo -e "\e[91m$1\e[39m"
|
|
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#echo "API script thinks directory is $DIRECTORY" 1>&2
|
|
|
|
|
|
|
|
|
|
repo_url="$(cat "${DIRECTORY}/etc/git_url" || echo 'https://github.com/Botspot/pi-apps')"
|
|
|
|
|
|
|
|
|
@ -25,7 +30,7 @@ list_subtract() { #Outputs a list of apps from stdin, minus the ones that appear
|
|
|
|
|
grep -vx "$(echo "$1" | sed -z 's/\n/\\|/g' | sed -z 's/\\|$/\n/g')"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
list_apps() { #installed, uninstalled, corrupted, cpu_installable, online, online_only, local, local_only
|
|
|
|
|
list_apps() { # $1 can be: installed, uninstalled, corrupted, cpu_installable, hidden, visible, online, online_only, local, local_only
|
|
|
|
|
if [ -z "$1" ] || [ "$1" == local ];then
|
|
|
|
|
#list all apps
|
|
|
|
|
ls "${DIRECTORY}/apps"
|
|
|
|
@ -64,7 +69,7 @@ list_apps() { #installed, uninstalled, corrupted, cpu_installable, online, onlin
|
|
|
|
|
#list apps that exist on the online git repo
|
|
|
|
|
if [ -d "${DIRECTORY}/update/pi-apps/apps" ];then
|
|
|
|
|
#if update folder exists, just use that
|
|
|
|
|
ls "${DIRECTORY}/update/pi-apps/apps"
|
|
|
|
|
ls "${DIRECTORY}/update/pi-apps/apps" | grep .
|
|
|
|
|
else
|
|
|
|
|
#if update folder doesn't exist, then parse github HTML to get a list of online apps. Horrible idea, but it works!
|
|
|
|
|
wget -qO- "${repo_url}/tree/master/apps" | grep 'title=".*" data-pjax=' -o | sed 's/title="//g' | sed 's/" data-pjax=//g'
|
|
|
|
@ -156,7 +161,7 @@ app_categories() { #lists all apps in a virtual filesystem based on categories f
|
|
|
|
|
list_apps cpu_installable | list_intersect "$(list_apps visible)" | sed 's+^+All Apps/+g'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
usercount() { # $1 is app name. if empty, all are shown.
|
|
|
|
|
usercount() { #Return number of users for specified app. $1 is app name. if empty, all are shown.
|
|
|
|
|
clicklist="$(wget -qO- 'https://raw.githubusercontent.com/Botspot/pi-apps-analytics/main/clicklist')"
|
|
|
|
|
|
|
|
|
|
[ -z "$clicklist" ] && error "usercount: clicklist empty. Likely no internet connection"
|
|
|
|
@ -170,3 +175,51 @@ usercount() { # $1 is app name. if empty, all are shown.
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
text_editor() { #Open user-preferred text editor. $1 is file to open
|
|
|
|
|
[ -z "$1" ] && error "text_editor(): no file specified"
|
|
|
|
|
|
|
|
|
|
#find the best text editor
|
|
|
|
|
preferrededitor="$(cat "${DIRECTORY}/data/settings/Preferred text editor")"
|
|
|
|
|
|
|
|
|
|
#change preferred editor if user-default doesn't exist
|
|
|
|
|
if ! command -v "$preferrededitor" >/dev/null;then
|
|
|
|
|
preferrededitor=geany
|
|
|
|
|
fi
|
|
|
|
|
if ! command -v "$preferrededitor" >/dev/null;then
|
|
|
|
|
preferrededitor=mousepad
|
|
|
|
|
fi
|
|
|
|
|
if ! command -v "$preferrededitor" >/dev/null;then
|
|
|
|
|
preferrededitor=leafpad
|
|
|
|
|
fi
|
|
|
|
|
if ! command -v "$preferrededitor" >/dev/null;then
|
|
|
|
|
preferrededitor=nano
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$preferrededitor" == nano ];then
|
|
|
|
|
#terminal-based text editor
|
|
|
|
|
"${DIRECTORY}/etc/terminal-run" "nano "\""$1"\""" "Editing $(basename "$1")"
|
|
|
|
|
else
|
|
|
|
|
#non-terminal text editor
|
|
|
|
|
"$preferrededitor" "$1"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
script_name() { #returns name of install script(s) for the $1 app. outputs: '', 'install-32', 'install-64', 'install', 'install-32 install-64'
|
|
|
|
|
[ -z "$1" ] && error 'script_name: requires an argument'
|
|
|
|
|
|
|
|
|
|
#ensure $1 is valid app name
|
|
|
|
|
[ ! -d "${DIRECTORY}/apps/$1" ] && error "script_name: '$1' is an invalid app name.\n${DIRECTORY}/apps/$1 does not exist."
|
|
|
|
|
|
|
|
|
|
if [ -f "${DIRECTORY}/apps/$1/install-32" ] && [ ! -f "${DIRECTORY}/apps/$1/install-64" ];then
|
|
|
|
|
echo 'install-32'
|
|
|
|
|
elif [ -f "${DIRECTORY}/apps/$1/install-64" ] && [ ! -f "${DIRECTORY}/apps/$1/install-32" ];then
|
|
|
|
|
echo 'install-64'
|
|
|
|
|
elif [ -f "${DIRECTORY}/apps/$1/install-64" ] && [ -f "${DIRECTORY}/apps/$1/install-32" ];then
|
|
|
|
|
echo 'install-32 install-64'
|
|
|
|
|
elif [ -f "${DIRECTORY}/apps/$1/install" ];then
|
|
|
|
|
echo 'install'
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|