direwolf fixes
This commit is contained in:
@@ -7,6 +7,7 @@ steps=cd src && make && make hamclock-web-1600x960 && mkdir -p $HOME/.local/bin
|
|||||||
|
|
||||||
[openhamclock]
|
[openhamclock]
|
||||||
version=26.1.3
|
version=26.1.3
|
||||||
|
type=npm
|
||||||
git=https://github.com/accius/openhamclock.git
|
git=https://github.com/accius/openhamclock.git
|
||||||
install=$HOME/.local/bin/openhamclock
|
install=$HOME/.local/bin/openhamclock
|
||||||
steps=npm ci| cp .env.example .env| sudo rm -rf $HOME/.local/bin/openhamclock && mkdir -p $HOME/.local/bin/openhamclock && cp -r . $HOME/.local/bin/openhamclock
|
steps=npm ci| cp .env.example .env| sudo rm -rf $HOME/.local/bin/openhamclock && mkdir -p $HOME/.local/bin/openhamclock && cp -r . $HOME/.local/bin/openhamclock
|
||||||
|
|||||||
@@ -11,6 +11,18 @@ VERSION_FILE="$HOME/.local/state/HamPackServer/.installed_versions"
|
|||||||
get_installed_version() {
|
get_installed_version() {
|
||||||
local app="$1"
|
local app="$1"
|
||||||
local gui="$2"
|
local gui="$2"
|
||||||
|
local type="$3"
|
||||||
|
local install_path="$4"
|
||||||
|
|
||||||
|
# For npm apps, read version from package.json in the install directory
|
||||||
|
if [ "$type" = "npm" ] && [ -f "$install_path/package.json" ]; then
|
||||||
|
local ver
|
||||||
|
ver=$(grep -m1 '"version"' "$install_path/package.json" | grep -oP '\d+\.\d+[\.\d]*')
|
||||||
|
if [ -n "$ver" ]; then
|
||||||
|
echo "$ver"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Skip --version check for GUI apps as it would launch them
|
# Skip --version check for GUI apps as it would launch them
|
||||||
if [ "$gui" != "true" ]; then
|
if [ "$gui" != "true" ]; then
|
||||||
@@ -68,15 +80,16 @@ needs_update() {
|
|||||||
local install_path="$2"
|
local install_path="$2"
|
||||||
local latest="$3"
|
local latest="$3"
|
||||||
local gui="$4"
|
local gui="$4"
|
||||||
|
local type="$5"
|
||||||
|
|
||||||
# Not installed at all
|
# Not installed at all
|
||||||
if ! command -v "$app" &> /dev/null && [ ! -f "$install_path" ]; then
|
if ! command -v "$app" &> /dev/null && [ ! -f "$install_path" ] && [ ! -d "$install_path" ]; then
|
||||||
echo " $app is not installed."
|
echo " $app is not installed."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local installed
|
local installed
|
||||||
installed=$(get_installed_version "$app" "$gui")
|
installed=$(get_installed_version "$app" "$gui" "$type" "$install_path")
|
||||||
|
|
||||||
if [ "$installed" = "unknown" ]; then
|
if [ "$installed" = "unknown" ]; then
|
||||||
if ask_user_proceed "$app" "$latest"; then
|
if ask_user_proceed "$app" "$latest"; then
|
||||||
@@ -224,12 +237,13 @@ process_app() {
|
|||||||
local version="$6"
|
local version="$6"
|
||||||
local desktop="$7"
|
local desktop="$7"
|
||||||
local gui="$8"
|
local gui="$8"
|
||||||
|
local type="$9"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== $app ==="
|
echo "=== $app ==="
|
||||||
|
|
||||||
# Check if already installed
|
# Check if already installed
|
||||||
if command -v "$app" &> /dev/null || [ -f "$install_path" ]; then
|
if command -v "$app" &> /dev/null || [ -f "$install_path" ] || [ -d "$install_path" ]; then
|
||||||
if [ -z "$version" ]; then
|
if [ -z "$version" ]; then
|
||||||
echo " $app is already installed, skipping."
|
echo " $app is already installed, skipping."
|
||||||
return
|
return
|
||||||
@@ -243,7 +257,7 @@ process_app() {
|
|||||||
echo " Skipping $app."
|
echo " Skipping $app."
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
elif ! needs_update "$app" "$install_path" "$version" "$gui"; then
|
elif ! needs_update "$app" "$install_path" "$version" "$gui" "$type"; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -264,8 +278,9 @@ process_conf() {
|
|||||||
|
|
||||||
# Collect all app configs into parallel arrays first, so stdin is
|
# Collect all app configs into parallel arrays first, so stdin is
|
||||||
# free for interactive prompts when process_app runs afterwards
|
# free for interactive prompts when process_app runs afterwards
|
||||||
local -a all_apps all_git all_wget all_install all_steps all_versions all_desktops all_guis
|
local -a all_apps all_git all_wget all_install all_steps all_versions all_desktops all_guis all_types
|
||||||
local idx=0
|
local idx=0
|
||||||
|
local type=""
|
||||||
|
|
||||||
while IFS= read -r line || [ -n "$line" ]; do
|
while IFS= read -r line || [ -n "$line" ]; do
|
||||||
[[ -z "$line" || "$line" == \#* ]] && continue
|
[[ -z "$line" || "$line" == \#* ]] && continue
|
||||||
@@ -275,10 +290,11 @@ process_conf() {
|
|||||||
all_apps[$idx]="$app"; all_git[$idx]="$git_url"; all_wget[$idx]="$wget_url"
|
all_apps[$idx]="$app"; all_git[$idx]="$git_url"; all_wget[$idx]="$wget_url"
|
||||||
all_install[$idx]="$install_path"; all_steps[$idx]="$steps"
|
all_install[$idx]="$install_path"; all_steps[$idx]="$steps"
|
||||||
all_versions[$idx]="$version"; all_desktops[$idx]="$desktop"; all_guis[$idx]="$gui"
|
all_versions[$idx]="$version"; all_desktops[$idx]="$desktop"; all_guis[$idx]="$gui"
|
||||||
|
all_types[$idx]="$type"
|
||||||
idx=$((idx + 1))
|
idx=$((idx + 1))
|
||||||
fi
|
fi
|
||||||
app="${BASH_REMATCH[1]}"
|
app="${BASH_REMATCH[1]}"
|
||||||
git_url="" wget_url="" install_path="" steps="" version="" desktop="" gui=""
|
git_url="" wget_url="" install_path="" steps="" version="" desktop="" gui="" type=""
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -300,6 +316,7 @@ process_conf() {
|
|||||||
version) version="$value" ;;
|
version) version="$value" ;;
|
||||||
desktop) desktop="$value" ;;
|
desktop) desktop="$value" ;;
|
||||||
gui) gui="$value" ;;
|
gui) gui="$value" ;;
|
||||||
|
type) type="$value" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
done < "$CONF_FILE"
|
done < "$CONF_FILE"
|
||||||
@@ -309,13 +326,15 @@ process_conf() {
|
|||||||
all_apps[$idx]="$app"; all_git[$idx]="$git_url"; all_wget[$idx]="$wget_url"
|
all_apps[$idx]="$app"; all_git[$idx]="$git_url"; all_wget[$idx]="$wget_url"
|
||||||
all_install[$idx]="$install_path"; all_steps[$idx]="$steps"
|
all_install[$idx]="$install_path"; all_steps[$idx]="$steps"
|
||||||
all_versions[$idx]="$version"; all_desktops[$idx]="$desktop"; all_guis[$idx]="$gui"
|
all_versions[$idx]="$version"; all_desktops[$idx]="$desktop"; all_guis[$idx]="$gui"
|
||||||
((idx++))
|
all_types[$idx]="$type"
|
||||||
|
idx=$((idx + 1))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Now process each app — stdin is the terminal, so read -rp works
|
# Now process each app — stdin is the terminal, so read -rp works
|
||||||
for ((i=0; i<idx; i++)); do
|
for ((i=0; i<idx; i++)); do
|
||||||
process_app "${all_apps[$i]}" "${all_git[$i]}" "${all_wget[$i]}" "${all_install[$i]}" \
|
process_app "${all_apps[$i]}" "${all_git[$i]}" "${all_wget[$i]}" "${all_install[$i]}" \
|
||||||
"${all_steps[$i]}" "${all_versions[$i]}" "${all_desktops[$i]}" "${all_guis[$i]}"
|
"${all_steps[$i]}" "${all_versions[$i]}" "${all_desktops[$i]}" "${all_guis[$i]}" \
|
||||||
|
"${all_types[$i]}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,6 +345,7 @@ if [ ! -f "$CONF_FILE" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
mkdir -p "$TMP_DIR"
|
mkdir -p "$TMP_DIR"
|
||||||
mkdir -p "$HOME/.local/state/HamPackServer"
|
mkdir -p "$HOME/.local/state/HamPackServer"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user