nixenvironment 0.0.70 → 0.0.71

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23b91b030df9c768306cb2aca94062c3d660b51b
4
- data.tar.gz: fbf507b463a92dbef8f4688b31009b144163b931
3
+ metadata.gz: 0ae2568f0e26258c2c5e3f378a4aee05e0b81fd2
4
+ data.tar.gz: 5d6ad9e68cd00116e9b6d2d7d43bd37dc6aa1ce2
5
5
  SHA512:
6
- metadata.gz: 450a99d55ebccf32afc92c587d02f9c826ed95e116392280b15ea464a9a2343b742d6bfbceb69f58d5115ea33bc1bda10f2733d4b8001334c9d9fce09e149427
7
- data.tar.gz: 1c709fce51785244d8a5d53e75588d1763eecc9b80e85819d0f52a1116fe5bc73ae4a942e7b2580bfafdedd09e764cbae00a581f89f02ac555080cca36bddddd
6
+ metadata.gz: f6f8c13907d4f803eb394d014e5806f77a703df837fade6863486ae6c485e373ebf834517ba79b92c5e620d0dd31ac41d6149fc42f044a1b28dfe7a492c8b770
7
+ data.tar.gz: b52b91be9c13277b93325dc528308b7256d218f6c32ab3cc9c1bb80fbfdad0f3b72ac24480f3974b0fbacdfe30a3358d50c701fcd8af788b6e16f2d63a67bbc3
data/README.md CHANGED
@@ -37,7 +37,7 @@ Nixenvironment installs, updates and manages inner NIX environment stuff to make
37
37
  Then run this in Execute shell:
38
38
 
39
39
  # See credentials for deploy on https://qwiki.nixsolutions.com/display/IPT/Credentials
40
- $ ./gemify.sh && bundle update && sudo gem install nixenvironment --verbose
40
+ $ ./gemify.sh && bundle update && sudo gem install nixenvironment --verbose --no-document
41
41
 
42
42
  NOTE! CI must be configured with UTF-8 locale! Please see how to implement it for Jenkins:
43
43
 
data/bin/nixenvironment CHANGED
@@ -226,18 +226,6 @@ command :code_duplication_report do |c|
226
226
  end
227
227
  end
228
228
 
229
- command :tag do |c|
230
- c.syntax = 'nixenvironment tag'
231
- c.description = 'Make SVN/git/mercurial tag, SCM_USERNAME and SCM_PASSWORD must be defined on calling this target'
232
- c.action { tag }
233
- end
234
-
235
- command :svn_tag_from_jenkins do |c|
236
- c.syntax = 'nixenvironment svn_tag_from_jenkins'
237
- c.description = 'Make tag by finding the first credential in local credential storage'
238
- c.action { svn_tag_from_jenkins }
239
- end
240
-
241
229
  command :clean_working_copy do |c|
242
230
  c.syntax = 'nixenvironment clean_working_copy'
243
231
  c.description = 'Make working copy clean'
@@ -378,9 +366,9 @@ end
378
366
  def update_config_settings(key, value, table, need_separator)
379
367
  if value
380
368
  @config_settings[key] = value
381
- spec_column = "|SPECIFIED| directly"
369
+ spec_column = "Specified directly"
382
370
  else
383
- spec_column = "|NOT specified| directly. Used from Config"
371
+ spec_column = "Used from Config"
384
372
  end
385
373
 
386
374
  table.add_row [key, spec_column, @config_settings[key]]
@@ -388,25 +376,11 @@ def update_config_settings(key, value, table, need_separator)
388
376
  end
389
377
 
390
378
  def revision
391
- %x[ source _last_revision.sh && echo ${REVISION} ].strip!
379
+ BuildEnvVarsLoader.load_last_revision['REVISION']
392
380
  end
393
381
 
394
382
  def monotonic_revision
