Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
/updates_list.txt
/updates_list.txt
/apps/app_categories
/etc/accent
/etc/editor
/etc/express-updates
/etc/pi-apps-import
/etc/theme
132 changes: 129 additions & 3 deletions api
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ logo() {

# Function to install an app
install_app() {
local app_directory="$1"
local app_directory="$(get_app_directory "$2")"
local selected_app_name="$2"
local installed_file="$HOME/.linstore/installed"
local temp_script=$(mktemp)
Expand Down Expand Up @@ -73,7 +73,7 @@ open_app() {

# Function to install an app
installation_script() {
local app_directory="$1"
local app_directory="$(get_app_directory "$2")"
local selected_app_name="$2"
local installed_file="$HOME/.linstore/installed"

Expand All @@ -97,7 +97,7 @@ installation_script() {

# Function to uninstall an app
uninstall_app() {
local app_directory="$1"
local app_directory="$(get_app_directory "$2")"
local selected_app_name="$2"
local uninstalled_file="$HOME/.linstore/uninstalled"
local temp_script=$(mktemp)
Expand Down Expand Up @@ -166,6 +166,124 @@ search_apps() {
fi
}

cache_categories() {
# $1 - apps dir
# $2 - include Pi-Apps?
yad --title="LinStore" \
--class="LinStore" \
--center --borders=10 \
--text "Generating app cache..." \
--no-buttons &

if [ -e "${1}/app_categories" ]; then
rm -f "${1}/app_categories"
fi

for app_dir in "${1}"/*; do
app_name=$(basename "${app_dir}")
if [ -e "${1}/$app_name/category" ]; then
echo "$app_name|$(cat "${1}/$app_name/category")" >> "${1}/app_categories"
fi
done

if [[ "$2" == "TRUE" ]]; then
if [ -e "$HOME/pi-apps/etc/categories" ]; then
while IFS= read -r line; do
app_name=$(echo "$line" | awk -F'|' '{print $1}')
category=$(grep -r "$(echo "$line" | awk -F'|' '{print $2}')" etc/mapping | head -n1 | awk -F'|' '{print $2}')
echo "$app_name|$category" >> "${1}/app_categories"
done < "$HOME/pi-apps/etc/categories"
fi
fi

sort "${1}/app_categories" > "${1}/app_categories.tmp"
mv "${1}/app_categories.tmp" "${1}/app_categories"

pkill -f "yad*"
}

get_categories() {
cat etc/categories
}

get_apps_in_category() {
local category="$1"
grep "|$category$" etc/categories | cut -d'|' -f1
}

get_app_description() {
app_name="$1"
description_file="apps/$app_name/description"
if [ -e "$description_file" ]; then
cat "$description_file"
elif [ -e "$HOME/pi-apps/apps/$app_name/description" ]; then
cat "$HOME/pi-apps/apps/$app_name/description"
else
echo "No description available."
fi
}
get_app_creator() {
app_name="$1"
creator_file="apps/$app_name/creator"
if [ -e "$creator_file" ]; then
cat "$creator_file"
elif [ -e "$HOME/pi-apps/apps/$app_name/credits" ]; then
cat "$HOME/pi-apps/apps/$app_name/credits"
else
echo "No description available."
fi
}
get_app_website() {
app_name="$1"
website_file="apps/$app_name/website"
if [ -e "$website_file" ]; then
cat "$website_file"
else
echo "No description available."
fi
}
get_app_directory() {
app_name="$1"
if [ -d "apps/$app_name" ]; then
echo "apps/$app_name"
elif [ -d "$HOME/pi-apps/apps/$app_name" ]; then
echo "$HOME/pi-apps/apps/$app_name"
else
echo ""
fi
}

install_packages() {
packages="$@"
sudo apt update > /dev/null 2>&1

for package in $packages; do
if [[ "$package" == http* ]]; then
echo "Downloading and installing $package..."
wget --no-check-certificate "$package" -O /tmp/package.deb > /dev/null 2>&1
sudo dpkg -i /tmp/package.deb > /dev/null 2>&1
rm -r /tmp/package.deb
elif [[ "$package" == *.deb ]]; then
echo "Installing $package using dpkg..."
sudo dpkg -i "$package" > /dev/null 2>&1
else
echo "Installing $package using apt..."

sudo apt install "$package" -y > /dev/null 2>&1
fi
done
}

git_clone() {
if [ -z "$2" ]; then
local directory=$(basename "$1")
else
local directory="$2"
fi

git clone "$1" "$directory"
}

update() {
pkill -f "yad*"
./api info "Updating LinStore..."
Expand All @@ -192,6 +310,14 @@ information() {
printf '\033[1;104;30m INFO:\033[0;104m %s \033[0m\n' "$msg" >&2
}

export -f install_packages
export -f error
export -f warning
export -f information
export -f git_clone
export -f get_app_directory
export -f get_categories

# Main logic to handle command line arguments
if [[ $1 == "search" ]]; then
search_apps
Expand Down
Loading