cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Grieve (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-8326) Allow arguments to be sent to the build comand e.g. xcodebuild
Date Mon, 19 Jan 2015 17:11:34 GMT

    [ https://issues.apache.org/jira/browse/CB-8326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14282712#comment-14282712
] 

Andrew Grieve commented on CB-8326:
-----------------------------------

For the first layer of this, I think you can add "--" to specify args to the platform build
script.

E.g.:
{code}
cordova build ios --device -- CODE_SIGN_IDENTITY='iPhone Developer: ABCD(1X23456789)' 
{code}

We should add this to the help text if it's not there already.

For the build template script, we will need the change there, but I think the scripts are
currently being re-written in JS, so may want to wait for that to happen

> Allow arguments to be sent to the build comand e.g. xcodebuild
> --------------------------------------------------------------
>
>                 Key: CB-8326
>                 URL: https://issues.apache.org/jira/browse/CB-8326
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: CLI, CordovaJS, CordovaLib
>    Affects Versions: 3.5.0, 4.0.0, 3.6.3, 3.7.1, 4.1.3
>         Environment: All
>            Reporter: DotNetWise
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Currently if you do 
> cordova build ios  --device CODE_SIGN_IDENTITY='iPhone Developer: ABCD(1X23456789)' PROVISIONING_PROFILE='/usr/local/provisions/ABC_Development.mobileprovision'
> You'll get an error that CODE_SIGN_IDENTITY is not a known platform.
> This is absolutely rubbish, as there is no real way to send arguments directly to xcodebuild
e.g. for directly build & sign an .ipa
> We have tweaked locally the code, but every cordova release is making it a pain in the
ass to reapply the changes.
> PLEASE Make sure you allow anyother parameters to be sent to the actual build comand.
> For the GOD sake only include KnownPlatforms as platforms and everything else send it
to the actual build command.
> We have added this code to cli.js
> var tokens = remain.slice(1);
>     	tokens.forEach(function (option, index) {
>     		console.log("option", option, cordova_lib.cordova_platforms.hasOwnProperty(option));
>     		if (cordova_lib.cordova_platforms.hasOwnProperty(option)) {
>     			opts.platforms.push(option);
>     		} else {
>     			opts.options.push(option);
>     		}
>     	});
> And commented this one out
>         //var badPlatforms = _.difference(opts.platforms, known_platforms);
>         //badPlatforms.forEach(function (option) {
>         //	opts.options.push(option);
>         //});
>         //if( !_.isEmpty(badPlatforms) ) {
>         //    msg = 'Unknown platforms: ' + badPlatforms.join(', ');
>         //    throw new CordovaError(msg);
>         //}
> Also commented this one
> //opts.options = downstreamArgs.concat(unparsedArgs);
> And works great.
> Then in your project template you should forward the arguments in file platforms/xxxx/cordova/build
> e.g. for IOS
> CONFIGURATION=Debug
> EMULATOR=1
> DEVICE=0
> declare -a SCHEME
> SCHEME=("-target" "$PROJECT_NAME")
> i=0
> args=
> for a; do
> 	((i++));
> 	case "$a" in
>         --debug) echo "ARG --debug";;
>         --release) CONFIGURATION=Release;echo "ARG --release";;
>         --device) EMULATOR=0;echo "ARG --device";;
>         --emulator) echo "ARG --emulator";;
> 		-scheme) ((i++)); SCHEME=("-scheme" $i);echo "ARG=-scheme $i";;
> 		-target) ((i++)); SCHEME=("-target" $i);echo "ARG=-target $i";;
> 		PROVISIONING_PROFILE*) echo "ARG=$a";mp=${a:21}; uuid=`grep -aA1 UUID ${mp} | grep
-o "[-A-Z0-9]\{36\}"`;args="$args PROVISIONING_PROFILE=\"$uuid\"";echo "       => extracted
uuid=$uuid";;
>         *) echo "ARG=$a";args="$args \"$a\"";;
>     esac
>     shift
> done
> eval set -- $args
> set +x;
> if (( $EMULATOR )); then
>     exec xcodebuild -project "$PROJECT_NAME.xcodeproj" -arch i386 -target "$PROJECT_NAME"
-configuration $CONFIGURATION -sdk iphonesimulator build VALID_ARCHS="i386" CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build/emulator"
SHARED_PRECOMPS_DIR="$PROJECT_PATH/build/sharedpch" "$@"
> else
>     exec xcodebuild -xcconfig "$CORDOVA_PATH/build$(echo -$CONFIGURATION | tr '[:upper:]'
'[:lower:]').xcconfig" -project "$PROJECT_NAME.xcodeproj" ARCHS="armv7 armv7s arm64" "${SCHEME[@]}"
-configuration $CONFIGURATION -sdk iphoneos build VALID_ARCHS="armv7 armv7s arm64" CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build/device"
SHARED_PRECOMPS_DIR="$PROJECT_PATH/build/sharedpch" "$@"
> fi
> Notice the "$@" that was missing from your templates



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message