Minor cleanup on var scopes in functions. Add support for prot selection. Signed-off-by: Ron Stone <ronald.stone@windriver.com> Change-Id: I9763a6d50631d357f7de11668b1f02d5cab898b1
		
			
				
	
	
		
			155 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Fetch arbitrary files from a remote location for processing/
 | 
						|
# inclusion in local build.
 | 
						|
 | 
						|
declare -A stx_repo
 | 
						|
 | 
						|
message () { echo -e "$@" 1>&2; }
 | 
						|
 | 
						|
usage_error () {
 | 
						|
   message "\nUsage: $0 -c config-file -o <file|stdout> [-f -b]
 | 
						|
   -c <config-file> contains fetch and save locations for files
 | 
						|
   -o sets the output path to the save locations in <config-file> or to STDOUT
 | 
						|
   -f optionally forces existing output files to be overwritten
 | 
						|
   -b skips branch lookup. Use this if downloading from a non-git URL\n"
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
check_util_deps () {
 | 
						|
  for dep in $@
 | 
						|
  do
 | 
						|
    if ! hash $dep 2>/dev/null; then
 | 
						|
      message >&2 "... $dep dependency not met. Please install."
 | 
						|
      exit 1
 | 
						|
    fi
 | 
						|
  done
 | 
						|
}
 | 
						|
 | 
						|
check_file_deps () {
 | 
						|
  for filereq in $@
 | 
						|
  do
 | 
						|
    if [ ! -f "${filereq}" ] && [ ! -L "${filereq}" ]; then message "${filereq}  not found. Quiting."; exit 1; fi
 | 
						|
  done
 | 
						|
}
 | 
						|
 | 
						|
load_configs () { 
 | 
						|
  CONTEXT_DIR="${BASH_SOURCE%/*}"
 | 
						|
  if [[ ! -d "$CONTEXT_DIR" ]]; then CONTEXT_DIR="$PWD"; fi
 | 
						|
  . "$CONTEXT_DIR/$config_file"
 | 
						|
  message "Loaded $CONTEXT_DIR/$config_file"
 | 
						|
}
 | 
						|
 | 
						|
get_remote () {
 | 
						|
 | 
						|
  if [[ $no_branch = "t" ]]; then message "Branch ignored"; return; fi
 | 
						|
 | 
						|
  local _regex_br="^defaultbranch\=(.*)\s*$"
 | 
						|
  local _remote=$(grep defaultbranch $branch_file)
 | 
						|
 | 
						|
  if [[ "${_remote}" =~ $_regex_br ]]
 | 
						|
  then
 | 
						|
     remote="${BASH_REMATCH[1]}"
 | 
						|
  else
 | 
						|
     message "Can't find remote branch"; exit 1
 | 
						|
  fi
 | 
						|
 | 
						|
  for b in "${!stx_repo[@]}"
 | 
						|
  do
 | 
						|
    if [[ ${remote} == ${b} ]]
 | 
						|
    then
 | 
						|
      remote="${stx_repo[$b]}"
 | 
						|
      break
 | 
						|
    fi
 | 
						|
  done
 | 
						|
 | 
						|
  remote="$remote/"
 | 
						|
  message "Remote is: $remote"
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
fetch_files () {
 | 
						|
 | 
						|
  local _f
 | 
						|
 | 
						|
  for _f in "${!remote_files[@]}"; do
 | 
						|
 | 
						|
    local _outfile
 | 
						|
 | 
						|
    case $out_method in
 | 
						|
 | 
						|
       "file")
 | 
						|
         _outfile="$common_target${remote_files[$_f]}"
 | 
						|
         if [ ! -d $(dirname $_outfile) ]; then mkdir -p `dirname $_outfile`; fi
 | 
						|
         ;;
 | 
						|
       "stdout") 
 | 
						|
         _outfile="-"
 | 
						|
         ;;
 | 
						|
       *)
 | 
						|
         message "Should never get here!"; exit 1;
 | 
						|
         ;;
 | 
						|
 | 
						|
    esac
 | 
						|
 | 
						|
    if [ -f $_outfile ] && [ ! "$force" = "t" ] && [ "$out_method" = "file" ]; then 
 | 
						|
       message "$_outfile already exists, use \"-f\" to override. Quiting"
 | 
						|
       usage_error
 | 
						|
       exit 1
 | 
						|
    fi
 | 
						|
 | 
						|
    wget $addtional_flags -q -O $_outfile $prot://$remote_repo/$remote$_f
 | 
						|
 | 
						|
    if [ $? -ne 0 ]; then 
 | 
						|
       if [ ! -s $_outfile ]; then rm -f $_outfile; fi
 | 
						|
       message "Could not download ${remote_files[$_f]}. Quiting"
 | 
						|
       exit 1
 | 
						|
    fi
 | 
						|
 | 
						|
  done
 | 
						|
}
 | 
						|
 | 
						|
while getopts "c:o:fb" flag
 | 
						|
do
 | 
						|
    case "${flag}" in
 | 
						|
 | 
						|
      c)
 | 
						|
        config_file=$OPTARG
 | 
						|
        ;;
 | 
						|
 | 
						|
      o) 
 | 
						|
        case $OPTARG in
 | 
						|
 | 
						|
          file) out_method="file" ;;
 | 
						|
          stdout) out_method="stdout" ;;
 | 
						|
          *) usage_error ;;
 | 
						|
 | 
						|
        esac
 | 
						|
        ;;
 | 
						|
 | 
						|
      f) force="t" ;;
 | 
						|
 | 
						|
      b) no_branch="t" ;;
 | 
						|
 | 
						|
      *) message "Unknown arg \"$flag\""; usage_error ;;
 | 
						|
 | 
						|
    esac
 | 
						|
done
 | 
						|
 | 
						|
shift "$(( OPTIND - 1 ))"
 | 
						|
 | 
						|
if [ -z "$config_file" ] || [ -z "$out_method" ]
 | 
						|
then
 | 
						|
  message "ARGS CHECK FAILED"
 | 
						|
  usage_error
 | 
						|
fi
 | 
						|
 | 
						|
branch_file=".gitreview"
 | 
						|
 | 
						|
## Run
 | 
						|
 | 
						|
check_util_deps wget
 | 
						|
check_file_deps $branch_file $config_file
 | 
						|
declare -A remote_files && load_configs $config_file
 | 
						|
get_remote
 | 
						|
fetch_files
 |