Skip to content

Instantly share code, notes, and snippets.

@sinofool
Last active September 19, 2023 20:54
Show Gist options
  • Save sinofool/39dc371e95c799094f7b to your computer and use it in GitHub Desktop.
Save sinofool/39dc371e95c799094f7b to your computer and use it in GitHub Desktop.

Revisions

  1. sinofool revised this gist Nov 3, 2016. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions cmdbuild.sh
    Original file line number Diff line number Diff line change
    @@ -94,6 +94,9 @@ then
    fi
    #echo $SIGN_IDEN

    # For macOS 10.12+, new security enforcement need following command.
    security set-key-partition-list -S apple: -k $$ -D "$SIGN_IDEN" -t private

    PROV_UUID=$(/usr/libexec/PlistBuddy -c "Print UUID" /dev/stdin <<< `security cms -D -i "$PROVFILE"`)
    if [ "$PROV_UUID" == "" ]
    then
  2. sinofool created this gist Oct 27, 2015.
    111 changes: 111 additions & 0 deletions cmdbuild.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,111 @@
    #!/bin/bash
    set -x

    USAGE() {
    cat << EOF
    Usage: ${0##*/} <-i ident.p12> [-p password] <-m profile.mobileprovision> [-a com.example.app] [-n NewName] [-I Info.plist]
    -i ident.p12 The signing identity file.
    -p password The password of signing identity file.
    -m profile.mobileprovision Signing provision profile
    -a com.example.app Override CFBundleIdentifier
    -n NewName Override CFBundleName
    -I Info.plist Override plist file target
    -h help
    EOF
    exit 1
    }

    while getopts "i:p::m:a::n::I::h" opt ; do
    case "$opt" in
    i) SIGNFILE=$OPTARG ;;
    p) SIGNPASS=$OPTARG ;;
    m) PROVFILE=$OPTARG ;;
    a) OVER_APPID=$OPTARG ;;
    n) OVER_NAME=$OPTARG ;;
    I) OVER_FILE=$OPTARG ;;
    h|*) USAGE ;;
    esac
    done

    if [ ! -f "$SIGNFILE" ]
    then
    echo "signing identity file not exists"
    exit 1
    fi
    if [ ! -f "$PROVFILE" ]
    then
    echo "signing provision profile not exists"
    exit 1
    fi

    if [ "$OVER_APPID" != "" ]
    then
    if [ ! -f "$OVER_FILE" ]
    then
    echo "Use -I Info.plist to find plist"
    exit 7
    fi
    /usr/libexec/PlistBuddy -c "set :CFBundleIdentifier $OVER_APPID" "$OVER_FILE"
    fi
    if [ "$OVER_NAME" != "" ]
    then
    if [ ! -f "$OVER_FILE" ]
    then
    echo "Use -I Info.plist to find plist"
    exit 7
    fi
    /usr/libexec/PlistBuddy -c "set :CFBundleName $OVER_NAME" "$OVER_FILE"
    fi

    RAND_KEYCHAIN=cmdbuild$$.keychain
    security create-keychain -p $$ $RAND_KEYCHAIN || exit 2
    security default-keychain -s $RAND_KEYCHAIN || exit 2
    security list-keychains -s $RAND_KEYCHAIN || exit 2

    trap "{
    security delete-keychain $RAND_KEYCHAIN || echo Cannot delete keychain $RAND_KEYCHAIN
    }" EXIT

    if [ "$OVER_NAME" != "" ]
    then
    if [ -f "$OVER_FILE" ]
    then
    trap "{
    git checkout \"$OVER_FILE\"
    security delete-keychain $RAND_KEYCHAIN || echo Cannot delete keychain $RAND_KEYCHAIN
    }" EXIT
    fi
    fi

    if [ "$SIGNPASS" == "" ]
    then
    security import "$SIGNFILE" -k $RAND_KEYCHAIN -T /usr/bin/codesign || exit 3
    else
    security import "$SIGNFILE" -k $RAND_KEYCHAIN -P "$SIGNPASS" -T /usr/bin/codesign || exit 3
    fi
    security unlock-keychain -p $$ $HOME/Library/Keychains/$RAND_KEYCHAIN || exit 4
    security set-keychain-settings -u $RAND_KEYCHAIN || exit 5
    #security show-keychain-info $RAND_KEYCHAIN

    SIGN_IDEN=$(security find-identity -p codesigning -v $RAND_KEYCHAIN|head -n1|cut -d "\"" -f 2)
    if [ "$SIGN_IDEN" == "" ]
    then
    exit 5
    fi
    #echo $SIGN_IDEN

    PROV_UUID=$(/usr/libexec/PlistBuddy -c "Print UUID" /dev/stdin <<< `security cms -D -i "$PROVFILE"`)
    if [ "$PROV_UUID" == "" ]
    then
    exit 6
    fi
    if [ ! -d "$HOME/Library/MobileDevice/Provisioning Profiles/" ]
    then
    mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles/"
    fi
    cp "$PROVFILE" "$HOME/Library/MobileDevice/Provisioning Profiles/$PROV_UUID.mobileprovision"
    #echo $PROV_UUID
    xcodebuild $CMDBUILD_ARGS CODE_SIGN_IDENTITY="$SIGN_IDEN" PROVISIONING_PROFILE="$PROV_UUID" OTHER_CODE_SIGN_FLAGS="--keychain '$HOME/Library/Keychains/$RAND_KEYCHAIN'"
    exit 0