Skip to content

Commit

Permalink
use github api
Browse files Browse the repository at this point in the history
  • Loading branch information
grahampugh committed Apr 19, 2024
1 parent 3dbd883 commit 6aa80ce
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 33 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ For open issues and known bugs, please see the [Issues](https://github.com/graha

No date

## [34.0]

19.04.2024

### Updates in 34.0

- Added Japanese localization (#496, thanks to @teddi for this contribution).
- Enforce the required version of mist-cli to prevent reported issues of older versions downloading incompatible macOS installers (#500, thanks @cchsadmin).
- Use the GitHub API to obtain swiftDialog and mist-cli download URL (#494, thanks @bartreardon).
- Fix comparison check of this script with latest available version.

## [33.1]

14.03.2024
Expand Down
32 changes: 18 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,28 @@ build:
mkdir -p "$(PKG_SCRIPTS)"

@echo
swiftdialog_version=$$(awk -F '=' '/swiftdialog_version_required=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
swiftdialog_tag=$$(cut -d"-" -f1 <<< "$$swiftdialog_version") ;\
echo "## Downloading swiftDialog v$$swiftdialog_version" ;\
swiftdialog_url="https://github.com/swiftDialog/swiftDialog/releases/download/v$$swiftdialog_tag/dialog-$$swiftdialog_version.pkg" ;\
curl -L "$$swiftdialog_url" -o "$(PKG_SCRIPTS)/dialog.pkg"
swiftdialog_tag=$$(awk -F '=' '/swiftdialog_tag_required=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
echo "## Downloading swiftDialog $$swiftdialog_tag" ;\
swiftdialog_api_url="https://api.github.com/repos/swiftDialog/swiftDialog/releases" ;\
swiftdialog_url=$$(/usr/bin/curl -sL -H "Accept: application/json" "$$swiftdialog_api_url/tags/$$swiftdialog_tag" | awk -F '"' '/browser_download_url/ { print $$4; exit }') ;\
curl -L "$$swiftdialog_url" -o "$(PKG_SCRIPTS)/dialog.pkg" ;\
echo "## Downloaded swiftDialog $$swiftdialog_tag"

@echo
swiftdialog_bigsur_version=$$(awk -F '=' '/swiftdialog_bigsur_version_required=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
swiftdialog_bigsur_tag=$$(cut -d"-" -f1 <<< "$$swiftdialog_bigsur_version") ;\
echo "## Downloading swiftDialog v$$swiftdialog_version" ;\
swiftdialog_bigsur_url="https://github.com/swiftDialog/swiftDialog/releases/download/v$$swiftdialog_bigsur_tag/dialog-$$swiftdialog_bigsur_version.pkg" ;\
curl -L "$$swiftdialog_bigsur_url" -o "$(PKG_SCRIPTS)/dialog-bigsur.pkg"
swiftdialog_bigsur_tag=$$(awk -F '=' '/swiftdialog_bigsur_tag_required=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
echo "## Downloading swiftDialog $$swiftdialog_bigsur_tag" ;\
swiftdialog_api_url="https://api.github.com/repos/swiftDialog/swiftDialog/releases" ;\
swiftdialog_bigsur_url=$$(/usr/bin/curl -sL -H "Accept: application/json" "$$swiftdialog_api_url/tags/$$swiftdialog_bigsur_tag" | awk -F '"' '/browser_download_url/ { print $$4; exit }') ;\
curl -L "$$swiftdialog_bigsur_url" -o "$(PKG_SCRIPTS)/dialog.pkg" ;\
echo "## Downloaded swiftDialog $$swiftdialog_bigsur_tag"

@echo
mist_version=$$(awk -F '=' '/mist_version_required=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
echo "## Downloading mist-cli v$$mist_version" ;\
mist_url="https://github.com/ninxsoft/mist-cli/releases/download/v$$mist_version/mist-cli.$$mist_version.pkg" ;\
curl -L "$$mist_url" -o "$(PKG_SCRIPTS)/mist-cli.pkg"
mist_tag=$$(awk -F '=' '/mist_tag_required=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
echo "## Downloading mist-cli $$mist_tag" ;\
mist_api_url="https://api.github.com/repos/ninxsoft/mist-cli/releases" ;\
mist_url=$$(/usr/bin/curl -sL -H "Accept: application/json" "$$mist_api_url/tags/$$mist_tag" | awk -F '"' '/browser_download_url/ { print $$4; exit }') ;\
curl -L "$$mist_url" -o "$(PKG_SCRIPTS)/mist-cli.pkg" ;\
echo "## Downloaded mist-cli $$mist_tag"

@echo
pkg_version=$$(awk -F '=' '/^version=/ {print $$NF}' $(CURDIR)/erase-install.sh | tr -d '"') ;\
Expand Down
43 changes: 25 additions & 18 deletions erase-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ script_name="erase-install"
pkg_label="com.github.grahampugh.erase-install"

# Version of this script
version="33.1"
version="34.0"

# Directory in which to place the macOS installer. Overridden with --path
installer_directory="/Applications"
Expand All @@ -51,20 +51,17 @@ logdir="/Library/Management/erase-install/log"
# mist tool
mist_bin="/usr/local/bin/mist"

# URL for downloading dialog (with tag version)
# Required mist-cli version
# This ensures a compatible mist version is used if not using the package installer
mist_version_required="2.0"
mist_download_url="https://github.com/ninxsoft/mist-cli/releases/download/v${mist_version_required}/mist-cli.${mist_version_required}.pkg"
mist_tag_required="v2.0"

# URL for downloading swiftDialog (with tag version)
# Required swiftDialog version
# This ensures a compatible swiftDialog version is used if not using the package installer
swiftdialog_version_required="2.4.2-4755"
dialog_download_url="https://github.com/swiftDialog/swiftDialog/releases/download/v${swiftdialog_version_required/-*/}/dialog-${swiftdialog_version_required}.pkg"
swiftdialog_tag_required="v2.4.2"

# URL for downloading swiftDialog on macOS 11 (with tag version)
# Required swiftDialog version for macOS 11
# This ensures a compatible swiftDialog version is used if not using the package installer
swiftdialog_bigsur_version_required="2.2.1-4591"
dialog_bigsur_download_url="https://github.com/swiftDialog/swiftDialog/releases/download/v${swiftdialog_bigsur_version_required/-*/}/dialog-${swiftdialog_bigsur_version_required}.pkg"
swiftdialog_bigsur_tag_required="v2.2.1"

# swiftDialog variables
dialog_app="/Library/Application Support/Dialog/Dialog.app"
Expand Down Expand Up @@ -249,11 +246,11 @@ check_for_mist() {
if [[ -f "$mist_bin" ]]; then
# check mist version because older versions may not obtain a valid installer
mist_version=$("$mist_bin" --version | head -n 1 | cut -d' ' -f1)
if [[ "$mist_version" == "$mist_version_required" ]]; then
writelog "[check_for_mist] mist-cli v$mist_version_required is installed ($mist_bin)"
if [[ v"$mist_version" == "$mist_tag_required" ]]; then
writelog "[check_for_mist] mist-cli $mist_tag_required is installed ($mist_bin)"
mist_is_compatible=1
else
writelog "[check_for_mist] mist-cli v$mist_version is installed ($mist_bin) - does not match required version v"$mist_version_required
writelog "[check_for_mist] mist-cli v$mist_version is installed ($mist_bin) - does not match required version $mist_tag_required"
mist_is_compatible=0
fi
else
Expand All @@ -263,6 +260,11 @@ check_for_mist() {
if [[ $mist_is_compatible -ne 1 ]]; then
if [[ ! $no_curl ]]; then
writelog "[check_for_mist] Downloading mist-cli..."

# obtain the download URL
mist_api_url="https://api.github.com/repos/ninxsoft/mist-cli/releases"
mist_download_url=$(/usr/bin/curl -sL -H "Accept: application/json" "$mist_api_url/tags/$mist_tag_required" | awk -F '"' '/browser_download_url/ { print $4; exit }')

if /usr/bin/curl -L "$mist_download_url" -o "$workdir/mist-cli.pkg" ; then
if installer -pkg "$workdir/mist-cli.pkg" -target / ; then
mist_is_compatible=1
Expand All @@ -273,9 +275,9 @@ check_for_mist() {
fi
# check it did actually get downloaded
if [[ $mist_is_compatible -eq 1 ]]; then
writelog "[check_for_mist] mist-cli v$mist_version_required is installed ($mist_bin)"
writelog "[check_for_mist] mist-cli $mist_tag_required is installed ($mist_bin)"
elif [[ -f "$mist_bin" ]]; then
writelog "[check_for_mist] WARNING! mist-cli v$mist_version is installed ($mist_bin) - does not match required version v"$mist_version_required
writelog "[check_for_mist] WARNING! mist-cli v$mist_version is installed ($mist_bin) - does not match required version $mist_tag_required"
else
writelog "[check_for_mist] ERROR! Could not download mist-cli. Cannot continue."
exit 1
Expand Down Expand Up @@ -311,11 +313,16 @@ check_for_swiftdialog_app() {
if [[ ! $no_curl ]]; then
if ! is-at-least "12" "$system_version"; then
# we need to get the older version of swiftDialog that is compatible with Big Sur
dialog_download_url="$dialog_bigsur_download_url"
swiftdialog_tag_required="$swiftdialog_bigsur_tag_required"
writelog "[check_for_swiftdialog_app] Downloading swiftDialog for macOS $system_version..."
else
writelog "[check_for_swiftdialog_app] Downloading swiftDialog..."
fi

# obtain the download URL
swiftdialog_api_url="https://api.github.com/repos/swiftDialog/swiftDialog/releases"
dialog_download_url=$(/usr/bin/curl -sL -H "Accept: application/json" "$swiftdialog_api_url/tags/$swiftdialog_tag_required" | awk -F '"' '/browser_download_url/ { print $4; exit }')

if /usr/bin/curl -L "$dialog_download_url" -o "$workdir/dialog.pkg" ; then
if installer -pkg "$workdir/dialog.pkg" -target / ; then
dialog_string=$("$dialog_bin" --version)
Expand Down Expand Up @@ -2839,8 +2846,8 @@ writelog "[$script_name] System version: $system_version (Build: $system_build)"
if [[ "$no_curl" != "yes" ]]; then
if is-at-least "13" "$system_version"; then
latest_erase_install_vers=$(/usr/bin/curl https://api.github.com/repos/grahampugh/erase-install/releases/latest 2>/dev/null | plutil -extract name raw -- -)
if ! is-at-least "$version" "$latest_erase_install_vers"; then
writelog "[$script_name] A newer version of this script is available. Visit https://github.com/grahampugh/erase-install/releases/tag/v$latest_erase_install_vers to obtain the latest version."
if ! is-at-least "$latest_erase_install_vers" "$version" ; then
writelog "[$script_name] A newer version of this script is available ($latest_erase_install_vers). Visit https://github.com/grahampugh/erase-install/releases/tag/v$latest_erase_install_vers to obtain the latest version."
fi
fi
fi
Expand Down
2 changes: 1 addition & 1 deletion pkg/erase-install/build-info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@
<key>suppress_bundle_relocation</key>
<true/>
<key>version</key>
<string>33.1</string>
<string>34.0</string>
</dict>
</plist>

0 comments on commit 6aa80ce

Please sign in to comment.