mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-14 00:04:08 +09:00
Remove flattool-cli dependancy
I never used and it was only added as an example
This commit is contained in:
584
src/flattool
584
src/flattool
@@ -1,584 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-only
|
|
||||||
|
|
||||||
# Settings and stuff, 'as' stands for App Setting. LastUpdateCheck must be 10 digits
|
|
||||||
asFirstRun="false"
|
|
||||||
asLastUpdateCheck="1692473972"
|
|
||||||
asAutoCheckUpdate="true"
|
|
||||||
|
|
||||||
# Global variables
|
|
||||||
versionNumber="1.4.2"
|
|
||||||
owner="heliguy4599"
|
|
||||||
repo="flattool"
|
|
||||||
appID=''
|
|
||||||
boldTxt=$(tput bold)
|
|
||||||
normalTxt=$(tput sgr0)
|
|
||||||
errTxt=$(tput setaf 1 && tput bold)
|
|
||||||
flatpak="flatpak-spawn --host flatpak"
|
|
||||||
|
|
||||||
# Haha, April Fools nerd
|
|
||||||
if [ "$(date +%m%d)" -eq 0401 ]; then
|
|
||||||
echo "Haha, April 1st, get ejected"
|
|
||||||
eject
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Functions to save time programming this
|
|
||||||
# ====================================================================================
|
|
||||||
# Function to make printing error message easier
|
|
||||||
printerr() {
|
|
||||||
echo -e "${errTxt}error: ${normalTxt}${1}\n"
|
|
||||||
|
|
||||||
# If a second argument is supplied, print 2 new lines and then it
|
|
||||||
if [ $# -eq 2 ]; then
|
|
||||||
echo "$2"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for any new versions
|
|
||||||
checkForNewVersion() {
|
|
||||||
currentTime=$(date +%s)
|
|
||||||
if ((currentTime - asLastUpdateCheck < 3600)); then
|
|
||||||
return 2
|
|
||||||
fi
|
|
||||||
sed -E -i "s/^asLastUpdateCheck=\"[0-9]{10}\"$/asLastUpdateCheck=\"${currentTime}\"/" "$0"
|
|
||||||
latestRelease=$(curl -s "https://api.github.com/repos/$owner/$repo/releases/latest")
|
|
||||||
latestTag=$(echo "$latestRelease" | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4 | head -n1)
|
|
||||||
if [ "$latestTag" = "$versionNumber" ]; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get explicit consent function
|
|
||||||
userConsent() {
|
|
||||||
prompt=$1
|
|
||||||
echo -n "$prompt" "[y|N]: "
|
|
||||||
read -r answer
|
|
||||||
case "$answer" in
|
|
||||||
[Yy])
|
|
||||||
echo "Continuing..."
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Aborted"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Information printing function
|
|
||||||
printinfo() {
|
|
||||||
echo -e " Version\t" "$versionNumber"
|
|
||||||
checkForNewVersion
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
echo -e " New Version \t" "$latestTag"
|
|
||||||
fi
|
|
||||||
echo -e " Location\t" "$0"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to easily check that the command called has the right amount of arguments
|
|
||||||
checkArgLength() {
|
|
||||||
minLength=$1
|
|
||||||
maxLength=$2
|
|
||||||
|
|
||||||
# Check to make sure that this is being called with the right options, a -1 in the second spot = unlimted
|
|
||||||
if [ "$minLength" -lt 0 ] || { [ "$minLength" -gt "$maxLength" ] && [ "$maxLength" -ge 0 ]; }; then
|
|
||||||
printerr "Internal program error: checkArgLength called with improper min or max values\n$0"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for proper argument amount
|
|
||||||
shift 3
|
|
||||||
if [ $# -lt "$minLength" ] || { [ "$maxLength" -ge 0 ] && [ $# -gt "$maxLength" ]; }; then
|
|
||||||
printSubcommandHelp "$subcommand"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
trashFile() {
|
|
||||||
if command -v trash-put >/dev/null 2>&1; then
|
|
||||||
trash-put "$1"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if command -v gio >/dev/null 2>&1; then
|
|
||||||
gio trash "$1"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
rm -rf "$1"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
# ====================================================================================
|
|
||||||
|
|
||||||
printMasterHelp() {
|
|
||||||
echo -e "Usage: flattool <command>"
|
|
||||||
printinfo
|
|
||||||
echo -e "\nCommands:"
|
|
||||||
|
|
||||||
printSubcommandHelp "install"
|
|
||||||
printSubcommandHelp "uninstall"
|
|
||||||
printSubcommandHelp "purge"
|
|
||||||
printSubcommandHelp "search"
|
|
||||||
printSubcommandHelp "id"
|
|
||||||
printSubcommandHelp "run"
|
|
||||||
printSubcommandHelp "orphans"
|
|
||||||
printSubcommandHelp "export"
|
|
||||||
printSubcommandHelp "data-dir"
|
|
||||||
printSubcommandHelp "add-flathub"
|
|
||||||
printSubcommandHelp "version"
|
|
||||||
printSubcommandHelp "auto-update"
|
|
||||||
printSubcommandHelp "update-check"
|
|
||||||
printSubcommandHelp "help"
|
|
||||||
}
|
|
||||||
|
|
||||||
printSubcommandHelp() {
|
|
||||||
case $1 in
|
|
||||||
install)
|
|
||||||
echo " install - usage: flattool install <app-query> <app-query> <app-query> ..."
|
|
||||||
echo -e " can also be ran with '-i'"
|
|
||||||
echo -e " about: Installs one or more ${flatpak} apps with separate processes to avoid cancelling the queue if a name cannot be matched\n"
|
|
||||||
;;
|
|
||||||
uninstall)
|
|
||||||
echo -e " uninstall - usage: flattool uninstall <app-query> <app-query> <app-query> ..."
|
|
||||||
echo -e " can also be ran with '-u', 'remove', 'rm'"
|
|
||||||
echo -e " about: Uninstalls one or more ${flatpak} apps with separate processes to avoid cancelling the queue if a name cannot be matched\n"
|
|
||||||
;;
|
|
||||||
purge)
|
|
||||||
echo -e " purge - usage: flattool purge <app-query>"
|
|
||||||
echo -e " can also be ran with '-p'"
|
|
||||||
echo -e " about: Uninstalls a ${flatpak} app and deletes its user data folder\n"
|
|
||||||
;;
|
|
||||||
search)
|
|
||||||
echo -e " search - usage: flattool search <app-query>"
|
|
||||||
echo -e " can also be ran with '-s'"
|
|
||||||
echo -e " about: Searches installed ${flatpak}s and returns lines from '${flatpak} list' that match the query\n"
|
|
||||||
;;
|
|
||||||
id)
|
|
||||||
echo -e " id - usage: flattool id <app-query> <app-query> <app-query> ..."
|
|
||||||
echo -e " about: Returns the first matching Application ID for the query\n"
|
|
||||||
;;
|
|
||||||
run)
|
|
||||||
echo -e " run - usage: flattool run <app-query>"
|
|
||||||
echo -e " can also be ran with '-r'"
|
|
||||||
echo -e " about: Runs the first matching application for the query, not requiring the full Application ID. Passes any extra arguments to the app to run except '--help' and '-h'\n"
|
|
||||||
;;
|
|
||||||
orphans)
|
|
||||||
echo -e " orphans - usage: flattool orphans"
|
|
||||||
echo -e " can also be ran with '-o'"
|
|
||||||
echo -e " about: Looks through ~/.var/app (the user data folder) and finds all folders that do not have corrosponding installed ${flatpak}s, then prompts asks user what to do with them\n"
|
|
||||||
;;
|
|
||||||
export)
|
|
||||||
echo -e " export - usage: flattool export"
|
|
||||||
echo -e " can also be ran with '-e'"
|
|
||||||
echo -e " about: Returns '${flatpak} install <all installed ${flatpak} application IDs>' so that you can copy and paste this to a new machine to install all your ${flatpak}s\n"
|
|
||||||
;;
|
|
||||||
data-dir)
|
|
||||||
echo -e " data-dir - usage: flattool data-dir <app query>"
|
|
||||||
echo -e " can also be ran with '-d'"
|
|
||||||
echo -e " about: Displays the path to the user data directory of the first matching ${flatpak}, adding '--open' or '-o' at the end will open the path\n"
|
|
||||||
;;
|
|
||||||
add-flathub)
|
|
||||||
echo -e " add-flathub - usage: flattool add-flathub <user,system>"
|
|
||||||
echo -e " about: Adds the flathub remoted repository flathub to either the system install or user install depending on the option chosen\n"
|
|
||||||
;;
|
|
||||||
version)
|
|
||||||
echo -e " version - usage: flattool version"
|
|
||||||
echo -e " can also be ran with '-v', '--version'"
|
|
||||||
echo -e " about: Prints the currently running version of flattool and where flattool is running from\n"
|
|
||||||
;;
|
|
||||||
auto-update)
|
|
||||||
echo -e " auto-update - usage: flattool auto-update"
|
|
||||||
echo -e " about: Toggles whether flattool will check for updates on each run\n"
|
|
||||||
;;
|
|
||||||
update-check)
|
|
||||||
echo -e " update-check: flattool update-check"
|
|
||||||
echo -e " about: Checks github to see if there is a new release and if there is, prompts to install it. Can only check once an hour.\n"
|
|
||||||
;;
|
|
||||||
help)
|
|
||||||
echo -e " help - usage: flattool help"
|
|
||||||
echo -e " can also be ran with '-h', '--help'"
|
|
||||||
echo -e " about: Prints the full help message for flattool"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main functions for the app
|
|
||||||
# ====================================================================================
|
|
||||||
identifyByQuery() {
|
|
||||||
app=$(${flatpak} list | awk -v app="${1,,}" -F '\t' 'tolower($0) ~ app { print $2 }' | head -n 1)
|
|
||||||
if [ -z "$app" ]; then
|
|
||||||
printerr "No Application ID found from query: '${boldTxt}${1}${normalTxt}'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
appID=$app
|
|
||||||
}
|
|
||||||
|
|
||||||
searchApp() {
|
|
||||||
output=$(${flatpak} list | grep -i "$1")
|
|
||||||
if [ -z "$output" ]; then
|
|
||||||
printerr "No installed application found from query: '${boldTxt}${1}${normalTxt}'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "$output"
|
|
||||||
}
|
|
||||||
|
|
||||||
installApp() {
|
|
||||||
# Do multiple ${flatpak} installs for multiple apps
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
${flatpak} install "$1"
|
|
||||||
echo
|
|
||||||
if [ $# -gt 0 ]; then
|
|
||||||
echo "${boldTxt}$(($# - 1)) Flatpaks to go${normalTxt}"
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
removeApp() {
|
|
||||||
# Do multiple ${flatpak} removes for multiple apps
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
${flatpak} remove "$1"
|
|
||||||
echo
|
|
||||||
if [ $# -gt 0 ]; then
|
|
||||||
echo "${boldTxt}$(($# - 1)) Flatpaks to go${normalTxt}"
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
purgeApp() {
|
|
||||||
identifyByQuery "$1"
|
|
||||||
userConsent "Are you sure you want to uninstall ${boldTxt}${appID}${normalTxt} and delete its user data?"
|
|
||||||
${flatpak} uninstall "$appID"
|
|
||||||
trashFile "${HOME}/.var/app/${appID}"
|
|
||||||
}
|
|
||||||
|
|
||||||
fixOrphans() {
|
|
||||||
echo "Checking '~/.var/app' for orphaned folders..."
|
|
||||||
appsList="$(${flatpak} list)"
|
|
||||||
orphanedAppsList=()
|
|
||||||
for element in "$HOME/.var/app/"*; do
|
|
||||||
element=$(basename "$element")
|
|
||||||
foundApp=$(grep -i "$element" <<< "$appsList")
|
|
||||||
if [ -z "$foundApp" ]; then
|
|
||||||
orphanedAppsList+=( "$element" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "${orphanedAppsList[0]}" ]; then #check for if the first element is empty, which will indicate if there is no orphaned apps
|
|
||||||
echo -e "\nThese user data folders exist with no installed ${flatpak}s:"
|
|
||||||
for element in "${orphanedAppsList[@]}"; do
|
|
||||||
echo " $element"
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
|
|
||||||
echo "What would you like to do with these folders?"
|
|
||||||
echo " 1) Attempt to install matching ${flatpak}s"
|
|
||||||
echo " 2) Delete these folders"
|
|
||||||
|
|
||||||
totalOfOrphans=${#orphanedAppsList[@]}
|
|
||||||
maxChoices=2
|
|
||||||
if [ "$totalOfOrphans" -gt 1 ]; then
|
|
||||||
echo " 3) Decide for each folder individually"
|
|
||||||
maxChoices=3
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -en "\nWhich option do you want to use (0 to abort)? [0-${maxChoices}]: "
|
|
||||||
while true; do
|
|
||||||
read -r answer
|
|
||||||
if ! [ "$answer" -eq "$answer" ] 2>/dev/null || [ "$answer" -lt 0 ] || [ "$answer" -gt "$maxChoices" ]; then
|
|
||||||
echo -n "Which option do you want to use (0 to abort)? [0-${maxChoices}]: "
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
case "$answer" in
|
|
||||||
1)
|
|
||||||
echo "Attempting to install..."
|
|
||||||
installApp "${orphanedAppsList[@]}"
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
echo "Deleting..."
|
|
||||||
for element in "${orphanedAppsList[@]}"; do
|
|
||||||
trashFile "${HOME}/.var/app/${element}"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
numberOfRound=$totalOfOrphans
|
|
||||||
for element in "${orphanedAppsList[@]}"; do
|
|
||||||
numberOfRound=$((numberOfRound - 1))
|
|
||||||
echo -e "${boldTxt}${numberOfRound} Flatpaks to go${normalTxt}\n"
|
|
||||||
echo "For folder '${element}', choose an option"
|
|
||||||
echo -n "[T]rash, [I]install, or [S]kip: "
|
|
||||||
while true; do
|
|
||||||
read -r answer
|
|
||||||
case "$answer" in
|
|
||||||
[Tt])
|
|
||||||
echo "Deleting..."
|
|
||||||
trashFile "${HOME}/.var/app/${element}"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
[Ii])
|
|
||||||
echo "Attempting to install"
|
|
||||||
installApp "$element"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
[Ss])
|
|
||||||
echo "Skipping"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -n "[T]rash, [I]install, or [S]kip: "
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Aborted"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
echo "There are no orphaned user data folders"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
flathub-add() {
|
|
||||||
case "$1" in
|
|
||||||
user | -u | --user)
|
|
||||||
${flatpak} remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.${flatpak}repo --user
|
|
||||||
;;
|
|
||||||
system | -s | --system)
|
|
||||||
${flatpak} remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.${flatpak}repo
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printerr "'${1}' is not an option" "Please specify either 'user' or 'system'"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
# ====================================================================================
|
|
||||||
|
|
||||||
# <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
|
||||||
# <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
|
||||||
# <><><><><><><><><><><=[ B E G I N M A I N P R O G R A M ]=<><><><><><><><><><><>
|
|
||||||
# <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
|
||||||
# <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
|
||||||
|
|
||||||
if [ "$asFirstRun" == "true" ]; then
|
|
||||||
sed -i 's/^asFirstRun="true"$/asFirstRun="false"/' "$0"
|
|
||||||
echo -e "Thank you for using flattool! This is the first time its being ran. Make sure to run 'flattool --help' if you are unsure of how to use this.\n"
|
|
||||||
|
|
||||||
# Check which trashing methods, if any, are avaialable
|
|
||||||
if command -v trash-put >/dev/null 2>&1; then
|
|
||||||
echo -e "Trashing Method: trash-cli"
|
|
||||||
echo -e " All deleted files will be sent to your trash"
|
|
||||||
else
|
|
||||||
if command -v gio >/dev/null 2>&1; then
|
|
||||||
echo -e "Trashing Method: gio"
|
|
||||||
echo -e " All deleted files will be sent to your trash"
|
|
||||||
else
|
|
||||||
echo -e "Trashing Method: Sadly flattool found no supported method for trashing your files. And deleted data will be ${boldTxt}perminantly deleted${normalTxt}."
|
|
||||||
echo -e " To allow flattool to send items to your trash instead, please install trash-cli or gio."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo # For a nice newline
|
|
||||||
|
|
||||||
echo -e "Flattool can check for updates, these checks will occur on every run, so long as it has been an hour since the last check."
|
|
||||||
echo -e " To install an update, run 'flattool update-check'.\n"
|
|
||||||
echo -n "Do you want to enable auto update checking? (You can change your mind later with 'flattool auto-update') [Y|n]: "
|
|
||||||
read -r answer
|
|
||||||
case $answer in
|
|
||||||
[Nn])
|
|
||||||
sed -i 's/^asAutoCheckUpdate="true"$/asAutoCheckUpdate="false"/' "$0"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
sed -i 's/^asAutoCheckUpdate="false"$/asAutoCheckUpdate="true"/' "$0"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
echo # For a nice newline
|
|
||||||
|
|
||||||
# Adding flathub if its not found
|
|
||||||
hasFlathub=$(${flatpak} remotes | grep flathub)
|
|
||||||
if [ -z "$hasFlathub" ]; then
|
|
||||||
answer=""
|
|
||||||
while [ -z "$answer" ]; do
|
|
||||||
echo -n "The flathub remote has not been found, would you like to add it as a [U]ser remote, [S]ystem remote, or [I]gnore: "
|
|
||||||
read -r answer
|
|
||||||
case $answer in
|
|
||||||
[Uu])
|
|
||||||
flathub-add user
|
|
||||||
;;
|
|
||||||
[Ss])
|
|
||||||
flathub-add system
|
|
||||||
;;
|
|
||||||
[Ii])
|
|
||||||
echo -e "You can add flathub any time later with 'flattool add-flathub'"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
answer="" # Clear the answer variable so the loop runs again
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
echo # For a nice newline
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Setting the subcommand
|
|
||||||
subcommand=$1
|
|
||||||
|
|
||||||
if [ "$asAutoCheckUpdate" == "true" ] && [ "$subcommand" != "update-check" ] && [ "$subcommand" != "auto-update" ]; then
|
|
||||||
checkForNewVersion
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
echo "New version of flattool is available: ${latestTag}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if any subcommand is provided
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
printerr "No command specified" "See 'flattool --help'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Expand flags and aliases
|
|
||||||
case $subcommand in
|
|
||||||
-h)
|
|
||||||
subcommand="help"
|
|
||||||
;;
|
|
||||||
-i)
|
|
||||||
subcommand="install"
|
|
||||||
;;
|
|
||||||
-u | rm | remove)
|
|
||||||
subcommand="uninstall"
|
|
||||||
;;
|
|
||||||
-r)
|
|
||||||
subcommand="run"
|
|
||||||
;;
|
|
||||||
-p)
|
|
||||||
subcommand="purge"
|
|
||||||
;;
|
|
||||||
-o)
|
|
||||||
subcommand="orphans"
|
|
||||||
;;
|
|
||||||
-e)
|
|
||||||
subcommand="export"
|
|
||||||
;;
|
|
||||||
-s)
|
|
||||||
subcommand="search"
|
|
||||||
;;
|
|
||||||
-d)
|
|
||||||
subcommand="data-dir"
|
|
||||||
;;
|
|
||||||
-v | --version)
|
|
||||||
subcommand="version"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Calling the correct subcommand help responses
|
|
||||||
if [ "$#" -gt 0 ] && [ "${*:$#}" == "-h" ] || [ "${*:$#}" == "--help" ]; then
|
|
||||||
if [ "$#" -eq 1 ]; then
|
|
||||||
printMasterHelp
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
printSubcommandHelp "$subcommand"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Switch case to run the proper function per subcommand
|
|
||||||
case "$subcommand" in
|
|
||||||
id)
|
|
||||||
checkArgLength 1 -1 "$@"
|
|
||||||
shift
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
identifyByQuery "$1"
|
|
||||||
echo "$appID"
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
run)
|
|
||||||
checkArgLength 1 -1 "$@"
|
|
||||||
if [ "$2" = "-m" ] || [ "$2" = "--multiple" ]; then
|
|
||||||
shift 2
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
identifyByQuery "$1"
|
|
||||||
${flatpak} run "$appID" & disown
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
identifyByQuery "$2"
|
|
||||||
shift 2
|
|
||||||
${flatpak} run "$appID" "$@"
|
|
||||||
;;
|
|
||||||
install)
|
|
||||||
checkArgLength 1 -1 "$@"
|
|
||||||
shift
|
|
||||||
installApp "$@"
|
|
||||||
;;
|
|
||||||
uninstall)
|
|
||||||
checkArgLength 1 -1 "$@"
|
|
||||||
shift
|
|
||||||
removeApp "$@"
|
|
||||||
;;
|
|
||||||
purge)
|
|
||||||
purgeApp "$2"
|
|
||||||
;;
|
|
||||||
search)
|
|
||||||
searchApp "$2"
|
|
||||||
;;
|
|
||||||
orphans)
|
|
||||||
fixOrphans
|
|
||||||
;;
|
|
||||||
export)
|
|
||||||
checkArgLength 0 0 "$@"
|
|
||||||
echo ${flatpak} install "$(${flatpak} list --columns=application | tr '\n' ' ')"
|
|
||||||
;;
|
|
||||||
data-dir)
|
|
||||||
checkArgLength 1 2 "$@"
|
|
||||||
identifyByQuery "$2"
|
|
||||||
echo "${HOME}/.var/app/${appID}"
|
|
||||||
if [ "$3" == "-o" ] || [ "$3" == "--open" ]; then
|
|
||||||
xdg-open "${HOME}/.var/app/${appID}"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
add-flathub)
|
|
||||||
checkArgLength 1 1 "$@"
|
|
||||||
shift
|
|
||||||
flathub-add "$@"
|
|
||||||
;;
|
|
||||||
help)
|
|
||||||
printMasterHelp
|
|
||||||
;;
|
|
||||||
version)
|
|
||||||
printinfo
|
|
||||||
;;
|
|
||||||
auto-update)
|
|
||||||
if [ "$asAutoCheckUpdate" = "true" ]; then
|
|
||||||
sed -i 's/^asAutoCheckUpdate="true"$/asAutoCheckUpdate="false"/' "$0"
|
|
||||||
echo "flattool will not check for updates on each run. To manually check, run 'flattool update-check'"
|
|
||||||
else
|
|
||||||
sed -i 's/^asAutoCheckUpdate="false"$/asAutoCheckUpdate="true"/' "$0"
|
|
||||||
echo "flattool will check for updates on each run."
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
update-check)
|
|
||||||
asLastUpdateCheck="0000000000"
|
|
||||||
checkForNewVersion
|
|
||||||
case $? in
|
|
||||||
0)
|
|
||||||
echo "flattool is up to date"
|
|
||||||
;;
|
|
||||||
1)
|
|
||||||
echo "New version of flattool is available: ${latestTag}"
|
|
||||||
userConsent "Do you want to install this new update?"
|
|
||||||
echo "Installing new version..."
|
|
||||||
wget -N -P "$(dirname "$0")" "https://raw.githubusercontent.com/${owner}/${repo}/main/flattool"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printerr "'${subcommand}' is not a flattool command" "See 'flattool --help'"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -36,15 +36,6 @@ configure_file(
|
|||||||
install_mode: 'r-xr--r--'
|
install_mode: 'r-xr--r--'
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file(
|
|
||||||
input: 'flattool',
|
|
||||||
output: 'flattool',
|
|
||||||
configuration: conf,
|
|
||||||
install: true,
|
|
||||||
install_dir: get_option('bindir'),
|
|
||||||
install_mode: 'r-xr--r--'
|
|
||||||
)
|
|
||||||
|
|
||||||
flattool_gui_sources = [
|
flattool_gui_sources = [
|
||||||
'__init__.py',
|
'__init__.py',
|
||||||
'main.py',
|
'main.py',
|
||||||
|
|||||||
Reference in New Issue
Block a user