Skip to content

Instantly share code, notes, and snippets.

@erichsu
Last active August 29, 2015 14:03
Show Gist options
  • Save erichsu/778e41d3115e064672e5 to your computer and use it in GitHub Desktop.
Save erichsu/778e41d3115e064672e5 to your computer and use it in GitHub Desktop.
CI build binary fetcher
#!/bin/bash -e
set -e
## fetch
function fetch() { #$1=srcPath, $2=dstPath
srcPath="$1"; dstPath="$2"
srcName=$(basename "$srcPath")
dstName=$(basename "$dstPath")
if cmp -s "$srcPath" "$dstPath"; then
echo "$dstName is already up-to-date ($srcName)"
else
dir="$(dirname $dstPath)"
mkdir -p "$dir"
cp -f "$srcPath" "$dir"
chmod +r "$dir/$srcName"
mv -f "$dir/$srcName" "$dir/$dstName"
echo "$srcPath copied"
fi
}
## find iTMMS build
function findiTMMS() { #$1=version, $2=lang, $3=build, $4=filter
version=$1; lang=$2; build=$3; filter=$4
srcPath="$mountPoint/iTMMS/$version/mac10_8/$lang/Rel/$build/Release/Output"
[ -d "$srcPath/$filter" ] || `echo "Can't find the build" 1>&2; return 1`
result=$(find "$srcPath/$filter" -name "*.ipa" | tail -n1)
build=$(expr "$(basename $result)" : '.*\([0-9][0-9][0-9][0-9]\).*')
echo "$version $lang $build $filter"
echo "$result"
}
## find iTMMS build
function findMUA() { #$1=version, $2=lang, $3=build, $4=filter
version=$1; lang=$2; build=$3; filter=$4
srcPath="$mountPoint/MUP_iOS/$version/mac10_8/$lang/Rel/$build/Release/Output"
[ -d "$srcPath/$filter" ] || `echo "Can't find the build" 1>&2; return 1`
result=$(find "$srcPath/$filter" -name "*.ipa" | tail -n1)
build=$(expr "$(basename $result)" : '.*\([0-9][0-9][0-9][0-9]\).*')
echo "$version $lang $build $filter"
echo "$result"
}
## find JB build
function findJB() { #$1=version, $2=lang, $3=build, $4=filter
version=$1; lang=$2; build=$3; filter=$4
srcPath="$mountPoint/JewelryBox_Client_iOS/$version/mac10_8/$lang/Rel/$build/Release/Output/Distribution-iphoneos"
[ -d "$srcPath" ] || `echo "Can't find the build" 1>&2; return 1`
result=$(find "$srcPath" -name "*$filter.ipa" | tail -n1)
build=$(expr "$(basename $result)" : '.*\([0-9][0-9][0-9][0-9]\).*')
echo "$version $lang $build $filter"
echo "$result"
}
## find DP build
function findDP() { #$1=version, $2=lang, $3=build, $4=filter
version=$1; lang=$2; build=$3; filter=$4
srcPath="$mountPoint/DirectPass_iOS/$version/mac10_8/$lang/Rel/$build/Release/Output"
[ -d "$srcPath" ] || `echo "Can't find the build" 1>&2; return 1`
result=$(find "$srcPath" -name "*$filter.ipa" | tail -n1)
build=$(expr "$(basename $result)" : '.*\([0-9][0-9][0-9][0-9]\).*')
echo "$version $lang $build $filter"
echo "$result"
}
## Usage
function usage() {
echo
echo "Fetch ETS build - command line interface."
echo
echo "fetch [Options] <ProjectName>"
echo
echo "Options:"
echo "-h|--help Show this info."
echo "-v|--version Set Version"
echo "-l|--lang Set Language"
echo "-b|--build Set Build (default is Latest)"
echo "-f|--filter Set search filter for build"
echo "-p|--prefix Set prefix of destination (default is build)"
echo "-t|--target Set target name"
echo
}
## Parse the options
prefix="build"
while [[ $1 = -?* ]]; do
case $1 in
-h|--help)
usage
exit 0
;;
-v|--version)
version="$2"
shift
;;
-l|--lang)
lang="$2"
shift
;;
-b|--build)
build="$2"
shift
;;
-f|--filter)
filter="$2"
shift
;;
-p|--prefix)
prefix="$2"
shift
;;
-t|--target)
target="$2"
shift
;;
*) ;;
esac
shift
done
## Setup project name
projectName="$1"
if [ -z "$*" ];then
usage
exit 1
else
## Mount Samba file server and copy latest build
mountPoint="/Volumes/Build-1"
if [ ! -d "$mountPoint" ];then
echo "Mount File server to $mountPoint..."
read -p "User account:" userName
mkdir -p "$mountPoint"
mount_smbfs "//$userName@tw-ets-fs/Build" "$mountPoint" || \
rm -rf "$mountPoint"
fi
echo "Start fetching...$projectName"
case $projectName in
iTMMS)
[ -z $version ] && version="2.0"
[ -z $lang ] && lang="en"
[ -z $build ] && build="Latest"
[ -z $filter ] && filter="Demo_beta"
result=$(findiTMMS $version $lang $build $filter)
;;
MUA)
[ -z $version ] && version="1.0"
[ -z $lang ] && lang="en"
[ -z $build ] && build="Latest"
[ -z $filter ] && filter="Demo_beta"
result=$(findMUA $version $lang $build $filter)
;;
JB)
[ -z $version ] && version="3.0"
[ -z $lang ] && lang="en"
[ -z $build ] && build="Latest"
[ -z $filter ] && filter="global" # global|jp
result=$(findJB $version $lang $build $filter)
;;
DP)
[ -z $version ] && version="3.0"
[ -z $lang ] && lang="en"
[ -z $build ] && build="Latest"
[ -z $filter ] && filter="Global" # Global|JP
result=$(findDP $version $lang $build $filter)
;;
*)
echo "Unsupported project."
;;
esac
currentBuild=$(echo "$result" | head -n1 | cut -f3 -d' ')
srcPath=$(echo "$result" | tail -n1)
if [ -n "$target" ]; then
fetch $srcPath "$prefix/$target"
echo "$version.$currentBuild" > "$prefix/${target%.*}"
else
fetch $srcPath "${prefix}/${projectName}_${version}_${lang}_${currentBuild}_${filter}.ipa"
fi
## Unmount
#umount "$mountPoint"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment