nixenvironment 0.0.70 → 0.0.71

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 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