From f30583566b412f85b74e5b7a4cb22ba517e5ddff Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Thu, 11 Jul 2024 20:35:51 +0200 Subject: [PATCH 01/12] Update APP-MANAGER: introducing option "-e" or "extra" --- APP-MANAGER | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/APP-MANAGER b/APP-MANAGER index d1e0250de..554487893 100755 --- a/APP-MANAGER +++ b/APP-MANAGER @@ -446,6 +446,7 @@ function _generate_options_list() { clean downgrade download + extra files install list @@ -964,7 +965,8 @@ case "$1" in MODULE="sandboxes.am" _use_module "$@" ;; - '-i'|'install') + '-i'|'install'|\ + '-e'|'extra') MODULE="install.am" _online_check _if_appman_mode_enabled From 16a4eb79b964498ee8ed452927cb35c398c95bb7 Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Thu, 11 Jul 2024 20:39:48 +0200 Subject: [PATCH 02/12] Update install.am: add option "-e" or "extra" --- modules/install.am | 230 +++++++++++++++++++++++++-------------------- 1 file changed, 130 insertions(+), 100 deletions(-) diff --git a/modules/install.am b/modules/install.am index 794c9e4c0..034390632 100644 --- a/modules/install.am +++ b/modules/install.am @@ -211,110 +211,118 @@ function _install_arg() { while [ -n "$1" ]; do - case $2 in - '') - echo " USAGE: $AMCLI $1 [ARGUMENT]" - echo " USAGE: $AMCLI $1 --debug [ARGUMENT]" - echo " USAGE: $AMCLI $1 --force-latest [ARGUMENT]"; exit - ;; - '--debug'|'--force-latest') - case $3 in - '') echo " USAGE: $AMCLI $1 --debug [ARGUMENT]" - echo " USAGE: $AMCLI $1 --force-latest [ARGUMENT]"; exit;; + case "$1" in + '-i'|'install') + case $2 in + '') + echo " USAGE: $AMCLI $1 [ARGUMENT]" + echo " USAGE: $AMCLI $1 --debug [ARGUMENT]" + echo " USAGE: $AMCLI $1 --force-latest [ARGUMENT]"; exit + ;; + '--debug'|'--force-latest') + case $3 in + '') echo " USAGE: $AMCLI $1 --debug [ARGUMENT]" + echo " USAGE: $AMCLI $1 --force-latest [ARGUMENT]"; exit;; + esac esac - esac - if [ "$AMCLI" == am ] 2>/dev/null; then - $SUDOCOMMAND echo -ne "\r" - if ! $SUDOCOMMAND -n true 2>/dev/null; then - exit - fi - fi + if [ "$AMCLI" == am ] 2>/dev/null; then + $SUDOCOMMAND echo -ne "\r" + if ! $SUDOCOMMAND -n true 2>/dev/null; then + exit + fi + fi - echo "############################################################################" - echo "## ##" - echo "## START OF ALL INSTALLATION PROCESSES ##" - echo "## ##" - echo "############################################################################" - _clean_amcachedir - echo "$@" | tr ' ' '\n' >> "$AMCACHEDIR"/install-args - echo STOP >> "$AMCACHEDIR"/install-args - ARGS=$(tail -n +2 "$AMCACHEDIR"/install-args) - METAPACKAGES="kdegames kdeutils libreoffice nodejs platform-tools" + echo "############################################################################" + echo "## ##" + echo "## START OF ALL INSTALLATION PROCESSES ##" + echo "## ##" + echo "############################################################################" + _clean_amcachedir + echo "$@" | tr ' ' '\n' >> "$AMCACHEDIR"/install-args + echo STOP >> "$AMCACHEDIR"/install-args + ARGS=$(tail -n +2 "$AMCACHEDIR"/install-args) + METAPACKAGES="kdegames kdeutils libreoffice nodejs platform-tools" - for arg in $ARGS; do + for arg in $ARGS; do - if [ "$arg" == STOP ]; then - if test -f "$AMCACHEDIR"/installed; then - echo "############################################################################" - echo -e "\n END OF ALL INSTALLATION PROCESSES\n" - echo -e " The following new programs have been installed:\n" - grep -w -v "◆ am" 0<"$AMCACHEDIR"/installed - echo -e "\n############################################################################" - exit + if [ "$arg" == STOP ]; then + if test -f "$AMCACHEDIR"/installed; then + echo "############################################################################" + echo -e "\n END OF ALL INSTALLATION PROCESSES\n" + echo -e " The following new programs have been installed:\n" + grep -w -v "◆ am" 0<"$AMCACHEDIR"/installed + echo -e "\n############################################################################" + exit + else + exit + fi else - exit - fi - else - echo "" - case $arg in + echo "" + case $arg in - '--debug') - echo " You have decided to read the complete messages to debug the installation" - echo "____________________________________________________________________________" - ;; - '--force-latest') - echo " You have decided to force downloads for the latest version (if it exists)" - echo "____________________________________________________________________________" - ;; - *) - # If the "tmp" directory is not removed, the installation failed, so remove the app - if test -d "$APPSPATH"/"$arg"/tmp; then - $SUDOCOMMAND "$APPSPATH"/"$arg"/remove 2> /dev/null - fi + '--debug') + echo " You have decided to read the complete messages to debug the installation" + echo "____________________________________________________________________________" + ;; + '--force-latest') + echo " You have decided to force downloads for the latest version (if it exists)" + echo "____________________________________________________________________________" + ;; + *) + # If the "tmp" directory is not removed, the installation failed, so remove the app + if test -d "$APPSPATH"/"$arg"/tmp; then + $SUDOCOMMAND "$APPSPATH"/"$arg"/remove 2> /dev/null + fi - # Various cases that may occur during installation (for example if you use a third-party repository) - if test -f "$APPSPATH"/"$arg"/remove; then - echo " ◆ $(echo "\"$arg\"" | tr '[:lower:]' '[:upper:]'): app already installed previously! Try removing it." - else - if test -f ./"$arg" 2> /dev/null; then - mkdir -p "$AMCACHEDIR"/tmp; cp ./"$arg" "$AMCACHEDIR"/tmp/"$arg"; cd "$AMCACHEDIR" || return; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp - _install_arg - elif test -f "$arg" 2> /dev/null; then - path2arg=$(echo "$arg") - arg=$(echo "$path2arg" | sed 's:.*/::') - cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; cp "$path2arg" ./"$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp - _install_arg - elif test -f "$AMPATH/neodb"; then - rm -R -f "$AMCACHEDIR/multirepo-args" - MULTIREPO=$(cat "$AMPATH/neodb" | grep "Source=" | sed 's/Source=//g') - for anyrepo in $MULTIREPO; do - if curl --output /dev/null --silent --head --fail "$anyrepo"/"$arg" 1>/dev/null; then - echo "$anyrepo" >> "$AMCACHEDIR/multirepo-args" - fi - done - if test -f "$AMCACHEDIR/multirepo-args"; then - anyrepoargs=$(cat "$AMCACHEDIR/multirepo-args" 2>/dev/null | wc -l) - if [ "$anyrepoargs" -gt 0 ]; then - if curl --output /dev/null --silent --head --fail "$APPSDB"/"$arg" 1>/dev/null; then - echo "$APPSDB" >> "$AMCACHEDIR/multirepo-args" + # Various cases that may occur during installation (for example if you use a third-party repository) + if test -f "$APPSPATH"/"$arg"/remove; then + echo " ◆ $(echo "\"$arg\"" | tr '[:lower:]' '[:upper:]'): app already installed previously! Try removing it." + else + if test -f ./"$arg" 2> /dev/null; then + mkdir -p "$AMCACHEDIR"/tmp; cp ./"$arg" "$AMCACHEDIR"/tmp/"$arg"; cd "$AMCACHEDIR" || return; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp + _install_arg + elif test -f "$arg" 2> /dev/null; then + path2arg=$(echo "$arg") + arg=$(echo "$path2arg" | sed 's:.*/::') + cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; cp "$path2arg" ./"$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp + _install_arg + elif test -f "$AMPATH/neodb"; then + rm -R -f "$AMCACHEDIR/multirepo-args" + MULTIREPO=$(cat "$AMPATH/neodb" | grep "Source=" | sed 's/Source=//g') + for anyrepo in $MULTIREPO; do + if curl --output /dev/null --silent --head --fail "$anyrepo"/"$arg" 1>/dev/null; then + echo "$anyrepo" >> "$AMCACHEDIR/multirepo-args" fi - anyrepoargall=$(cat "$AMCACHEDIR/multirepo-args" 2>/dev/null | wc -l) - if [ "$anyrepoargall" == 1 ]; then - cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$(cat "$AMCACHEDIR/multirepo-args" | head -1)/$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp + done + if test -f "$AMCACHEDIR/multirepo-args"; then + anyrepoargs=$(cat "$AMCACHEDIR/multirepo-args" 2>/dev/null | wc -l) + if [ "$anyrepoargs" -gt 0 ]; then + if curl --output /dev/null --silent --head --fail "$APPSDB"/"$arg" 1>/dev/null; then + echo "$APPSDB" >> "$AMCACHEDIR/multirepo-args" + fi + anyrepoargall=$(cat "$AMCACHEDIR/multirepo-args" 2>/dev/null | wc -l) + if [ "$anyrepoargall" == 1 ]; then + cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$(cat "$AMCACHEDIR/multirepo-args" | head -1)/$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp + rm -R -f "$AMCACHEDIR/multirepo-args" + _install_arg + else + printf '\n%s\n' " ◆ FOUND $(echo "\"$arg\"" | tr '[:lower:]' '[:upper:]') FROM MULTIPLE SOURCES:" + printf '%s\n\n' " Select a URL from this menu (read carefully) or press CTRL+C to abort:"; sleep 1 + select d in $(cat "$AMCACHEDIR/multirepo-args"); do test -n "$d" && break; echo ">>> Invalid Selection"; done + cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$d/$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp + rm -R -f "$AMCACHEDIR/multirepo-args" + _install_arg + fi + elif curl --output /dev/null --silent --head --fail "$APPSDB"/"$arg" 1>/dev/null; then + cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$APPSDB"/"$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp rm -R -f "$AMCACHEDIR/multirepo-args" _install_arg else - printf '\n%s\n' " ◆ FOUND $(echo "\"$arg\"" | tr '[:lower:]' '[:upper:]') FROM MULTIPLE SOURCES:" - printf '%s\n\n' " Select a URL from this menu (read carefully) or press CTRL+C to abort:"; sleep 1 - select d in $(cat "$AMCACHEDIR/multirepo-args"); do test -n "$d" && break; echo ">>> Invalid Selection"; done - cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$d/$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp - rm -R -f "$AMCACHEDIR/multirepo-args" - _install_arg + echo " 💀 ERROR: \"$arg\" does NOT exist in the database, see \"$AMCLI -l\"" fi elif curl --output /dev/null --silent --head --fail "$APPSDB"/"$arg" 1>/dev/null; then cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$APPSDB"/"$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp - rm -R -f "$AMCACHEDIR/multirepo-args" _install_arg else echo " 💀 ERROR: \"$arg\" does NOT exist in the database, see \"$AMCLI -l\"" @@ -325,18 +333,40 @@ while [ -n "$1" ]; do else echo " 💀 ERROR: \"$arg\" does NOT exist in the database, see \"$AMCLI -l\"" fi - elif curl --output /dev/null --silent --head --fail "$APPSDB"/"$arg" 1>/dev/null; then - cd "$AMCACHEDIR" || return; mkdir -p tmp; cd tmp || return; wget -q "$APPSDB"/"$arg"; cd ..; mv ./tmp/"$arg" ./"$arg"; rmdir ./tmp - _install_arg - else - echo " 💀 ERROR: \"$arg\" does NOT exist in the database, see \"$AMCLI -l\"" fi - fi - echo "____________________________________________________________________________" - ;; - esac - fi - done + echo "____________________________________________________________________________" + ;; + esac + fi + done + ;; + + '-e'|'extra') + case $2 in + '') + echo " USAGE: $AMCLI $1 'https://github.com/user/project' [ARGUMENT]"; exit + ;; + esac + case $3 in + '') + echo " USAGE: $AMCLI $1 'https://github.com/user/project' [ARGUMENT]"; exit + ;; + esac + + mkdir -p "$CACHEDIR/extra" + wget -q "$AMREPO"/templates/AM-SAMPLE-AppImage -O "$CACHEDIR/extra/$3" || exit 1 + sed -i "s#APP=SAMPLE#APP=$3#g" "$CACHEDIR/extra/$3" + CUSTOMREPO=$(echo "$2" | sed 's#https://github.com/##g' | cut -f1,2 -d'/') + sed -i "s#REPLACETHIS#$CUSTOMREPO#g" "$CACHEDIR/extra/$3" + q="'" + FUNCTION='curl -Ls https://api.github.com/repos/'"$CUSTOMREPO"'/releases | sed '"$q"'s/[()",{} ]/\\n/g'"$q"' | grep -oi "https.*mage$" | grep -vi "i386\\|i686\\|aarch64\\|arm64\\|armv7l" | head -1' + sed -i "s#FUNCTION)#$FUNCTION)#g" "$CACHEDIR/extra/$3" + chmod a+x "$CACHEDIR/extra/$3" + "$AMCLIPATH" -i "$CACHEDIR/extra/$3" + rm -f "$CACHEDIR/extra/$3" + exit 1 + ;; + esac done shift From 33dc4e38a8856a163a50cc00a50b120e88695e24 Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:08:22 +0200 Subject: [PATCH 03/12] Remove "betatester" message from "-i" or "install" and "-e" or "extra" --- APP-MANAGER | 1 - 1 file changed, 1 deletion(-) diff --git a/APP-MANAGER b/APP-MANAGER index 554487893..45c94dfc3 100755 --- a/APP-MANAGER +++ b/APP-MANAGER @@ -970,7 +970,6 @@ case "$1" in MODULE="install.am" _online_check _if_appman_mode_enabled - _betatester_message_on _use_module "$@" ;; '-t'|'template') From 6b03869c01d7ed2840670f3eea28905f20bfc1aa Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Thu, 11 Jul 2024 22:13:50 +0200 Subject: [PATCH 04/12] Update install.am: option "-e", add per-architecture filters --- modules/install.am | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/modules/install.am b/modules/install.am index 034390632..4af416428 100644 --- a/modules/install.am +++ b/modules/install.am @@ -344,26 +344,57 @@ while [ -n "$1" ]; do '-e'|'extra') case $2 in '') - echo " USAGE: $AMCLI $1 'https://github.com/user/project' [ARGUMENT]"; exit + echo " USAGE: $AMCLI $1 user/project [ARGUMENT]" + echo " USAGE: $AMCLI $1 https://github.com/user/project [ARGUMENT]"; exit ;; esac case $3 in '') - echo " USAGE: $AMCLI $1 'https://github.com/user/project' [ARGUMENT]"; exit + echo " USAGE: $AMCLI $1 user/project [ARGUMENT]" + echo " USAGE: $AMCLI $1 https://github.com/user/project [ARGUMENT]"; exit ;; esac mkdir -p "$CACHEDIR/extra" + if test -f "$CACHEDIR/extra/$3"; then + rm -f "$CACHEDIR/extra/$3" + fi wget -q "$AMREPO"/templates/AM-SAMPLE-AppImage -O "$CACHEDIR/extra/$3" || exit 1 sed -i "s#APP=SAMPLE#APP=$3#g" "$CACHEDIR/extra/$3" CUSTOMREPO=$(echo "$2" | sed 's#https://github.com/##g' | cut -f1,2 -d'/') sed -i "s#REPLACETHIS#$CUSTOMREPO#g" "$CACHEDIR/extra/$3" q="'" - FUNCTION='curl -Ls https://api.github.com/repos/'"$CUSTOMREPO"'/releases | sed '"$q"'s/[()",{} ]/\\n/g'"$q"' | grep -oi "https.*mage$" | grep -vi "i386\\|i686\\|aarch64\\|arm64\\|armv7l" | head -1' + if [ "$arch" == "x86_64" ]; then + if curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "x86_64" | head -1 1>/dev/null; then + FILTER=' | grep -i "x86_64" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "x64" | head -1 1>/dev/null; then + FILTER=' | grep -i "x64" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "amd64" | head -1 1>/dev/null; then + FILTER=' | grep -i "amd64" ' + else + FILTER=' | grep -vi "i386\\|i686\\|aarch64\\|arm64\\|armv7l"' + fi + elif [ "$arch" == "i686" ]; then + if curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "i386" | head -1 1>/dev/null; then + FILTER=' | grep -i "i386" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "i686" | head -1 1>/dev/null; then + FILTER=' | grep -i "i686" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "i586" | head -1 1>/dev/null; then + FILTER=' | grep -i "i586" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "i486" | head -1 1>/dev/null; then + FILTER=' | grep -i "i486" ' + fi + elif [ "$arch" == "aarch64" ]; then + if curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "aarch64" | head -1 1>/dev/null; then + FILTER=' | grep -i "aarch64" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "amd64" | head -1 1>/dev/null; then + FILTER=' | grep -i "amd64" ' + fi + fi + FUNCTION='curl -Ls https://api.github.com/repos/'"$CUSTOMREPO"'/releases | sed '"$q"'s/[()",{} ]/\\n/g'"$q"' | grep -oi "https.*mage$"'"$FILTER"' | head -1' sed -i "s#FUNCTION)#$FUNCTION)#g" "$CACHEDIR/extra/$3" chmod a+x "$CACHEDIR/extra/$3" "$AMCLIPATH" -i "$CACHEDIR/extra/$3" - rm -f "$CACHEDIR/extra/$3" exit 1 ;; esac From f9a8e195aae74fceda0aec2eb82b13b8fae740e5 Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 01:04:55 +0200 Subject: [PATCH 05/12] Update install.am: option -e, enable a third entry ... also fix AMD64 keys --- modules/install.am | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/install.am b/modules/install.am index 4af416428..254a4ca1c 100644 --- a/modules/install.am +++ b/modules/install.am @@ -345,13 +345,13 @@ while [ -n "$1" ]; do case $2 in '') echo " USAGE: $AMCLI $1 user/project [ARGUMENT]" - echo " USAGE: $AMCLI $1 https://github.com/user/project [ARGUMENT]"; exit + echo " USAGE: $AMCLI $1 user/project [ARGUMENT] [KEYWORD]"; exit ;; esac case $3 in '') echo " USAGE: $AMCLI $1 user/project [ARGUMENT]" - echo " USAGE: $AMCLI $1 https://github.com/user/project [ARGUMENT]"; exit + echo " USAGE: $AMCLI $1 user/project [ARGUMENT] [KEYWORD]"; exit ;; esac @@ -387,12 +387,15 @@ while [ -n "$1" ]; do elif [ "$arch" == "aarch64" ]; then if curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "aarch64" | head -1 1>/dev/null; then FILTER=' | grep -i "aarch64" ' - elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "amd64" | head -1 1>/dev/null; then - FILTER=' | grep -i "amd64" ' + elif curl --output /dev/null --silent --head --fail "https://api.github.com/repos/$CUSTOMREPO/releases" | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -i "arm64" | head -1 1>/dev/null; then + FILTER=' | grep -i "arm64" ' fi fi FUNCTION='curl -Ls https://api.github.com/repos/'"$CUSTOMREPO"'/releases | sed '"$q"'s/[()",{} ]/\\n/g'"$q"' | grep -oi "https.*mage$"'"$FILTER"' | head -1' sed -i "s#FUNCTION)#$FUNCTION)#g" "$CACHEDIR/extra/$3" + if [ -n "$4" ]; then + sed -i "s# head -1# grep -i \"$4\" | head -1#g" "$CACHEDIR/extra/$3" + fi chmod a+x "$CACHEDIR/extra/$3" "$AMCLIPATH" -i "$CACHEDIR/extra/$3" exit 1 From bbace0e3ca6c2bd2b805d36c1883572b5b90bcef Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 01:26:17 +0200 Subject: [PATCH 06/12] Update help.am --- modules/help.am | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/help.am b/modules/help.am index 80f5c6675..b4d7df3b1 100644 --- a/modules/help.am +++ b/modules/help.am @@ -90,6 +90,22 @@ function _help_body() { but AM requires AppMan to be installed to add custom directory settings. __________________________________________________________________________ + -e, extra + + SYNOPSIS: -e user/project {APPNAME} + -e user/project {APPNAME} {KEYWORD} + + DESCRIPTION: Install AppImages from github.com, outside the database. + + This allows you to install, update and manage them all like the others. + + Where "user/project" can be the whole URL to the github repository, + + give a name to the program so that it can be used from the command line. + + Optionally, add an "univoque" keyword if multiple AppImages are listed. + __________________________________________________________________________ + -f, files SYNOPSIS: -f From 70e99fe0847524c0b69989aa68283251e9a07854 Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 01:56:40 +0200 Subject: [PATCH 07/12] Update README.md --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README.md b/README.md index 580987f81..ff577c91f 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ You can consult the entire **list of managed apps** at [**portable-linux-apps.gi [Guides and tutorials](#guides-and-tutorials) - [Install applications](#install-applications) +- [Install AppImages not listed in this database but available in other github repos](#install-appimages-not-listed-in-this-database-but-available-in-other-github-repos) - [List the installed applications](#list-the-installed-applications) - [List and query all the applications available on the database](#list-and-query-all-the-applications-available-on-the-database) - [Update all](#update-all) @@ -731,6 +732,7 @@ See also "[How to update or remove apps manually](#how-to-update-or-remove-apps- This section is committed to giving small demonstrations of each available option, with videos: - [Install applications](#install-applications) + - [Install AppImages not listed in this database but available in other github repos](#install-appimages-not-listed-in-this-database-but-available-in-other-github-repos) - [List the installed applications](#list-the-installed-applications) - [List and query all the applications available on the database](#list-and-query-all-the-applications-available-on-the-database) - [Update all](#update-all) @@ -780,6 +782,45 @@ https://github.com/ivan-hc/AM/assets/88724353/c2e8b654-29d3-4ded-8877-f77ef11d58 ------------------------------------------------------------------------ +__________________________________________________________________________ +### Install AppImages not listed in this database but available in other github repos +From [version 7.2](https://github.com/ivan-hc/AM/releases/tag/7.2) its possible to install AppImages not listed in this database, thanks to the option `-e` or `extra`. + +You need to add the URL to the github repo before the name you want to give to the AppImage (for command line usage, for example). + +Optionally, you can add a "keyword" if more AppImages are listed in the same repo. + +Usage: +``` +am -e $USER/$PROJECT $PROGRAM +``` +or +``` +am -e $USER/$PROJECT $PROGRAM $KEYWORD +``` +or +``` +appman -e $USER/$PROJECT $PROGRAM +``` +or +``` +appman -e $USER/$PROJECT $PROGRAM $KEYWORD +``` +in this video I'll install AnyDesk as "remote-desktop-client": + +https://github.com/user-attachments/assets/aa546905-38da-48b5-bb10-658426e8372b + +You can give whatever name you want to the apps (as long as they does not overlap with commands already existing on your system, be careful). + +Apps installed this way will enjoy the same benefits as those that can already be installed from the database with the "`-i`" or "`install`" option [mentioned above](#install-applications). + +------------------------------------------------------------------------ + +| [Back to "Guides and tutorials"](#guides-and-tutorials) | [Back to "Main Index"](#main-index) | +| - | - | + +------------------------------------------------------------------------ + __________________________________________________________________________ ### List the installed applications Option `-f` or `files`, it shows the installed apps, the version, the size and the type of application: From a2bdff1c29d62b4a3e43e9b8ae0d2adaeb5fed89 Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 01:57:20 +0200 Subject: [PATCH 08/12] Update APP-MANAGER --- APP-MANAGER | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/APP-MANAGER b/APP-MANAGER index 45c94dfc3..3fd242842 100755 --- a/APP-MANAGER +++ b/APP-MANAGER @@ -1,6 +1,6 @@ #!/usr/bin/env bash -AMVERSION="7.1.1" +AMVERSION="7.2" # Determine main repository and branch AMREPO="https://raw.githubusercontent.com/ivan-hc/AM/main" From b707dd2420b3a0398b45bf21b2c4bebec23f290e Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 02:07:34 +0200 Subject: [PATCH 09/12] Update README.md --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff577c91f..de9c7129b 100644 --- a/README.md +++ b/README.md @@ -423,11 +423,22 @@ See also "[How to update or remove apps manually](#how-to-update-or-remove-apps- `-d {PROGRAM}` - `-d --convert {PROGRAM}` + `-d --convert {PROGRAM}` DESCRIPTION: Download one or more installation scripts to your desktop. With the option "--convert" its converted to a standalone local installer, but AM requires AppMan to be installed to add custom directory settings. ___________________________________________________________________________ + `-e`, `extra` + + SYNOPSIS: + + `-e {USER}/{PROJECT} {PROGRAM}` + + `-e {USER}/{PROJECT} {PROGRAM} {KEYWORD}` + + DESCRIPTION: Install AppImages from github.com, outside the database. This allows you to install, update and manage them all like the others. Where "user/project" can be the whole URL to the github repository, give a name to the program so that it can be used from the command line. Optionally, add an "univoque" keyword if multiple AppImages are listed. + ___________________________________________________________________________ + `-f`, `files` SYNOPSIS: From e16adcba3afe6e618429719086ae8a5fe558380f Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 02:15:19 +0200 Subject: [PATCH 10/12] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index de9c7129b..f2199c3ed 100644 --- a/README.md +++ b/README.md @@ -795,7 +795,7 @@ https://github.com/ivan-hc/AM/assets/88724353/c2e8b654-29d3-4ded-8877-f77ef11d58 __________________________________________________________________________ ### Install AppImages not listed in this database but available in other github repos -From [version 7.2](https://github.com/ivan-hc/AM/releases/tag/7.2) its possible to install AppImages not listed in this database, thanks to the option `-e` or `extra`. +From version 7.2 its possible to install AppImages not listed in this database, thanks to the option `-e` or `extra`. You need to add the URL to the github repo before the name you want to give to the AppImage (for command line usage, for example). @@ -823,6 +823,10 @@ https://github.com/user-attachments/assets/aa546905-38da-48b5-bb10-658426e8372b You can give whatever name you want to the apps (as long as they does not overlap with commands already existing on your system, be careful). +In this other example, I'll install an obsolete version of WINE AppImage, fro ma repo that lists more versions of the same app. The first attempt is withyout a a keyword, so the script picks the first AppImage in the list (for Debian Buster), then in the second attempt I'll use the keyword "arch" to pick the Arch-based AppImage: + +https://github.com/user-attachments/assets/af00a5f2-f3fe-4616-899a-155cb31d2acd + Apps installed this way will enjoy the same benefits as those that can already be installed from the database with the "`-i`" or "`install`" option [mentioned above](#install-applications). ------------------------------------------------------------------------ From 4f8c69f0b097099fd7e9011e955477d6f783febf Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 02:20:13 +0200 Subject: [PATCH 11/12] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f2199c3ed..1a62fd85d 100644 --- a/README.md +++ b/README.md @@ -823,11 +823,15 @@ https://github.com/user-attachments/assets/aa546905-38da-48b5-bb10-658426e8372b You can give whatever name you want to the apps (as long as they does not overlap with commands already existing on your system, be careful). -In this other example, I'll install an obsolete version of WINE AppImage, fro ma repo that lists more versions of the same app. The first attempt is withyout a a keyword, so the script picks the first AppImage in the list (for Debian Buster), then in the second attempt I'll use the keyword "arch" to pick the Arch-based AppImage: +In this other example, I'll install an obsolete version of WINE AppImage, from a repo that lists more versions of the same app: +1. the first attempt is without a keyword, so that the script picks the first AppImage in the list (for Debian Buster) +2. in the second attempt I'll use the keyword "arch" to pick the Arch-based AppImage https://github.com/user-attachments/assets/af00a5f2-f3fe-4616-899a-155cb31d2acd -Apps installed this way will enjoy the same benefits as those that can already be installed from the database with the "`-i`" or "`install`" option [mentioned above](#install-applications). +As you can see, there are all the files needed by any app listed in this database, also if an installation script for them does not exists. + +Apps installed this way will enjoy the same benefits as those that can already be installed from the database with the "`-i`" or "`install`" option [mentioned above](#install-applications), including updates and sandboxing. ------------------------------------------------------------------------ From c5d2b80128645f18d37f8088c77014e3eada8900 Mon Sep 17 00:00:00 2001 From: iVAN <88724353+ivan-hc@users.noreply.github.com> Date: Fri, 12 Jul 2024 02:21:37 +0200 Subject: [PATCH 12/12] Update README.md --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 1a62fd85d..c1f99ccce 100644 --- a/README.md +++ b/README.md @@ -804,17 +804,11 @@ Optionally, you can add a "keyword" if more AppImages are listed in the same rep Usage: ``` am -e $USER/$PROJECT $PROGRAM -``` -or -``` am -e $USER/$PROJECT $PROGRAM $KEYWORD ``` or ``` appman -e $USER/$PROJECT $PROGRAM -``` -or -``` appman -e $USER/$PROJECT $PROGRAM $KEYWORD ``` in this video I'll install AnyDesk as "remote-desktop-client":