mirror of
				https://github.com/arkenfox/user.js.git
				synced 2025-11-04 07:45:26 +01:00 
			
		
		
		
	v3.0 - improve readIniFile() (#1128)
- grep -c equals grep | wc -l - make output prettier - work with variable instead of temporary file + a few minor changes/cleanup
This commit is contained in:
		
							
								
								
									
										51
									
								
								updater.sh
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								updater.sh
									
									
									
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
## arkenfox user.js updater for macOS and Linux
 | 
			
		||||
 | 
			
		||||
## version: 2.9
 | 
			
		||||
## version: 3.0
 | 
			
		||||
## Author: Pat Johnson (@overdodactyl)
 | 
			
		||||
## Additional contributors: @earthlng, @ema-pe, @claustromaniac
 | 
			
		||||
 | 
			
		||||
@@ -103,7 +103,6 @@ Optional Arguments:
 | 
			
		||||
#     File Handling     #
 | 
			
		||||
#########################
 | 
			
		||||
 | 
			
		||||
# Download files
 | 
			
		||||
download_file () { # expects URL as argument ($1)
 | 
			
		||||
  declare -r tf=$(mktemp)
 | 
			
		||||
 | 
			
		||||
@@ -122,36 +121,33 @@ open_file () { # expects one argument: file_path
 | 
			
		||||
 | 
			
		||||
readIniFile () { # expects one argument: absolute path of profiles.ini
 | 
			
		||||
  declare -r inifile="$1"
 | 
			
		||||
  declare -r tfile=$(mktemp)
 | 
			
		||||
 | 
			
		||||
  if [ $(grep '^\[Profile' "$inifile" | wc -l) == "1" ]; then ### only 1 profile found
 | 
			
		||||
    grep '^\[Profile' -A 4 "$inifile" | grep -v '^\[Profile' > $tfile
 | 
			
		||||
  # tempIni will contain: [ProfileX], Name=, IsRelative= and Path= (and Default= if present) of the only (if) or the selected (else) profile
 | 
			
		||||
  if [ $(grep -c '^\[Profile' "${inifile}") -eq "1" ]; then ### only 1 profile found
 | 
			
		||||
    tempIni="$(grep '^\[Profile' -A 4 "${inifile}")"
 | 
			
		||||
  else
 | 
			
		||||
    grep -E -v '^\[General\]|^StartWithLastProfile=|^IsRelative=' "$inifile"
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo -e "Profiles found:\n––––––––––––––––––––––––––––––"
 | 
			
		||||
    ## cmd-substitution to strip trailing newlines and in quotes to keep internal ones:
 | 
			
		||||
    echo "$(grep --color=never -E 'Default=[^1]|\[Profile[0-9]*\]|Name=|Path=|^$' "${inifile}")"
 | 
			
		||||
    echo '––––––––––––––––––––––––––––––'
 | 
			
		||||
    read -p 'Select the profile number ( 0 for Profile0, 1 for Profile1, etc ) : ' -r
 | 
			
		||||
    echo -e "\n"
 | 
			
		||||
    if [[ $REPLY =~ ^(0|[1-9][0-9]*)$ ]]; then
 | 
			
		||||
      grep '^\[Profile'${REPLY} -A 4 "$inifile" | grep -v '^\[Profile'${REPLY} > $tfile
 | 
			
		||||
      if [[ "$?" != "0" ]]; then
 | 
			
		||||
        echo "Profile${REPLY} does not exist!" && exit 1
 | 
			
		||||
      fi
 | 
			
		||||
      tempIni="$(grep "^\[Profile${REPLY}" -A 4 "${inifile}")" || {
 | 
			
		||||
        echo -e "${RED}Profile${REPLY} does not exist!${NC}" && exit 1
 | 
			
		||||
      }
 | 
			
		||||
    else
 | 
			
		||||
      echo "Invalid selection!" && exit 1
 | 
			
		||||
      echo -e "${RED}Invalid selection!${NC}" && exit 1
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  declare -r profpath=$(grep '^Path=' $tfile)
 | 
			
		||||
  declare -r pathisrel=$(grep '^IsRelative=' $tfile)
 | 
			
		||||
  # extracting 0 or 1 from the "IsRelative=" line
 | 
			
		||||
  declare -r pathisrel=$(sed -n 's/^IsRelative=\([01]\)$/\1/p' <<< "${tempIni}")
 | 
			
		||||
 | 
			
		||||
  rm "$tfile"
 | 
			
		||||
 | 
			
		||||
  # update global variable
 | 
			
		||||
  if [[ ${pathisrel#*=} == "1" ]]; then
 | 
			
		||||
    PROFILE_PATH="$(dirname "$inifile")/${profpath#*=}"
 | 
			
		||||
  else
 | 
			
		||||
    PROFILE_PATH="${profpath#*=}"
 | 
			
		||||
  fi
 | 
			
		||||
  # extracting only the path itself, excluding "Path="
 | 
			
		||||
  PROFILE_PATH=$(sed -n 's/^Path=\(.*\)$/\1/p' <<< "${tempIni}")
 | 
			
		||||
  # update global variable if path is relative
 | 
			
		||||
  [[ ${pathisrel} == "1" ]] && PROFILE_PATH="$(dirname "${inifile}")/${PROFILE_PATH}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
getProfilePath () {
 | 
			
		||||
@@ -161,16 +157,14 @@ getProfilePath () {
 | 
			
		||||
  if [ "$PROFILE_PATH" = false ]; then
 | 
			
		||||
    PROFILE_PATH="$SCRIPT_DIR"
 | 
			
		||||
  elif [ "$PROFILE_PATH" = 'list' ]; then
 | 
			
		||||
    local ini=''
 | 
			
		||||
    if [[ -f "$f1" ]]; then
 | 
			
		||||
      ini="$f1"
 | 
			
		||||
      readIniFile "$f1" # updates PROFILE_PATH or exits on error
 | 
			
		||||
    elif [[ -f "$f2" ]]; then
 | 
			
		||||
      ini="$f2"
 | 
			
		||||
      readIniFile "$f2"
 | 
			
		||||
    else
 | 
			
		||||
      echo -e "${RED}Error: Sorry, -l is not supported for your OS${NC}"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    readIniFile "$ini" # updates PROFILE_PATH or exits on error
 | 
			
		||||
  #else
 | 
			
		||||
    # PROFILE_PATH already set by user with -p
 | 
			
		||||
  fi
 | 
			
		||||
@@ -191,9 +185,7 @@ get_updater_version () {
 | 
			
		||||
#   -d: New version will not be looked for and update will not occur
 | 
			
		||||
#   -u: Check for update, if available, execute without asking
 | 
			
		||||
update_updater () {
 | 
			
		||||
  if [ $UPDATE = 'no' ]; then
 | 
			
		||||
    return 0 # User signified not to check for updates
 | 
			
		||||
  fi
 | 
			
		||||
  [ $UPDATE = 'no' ] && return 0 # User signified not to check for updates
 | 
			
		||||
 | 
			
		||||
  declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/updater.sh')"
 | 
			
		||||
  [ -z "${tmpfile}" ] && echo -e "${RED}Error! Could not download updater.sh${NC}" && return 1 # check if download failed
 | 
			
		||||
@@ -214,7 +206,6 @@ update_updater () {
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#########################
 | 
			
		||||
#    Update user.js     #
 | 
			
		||||
#########################
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user