versions/update_version_codes.sh
changeset 1080 4beb46664f54
equal deleted inserted replaced
1079:555f5fa5b1ed 1080:4beb46664f54
       
     1 #!/bin/zsh
       
     2 set -e
       
     3 
       
     4 zmodload zsh/zutil
       
     5 
       
     6 script_path="${0}"
       
     7 script_root="$(dirname "${script_path}")"
       
     8 version_file="$script_root/version_codes.json"
       
     9 
       
    10 usage() {
       
    11   echo "update_version_codes.sh [-l|--latest] <version_name> <version_code>"
       
    12 }
       
    13 
       
    14 add_code_mapping() {
       
    15   local name="$1"
       
    16   local code="$2"
       
    17   local version_file="$3"
       
    18   local tmp=$(mktemp)
       
    19   jq --arg param_version_name "$name" \
       
    20     --arg param_version_code "$code" \
       
    21     '.version_codes[$param_version_name] = $param_version_code' \
       
    22     "$version_file" > "$tmp"
       
    23   mv "$tmp" "$version_file"
       
    24 }
       
    25 
       
    26 add_code_mapping_update_latest() {
       
    27   local name="$1"
       
    28   local code="$2"
       
    29   local version_file="$3"
       
    30   local tmp=$(mktemp)
       
    31   jq --arg param_version_name "$name" \
       
    32     --arg param_version_code "$code" \
       
    33     '.latest = $param_version_name | .version_codes[$param_version_name] = $param_version_code' \
       
    34     "$version_file" > "$tmp"
       
    35   mv "$tmp" "$version_file"
       
    36 }
       
    37 
       
    38 zparseopts -D -F -K -- \
       
    39   {h,-help}=show_help \
       
    40   {l,-latest}=set_latest || {
       
    41     usage && return 1
       
    42   }
       
    43 
       
    44 [[ -z "$show_help" ]] || { usage && return }
       
    45 version_name="$1"
       
    46 version_code="$2"
       
    47 
       
    48 [[ -z "$version_name" || -z "$version_code" ]] && { usage && return 1 }
       
    49 
       
    50 if [[ -n "$set_latest" ]] ; then
       
    51   add_code_mapping_update_latest "$version_name" "$version_code" "$version_file"
       
    52 else
       
    53   add_code_mapping "$version_name" "$version_code" "$version_file"
       
    54 fi