diff --git a/developer/bin/cask_switch_https b/developer/bin/cask_switch_https deleted file mode 100755 index ba5f8ab3af..0000000000 --- a/developer/bin/cask_switch_https +++ /dev/null @@ -1,189 +0,0 @@ -#!/bin/bash - -set -o pipefail - -readonly program="$(basename "${0}")" -skip_curl_verify=0 -verbose=0 - -syntax_error() { - echo "${program}: ${1}" >&2 - echo "Try \`${program} --help\` for more information." >&2 - exit 1 -} - -depends_on() { - formula="${1}" - [[ "$#" -eq 2 ]] && cmd="${2}" || cmd=$(basename "${formula}") - - if [[ ! $(which "${cmd}") ]]; then - echo -e "$(tput setaf 1) - This script depends on '${cmd}'. - If you have [Homebrew](http://brew.sh), you can install it with 'brew install ${formula}'. - $(tput sgr0)" | sed -E 's/ {6}//' >&2 - exit 1 - fi -} - -depends_on 'tsparber/tiny-scripts/curl-check-url' - -usage() { - echo " - This script changes the url, appcast and homepage stanzas to https - - After changing to https a HTTP GET request is performed to verify if the url is reachable. - If the https url is not reachable it is reverted to the previous version. - - Known Issues: If multiple url/appcast stanzas are present, all urls are changed but only - those for the current os are verified. - - If no cask name is given the current work directory is scanned with the given options. - - usage: $program [options] [] - options: - -s, --skip-verify Skip checking for a HTTP 200 Status Code using curl. - --verbose Show more verbose output. - -h, --help Show this help. - - Based on: https://github.com/vitorgalvao/tiny-scripts/blob/master/cask-repair - " | sed -E 's/^ {4}//' -} - -# available flags -while [[ "${1}" ]]; do - case "${1}" in - -h | --help) - usage - exit 0 - ;; - -s | --skip-verify) - skip_curl_verify=1 - ;; - --verbose) - verbose=1 - ;; - -*) - syntax_error "unrecognized option: ${1}" - ;; - *) - break - ;; - esac - shift -done - -# define function to check if given URL exists and is reachable using HTTPS -check_url_for_https() { - cask_url="${1}" - verbose_option='' - - [[ "${verbose}" -ne 0 ]] && verbose_option="-v " - - # check if the URL sends a 200 HTTP code, else abort - curl-check-url "${verbose_option}" "${cask_url}" > /dev/null - exit_code="$?" - - if [[ "${exit_code}" -ne 0 ]]; then - echo "curl returned ${exit_code}: FAIL for ${cask_url}" - return 1 - fi - - return 0 -} - -# define function to modify part of stanza -replace_protocol_of_stanza() { - cask_file="${1}" - stanza="${2}" - old_value="${3}" - new_value="${4}" - - sed "s|${stanza} \(['\"]\)${old_value}://|${stanza} \1${new_value}://|g" "${cask_file}" > tmpfile - mv tmpfile "${cask_file}" -} - -# define abort function, that will reset the state -finish() { - # show message - if [[ "${1}" == 'abort' ]]; then - echo -e "$(tput setaf 1)${2}$(tput sgr0)\n" - [[ ! -z "${cask_file}" ]] && git checkout -- "${cask_file}" - exit 1 - elif [[ "${1}" == 'success' ]]; then - echo -e "$(tput setaf 2)Updated: ${cask_name} is now using HTTPS$(tput sgr0)\n" - exit 0 - fi -} - -# cleanup if aborted with ⌃C -trap 'finish abort "You aborted"' SIGINT - -# exit if not inside a 'homebrew-*/Casks' directory -casks_dir=$(pwd | perl -ne 'print m{homebrew-[^/]+/Casks}') -if [[ -z "${casks_dir}" ]]; then - echo -e "\n$(tput setaf 1)You need to be inside a '/homebrew-*/Casks' directory$(tput sgr0)\n" - exit 1 -fi - -# exit if no argument was given: Run in current directory -if [[ -z "${1}" ]]; then - options="" - [[ ${skip_curl_verify} -ne 0 ]] && options+=" --skip-verify" - [[ ${verbose} -ne 0 ]] && options+=" --verbose" - - for file in *.rb; - do - "${0}" "${options}" "${file}" - done - - exit 0 -fi - -# clean the cask's name, and check if it is valid -cask_name="${1%.rb}" # remove '.rb' extension, if present -cask_file="./${cask_name}.rb" -[[ ! -f "${cask_file}" ]] && finish abort 'There is no such cask' - -# initial tasks -git checkout -- "${cask_file}" - -# check if a http url exists -cask_contains_http=$(grep "['\"]http://" "${cask_file}") -if [[ -z ${cask_contains_http} ]]; then - echo -e "Skipped ${cask_name} no http found\n" - exit 0 -fi - -updated_stanzas=0 -for stanza in url appcast homepage; do - # Check if the stanza exists - stanza_contained=$(grep "${stanza} ['\"]" "${cask_file}") - [[ -z ${stanza_contained} ]] && continue - - stanza_contains_https=$(grep "${stanza} ['\"]http://" "${cask_file}") - if [[ -z ${stanza_contains_https} ]]; then -# echo "Skipped stanza ${stanza} in ${cask_name} no http url found" - continue - fi - - replace_protocol_of_stanza "${cask_file}" "${stanza}" "http" "https" - - if [[ ${skip_curl_verify} -eq 0 ]]; then - check_url_for_https "$(brew cask _stanza "${stanza}" "${cask_name}")" - else - true - fi - - if [[ $? -ne 0 ]]; then - echo "Restored original value for stanza ${stanza} as curl check failed" - replace_protocol_of_stanza "${cask_file}" "${stanza}" "https" "http" - else - updated_stanzas=$((updated_stanzas+1)) - fi -done - -if [[ ${updated_stanzas} -ne 0 ]]; then - finish success -else - finish abort "no updated stanzas after verify for ${cask_name}" -fi