123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- #!/usr/bin/env bash
- source "$rvm_scripts_path/functions/osx-ssl-certs"
- source "$rvm_scripts_path/functions/osx-ssl-certs-curl"
- __rvm_osx_ssl_certs_run_select_rubies()
- {
- case "$2" in
- (all)
- __rvm_read_lines __rubies <(
- __rvm_cd "$rvm_rubies_path"
- __rvm_find . -maxdepth 1 -mindepth 1 -type d 2>/dev/null | cut -c 3-
- )
- __rubies+=(curl)
- ;;
- (*,*)
- __rvm_custom_separated_array __rubies , "$2"
- ;;
- ("")
- __rubies=( "${GEM_HOME##*/}" )
- ;;
- (*)
- __rubies=( "$2" )
- ;;
- esac
- rvm_log "Selected SSL certs for: $__rubies"
- }
- __rvm_osx_ssl_certs_run_filter_and_run()
- {
- \typeset cert_file
- for __ruby in "${__rubies[@]}"
- do
- if
- [[ "${__ruby}" == "curl" ]]
- then
- rvm_debug "Getting SSL certs path for ${__ruby}"
- __path=$(__rvm_osx_ssl_certs_curl_cert_find_path)
- [[ -z $__path || " ${__paths[*]} " == *" ${__path} "* ]] || __paths+=( "${__path}" )
- elif
- [[ -f "${__ruby}" && -x "${__ruby}" ]]
- then
- rvm_debug "Getting SSL certs for ${__ruby}"
- __rvm_osx_ssl_certs_file_from_openssl "${__ruby}" || return $?
- __path="$cert_file"
- [[ " ${__paths[*]} " == *" ${__path} "* ]] || __paths+=( "${__path}" )
- elif
- [[ -f "${__ruby}" ]] &&
- __rvm_grep -- "-----BEGIN CERTIFICATE-----" "${__ruby}" 1>/dev/null 2>&1
- then
- rvm_debug "SSL certs file for ${__ruby}"
- [[ " ${__paths[*]} " == *" ${__ruby} "* ]] || __paths+=( "${__ruby}" )
- elif
- [[ -d "${__ruby}" ]]
- then
- rvm_debug "SSL certs path for ${__ruby}"
- [[ " ${__paths[*]} " == *" ${__ruby} "* ]] || __paths+=( "${__ruby}" )
- else
- rvm_debug "Getting ruby certs path for ${__ruby}"
- __path="$( __rvm_with "${__ruby}" "__rvm_osx_ssl_certs_file_for_ruby" )"
- [[ " ${__paths[*]} " == *" ${__path} "* ]] || __paths+=( "${__path}" )
- fi
- done
- for __path in "${__paths[@]}"
- do
- rvm_debug "Updating SSL certs ${__path}"
- "$1" "${__path}"
- done
- }
- __rvm_osx_ssl_certs_run()
- {
- \typeset __ruby __path
- \typeset -a __rubies __paths
- __rubies=()
- __paths=()
- __rvm_osx_ssl_certs_run_select_rubies "$@"
- __rvm_osx_ssl_certs_run_filter_and_run "$@"
- }
- __rvm_osx_ssl_certs_status()
- {
- __rvm_osx_ssl_certs_run __rvm_osx_ssl_certs_status_for_path "$1"
- }
- __rvm_osx_ssl_certs_update()
- {
- __rvm_osx_ssl_certs_run __rvm_osx_ssl_certs_update_for_path "$1"
- }
- __rvm_osx_ssl_certs_cron_status()
- {
- if __rvm_cron_find "$RVM_OSX_SSL_UPDATER"
- then rvm_log "Automatic certs updating installed."
- else rvm_warn "Automatic certs updating not installed."
- fi
- }
- __rvm_osx_ssl_certs_cron_install()
- {
- if
- __rvm_cron_find "$RVM_OSX_SSL_UPDATER"
- then
- __rvm_cron_uninstall "$RVM_OSX_SSL_UPDATER" ||
- {
- \typeset result=$?
- rvm_error "Automatic certs updating failed uninstalling."
- return $result
- }
- fi
- if
- __rvm_cron_install "$RVM_OSX_SSL_UPDATER"
- then
- rvm_log "Automatic certs updating installed."
- else
- \typeset result=$?
- rvm_error "Automatic certs updating failed installing."
- return $result
- fi
- }
- __rvm_osx_ssl_certs_cron_uninstall()
- {
- if
- __rvm_cron_find "$RVM_OSX_SSL_UPDATER"
- then
- if
- __rvm_cron_uninstall "$RVM_OSX_SSL_UPDATER"
- then
- rvm_log "Automatic certs updating uninstalled."
- else
- \typeset result=$?
- rvm_error "Automatic certs updating failed uninstalling."
- return $result
- fi
- else
- rvm_log "Automatic certs updating already uninstalled."
- fi
- }
- __rvm_osx_ssl_certs_cron()
- {
- \typeset cron_action="${1:-status}"
- shift 1
- case "${cron_action}" in
- (status|install|uninstall)
- __rvm_osx_ssl_certs_cron_${cron_action}
- ;;
- (help)
- rvm_help osx-ssl-certs cron "$@"
- ;;
- (*)
- rvm_error_help "Unknown subcommand '$*' for osx-ssl-certs cron" osx-ssl-certs cron "$@"
- return 1
- ;;
- esac
- }
- __rvm_osx_ssl_certs()
- {
- \typeset action="${1:-status}"
- shift 1
- case "${action}" in
- (status|update|cron)
- if
- [[ "${_system_name}" == "OSX" ]]
- then
- __rvm_osx_ssl_certs_${action} "$@"
- else
- rvm_error "'rvm osx-ssl-certs' is intended only for OSX systems, it is not required on ${_system_name}."
- return 1
- fi
- ;;
- (help)
- rvm_help osx-ssl-certs "$@"
- ;;
- (*)
- rvm_error_help "Unknown subcommand '$*' for osx-ssl-certs" osx-ssl-certs "$@"
- return 1
- ;;
- esac
- }
- __rvm_osx_ssl_certs "${args[@]}"
|