nixenvironment 0.0.67 → 0.0.68
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/nixenvironment +61 -24
- data/legacy/UnityBuildAutomationScripts/NIXBuilder.cs +28 -2
- data/lib/nixenvironment/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: 8a8a720fb6217e2b04685a2f71b7f11856a0e7ee
|
4
|
+
data.tar.gz: d7e0c0eafae687a85f4816b76109c852d915d0a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49c1ecf47b7b61763eee3de8a83a9202bc78704dba1c7ff5f5dac54c9756c0176abcfb64536dea5bde6d5e34d3a012b47041abf855feeccade4aec69759c8667
|
7
|
+
data.tar.gz: 37f92ab70e4895ef634b1d258ba0bc4226e33e5853cbcdec29945497e2a67451ce211746ead1ed1fa424153284387ffb79ad7be58cb3e3b39eb6bbe8490a7482
|
data/bin/nixenvironment
CHANGED
@@ -9,6 +9,7 @@ require 'tmpdir'
|
|
9
9
|
require 'active_support/core_ext/object/blank'
|
10
10
|
require 'terminal-table'
|
11
11
|
require 'colorize'
|
12
|
+
require 'nokogiri'
|
12
13
|
|
13
14
|
include Nixenvironment
|
14
15
|
|
@@ -68,23 +69,48 @@ command :build do |c|
|
|
68
69
|
c.option '--keystore_password PASSWORD', String, 'Specify the password for accessing a .keystore file'
|
69
70
|
c.option '--key_alias_name NAME', String, 'Specify the alias name which should be used from .keystore file to sign a release version of an APK'
|
70
71
|
c.option '--key_alias_password PASSWORD', String, 'Specify the password for accessing an alias name'
|
71
|
-
c.option '--unity_platform TARGET PLATFORM', String, 'Select target platform for unity build (ios
|
72
|
+
c.option '--unity_platform TARGET PLATFORM', String, 'Select target platform for unity build (ios | macos | android | winphone)'
|
72
73
|
c.option '--ndsym', 'Disable .dsym generation for ios project'
|
73
74
|
c.option '--ci_build', 'Deprecated' # TODO: remove
|
74
75
|
c.option '--icon_tagger MODE', String, 'Set XcodeIconTagger mode (full, short, off)'
|
76
|
+
c.option '--app_version VERSION', String, 'Specify the version of the app (for mac and unity-winphone builds only)'
|
75
77
|
c.action do |_args, options|
|
76
78
|
options.default :config => 'Debug', :ipa => 'device', :icon_tagger => 'full', :unity_path => 'UNITY'
|
77
79
|
|
78
|
-
need_to_build_ios
|
80
|
+
need_to_build_ios = true
|
81
|
+
need_to_process_macos_build = false
|
82
|
+
need_to_process_winphone_build = false
|
79
83
|
is_unity_platform = options.unity_platform.present?
|
80
84
|
|
81
85
|
if is_unity_platform
|
82
86
|
unity_path = ENV[options.unity_path] || options.unity_path
|
83
|
-
|
84
|
-
|
87
|
+
unity_build(options.config, options.unity_platform, unity_path, options.development_build, options.keystore_path, options.keystore_password, options.key_alias_name, options.key_alias_password)
|
88
|
+
need_to_build_ios = options.unity_platform == 'ios'
|
89
|
+
need_to_process_macos_build = options.unity_platform == 'macos'
|
90
|
+
need_to_process_winphone_build = options.unity_platform == 'winphone'
|
85
91
|
end
|
86
92
|
|
87
|
-
if
|
93
|
+
if need_to_process_macos_build
|
94
|
+
build_path = File.join(UNITY_IOS_PROJECT_PATH, 'build.app')
|
95
|
+
plist_path = File.join(build_path, 'Contents/Info.plist')
|
96
|
+
|
97
|
+
info_plist = Plist.from_file(plist_path)
|
98
|
+
info_plist['CFBundleVersion'] = monotonic_revision
|
99
|
+
info_plist['CFBundleShortVersionString'] = options.app_version if options.app_version.present?
|
100
|
+
info_plist['CFBundleName'] = $resigned_bundle_name if $resigned_bundle_name.present?
|
101
|
+
info_plist['CFBundleDisplayName'] = $resigned_bundle_name if $resigned_bundle_name.present?
|
102
|
+
info_plist.save(plist_path, Plist::FORMAT_XML)
|
103
|
+
elsif need_to_process_winphone_build
|
104
|
+
build_path = File.join(Dir.pwd, 'Builds/WinPhone')
|
105
|
+
manifest_path = Dir.glob("#{build_path}/**/*.appxmanifest").first
|
106
|
+
|
107
|
+
File.open(manifest_path,'w') do |f|
|
108
|
+
manifest = Nokogiri::XML(File.open(f))
|
109
|
+
manifest.at('Package/Identity')['Version'] = "#{options.app_version}.#{monotonic_revision}"
|
110
|
+
end
|
111
|
+
|
112
|
+
# TODO: update app_version
|
113
|
+
elsif need_to_build_ios
|
88
114
|
Dir.chdir(UNITY_IOS_PROJECT_PATH) if is_unity_platform
|
89
115
|
read_config_settings
|
90
116
|
@config_settings[CONFIGURATION_KEY] = options.config
|
@@ -330,6 +356,10 @@ def update_config_settings(key, value, table, need_separator)
|
|
330
356
|
table.add_separator if need_separator
|
331
357
|
end
|
332
358
|
|
359
|
+
def monotonic_revision
|
360
|
+
%x[ source _last_revision.sh && echo ${MONOTONIC_REVISION} ].strip!
|
361
|
+
end
|
362
|
+
|
333
363
|
def working_copy_is_clean?
|
334
364
|
system("
|
335
365
|
source \"_last_revision.sh\"
|
@@ -457,8 +487,6 @@ def build(config, ipa, ndsym, icon_tagger)
|
|
457
487
|
end
|
458
488
|
|
459
489
|
def unity_build(configuration, unity_platform, unity_path, development_build, keystore_path, keystore_password, key_alias_name, key_alias_password)
|
460
|
-
need_to_build_ios = false
|
461
|
-
|
462
490
|
system("#{SAVE_REVISION_SCRIPT_PATH}")
|
463
491
|
error('Error! Working copy is not clean!') unless working_copy_is_clean?
|
464
492
|
|
@@ -470,16 +498,20 @@ def unity_build(configuration, unity_platform, unity_path, development_build, ke
|
|
470
498
|
|
471
499
|
case unity_platform
|
472
500
|
when 'ios'
|
473
|
-
|
501
|
+
build_path_arg = "buildPath=#{UNITY_IOS_PROJECT_PATH}"
|
474
502
|
development_build_arg = development_build ? ';developmentBuild=' : ''
|
475
503
|
|
476
504
|
puts 'Generating IOS project from UNITY project ...'
|
477
|
-
unity_success = system("#{unity_path} -executeMethod NIXBuilder.MakeiOSBuild -
|
478
|
-
-batchmode -logFile -quit -customArgs:buildPath='#{UNITY_IOS_PROJECT_PATH}#{development_build_arg}'")
|
505
|
+
unity_success = system("#{unity_path} -projectPath '#{Dir.pwd}' -batchmode -logFile -quit -executeMethod NIXBuilder.MakeiOSBuild -customArgs:'#{build_path_arg}#{development_build_arg}'")
|
479
506
|
error('iOS build unity error!') unless unity_success
|
480
507
|
success('IOS project was generated.')
|
508
|
+
when 'macos'
|
509
|
+
build_path = File.join(UNITY_IOS_PROJECT_PATH, 'build.app')
|
510
|
+
build_path_arg = "buildPath=#{build_path}"
|
511
|
+
development_build_arg = development_build ? ';developmentBuild=' : ''
|
481
512
|
|
482
|
-
|
513
|
+
unity_success = system("#{unity_path} -projectPath '#{Dir.pwd}' -batchmode -logFile -quit -executeMethod NIXBuilder.MakeMacOSBuild -customArgs:'#{build_path_arg}#{development_build_arg}'")
|
514
|
+
error('iOS build unity error!') unless unity_success
|
483
515
|
when 'android'
|
484
516
|
development_build_arg = development_build ? '--development-build' : ''
|
485
517
|
keystore_path_arg = keystore_path ? "--keystore-path #{keystore_path}" : ''
|
@@ -490,22 +522,27 @@ def unity_build(configuration, unity_platform, unity_path, development_build, ke
|
|
490
522
|
build_success = system("#{UNITY_BUILD_ANDROID_SCRIPT_PATH} --configuration #{configuration} --unity-path #{unity_path}\
|
491
523
|
#{development_build_arg} #{keystore_path_arg} #{keystore_password_arg} #{key_alias_name_arg} #{key_alias_password_arg}")
|
492
524
|
error('Android build unity error!') unless build_success
|
493
|
-
|
494
|
-
|
525
|
+
when 'winphone'
|
526
|
+
build_path = File.join(Dir.pwd, 'Builds/WinPhone')
|
527
|
+
build_path_arg = "buildPath=#{build_path}"
|
528
|
+
development_build_arg = development_build ? ';developmentBuild=' : ''
|
529
|
+
|
530
|
+
puts 'Generating WinPhone project from UNITY project ...'
|
531
|
+
build_success = system("#{unity_path} -projectPath '#{Dir.pwd}' -batchmode -logFile -quit -executeMethod NIXBuilder.MakeWinPhoneBuild -customArgs:'#{build_path_arg}#{development_build_arg}'")
|
532
|
+
error('WinPhone build unity error!') unless build_success
|
495
533
|
else
|
496
534
|
error("Error: Unknown unity target platform '#{unity_platform}'!")
|
497
535
|
end
|
498
536
|
|
499
|
-
|
537
|
+
clean_working_copy(false)
|
500
538
|
|
501
|
-
|
539
|
+
success('Unity build complete!')
|
502
540
|
end
|
503
541
|
|
504
542
|
def tag_icon(short_version)
|
505
543
|
plist_path = @config_settings[PRODUCT_SETTINGS_PATH_KEY]
|
506
544
|
info_plist = Plist.from_file(plist_path)
|
507
545
|
version = info_plist['CFBundleShortVersionString']
|
508
|
-
monotonic_revision = %x[ source _last_revision.sh && echo ${MONOTONIC_REVISION} ].strip!
|
509
546
|
style = short_version ? 'OneLine' : 'TwoLine'
|
510
547
|
mask_path = File.join(TAGGER_UTILITY_DIRECTORY, "masks/#{style}Mask.png")
|
511
548
|
icons_dir = File.join(Dir.pwd, @config_settings[ICONS_PATH_KEY])
|
@@ -539,14 +576,14 @@ def backup_info_plist(product_settings_path, description)
|
|
539
576
|
end
|
540
577
|
|
541
578
|
def update_info_plists(config)
|
542
|
-
revision
|
543
|
-
|
544
|
-
bundle_id
|
545
|
-
|
546
|
-
update_info_plist(@config_settings[PRODUCT_SETTINGS_PATH_KEY],
|
547
|
-
update_info_plist(@config_settings[WATCHKIT_APP_PRODUCT_SETTINGS_PATH_KEY],
|
548
|
-
update_info_plist(@config_settings[WATCHKIT_EXTENSION_PRODUCT_SETTINGS_PATH_KEY],
|
549
|
-
update_info_plist(@config_settings[WIDGET_PRODUCT_SETTINGS_PATH_KEY],
|
579
|
+
revision = %x[ source _last_revision.sh && echo ${REVISION} ].strip!
|
580
|
+
monoc_revision = monotonic_revision
|
581
|
+
bundle_id = @config_settings[BUNDLE_ID_KEY]
|
582
|
+
|
583
|
+
update_info_plist(@config_settings[PRODUCT_SETTINGS_PATH_KEY], monoc_revision, revision, bundle_id, config, nil)
|
584
|
+
update_info_plist(@config_settings[WATCHKIT_APP_PRODUCT_SETTINGS_PATH_KEY], monoc_revision, nil, nil, nil, WATCHKIT_APP_PREFIX)
|
585
|
+
update_info_plist(@config_settings[WATCHKIT_EXTENSION_PRODUCT_SETTINGS_PATH_KEY], monoc_revision, nil, nil, nil, WATCHKIT_EXTENSION_PREFIX)
|
586
|
+
update_info_plist(@config_settings[WIDGET_PRODUCT_SETTINGS_PATH_KEY], monoc_revision, nil, nil, nil, WIDGET_PREFIX)
|
550
587
|
end
|
551
588
|
|
552
589
|
def update_info_plist(product_settings_path, monotonic_revision, revision, bundle_id, config, description)
|
@@ -78,10 +78,36 @@ public static class NIXBuilder
|
|
78
78
|
PlayerSettings.Android.keyaliasName = null;
|
79
79
|
PlayerSettings.Android.keyaliasPass = null;
|
80
80
|
}
|
81
|
+
|
82
|
+
BuildTarget buildTarget = BuildTarget.Android;
|
81
83
|
|
82
|
-
EditorUserBuildSettings.SwitchActiveBuildTarget(
|
83
|
-
BuildPipeline.BuildPlayer(GetScenePaths(), buildPath,
|
84
|
+
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
|
85
|
+
BuildPipeline.BuildPlayer(GetScenePaths(), buildPath, buildTarget, GetBuildOptions());
|
84
86
|
}
|
87
|
+
|
88
|
+
public static void MakeWinPhoneBuild()
|
89
|
+
{
|
90
|
+
string projectPath = CommandLineReader.GetCustomArgument(BuildPathArgument);
|
91
|
+
CreateFolder(projectPath);
|
92
|
+
|
93
|
+
BuildTarget buildTarget = BuildTarget.WSAPlayer;
|
94
|
+
|
95
|
+
EditorUserBuildSettings.wsaSDK = WSASDK.PhoneSDK81;
|
96
|
+
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
|
97
|
+
|
98
|
+
BuildPipeline.BuildPlayer(GetScenePaths(), projectPath, buildTarget, GetBuildOptions());
|
99
|
+
}
|
100
|
+
|
101
|
+
public static void MakeMacOSBuild()
|
102
|
+
{
|
103
|
+
string buildPath = CommandLineReader.GetCustomArgument(BuildPathArgument);
|
104
|
+
CreateFolder(Path.GetDirectoryName(buildPath));
|
105
|
+
|
106
|
+
BuildTarget buildTarget = BuildTarget.StandaloneOSXUniversal;
|
107
|
+
|
108
|
+
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
|
109
|
+
BuildPipeline.BuildPlayer(GetScenePaths(), buildPath, buildTarget, GetBuildOptions());
|
110
|
+
}
|
85
111
|
|
86
112
|
public static void CreateFolder(string thePath)
|
87
113
|
{
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nixenvironment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.68
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-11-
|
12
|
+
date: 2015-11-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cocoapods
|