395
- %x[ source _last_revision.sh && echo ${MONOTONIC_REVISION} ].strip!
396
- end
397
-
398
- def working_copy_is_clean?
399
- system("
400
- source \"_last_revision.sh\"
401
-
402
- if [ ${WORKING_COPY_IS_CLEAN} -eq 1 ]; then
403
- echo \"Working copy is clean. Continuing ...\"
404
- else
405
- echo \"error: working copy must not have local modifications.\" 1>&2
406
- echo \"You must add following files and folders to .gitignore:\"
407
- echo \"#{Git.status(:porcelain => true)}\"
408
- exit 1
409
- fi")
383
+ BuildEnvVarsLoader.load_last_revision['MONOTONIC_REVISION']
410
384
  end
411
385
 
412
386
  def save_build_env_vars
@@ -425,7 +399,7 @@ def save_build_env_vars
425
399
 
426
400
  system("
427
401
  echo \"#!/bin/sh\
428
- ### AUTOGENERATED BY Nixenvironment; DO NOT EDIT ###
402
+ #{AUTOGENERATED_FILES_HEADER}
429
403
  PROJECT='#{@config_settings[PROJECT_KEY]}'
430
404
  BUILT_PRODUCTS_DIR='#{@config_settings[BUILT_PRODUCTS_DIR_KEY]}'
431
405
  OBJECTS_NORMAL_DIR='#{@config_settings[OBJECT_FILE_DIR_NORMAL_KEY]}'
@@ -447,13 +421,13 @@ RESIGNED_WIDGET_BUNDLE_ID='#{@config_settings[RESIGNED_WIDGET_BUNDLE_ID_KEY]}'
447
421
  RESIGNED_BUNDLE_NAME='#{@config_settings[RESIGNED_BUNDLE_NAME_KEY]}'
448
422
  RESIGNED_ENTITLEMENTS_PATH='#{@config_settings[RESIGNED_ENTITLEMENTS_PATH_KEY]}'
449
423
  RESIGNED_WATCHKIT_EXTENSION_ENTITLEMENTS_PATH='#{resigned_watchkit_extension_entitlements_path}'
450
- RESIGNED_WIDGET_ENTITLEMENTS_PATH='#{resigned_widget_entitlements_path}'\" > _last_build_vars.sh
424
+ RESIGNED_WIDGET_ENTITLEMENTS_PATH='#{resigned_widget_entitlements_path}'\" > #{AUTOGENERATED_LAST_BUILD_VARS}
451
425
  ")
452
426
  end
453
427
 
454
428
  def prebuild(config)
455
- system("#{SAVE_REVISION_SCRIPT_PATH}")
456
- error('Error! Working copy is not clean!') unless working_copy_is_clean?
429
+ SCM.save_revision
430
+ error('Error! Working copy is not clean!') unless BuildEnvVarsLoader.working_copy_is_clean?
457
431
  backup_info_plists
458
432
  save_build_env_vars
459
433
  update_info_plists(config)
@@ -488,6 +462,8 @@ def build(config, ipa, ndsym, icon_tagger)
488
462
 
489
463
  success("Make 'macos_zip' complete!")
490
464
  elsif sdk.include?('iphoneos')
465
+ puts
466
+
491
467
  if config == 'Release'
492
468
  puts 'IconTagger: configuration is Release. Skipping ...'
493
469
  else
@@ -499,6 +475,8 @@ def build(config, ipa, ndsym, icon_tagger)
499
475
  end
500
476
  end
501
477
 
478
+ puts
479
+
502
480
  ipa.split.each do |current_ipa|
503
481
  begin
504
482
  case current_ipa
@@ -522,8 +500,8 @@ def build(config, ipa, ndsym, icon_tagger)
522
500
  end
523
501
 
524
502
  def unity_build(configuration, unity_platform, unity_path, development_build, keystore_path, keystore_password, key_alias_name, key_alias_password)
525
- system("#{SAVE_REVISION_SCRIPT_PATH}")
526
- error('Error! Working copy is not clean!') unless working_copy_is_clean?
503
+ SCM.save_revision
504
+ error('Error! Working copy is not clean!') unless BuildEnvVarsLoader.working_copy_is_clean?
527
505
 
528
506
  if File.directory?(UNITY_EDITOR_DIR)
529
507
  FileUtils.cp_r(UNITY_BUILD_SCRIPTS_DIR, UNITY_EDITOR_DIR)
@@ -539,7 +517,7 @@ def unity_build(configuration, unity_platform, unity_path, development_build, ke
539
517
  puts 'Generating IOS project from UNITY project ...'
540
518
  unity_success = system("#{unity_path} -projectPath '#{Dir.pwd}' -batchmode -logFile -quit -executeMethod NIXBuilder.MakeiOSBuild -customArgs:'#{build_path_arg}#{development_build_arg}'")
541
519
  error('iOS build unity error!') unless unity_success
542
- success('IOS project was generated.')
520
+ success("IOS project was generated.\n")
543
521
  when 'macos'
544
522
  build_path_arg = "buildPath=#{UNITY_MACOS_BUILD_PATH}"
545
523
  development_build_arg = development_build ? ';developmentBuild=' : ''
@@ -569,7 +547,7 @@ def unity_build(configuration, unity_platform, unity_path, development_build, ke
569
547
 
570
548
  clean_working_copy(false)
571
549
 
572
- success('Unity build complete!')
550
+ success("Unity build complete!\n")
573
551
  end
574
552
 
575
553
  def tag_icon(short_version)
@@ -591,10 +569,12 @@ def tag_icon(short_version)
591
569
  end
592
570
 
593
571
  def backup_info_plists
572
+ puts
594
573
  @info_plist_backup_name = backup_info_plist(@config_settings[PRODUCT_SETTINGS_PATH_KEY], nil)
595
574
  @watchkit_app_info_plist_backup_name = backup_info_plist(@config_settings[WATCHKIT_APP_PRODUCT_SETTINGS_PATH_KEY], WATCHKIT_APP_PREFIX)
596
575
  @watchkit_extension_info_plist_backup_name = backup_info_plist(@config_settings[WATCHKIT_EXTENSION_PRODUCT_SETTINGS_PATH_KEY], WATCHKIT_EXTENSION_PREFIX)
597
576
  @widget_info_plist_backup_name = backup_info_plist(@config_settings[WIDGET_PRODUCT_SETTINGS_PATH_KEY], WIDGET_PREFIX)
577
+ puts
598
578
  end
599
579
 
600
580
  def backup_info_plist(product_settings_path, description)
@@ -634,14 +614,17 @@ def update_info_plist(product_settings_path, monotonic_revision, revision, bundl
634
614
  error("Update #{description}Info.plist error!", e)
635
615
  end
636
616
 
637
- success("#{description}Info.plist was updated.")
617
+ puts "#{description}Info.plist was updated."
618
+ puts
638
619
  end
639
620
 
640
621
  def restore_info_plists
622
+ puts
641
623
  restore_info_plist(@config_settings[PRODUCT_SETTINGS_PATH_KEY], @info_plist_backup_name, nil)
642
624
  restore_info_plist(@config_settings[WATCHKIT_APP_PRODUCT_SETTINGS_PATH_KEY], @watchkit_app_info_plist_backup_name, WATCHKIT_APP_PREFIX)
643
625
  restore_info_plist(@config_settings[WATCHKIT_EXTENSION_PRODUCT_SETTINGS_PATH_KEY], @watchkit_extension_info_plist_backup_name, WATCHKIT_EXTENSION_PREFIX)
644
626
  restore_info_plist(@config_settings[WIDGET_PRODUCT_SETTINGS_PATH_KEY], @widget_info_plist_backup_name, WIDGET_PREFIX)
627
+ puts
645
628
  end
646
629
 
647
630
  def restore_info_plist(product_settings_path, info_plist_backup_name, description)
@@ -659,55 +642,22 @@ def deploy(deliver_deploy)
659
642
  deploy_password = @config_settings[DEPLOY_PASSWORD_KEY].blank? ? ENV[DEPLOY_PASSWORD_KEY] : @config_settings[DEPLOY_PASSWORD_KEY]
660
643
  deploy_itunesconnect_username = @config_settings[DEPLOY_ITUNESCONNECT_USERNAME_KEY].blank? ? ENV[DEPLOY_ITUNESCONNECT_USERNAME_KEY] : @config_settings[DEPLOY_ITUNESCONNECT_USERNAME_KEY]
661
644
 
662
- deploy_itunesconnect_username ||= 'unknown'
663
- deliver_deploy = deliver_deploy ? 1 : 0
664
-
665
- sdk_name = %x[ source _last_build_vars.sh && echo ${SDK_NAME} ].strip!
666
-
667
- if sdk_name.include?('macos')
668
- build_env_vars = BuildEnvVarsLoader.load
669
- ipa_bundle_id = build_env_vars[IPA_BUNDLE_ID_KEY]
670
- current_app_version = build_env_vars[CURRENT_APP_VERSION_KEY]
671
- current_build_version = build_env_vars[CURRENT_BUILD_VERSION_KEY]
672
- name_for_deployment = build_env_vars[NAME_FOR_DEPLOYMENT_KEY]
673
- executable_name = build_env_vars[EXECUTABLE_NAME_KEY]
674
- ipa_product = build_env_vars[IPA_PRODUCT_KEY]
675
- app_dsym = build_env_vars[APP_DSYM_KEY]
676
- built_products_dir = build_env_vars[BUILT_PRODUCTS_DIR_KEY]
677
-
678
- local_path_to_app = File.join(Dir.tmpdir, ipa_bundle_id)
679
- local_path_to_build = File.join(local_path_to_app, "v.#{current_app_version}_#{current_build_version}")
680
- FileUtils.rm_rf(local_path_to_build)
681
- FileUtils.mkdir_p(local_path_to_build)
682
-
683
- configuration_full_path = File.join(local_path_to_build, name_for_deployment)
684
- FileUtils.mkdir(configuration_full_path)
685
- FileUtils.cp(ipa_product, File.join(configuration_full_path, executable_name) + ZIP_EXT)
686
-
687
- # TODO: mds currently doesn't support dsym for mac projects. Will be implemented later.
688
- # if File.exist?(app_dsym)
689
- # Dir.chdir(built_products_dir)
690
- # destination = File.join(configuration_full_path, "#{executable_name + APP_EXT + DSYM_EXT + ZIP_EXT}")
691
- # system("zip -r '#{destination}' '#{executable_name + APP_EXT + DSYM_EXT}'")
692
- # end
693
-
694
- deploy_path = @config_settings[DEPLOY_PATH_KEY].blank? ? MACOS_PROJECTS_DEPLOY_PATH : @config_settings[DEPLOY_PATH_KEY]
695
- deploy_success = system("#{DEPLOY_SCRIPT_PATH} #{deploy_host} #{deploy_path} #{deploy_username} #{deploy_password} #{local_path_to_app}")
696
- else
697
- deploy_path = @config_settings[DEPLOY_PATH_KEY].blank? ? ENV[DEPLOY_PATH_KEY] : @config_settings[DEPLOY_PATH_KEY]
698
- deploy_success = system("#{DEPLOY_IPA_SCRIPT_PATH} #{deploy_host} #{deploy_path} #{deploy_username} #{deploy_password} #{deploy_itunesconnect_username} #{deliver_deploy}")
699
- end
645
+ sdk_name = BuildEnvVarsLoader.load_last_build_vars[SDK_NAME_KEY]
700
646
 
701
- deploy_success ? success('Deploy complete!') : error('Deploy error!')
647
+ deploy_path = sdk_name.include?('macos') ? MACOS_PROJECTS_DEPLOY_PATH : ENV[DEPLOY_PATH_KEY]
648
+ deploy_path = @config_settings[DEPLOY_PATH_KEY] if @config_settings[DEPLOY_PATH_KEY].present?
649
+ Deployer.deploy(deploy_host, deploy_path, deploy_username, deploy_password, deploy_itunesconnect_username, deliver_deploy)
650
+
651
+ success('Deploy complete!')
702
652
  end
703
653
 
704
654
  def clean
705
655
  FileUtils.rm_f(Dir.glob('*.pyc'))
706
- FileUtils.rm_f('last_revision.sh')
707
- FileUtils.rm_f('last_build_vars.sh')
708
- FileUtils.rm_f('coverage.xml')
709
- FileUtils.rm_f('duplication.xml')
710
- FileUtils.rm_rf('test-results/')
656
+ FileUtils.rm_f(AUTOGENERATED_LAST_REVISION)
657
+ FileUtils.rm_f(AUTOGENERATED_LAST_BUILD_VARS)
658
+ FileUtils.rm_f(AUTOGENERATED_COVERAGE)
659
+ FileUtils.rm_f(AUTOGENERATED_DUPLICATION)
660
+ FileUtils.rm_rf(AUTOGENERATED_TEST_RESULTS)
711
661
  Xcodebuild.clean_all_targets
712
662
  end
713
663
 
@@ -738,32 +688,18 @@ def code_coverage
738
688
  end
739
689
 
740
690
  def code_duplication_report
741
- duplication_success = system("#{CODE_DUPLICATION_REPORT_SCRIPT_PATH} \"#{@config_settings[EXCLUDE_PATTERN_FOR_CODE_DUPLICATION_KEY]}\" duplication.xml")
691
+ duplication_success = system("#{CODE_DUPLICATION_REPORT_SCRIPT_PATH} '#{@config_settings[EXCLUDE_PATTERN_FOR_CODE_DUPLICATION_KEY]}' #{AUTOGENERATED_DUPLICATION}")
742
692
  error('Generate code duplication error!') unless duplication_success
743
693
  end
744
694
 
745
- def tag
746
- tag_success = system("#{MAKE_TAG_SCRIPT_PATH} \"#{ENV[SCM_USERNAME_KEY]}\" \"#{ENV[SCM_PASSWORD_KEY]}\"")
747
- error('Make tag error!') unless tag_success
748
- end
749
-
750
- # Jenkins stores SVN credentials locally in XML, so this command gets and uses them on making tag by finding the first credential in local credential storage
751
- # ATTENTION: if this command picks up wrong credentials, then you should manually edit subversion.credentials file on Jenkins in order to remove the wrong credential
752
- # Additional |echo| is needed in order to add newline, otherwise base64 encoding doesn't work
753
- def svn_tag_from_jenkins
754
- ENV[SCM_USERNAME_KEY]=%x[ $(shell xpath ../subversion.credentials \(//userName\)[1]/text\(\)) ]
755
- ENV[SCM_PASSWORD_KEY]=%x[ $(shell echo $$(xpath ../subversion.credentials \(//password\)[1]/text\(\) 2>/dev/null && echo) | openssl base64 -d) ]
756
-
757
- tag
758
- end
759
-
760
695
  def clean_working_copy(all)
761
- clean_all = all ? 'all' : nil
762
- clean_success = system("#{CLEAN_WORKING_COPY_SCRIPT_PATH} #{clean_all}")
763
- error('Clean working copy error!') unless clean_success
696
+ SCM.clean_working_copy(all)
697
+ error('Clean working copy error!') unless $?.success?
764
698
  end
765
699
 
766
700
  def error(msg, e = nil)
701
+ puts
702
+
767
703
  if e.present?
768
704
  puts e.inspect
769
705
  puts e.backtrace
@@ -773,5 +709,6 @@ def error(msg, e = nil)
773
709
  end
774
710
 
775
711
  def success(msg)
712
+ puts
776
713
  puts msg.green.bold
777
714
  end
@@ -5,3 +5,5 @@ require 'nixenvironment/xcodebuild'
5
5
  require 'nixenvironment/archiver'
6
6
  require 'nixenvironment/build_env_vars_loader'
7
7
  require 'nixenvironment/plist'
8
+ require 'nixenvironment/scm'
9
+ require 'nixenvironment/deployer'
@@ -50,16 +50,18 @@ module Nixenvironment
50
50
  end
51
51
 
52
52
  def make_macos_zip
53
- build_env_vars = BuildEnvVarsLoader.load
54
- built_products_dir = build_env_vars[BUILT_PRODUCTS_DIR_KEY].presence
55
- executable_name = build_env_vars[EXECUTABLE_NAME_KEY].presence
56
- target_name = build_env_vars[TARGET_NAME_KEY].presence
57
- configuration = build_env_vars[CONFIGURATION_KEY].presence
58
- app_product = build_env_vars[APP_PRODUCT_KEY].presence
53
+ load_last_build_vars = BuildEnvVarsLoader.load_last_build_vars
54
+ built_products_dir = load_last_build_vars[BUILT_PRODUCTS_DIR_KEY].presence
55
+ executable_name = load_last_build_vars[EXECUTABLE_NAME_KEY].presence
56
+ target_name = load_last_build_vars[TARGET_NAME_KEY].presence
57
+ configuration = load_last_build_vars[CONFIGURATION_KEY].presence
58
+ app_product = load_last_build_vars[APP_PRODUCT_KEY].presence
59
59
 
60
60
  new_ipa_name = "#{executable_name}-#{target_name}-#{configuration}"
61
61
  new_ipa_path = File.join(built_products_dir, new_ipa_name) + ZIP_EXT
62
+ puts
62
63
  puts "IPA_PRODUCT = #{new_ipa_path}"
64
+ puts
63
65
 
64
66
  Dir.mktmpdir do |tmp_dir|
65
67
  dest_app_dir = File.join(tmp_dir, new_ipa_name)
@@ -77,10 +79,7 @@ module Nixenvironment
77
79
  end
78
80
 
79
81
  puts "--> Zip '#{tmp_dir}' into '#{new_ipa_path}' ..."
80
- Dir.chdir(tmp_dir) do
81
- zip_success = system("/usr/bin/zip --symlinks --verbose --recurse-paths \"#{new_ipa_path}\" .")
82
- raise unless zip_success
83
- end
82
+ Dir.chdir(tmp_dir) { system("/usr/bin/zip --symlinks --verbose --recurse-paths '#{new_ipa_path}' .") }
84
83
  end
85
84
 
86
85
  ipa_bundle_id = get_bundle_id(File.join(app_product, 'Contents'))
@@ -89,7 +88,7 @@ module Nixenvironment
89
88
  IPA_PRODUCT='#{new_ipa_path}'
90
89
  IPA_BUNDLE_ID='#{ipa_bundle_id}'
91
90
  NAME_FOR_DEPLOYMENT='#{configuration}'
92
- \" >> _last_build_vars.sh")
91
+ \" >> #{AUTOGENERATED_LAST_BUILD_VARS}")
93
92
  end
94
93
 
95
94
  private
@@ -99,43 +98,34 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
99
98
  is_appstore = ipa_product_suffix.present? && ipa_product_suffix.include?('Appstore')
100
99
  is_adhoc = ipa_product_suffix.present? && ipa_product_suffix.include?('AdHoc')
101
100
 
102
- build_env_vars = BuildEnvVarsLoader.load
103
- built_products_dir = build_env_vars[BUILT_PRODUCTS_DIR_KEY].presence
104
- executable_name = build_env_vars[EXECUTABLE_NAME_KEY].presence
105
- target_name = build_env_vars[TARGET_NAME_KEY].presence
106
- configuration = build_env_vars[CONFIGURATION_KEY].presence
107
- app_product = build_env_vars[APP_PRODUCT_KEY].presence
108
-
109
- watchkit_app_relative_product = build_env_vars['WATCHKIT_APP_RELATIVE_PRODUCT'].presence
110
- watchkit_extension_relative_product = build_env_vars['WATCHKIT_EXTENSION_RELATIVE_PRODUCT'].presence
111
- widget_relative_product = build_env_vars['WIDGET_RELATIVE_PRODUCT'].presence
112
-
113
- resigned_bundle_id = is_resigned ? build_env_vars[RESIGNED_BUNDLE_ID_KEY].presence : nil
114
- resigned_watchkit_app_bundle_id = is_resigned ? build_env_vars[RESIGNED_WATCHKIT_APP_BUNDLE_ID_KEY].presence : nil
115
- resigned_watchkit_extension_bundle_id = is_resigned ? build_env_vars[RESIGNED_WATCHKIT_EXTENSION_BUNDLE_ID_KEY].presence : nil
116
- resigned_widget_bundle_id = is_resigned ? build_env_vars[RESIGNED_WIDGET_BUNDLE_ID_KEY].presence : nil
117
- resigned_bundle_name = is_resigned ? build_env_vars[RESIGNED_BUNDLE_NAME_KEY].presence : nil
118
- resigned_entitlements_path = is_resigned ? build_env_vars[RESIGNED_ENTITLEMENTS_PATH_KEY].presence : nil
119
- resigned_watchkit_extension_entitlements_path = is_resigned ? build_env_vars[RESIGNED_WATCHKIT_EXTENSION_ENTITLEMENTS_PATH_KEY].presence : nil
120
- resigned_widget_entitlements_path = is_resigned ? build_env_vars[RESIGNED_WIDGET_ENTITLEMENTS_PATH_KEY].presence : nil
101
+ load_last_build_vars = BuildEnvVarsLoader.load_last_build_vars
102
+ built_products_dir = load_last_build_vars[BUILT_PRODUCTS_DIR_KEY].presence
103
+ executable_name = load_last_build_vars[EXECUTABLE_NAME_KEY].presence
104
+ target_name = load_last_build_vars[TARGET_NAME_KEY].presence
105
+ configuration = load_last_build_vars[CONFIGURATION_KEY].presence
106
+ app_product = load_last_build_vars[APP_PRODUCT_KEY].presence
107
+
108
+ watchkit_app_relative_product = load_last_build_vars['WATCHKIT_APP_RELATIVE_PRODUCT'].presence
109
+ watchkit_extension_relative_product = load_last_build_vars['WATCHKIT_EXTENSION_RELATIVE_PRODUCT'].presence
110
+ widget_relative_product = load_last_build_vars['WIDGET_RELATIVE_PRODUCT'].presence
111
+
112
+ resigned_bundle_id = is_resigned ? load_last_build_vars[RESIGNED_BUNDLE_ID_KEY].presence : nil
113
+ resigned_watchkit_app_bundle_id = is_resigned ? load_last_build_vars[RESIGNED_WATCHKIT_APP_BUNDLE_ID_KEY].presence : nil
114
+ resigned_watchkit_extension_bundle_id = is_resigned ? load_last_build_vars[RESIGNED_WATCHKIT_EXTENSION_BUNDLE_ID_KEY].presence : nil
115
+ resigned_widget_bundle_id = is_resigned ? load_last_build_vars[RESIGNED_WIDGET_BUNDLE_ID_KEY].presence : nil
116
+ resigned_bundle_name = is_resigned ? load_last_build_vars[RESIGNED_BUNDLE_NAME_KEY].presence : nil
117
+ resigned_entitlements_path = is_resigned ? load_last_build_vars[RESIGNED_ENTITLEMENTS_PATH_KEY].presence : nil
118
+ resigned_watchkit_extension_entitlements_path = is_resigned ? load_last_build_vars[RESIGNED_WATCHKIT_EXTENSION_ENTITLEMENTS_PATH_KEY].presence : nil
119
+ resigned_widget_entitlements_path = is_resigned ? load_last_build_vars[RESIGNED_WIDGET_ENTITLEMENTS_PATH_KEY].presence : nil
121
120
 
122
121
  ipa_product = "#{built_products_dir}/#{executable_name}-#{target_name}-#{configuration}#{ipa_product_suffix}.ipa"
123
122
  puts "#{ipa_product_key} = #{ipa_product}"
124
123
 
125
- if is_appstore
126
- app_name = File.basename(app_product)
127
- temp_app_product = File.join(Dir.tmpdir, app_name)
128
-
129
- FileUtils.cp_r(app_product, temp_app_product)
130
-
131
- set_plist_values_in_app_path(temp_app_product, 'Configuration' => 'Appstore')
132
- end
133
-
134
124
  @valid_keychain_identities_cache = get_valid_keychain_identities
135
125
 
136
126
  resign(app_product, ipa_product, watchkit_app_relative_product, watchkit_extension_relative_product, widget_relative_product,
137
127
  resigned_bundle_id, resigned_watchkit_app_bundle_id, resigned_watchkit_extension_bundle_id, resigned_widget_bundle_id,
138
- resigned_bundle_name, resigned_entitlements_path, resigned_watchkit_extension_entitlements_path, resigned_widget_entitlements_path, profile_type)
128
+ resigned_bundle_name, resigned_entitlements_path, resigned_watchkit_extension_entitlements_path, resigned_widget_entitlements_path, profile_type, is_appstore)
139
129
 
140
130
  ipa_bundle_id = is_resigned ? resigned_bundle_id : get_bundle_id(app_product)
141
131
 
@@ -147,13 +137,11 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
147
137
  name_for_deployment = configuration
148
138
  end
149
139
 
150
- system("echo \"\n# generated by Nixenvironment:
140
+ system("echo \"\n
151
141
  #{ipa_product_key}='#{ipa_product}'
152
142
  #{ipa_bundle_id_key}='#{ipa_bundle_id}'
153
143
  #{name_for_deployment_key}='#{name_for_deployment}'
154
- \" >> _last_build_vars.sh")
155
-
156
- FileUtils.rm_rf(temp_app_product) if is_appstore
144
+ \" >> #{AUTOGENERATED_LAST_BUILD_VARS}")
157
145
  end
158
146
 
159
147
  # Resigns specified .app product and packages it into .ipa file. Finds best matching provisioning profile based on specified options.
@@ -163,7 +151,7 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
163
151
  def resign(app_product_path, new_ipa_path, watchkit_app_relative_product_path = nil, watchkit_extension_relative_product_path = nil,
164
152
  widget_relative_product_path = nil, new_bundle_id = nil, new_watchkit_app_bundle_id = nil, new_watchkit_extension_bundle_id = nil,
165
153
  new_widget_bundle_id = nil, new_bundle_name = nil, new_entitlements_path = nil, new_watchkit_extension_entitlements_path = nil,
166
- new_widget_entitlements_path = nil, profile_type = PROFILE_TYPE_DEVELOPER)
154
+ new_widget_entitlements_path = nil, profile_type = PROFILE_TYPE_DEVELOPER, is_appstore = false)
167
155
  raise "Unknown profile type '#{profile_type}'! Must be from #{AVAILABLE_PROFILE_TYPES}" unless AVAILABLE_PROFILE_TYPES.include?(profile_type)
168
156
 
169
157
  new_bundle_id ||= get_bundle_id(app_product_path)
@@ -207,7 +195,7 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
207
195
  new_bundle_id, new_watchkit_app_bundle_id, new_watchkit_extension_bundle_id, new_widget_bundle_id, new_bundle_name,
208
196
  new_entitlements_path, new_watchkit_extension_entitlements_path, new_widget_entitlements_path,
209
197
  profile_info.path, identity_name, watchkit_app_profile_path, watchkit_app_identity_name, watchkit_extension_profile_path, watchkit_extension_identity_name,
210
- widget_profile_path, widget_identity_name)
198
+ widget_profile_path, widget_identity_name, is_appstore)
211
199
  end
212
200
 
213
201
  def find_profile_info_and_identity_name(profile_type, new_bundle_id)
@@ -224,12 +212,13 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
224
212
  profiles_and_identities.each { |item| pp item.first.to_s, item.last }
225
213
 
226
214
  puts "--> Looking for the best match among found profiles, based on similarity between profile's app id and desired bundle id ..."
227
- best_match = find_best_match_for_bundle_id(profiles_and_identities, new_bundle_id)
228
- puts_header "--> Best match: #{best_match.to_s}"
229
215
 
216
+ best_match = find_best_match_for_bundle_id(profiles_and_identities, new_bundle_id)
230
217
  profile_info = best_match.first
231
218
  identity_name = best_match.last
232
219
 
220
+ puts_header "--> Best match: #{profile_info.to_s}, identity_name='#{identity_name}'"
221
+
233
222
  return profile_info, identity_name
234
223
  end
235
224
 
@@ -256,7 +245,7 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
256
245
  new_bundle_id, new_watchkit_app_bundle_id, new_watchkit_extension_bundle_id, new_widget_bundle_id, new_bundle_name,
257
246
  new_entitlements_path, new_watchkit_extension_entitlements_path, new_widget_entitlements_path,
258
247
  profile_path, identity_name, watchkit_app_profile_path, watchkit_app_identity_name, watchkit_extension_profile_path, watchkit_extension_identity_name,
259
- widget_profile_path, widget_identity_name)
248
+ widget_profile_path, widget_identity_name, is_appstore)
260
249
  Dir.mktmpdir do |tmp_dir|
261
250
  dest_app_dir = File.join(tmp_dir, "Payload")
262
251
  dest_app_product_path = File.join(dest_app_dir, File.basename(app_product_path))
@@ -267,6 +256,8 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
267
256
  puts "--> Copy '#{app_product_path}' into '#{dest_app_product_path}' ..."
268
257
  FileUtils.cp_r(app_product_path, dest_app_product_path)
269
258
 
259
+ set_plist_values_in_app_path(app_product_path, 'Configuration' => 'Appstore') if is_appstore
260
+
270
261
  # replace provision, rename bundle_id and bundle_name
271
262
  is_provision_replaced = replace_provision(dest_app_product_path, profile_path)
272
263
  is_bundle_id_or_name_changed = rename_bundle_id_and_name(dest_app_product_path, new_bundle_id, new_bundle_name)
@@ -320,11 +311,13 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
320
311
 
321
312
  if Dir.exist?(new_ipa_path)
322
313
  puts "--> Remove old '#{new_ipa_path}' ..."
323
- FileUtils.rm(new_ipa_path)
314
+ FileUtils.rm_rf(new_ipa_path)
324
315
  end
325
316
 
326
317
  puts "--> Zip '#{tmp_dir}' into '#{new_ipa_path}' ..."
327
318
  Dir.chdir(tmp_dir) { system("/usr/bin/zip --symlinks --verbose --recurse-paths '#{new_ipa_path}' .") }
319
+
320
+ puts
328
321
  end
329
322
  end
330
323