123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #!/usr/bin/env bash
- __rvmrc_warning()
- {
- \typeset __rvmrc_warning_path __rvmrc_warning_file
- __rvmrc_warning_path="$rvm_user_path/rvmrc_ignored"
- case "${1:-help}" in
- (list)
- __rvmrc_warning_$1 "${2:-}" || return $?
- ;;
- (check|check_quiet|ignore|reset)
- __rvmrc_full_path_to_file "${2:-}" &&
- __rvmrc_warning_$1 "${__rvmrc_warning_file:-${2:-}}" ||
- return $?
- ;;
- (help)
- rvm_help rvmrc warning
- ;;
- (*)
- rvm_error_help "Unknown subcommand '$1'" rvmrc warning
- return 1
- ;;
- esac
- }
- __rvmrc_full_path_to_file()
- {
- if
- [[ "$1" == "all.rvmrcs" || "$1" == "allGemfiles" ]]
- then
- # extra case when managing all
- __rvmrc_warning_file="$1"
- elif
- [[ -d "$1" && -s "$1/.rvmrc" ]]
- then
- # read full path and append .rvmrc
- __rvmrc_warning_file="$( __rvm_cd "$1" >/dev/null 2>&1; pwd )/.rvmrc"
- elif
- [[ -d "$1" && -s "$1/Gemfile" ]]
- then
- # read full path and append Gemfile
- __rvmrc_warning_file="$( __rvm_cd "$1" >/dev/null 2>&1; pwd )/Gemfile"
- elif
- [[ -f "$1" || "$1" == *".rvmrc" || "$1" == *"Gemfile" ]]
- then
- # read dir from file name
- __rvmrc_warning_file="$( dirname "$1" )"
- # default to current dir if not given in file name
- : __rvmrc_warning_file:${__rvmrc_warning_file:=$PWD}
- # build full path to file
- __rvmrc_warning_file="${__rvmrc_warning_file}/${1##*/}"
- else
- rvm_warn "Do not know how to handle '$1', please report: https://github.com/rvm/rvm/issues ~ __rvmrc_full_path_to_file"
- return 1
- fi
- }
- __rvmrc_warning_list()
- {
- rvm_log "# List of project files that ignore warnings:"
- if [[ -s "$__rvmrc_warning_path" ]]
- then \command \cat "$__rvmrc_warning_path"
- fi
- }
- __rvmrc_warning_check()
- {
- if __rvmrc_warning_check_quiet "$1"
- then rvm_log "path '$1' is ignored."
- else
- \typeset ret=$?
- rvm_log "path '$1' is not ignored."
- return $ret
- fi
- }
- __rvmrc_warning_check_quiet()
- {
- [[ -f "$__rvmrc_warning_path" ]] || return $?
- \typeset __rvmrc_type
- case "$1" in
- (all.rvmrcs|allGemfiles) true ;;
- (*)
- # convert to all<file>s
- __rvmrc_type="^all${1##*/}s"
- if __rvm_grep "${__rvmrc_type}$" "$__rvmrc_warning_path" >/dev/null
- then return 0
- fi
- ;;
- esac
- __rvm_grep "^$1$" "$__rvmrc_warning_path" >/dev/null || return $?
- }
- __rvmrc_warning_ignore()
- {
- __rvmrc_warning_check_quiet "$1" ||
- case "$1" in
- (all.rvmrcs|allGemfiles)
- echo "$1" >> "$__rvmrc_warning_path"
- ;;
- (*)
- echo "$1" >> "$__rvmrc_warning_path"
- ;;
- esac
- }
- __rvmrc_warning_reset()
- {
- \typeset __rvmrc_type
- case "${1:-}" in
- (all.rvmrcs|allGemfiles)
- if
- __rvmrc_warning_check_quiet "$1"
- then
- __rvm_sed_i "$__rvmrc_warning_path" -e "\#^${1}\$# d" -e '/^$/ d'
- __rvmrc_type="${1#all}"
- __rvmrc_type="${__rvmrc_type%s}"
- __rvm_sed_i "$__rvmrc_warning_path" -e "\#/${__rvmrc_type}\$# d" -e '\#^$# d'
- else
- rvm_debug "Already removed warning ignore from '$1'."
- fi
- ;;
- (*)
- if __rvmrc_warning_check_quiet "$1"
- then __rvm_sed_i "$__rvmrc_warning_path" -e "\#^${1}\$# d" -e '\#^$# d'
- else rvm_debug "Already removed warning ignore from '$1'."
- fi
- ;;
- esac
- }
- __rvmrc_warning_display_for_rvmrc()
- {
- \typeset __rvmrc_warning_path __rvmrc_warning_file
- __rvmrc_warning_path="$rvm_user_path/rvmrc_ignored"
- if
- [[ -t 2 ]] &&
- __rvmrc_full_path_to_file "${1:-}" &&
- ! __rvmrc_warning_check_quiet "${__rvmrc_warning_file:-${2:-}}"
- then
- rvm_warn "You are using '.rvmrc', it requires trusting, it is slower and it is not compatible with other ruby managers,
- you can switch to '.ruby-version' using 'rvm rvmrc to ruby-version'
- or ignore this warning with 'rvm rvmrc warning ignore $1',
- '.rvmrc' will continue to be the default project file in RVM 1 and RVM 2,
- to ignore the warning for all files run 'rvm rvmrc warning ignore all.rvmrcs'.
- "
- fi
- }
- __rvmrc_warning_display_for_Gemfile()
- {
- \typeset __rvmrc_warning_path __rvmrc_warning_file
- __rvmrc_warning_path="$rvm_user_path/rvmrc_ignored"
- if
- [[ -t 2 ]] &&
- __rvmrc_full_path_to_file "${1:-}" &&
- ! __rvmrc_warning_check_quiet "${__rvmrc_warning_file:-${2:-}}"
- then
- rvm_warn "RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,
- you can ignore these warnings with 'rvm rvmrc warning ignore $1'.
- To ignore the warning for all files run 'rvm rvmrc warning ignore allGemfiles'.
- "
- fi
- }
|