From 246a9645e0a2abc1b8d269336fc5eef96dd0cf3e Mon Sep 17 00:00:00 2001 From: mtongnz Date: Wed, 3 Jan 2024 16:04:40 +1300 Subject: [PATCH 1/3] Update unRaid's built in image version database to updates show correctly in UI --- source/compose.manager/php/DockerUpdate.php | 47 +++++++++++++++++++++ source/compose.manager/scripts/compose.sh | 5 +++ 2 files changed, 52 insertions(+) create mode 100644 source/compose.manager/php/DockerUpdate.php diff --git a/source/compose.manager/php/DockerUpdate.php b/source/compose.manager/php/DockerUpdate.php new file mode 100644 index 0000000..9549a0a --- /dev/null +++ b/source/compose.manager/php/DockerUpdate.php @@ -0,0 +1,47 @@ + +reloadUpdateStatus($image); +} + +echo "unRaid image versions updated\n"; +?> \ No newline at end of file diff --git a/source/compose.manager/scripts/compose.sh b/source/compose.manager/scripts/compose.sh index 8219d1e..c6cca76 100755 --- a/source/compose.manager/scripts/compose.sh +++ b/source/compose.manager/scripts/compose.sh @@ -1,6 +1,8 @@ #!/bin/bash export HOME=/root +phpScriptDir=/usr/local/emhttp/plugins/compose.manager/php + SHORT=e:,c:,f:,p:,d:,o:,g: LONG=env,command:,file:,project_name:,project_dir:,override:,profile:,debug,recreate OPTS=$(getopt -a -n compose --options $SHORT --longoptions $LONG -- "$@") @@ -132,6 +134,9 @@ case $command in fi eval docker rmi ${images[*]} fi + + # Update unRaid's local/remote image versions database so GUI shows correct info about updates + docker compose -p "$name" ps --format "{{.Image}}" | php $phpScriptDir/DockerUpdate.php 2>&1 ;; stop) From b4b7c5e35aa9eeb15ce79d24f57f1c2549063fb8 Mon Sep 17 00:00:00 2001 From: mtongnz Date: Mon, 8 Jan 2024 15:14:24 +1300 Subject: [PATCH 2/3] Use existing method to update local version. Add color to output. Indictate update status --- source/compose.manager/php/DockerUpdate.php | 39 ++++++++++++++------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/source/compose.manager/php/DockerUpdate.php b/source/compose.manager/php/DockerUpdate.php index 9549a0a..5b225c5 100644 --- a/source/compose.manager/php/DockerUpdate.php +++ b/source/compose.manager/php/DockerUpdate.php @@ -1,5 +1,5 @@ "\033[32m", + 'yellow' => "\033[33m", + 'red' => "\033[31m", + 'bold' => "\033[1m", + 'default' => "\033[0m", +]); + $images = array(); // Take stdin from compose.sh and put into images array @@ -28,20 +36,27 @@ $images = array_unique($images); -echo "\nUpdating unRaid's image version details for " . count($images) . " image(s):\n"; +echo "\nChecking for updates & updating unRaid's image version details for " . SHELL_FORMAT['bold'] . count($images) . " image(s):\n" . SHELL_FORMAT['default']; $DockerUpdate = new DockerUpdate(); -foreach( $images as $image ) { - echo " - updating " . $image . "\n"; +try { + foreach( $images as $image ) { + echo " - {$image}..."; - // Delete current info to force an update - $updateStatus = DockerUtil::loadJSON($dockerManPaths['update-status']); - $updateStatus[$image]['local'] = null; - DockerUtil::saveJSON($dockerManPaths['update-status'], $updateStatus); + // Update the local image version info + $localVer = $DockerUpdate->inspectLocalVersion($image); + $DockerUpdate->setUpdateStatus($image, $localVer); - // Update the version info - $DockerUpdate->reloadUpdateStatus($image); -} + // Update the remote version info + $DockerUpdate->reloadUpdateStatus($image); -echo "unRaid image versions updated\n"; + // Get current update status - true=up-to-date false=update available null=data unavailable + $updateStatus = $DockerUpdate->getUpdateStatus($image); + echo ( $updateStatus==true ? SHELL_FORMAT['green']." up to date" : ( $updateStatus===null ? SHELL_FORMAT['red']." failed to get update status" : SHELL_FORMAT['yellow']." update available" ) ) . "\n" . SHELL_FORMAT['default']; + } + echo "\nunRaid image versions updated\n"; + +} catch (Exception $err) { + echo SHELL_FORMAT['red']."\nUpdating unRaid's image versions failed".SHELL_FORMAT['default']."\nError: ". $err->getMessage() ."\n"; +} ?> \ No newline at end of file From 74504a7dc2832b74888687128f1da5c390bf215c Mon Sep 17 00:00:00 2001 From: mtongnz Date: Sat, 10 Feb 2024 19:59:29 +1300 Subject: [PATCH 3/3] add: "check for updates" button to GUI on per project basis --- .../compose.manager/php/compose_manager_main.php | 14 ++++++++++++++ source/compose.manager/php/compose_util.php | 3 +++ source/compose.manager/scripts/compose.sh | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/source/compose.manager/php/compose_manager_main.php b/source/compose.manager/php/compose_manager_main.php index 8d07a17..7870568 100644 --- a/source/compose.manager/php/compose_manager_main.php +++ b/source/compose.manager/php/compose_manager_main.php @@ -205,6 +205,7 @@ functionBefore: function(instance,helper) { \ \ \ + \ "); } }); @@ -754,6 +755,19 @@ function ComposeLogs(myID) { } }) } + +function ComposeCheckUpdates(myID) { + var height = 800; + var width = 1200; + $("#"+myID).tooltipster("close"); + var script = $("#"+myID).attr("data-scriptname"); + var path = compose_root + "/" + script; + $.post(compURL,{action:'composeCheckUpdates',path:path},function(data) { + if (data) { + openBox(data,"Check for Available Updates to Stack "+basename(path),height,width,true); + } + }) +} diff --git a/source/compose.manager/php/compose_util.php b/source/compose.manager/php/compose_util.php index 84a87c5..4dcf1e7 100644 --- a/source/compose.manager/php/compose_util.php +++ b/source/compose.manager/php/compose_util.php @@ -132,5 +132,8 @@ function echoComposeCommand($action) case 'composeLogs': echoComposeCommand('logs'); break; + case 'composeCheckUpdates': + echoComposeCommand('checkUpdates'); + break; } ?> \ No newline at end of file diff --git a/source/compose.manager/scripts/compose.sh b/source/compose.manager/scripts/compose.sh index c6cca76..db0f2ef 100755 --- a/source/compose.manager/scripts/compose.sh +++ b/source/compose.manager/scripts/compose.sh @@ -160,6 +160,11 @@ case $command in eval docker compose $envFile $files $options logs -f 2>&1 ;; + checkUpdates) + # Update unRaid's local/remote image versions database so GUI shows correct info about updates + docker compose -p "$name" ps --format "{{.Image}}" | php $phpScriptDir/DockerUpdate.php 2>&1 + ;; + *) echo "unknown command" echo $command