Last active
August 29, 2015 14:03
-
-
Save erichsu/778e41d3115e064672e5 to your computer and use it in GitHub Desktop.
CI build binary fetcher
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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