sigh 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/assets/resign.sh +155 -4
- data/lib/sigh.rb +1 -0
- data/lib/sigh/commands_generator.rb +2 -2
- data/lib/sigh/local_manage.rb +0 -2
- data/lib/sigh/resign.rb +15 -10
- data/lib/sigh/runner.rb +0 -2
- data/lib/sigh/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db89e0313b7e7113969f6c37d6877274cf49cd5c
|
4
|
+
data.tar.gz: 35a9e4ed144e9a5aee3aa41256b80da90b0a17a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 348f22c4b52117fa63b51bf51fedd20ecb91bae31e7a6b0671df2ad5b0e1cc055e768f7ea15df1dcfef5025d7422fa35d377b9200758b7ef8573ac8a4b6a42e0
|
7
|
+
data.tar.gz: 2501453961c2dd705585cbf820d764739d5579512ccdc1d893b9e208b02a81dabb463efb4806e023ab77b7fb911959c63558f9646d056b2d8ebf3ccb25bcbbec
|
data/lib/assets/resign.sh
CHANGED
@@ -94,6 +94,7 @@ usage() {
|
|
94
94
|
echo -e "\t\t[--short-version shortVersion]" >&2
|
95
95
|
echo -e "\t\t[--bundle-version bundleVersion]" >&2
|
96
96
|
echo -e "\t\t[-b|--bundle-id bundleId]" >&2
|
97
|
+
echo -e "\t\t[--use-app-entitlements]" >&2
|
97
98
|
echo -e "\t\toutputIpa" >&2
|
98
99
|
echo "Usage: $(basename $0) -h|--help" >&2
|
99
100
|
echo "Options:" >&2
|
@@ -124,6 +125,9 @@ usage() {
|
|
124
125
|
echo -e "\t\t\t\t\t\t\tCan't use together with '-n, --version-number' option." >&2
|
125
126
|
echo -e "\t-b, --bundle-id bundleId\t\tSpecify new bundle identifier (CFBundleIdentifier)." >&2
|
126
127
|
echo -e "\t\t\t\t\t\t\tWarning: will NOT apply for nested apps and extensions." >&2
|
128
|
+
echo -e "\t --use-app-entitlements\t\tExtract app bundle codesigning entitlements and combine with entitlements from new provisionin profile." >&2
|
129
|
+
echo -e "\t\t\t\t\t\t\tCan't use together with '-e, --entitlements' option." >&2
|
130
|
+
echo -e "\t--keychain-path path\t\t\tSpecify the path to a keychain that /usr/bin/codesign should use." >&2
|
127
131
|
echo -e "\t-v, --verbose\t\t\t\tVerbose output." >&2
|
128
132
|
echo -e "\t-h, --help\t\t\t\tDisplay help message." >&2
|
129
133
|
exit 2
|
@@ -142,10 +146,13 @@ KEYCHAIN=""
|
|
142
146
|
VERSION_NUMBER=""
|
143
147
|
SHORT_VERSION=
|
144
148
|
BUNDLE_VERSION=
|
149
|
+
KEYCHAIN_PATH=
|
145
150
|
RAW_PROVISIONS=()
|
146
151
|
PROVISIONS_BY_ID=()
|
147
152
|
DEFAULT_PROVISION=""
|
148
153
|
TEMP_DIR="_floatsignTemp"
|
154
|
+
USE_APP_ENTITLEMENTS=""
|
155
|
+
|
149
156
|
# List of plist keys used for reference to and from nested apps and extensions
|
150
157
|
NESTED_APP_REFERENCE_KEYS=(":WKCompanionAppBundleIdentifier" ":NSExtension:NSExtensionAttributes:WKAppBundleIdentifier")
|
151
158
|
|
@@ -187,6 +194,14 @@ while [ "$1" != "" ]; do
|
|
187
194
|
shift
|
188
195
|
BUNDLE_VERSION="$1"
|
189
196
|
;;
|
197
|
+
--use-app-entitlements )
|
198
|
+
shift
|
199
|
+
USE_APP_ENTITLEMENTS="YES"
|
200
|
+
;;
|
201
|
+
--keychain-path )
|
202
|
+
shift
|
203
|
+
KEYCHAIN_PATH="$1"
|
204
|
+
;;
|
190
205
|
-v | --verbose )
|
191
206
|
VERBOSE="--verbose"
|
192
207
|
;;
|
@@ -203,6 +218,12 @@ while [ "$1" != "" ]; do
|
|
203
218
|
shift
|
204
219
|
done
|
205
220
|
|
221
|
+
KEYCHAIN_FLAG=
|
222
|
+
if [ -n "$KEYCHAIN_PATH" ]
|
223
|
+
then
|
224
|
+
KEYCHAIN_FLAG="--keychain $KEYCHAIN_PATH"
|
225
|
+
fi
|
226
|
+
|
206
227
|
# Log the options
|
207
228
|
for provision in ${RAW_PROVISIONS[@]}; do
|
208
229
|
if [[ "$provision" =~ .+=.+ ]]; then
|
@@ -221,11 +242,16 @@ log "Certificate: '$CERTIFICATE'"
|
|
221
242
|
[[ -n "${VERSION_NUMBER}" ]] && log "Specified version number to use: '$VERSION_NUMBER'"
|
222
243
|
[[ -n "${SHORT_VERSION}" ]] && log "Specified short version to use: '$SHORT_VERSION'"
|
223
244
|
[[ -n "${BUNDLE_VERSION}" ]] && log "Specified bundle version to use: '$BUNDLE_VERSION'"
|
245
|
+
[[ -n "${KEYCHAIN_FLAG}" ]] && log "Specified keychain to use: '$KEYCHAIN_PATH'"
|
224
246
|
[[ -n "${NEW_FILE}" ]] && log "Output file name: '$NEW_FILE'"
|
247
|
+
[[ -n "${USE_APP_ENTITLEMENTS}" ]] && log "Extract app entitlements: YES"
|
225
248
|
|
226
249
|
# Check that version number option is not clashing with short or bundle version options
|
227
250
|
[[ -n "$VERSION_NUMBER" && (-n "$SHORT_VERSION" || -n "$BUNDLE_VERSION") ]] && error "versionNumber option cannot be used in combination with shortVersion or bundleVersion options"
|
228
251
|
|
252
|
+
# Check that --use-app-entitlements and -e, --entitlements are not used at the same time
|
253
|
+
[[ -n "${USE_APP_ENTITLEMENTS}" && -n ${ENTITLEMENTS} ]] && error "--use-app-entitlements option cannot be used in combination with -e, --entitlements option."
|
254
|
+
|
229
255
|
# Check output file name
|
230
256
|
if [ -z "$NEW_FILE" ];
|
231
257
|
then
|
@@ -376,6 +402,9 @@ function resign {
|
|
376
402
|
error "Expected file does not exist: '$APP_PATH/Info.plist'"
|
377
403
|
fi
|
378
404
|
|
405
|
+
# Make a copy of old Info.plist, it will come handy later to extract some old values
|
406
|
+
cp -f "$APP_PATH/Info.plist" "$TEMP_DIR/oldInfo.plist"
|
407
|
+
|
379
408
|
# Read in current values from the app
|
380
409
|
local CURRENT_NAME=`PlistBuddy -c "Print :CFBundleDisplayName" "$APP_PATH/Info.plist"`
|
381
410
|
local CURRENT_BUNDLE_IDENTIFIER=`PlistBuddy -c "Print :CFBundleIdentifier" "$APP_PATH/Info.plist"`
|
@@ -459,8 +488,11 @@ function resign {
|
|
459
488
|
log "Profile team identifier is '$TEAM_IDENTIFIER'"
|
460
489
|
fi
|
461
490
|
|
462
|
-
|
491
|
+
# Make a copy of old embedded provisioning profile for futher use
|
492
|
+
cp -f "$APP_PATH/embedded.mobileprovision" "$TEMP_DIR/old-embedded.mobileprovision"
|
463
493
|
|
494
|
+
# Replace embedded provisioning profile with new file
|
495
|
+
cp -f "$NEW_PROVISION" "$APP_PATH/embedded.mobileprovision"
|
464
496
|
|
465
497
|
#if the current bundle identifier is different from the new one in the provisioning profile, then change it.
|
466
498
|
if [ "$CURRENT_BUNDLE_IDENTIFIER" != "$BUNDLE_IDENTIFIER" ];
|
@@ -514,7 +546,7 @@ function resign {
|
|
514
546
|
do
|
515
547
|
if [[ "$framework" == *.framework || "$framework" == *.dylib ]]
|
516
548
|
then
|
517
|
-
/usr/bin/codesign ${VERBOSE} -f -s "$CERTIFICATE" "$framework"
|
549
|
+
/usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"
|
518
550
|
checkStatus
|
519
551
|
else
|
520
552
|
log "Ignoring non-framework: $framework"
|
@@ -572,9 +604,121 @@ function resign {
|
|
572
604
|
|
573
605
|
log "Resigning application using certificate: '$CERTIFICATE'"
|
574
606
|
log "and entitlements: $ENTITLEMENTS"
|
575
|
-
cp
|
607
|
+
cp -f "$ENTITLEMENTS" "$APP_PATH/archived-expanded-entitlements.xcent"
|
576
608
|
/usr/bin/codesign ${VERBOSE} -f -s "$CERTIFICATE" --entitlements "$ENTITLEMENTS" "$APP_PATH"
|
577
609
|
checkStatus
|
610
|
+
elif [[ -n "${USE_APP_ENTITLEMENTS}" ]];
|
611
|
+
then
|
612
|
+
# Extract entitlements from provisioning profile and from the app binary
|
613
|
+
# then combine them together
|
614
|
+
|
615
|
+
log "Extracting entitlements from provisioning profile"
|
616
|
+
PROFILE_ENTITLEMENTS="$TEMP_DIR/profileEntitlements"
|
617
|
+
PlistBuddy -x -c "Print Entitlements" "$TEMP_DIR/profile.plist" > "$PROFILE_ENTITLEMENTS"
|
618
|
+
checkStatus
|
619
|
+
|
620
|
+
log "Extracting entitlements from the app"
|
621
|
+
APP_ENTITLEMENTS="$TEMP_DIR/appEntitlements"
|
622
|
+
/usr/bin/codesign -d --entitlements :"$APP_ENTITLEMENTS" "$APP_PATH"
|
623
|
+
checkStatus
|
624
|
+
|
625
|
+
log "\nApp entitlements for ${APP_PATH}:"
|
626
|
+
log "$(cat "$APP_ENTITLEMENTS")"
|
627
|
+
|
628
|
+
log "Patching profile entitlements with values from app entitlements"
|
629
|
+
PATCHED_ENTITLEMENTS="$TEMP_DIR/patchedEntitlements"
|
630
|
+
# Start with using what comes in provisioning profile entitlements before patching
|
631
|
+
cp -f "$PROFILE_ENTITLEMENTS" "$PATCHED_ENTITLEMENTS"
|
632
|
+
|
633
|
+
# Get the old and new app identifier (prefix)
|
634
|
+
APP_ID_KEY="application-identifier"
|
635
|
+
# Extract just the identifier from the value
|
636
|
+
# Use the fact that we are after some identifer, which is always at the start of the string
|
637
|
+
OLD_APP_ID=$(PlistBuddy -c "Print $APP_ID_KEY" "$APP_ENTITLEMENTS" | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
|
638
|
+
NEW_APP_ID=$(PlistBuddy -c "Print $APP_ID_KEY" "$PROFILE_ENTITLEMENTS" | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
|
639
|
+
|
640
|
+
# Get the old and the new team ID
|
641
|
+
# Old team ID is not part of app entitlements, have to get it from old embedded provisioning profile
|
642
|
+
security cms -D -i "$TEMP_DIR/old-embedded.mobileprovision" > "$TEMP_DIR/old-embedded-profile.plist"
|
643
|
+
OLD_TEAM_ID=$(PlistBuddy -c "Print :TeamIdentifier:0" "$TEMP_DIR/old-embedded-profile.plist")
|
644
|
+
# New team ID is part of profile entitlements
|
645
|
+
NEW_TEAM_ID=$(PlistBuddy -c "Print com.apple.developer.team-identifier" "$PROFILE_ENTITLEMENTS" | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
|
646
|
+
|
647
|
+
# List of rules for transferring entitlements from app to profile plist
|
648
|
+
# The format for each enty is "KEY[|ID_TYPE]"
|
649
|
+
# Where KEY is the plist key, e.g. "keychain-access-groups"
|
650
|
+
# and ID_TYPE is optional part separated by '|' that specifies what value to patch:
|
651
|
+
# TEAM_ID - patch the TeamIdentifierPrefix
|
652
|
+
# APP_ID - patch the AppIdentifierPrefix
|
653
|
+
# Patching means replacing old value from app entitlements with new value from provisioning profile
|
654
|
+
# For example, for KEY=keychain-access-groups the ID_TYPE=APP_ID
|
655
|
+
# Which means that old app ID prefix in keychain-access-groups will be replaced with new app ID prefix
|
656
|
+
# There can be only one ID_TYPE specified
|
657
|
+
# If entitlements use more than one ID type for single entitlement, then this way of resigning will not work
|
658
|
+
# instead an entitlements file must be provided explicitly
|
659
|
+
ENTITLEMENTS_TRANSFER_RULES=("com.apple.developer.associated-domains" \
|
660
|
+
"com.apple.developer.healthkit" \
|
661
|
+
"com.apple.developer.homekit" \
|
662
|
+
"com.apple.developer.icloud-container-identifiers" \
|
663
|
+
"com.apple.developer.icloud-services" \
|
664
|
+
"com.apple.developer.in-app-payments" \
|
665
|
+
"com.apple.developer.networking.vpn.api" \
|
666
|
+
"com.apple.developer.ubiquity-container-identifiers" \
|
667
|
+
"com.apple.developer.ubiquity-kvstore-identifier|TEAM_ID" \
|
668
|
+
"com.apple.external-accessory.wireless-configuration" \
|
669
|
+
"com.apple.security.application-groups" \
|
670
|
+
"inter-app-audio" \
|
671
|
+
"keychain-access-groups|APP_ID")
|
672
|
+
|
673
|
+
# Loop over all the entitlement keys that need to be transferred from app entitlements
|
674
|
+
for RULE in ${ENTITLEMENTS_TRANSFER_RULES[@]}; do
|
675
|
+
KEY=$(echo $RULE | cut -d'|' -f1)
|
676
|
+
ID_TYPE=$(echo $RULE | cut -d'|' -f2)
|
677
|
+
|
678
|
+
# Get the entry from app's entitlements
|
679
|
+
# Read it with PlistBuddy as XML, then strip the header and <plist></plist> part
|
680
|
+
ENTITLEMENTS_VALUE="$(PlistBuddy -x -c "Print $KEY" "$APP_ENTITLEMENTS" 2>/dev/null | sed -e 's,.*<plist[^>]*>\(.*\)</plist>,\1,g')"
|
681
|
+
if [[ -z "$ENTITLEMENTS_VALUE" ]]; then
|
682
|
+
log "No value for '$KEY'"
|
683
|
+
continue
|
684
|
+
fi
|
685
|
+
|
686
|
+
log "App entitlements value for key '$KEY':"
|
687
|
+
log "$ENTITLEMENTS_VALUE"
|
688
|
+
|
689
|
+
# Remove the entry for current key from profisioning profile entitlements (if exists)
|
690
|
+
PlistBuddy -c "Delete $KEY" "$PATCHED_ENTITLEMENTS" 2>/dev/null
|
691
|
+
|
692
|
+
# Add new entry to patched entitlements
|
693
|
+
plutil -insert "$KEY" -xml "$ENTITLEMENTS_VALUE" "$PATCHED_ENTITLEMENTS"
|
694
|
+
|
695
|
+
# Patch the ID value if specified
|
696
|
+
if [[ "$ID_TYPE" == "APP_ID" ]]; then
|
697
|
+
# Replace old value with new value in patched entitlements
|
698
|
+
log "Replacing old app identifier prefix '$OLD_APP_ID' with new value '$NEW_APP_ID'"
|
699
|
+
sed -i .bak "s/$OLD_APP_ID/$NEW_APP_ID/g" "$PATCHED_ENTITLEMENTS"
|
700
|
+
elif [[ "$ID_TYPE" == "TEAM_ID" ]]; then
|
701
|
+
# Replace new team identifier with new value
|
702
|
+
log "Replacing old team ID '$OLD_TEAM_ID' with new team ID: '$NEW_TEAM_ID'"
|
703
|
+
sed -i .bak "s/$OLD_TEAM_ID/$NEW_TEAM_ID/g" "$PATCHED_ENTITLEMENTS"
|
704
|
+
else
|
705
|
+
continue
|
706
|
+
fi
|
707
|
+
done
|
708
|
+
|
709
|
+
# Replace old bundle ID with new bundle ID in patched entitlements
|
710
|
+
# Read old bundle ID from the old Info.plist which was saved for this purpose
|
711
|
+
OLD_BUNDLE_ID="$(PlistBuddy -c "Print :CFBundleIdentifier" "$TEMP_DIR/oldInfo.plist")"
|
712
|
+
NEW_BUNDLE_ID="$(bundle_id_for_provison "$NEW_PROVISION")"
|
713
|
+
log "Replacing old bundle ID '$OLD_BUNDLE_ID' with new bundle ID '$NEW_BUNDLE_ID' in patched entitlements"
|
714
|
+
sed -i .bak "s/$OLD_BUNDLE_ID/$NEW_BUNDLE_ID/g" "$PATCHED_ENTITLEMENTS"
|
715
|
+
|
716
|
+
log "Resigning application using certificate: '$CERTIFICATE'"
|
717
|
+
log "and patched entitlements:"
|
718
|
+
log "$(cat "$PATCHED_ENTITLEMENTS")"
|
719
|
+
cp -f "$PATCHED_ENTITLEMENTS" "$APP_PATH/archived-expanded-entitlements.xcent"
|
720
|
+
/usr/bin/codesign ${VERBOSE} -f -s "$CERTIFICATE" --entitlements "$PATCHED_ENTITLEMENTS" "$APP_PATH"
|
721
|
+
checkStatus
|
578
722
|
else
|
579
723
|
log "Extracting entitlements from provisioning profile"
|
580
724
|
PlistBuddy -x -c "Print Entitlements" "$TEMP_DIR/profile.plist" > "$TEMP_DIR/newEntitlements"
|
@@ -582,13 +726,20 @@ function resign {
|
|
582
726
|
log "Resigning application using certificate: '$CERTIFICATE'"
|
583
727
|
log "and entitlements from provisioning profile: $NEW_PROVISION"
|
584
728
|
cp -- "$TEMP_DIR/newEntitlements" "$APP_PATH/archived-expanded-entitlements.xcent"
|
585
|
-
/usr/bin/codesign ${VERBOSE} -f -s "$CERTIFICATE" --entitlements "$TEMP_DIR/newEntitlements" "$APP_PATH"
|
729
|
+
/usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" --entitlements "$TEMP_DIR/newEntitlements" "$APP_PATH"
|
586
730
|
checkStatus
|
587
731
|
fi
|
588
732
|
|
589
733
|
# Remove the temporary files if they were created before generating ipa
|
590
734
|
rm -f "$TEMP_DIR/newEntitlements"
|
735
|
+
rm -f "$PROFILE_ENTITLEMENTS"
|
736
|
+
rm -f "$APP_ENTITLEMENTS"
|
737
|
+
rm -f "$PATCHED_ENTITLEMENTS"
|
738
|
+
rm -f "$PATCHED_ENTITLEMENTS.bak"
|
739
|
+
rm -r "$TEMP_DIR/old-embedded-profile.plist"
|
591
740
|
rm -f "$TEMP_DIR/profile.plist"
|
741
|
+
rm -f "$TEMP_DIR/old-embedded.mobileprovision"
|
742
|
+
rm -f "$TEMP_DIR/oldInfo.plist"
|
592
743
|
}
|
593
744
|
|
594
745
|
# Sign nested applications and app extensions
|
data/lib/sigh.rb
CHANGED
@@ -13,6 +13,7 @@ module Sigh
|
|
13
13
|
|
14
14
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
15
15
|
UI = FastlaneCore::UI
|
16
|
+
ROOT = Pathname.new(File.expand_path('../..', __FILE__))
|
16
17
|
|
17
18
|
ENV['FASTLANE_TEAM_ID'] ||= ENV["SIGH_TEAM_ID"]
|
18
19
|
ENV['DELIVER_USER'] ||= ENV["SIGH_USERNAME"]
|
@@ -13,7 +13,6 @@ module Sigh
|
|
13
13
|
FastlaneCore::UpdateChecker.show_update_status('sigh', Sigh::VERSION)
|
14
14
|
end
|
15
15
|
|
16
|
-
# rubocop:disable Metrics/MethodLength
|
17
16
|
def run
|
18
17
|
program :version, Sigh::VERSION
|
19
18
|
program :description, 'CLI for \'sigh\' - Because you would rather spend your time building stuff than fighting provisioning'
|
@@ -70,7 +69,9 @@ module Sigh
|
|
70
69
|
c.option '-e', '--entitlements PATH', String, 'The path to the entitlements file to use.'
|
71
70
|
c.option '--short_version STRING', String, 'Short version string to force binary and all nested binaries to use (CFBundleShortVersionString).'
|
72
71
|
c.option '--bundle_version STRING', String, 'Bundle version to force binary and all nested binaries to use (CFBundleIdentifier).'
|
72
|
+
c.option '--use_app_entitlements', 'Extract app bundle codesigning entitlements and combine with entitlements from new provisionin profile.'
|
73
73
|
c.option '-g', '--new_bundle_id STRING', String, 'New application bundle ID'
|
74
|
+
c.option '--keychain_path STRING', String, 'Path to the keychain that /usr/bin/codesign should use'
|
74
75
|
|
75
76
|
c.action do |args, options|
|
76
77
|
Sigh::Resign.new.run(options, args)
|
@@ -96,7 +97,6 @@ module Sigh
|
|
96
97
|
|
97
98
|
run!
|
98
99
|
end
|
99
|
-
# rubocop:enable Metrics/MethodLength
|
100
100
|
|
101
101
|
def multiple_values_option_proc(command, name)
|
102
102
|
proc do |value|
|
data/lib/sigh/local_manage.rb
CHANGED
@@ -41,7 +41,6 @@ module Sigh
|
|
41
41
|
return command, clean_expired, clean_pattern, force
|
42
42
|
end
|
43
43
|
|
44
|
-
# rubocop:disable Metrics/AbcSize
|
45
44
|
def self.list_profiles
|
46
45
|
profiles = load_profiles
|
47
46
|
|
@@ -84,7 +83,6 @@ module Sigh
|
|
84
83
|
|
85
84
|
UI.message "You can remove all expired profiles using `sigh manage -e`" if profiles_expired.count > 0
|
86
85
|
end
|
87
|
-
# rubocop:enable Metrics/AbcSize
|
88
86
|
|
89
87
|
def self.profile_info(profile)
|
90
88
|
if $verbose
|
data/lib/sigh/resign.rb
CHANGED
@@ -5,19 +5,18 @@ module Sigh
|
|
5
5
|
class Resign
|
6
6
|
def run(options, args)
|
7
7
|
# get the command line inputs and parse those into the vars we need...
|
8
|
-
|
9
|
-
ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id = get_inputs(options, args)
|
8
|
+
ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements = get_inputs(options, args)
|
10
9
|
# ... then invoke our programmatic interface with these vars
|
11
|
-
unless resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id)
|
10
|
+
unless resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path)
|
12
11
|
UI.user_error!("Failed to re-sign .ipa")
|
13
12
|
end
|
14
13
|
end
|
15
14
|
|
16
|
-
def self.resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id)
|
17
|
-
self.new.resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id)
|
15
|
+
def self.resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements)
|
16
|
+
self.new.resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements)
|
18
17
|
end
|
19
18
|
|
20
|
-
def resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id)
|
19
|
+
def resign(ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path)
|
21
20
|
resign_path = find_resign_path
|
22
21
|
signing_identity = find_signing_identity(signing_identity)
|
23
22
|
|
@@ -27,7 +26,7 @@ module Sigh
|
|
27
26
|
|
28
27
|
# validate that we have valid values for all these params, we don't need to check signing_identity because `find_signing_identity` will only ever return a valid value
|
29
28
|
validate_params(resign_path, ipa, provisioning_profiles)
|
30
|
-
entitlements = "-e #{entitlements}" if entitlements
|
29
|
+
entitlements = "-e #{entitlements.shellescape}" if entitlements
|
31
30
|
provisioning_options = provisioning_profiles.map { |fst, snd| "-p #{[fst, snd].compact.map(&:shellescape).join('=')}" }.join(' ')
|
32
31
|
version = "-n #{version}" if version
|
33
32
|
display_name = "-d #{display_name.shellescape}" if display_name
|
@@ -35,6 +34,8 @@ module Sigh
|
|
35
34
|
bundle_version = "--bundle-version #{bundle_version}" if bundle_version
|
36
35
|
verbose = "-v" if $verbose
|
37
36
|
bundle_id = "-b '#{new_bundle_id}'" if new_bundle_id
|
37
|
+
use_app_entitlements_flag = "--use-app-entitlements" if use_app_entitlements
|
38
|
+
specific_keychain = "--keychain-path #{keychain_path.shellescape}" if keychain_path
|
38
39
|
|
39
40
|
command = [
|
40
41
|
resign_path.shellescape,
|
@@ -46,9 +47,11 @@ module Sigh
|
|
46
47
|
display_name,
|
47
48
|
short_version,
|
48
49
|
bundle_version,
|
50
|
+
use_app_entitlements_flag,
|
49
51
|
verbose,
|
50
52
|
bundle_id,
|
51
|
-
ipa.shellescape
|
53
|
+
ipa.shellescape,
|
54
|
+
specific_keychain
|
52
55
|
].join(' ')
|
53
56
|
|
54
57
|
puts command.magenta
|
@@ -73,16 +76,18 @@ module Sigh
|
|
73
76
|
short_version = options.short_version || nil
|
74
77
|
bundle_version = options.bundle_version || nil
|
75
78
|
new_bundle_id = options.new_bundle_id || nil
|
79
|
+
use_app_entitlements = options.use_app_entitlements || nil
|
80
|
+
keychain_path = options.keychain_path || nil
|
76
81
|
|
77
82
|
if options.provisioning_name
|
78
83
|
UI.important "The provisioning_name (-n) option is not applicable to resign. You should use provisioning_profile (-p) instead"
|
79
84
|
end
|
80
85
|
|
81
|
-
return ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id
|
86
|
+
return ipa, signing_identity, provisioning_profiles, entitlements, version, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path
|
82
87
|
end
|
83
88
|
|
84
89
|
def find_resign_path
|
85
|
-
File.join(
|
90
|
+
File.join(Sigh::ROOT, 'lib', 'assets', 'resign.sh')
|
86
91
|
end
|
87
92
|
|
88
93
|
def find_ipa
|
data/lib/sigh/runner.rb
CHANGED
@@ -117,7 +117,6 @@ module Sigh
|
|
117
117
|
end
|
118
118
|
|
119
119
|
# Certificate to use based on the current distribution mode
|
120
|
-
# rubocop:disable Metrics/AbcSize
|
121
120
|
def certificate_to_use
|
122
121
|
if profile_type == Spaceship.provisioning_profile.Development
|
123
122
|
certificates = Spaceship.certificate.development.all
|
@@ -170,7 +169,6 @@ module Sigh
|
|
170
169
|
return certificates if Sigh.config[:development] # development profiles support multiple certificates
|
171
170
|
return certificates.first
|
172
171
|
end
|
173
|
-
# rubocop:enable Metrics/AbcSize
|
174
172
|
|
175
173
|
# Downloads and stores the provisioning profile
|
176
174
|
def download_profile(profile)
|
data/lib/sigh/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sigh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fastlane_core
|