diff --git a/developer/bin/find_appcast b/developer/bin/find_appcast index 42b4d6bad5..77e67144d2 100755 --- a/developer/bin/find_appcast +++ b/developer/bin/find_appcast @@ -69,6 +69,18 @@ function find_devmate { verify_appcast 'DevMate' "${url}" } +function find_electron_builder { + local app url + + app="${1}" + + electron_parser_script="$(brew --repo homebrew/cask)/developer/bin/parse_electron_builder_appcast" + + url="$("${electron_parser_script}" "${app}")" + + verify_appcast 'electron-builder' "${url}" +} + # Exit if no argument (or more than one) was given if [[ -z "${1}" ]] || [[ -n "${2}" ]]; then usage @@ -86,3 +98,4 @@ fi find_sparkle "${path_to_app}" find_hockeyapp "${path_to_app}" find_devmate "${path_to_app}" +find_electron_builder "${path_to_app}" diff --git a/developer/bin/parse_electron_builder_appcast b/developer/bin/parse_electron_builder_appcast new file mode 100755 index 0000000000..aa73af0de7 --- /dev/null +++ b/developer/bin/parse_electron_builder_appcast @@ -0,0 +1,42 @@ +#!/usr/bin/env ruby + +require "pathname" +require "yaml" + +def parse(app_path) + appcast_url = Pathname.new "#{app_path}/Contents/Resources/app-update.yml" + + exit 2 unless appcast_url.exist? + + data = YAML.load_file appcast_url + + case data["provider"] + when "github" + owner = data["owner"] + repo = data["repo"] + puts "https://github.com/#{owner}/#{repo}/releases.atom" + when "s3" + bucket = data["bucket"] + channel = data["channel"] + puts "https://#{bucket}.s3.amazon-aws.yml/#{channel}/latest-mac.yml" + end +end + +### +### main +### + +usage = <<~EOS + Usage: parse_electron_builder_appcast + + Given an Application name or a path to an Application, attempt to parse the + included 'app-update.yml' manifest and output the appcast URL. + +EOS + +unless ARGV.length == 1 + puts usage + exit 1 +end + +parse(ARGV[0])