 0a562be887
			
		
	
	0a562be887
	
	
	
		
			
			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
 |