fastlane-plugin-unity_exporter 1.0.2 → 1.2.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/README.md +52 -4
- data/lib/fastlane/plugin/unity_exporter/actions/unity_commit_version_bump.rb +3 -2
- data/lib/fastlane/plugin/unity_exporter/actions/unity_export.rb +27 -4
- data/lib/fastlane/plugin/unity_exporter/actions/unity_get_build_number.rb +44 -0
- data/lib/fastlane/plugin/unity_exporter/actions/unity_get_version_number.rb +44 -0
- data/lib/fastlane/plugin/unity_exporter/helper/generic_helper.rb +35 -0
- data/lib/fastlane/plugin/unity_exporter/helper/unity_editor_helper.rb +19 -7
- data/lib/fastlane/plugin/unity_exporter/helper/unity_hub_helper.rb +1 -1
- data/lib/fastlane/plugin/unity_exporter/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f871c4202b1c52b9d5d719312834f66f9374a6a16319925a6e39d5d3f87f258
|
4
|
+
data.tar.gz: 6c74a627ee70148c1b27d52421f5bf275d5ce2405c60588db6abeee04dcded2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e62253ae48ffaa41ee6a62ce09e91b0d10dcc610e05216ddec73414ea2f1d295263c95117289fd9ca33c0622036f98e9e7d44cddb3fedf360e4245378a569aa9
|
7
|
+
data.tar.gz: 3ce7dc870812337f11e80c9de94910697b47278dc98b31d51dbffe7b5006516bbb7b07342693269ee624d818000a931c4d31c9e4fecb4d4a9e63d6ae8e916482
|
data/README.md
CHANGED
@@ -88,8 +88,21 @@ unity_export(build_target: "...", new_version_code: "42")
|
|
88
88
|
# increments the existing version code (Android) and build number (iOS)
|
89
89
|
unity_export(build_target: "...", new_version_code: "increment")
|
90
90
|
|
91
|
-
#
|
92
|
-
|
91
|
+
# the expected default path is in accordance with the "getting started" section of this readme
|
92
|
+
# if a custom path to the Unity project is required, it's specified this way
|
93
|
+
# note that the starting point for relative paths is the directory that contains the 'fastlane' folder
|
94
|
+
unity_export(build_target: "...", project_path: "path/some-example-unity-projects-directory")
|
95
|
+
|
96
|
+
# exports the Unity project to the specified path
|
97
|
+
# if no export path is specified, a default path will be used
|
98
|
+
# note that the starting point for relative paths is the root of the Unity project
|
99
|
+
unity_export(build_target: "...", export_path: "path/some-example-builds-directory")
|
100
|
+
|
101
|
+
# combined usage of 'new_version', 'new_version_code', 'project_path' and 'export_path'
|
102
|
+
unity_export(
|
103
|
+
build_target: "...",
|
104
|
+
new_version: "2.3.4", new_version_code: "0",
|
105
|
+
project_path: "path/Unity-project", export_path: "path/Builds")
|
93
106
|
```
|
94
107
|
|
95
108
|
### Using `unity_commit_version_bump`
|
@@ -104,10 +117,27 @@ unity_export(build_target: "...", new_version: "3.4.5", new_version_code: "0")
|
|
104
117
|
unity_commit_version_bump
|
105
118
|
```
|
106
119
|
|
120
|
+
### Using `unity_get_version_number`
|
107
121
|
|
108
|
-
|
122
|
+
```ruby
|
123
|
+
# you must first use the unity export action
|
124
|
+
unity_export(...)
|
109
125
|
|
110
|
-
|
126
|
+
# afterwards you can get the version number like so
|
127
|
+
# note that an error code will be returned if something fails
|
128
|
+
version_number = unity_get_version_number
|
129
|
+
```
|
130
|
+
|
131
|
+
### Using `unity_get_build_number`
|
132
|
+
|
133
|
+
```ruby
|
134
|
+
# you must first use the unity export action
|
135
|
+
unity_export(...)
|
136
|
+
|
137
|
+
# afterwards you can get the build number like so
|
138
|
+
# note that an error code will be returned if something fails
|
139
|
+
build_number = unity_get_build_number
|
140
|
+
```
|
111
141
|
|
112
142
|
|
113
143
|
## Example
|
@@ -117,6 +147,24 @@ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plu
|
|
117
147
|
Also check out the example [_Unity3d_ project](https://github.com/ar-met/fastlane-plugin-unity-exporter-example-project) to see how this plugin works. See the repositories readme for more details.
|
118
148
|
|
119
149
|
|
150
|
+
## Compatibility
|
151
|
+
|
152
|
+
Both this _fastlane plugin_ and the [_Unity Build Exporter_](https://github.com/ar-met/unity-build-exporter) were developed with _Unity 2020.3.13f1_. We haven't tested the plugin with any earlier versions, but we don't expect there to be any issues. If you run into trouble, regarding compatibility or anything else, [please open an issue](https://github.com/ar-met/unity-build-exporter/issues). For pull requests [see here](#pull-requests).
|
153
|
+
|
154
|
+
|
155
|
+
## Ruby
|
156
|
+
|
157
|
+
Note that this plugin requires `Ruby 2.7.4`.
|
158
|
+
|
159
|
+
### Ruby on Mac
|
160
|
+
|
161
|
+
Installing ruby -- even different versions of it -- on Mac and _fastlane_ is well documented.
|
162
|
+
|
163
|
+
### Ruby on Windows
|
164
|
+
|
165
|
+
To install ruby on Windows you, e.g., can use [_RubyInstaller_](https://rubyinstaller.org/downloads/). Be sure to get `Ruby 2.7.4`. After that you can use `gem` commands with Windows' command prompt and rely on _fastlane_'s documentation to get you going.
|
166
|
+
|
167
|
+
|
120
168
|
## Pull requests
|
121
169
|
|
122
170
|
We are happy to accept [pull requests](https://github.com/ar-met/unity-build-exporter/pulls). For easier development of this plugin, we suggest you use the provided [_Unity3d_ project](https://github.com/ar-met/fastlane-plugin-unity-exporter-dev-project).
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'fastlane/action'
|
2
2
|
require_relative '../helper/unity_editor_helper'
|
3
|
+
require_relative '../helper/generic_helper'
|
3
4
|
|
4
5
|
module Fastlane
|
5
6
|
module Actions
|
@@ -8,11 +9,11 @@ module Fastlane
|
|
8
9
|
# TODO: improve the commit command: currently it simply commits the ProjectSettings file
|
9
10
|
# what if there are other changes in the file and you don't want these changes to be part of the commit
|
10
11
|
|
11
|
-
log_file =
|
12
|
+
log_file = Helper::GenericHelper.instance_variable_get(:@git_log_path)
|
12
13
|
|
13
14
|
# Thank you: https://linuxize.com/post/bash-redirect-stderr-stdout/#redirecting-stderr-to-stdout
|
14
15
|
sh("echo 'UnityCommitVersionBumpAction: created file' > #{log_file} 2>&1")
|
15
|
-
sh("git add '#{Helper::UnityEditorHelper.
|
16
|
+
sh("git add '#{Helper::UnityEditorHelper.unity_project_path}ProjectSettings/ProjectSettings.asset' >> #{log_file} 2>&1")
|
16
17
|
sh("git commit -m 'Version Bump' >> #{log_file} 2>&1")
|
17
18
|
end
|
18
19
|
|
@@ -17,11 +17,15 @@ module Fastlane
|
|
17
17
|
end
|
18
18
|
|
19
19
|
elsif params[:build_target]
|
20
|
+
if params[:project_path]
|
21
|
+
Helper::UnityEditorHelper.instance_variable_set(:@project_path, params[:project_path])
|
22
|
+
end
|
23
|
+
|
20
24
|
# following are arguments as defined in the docs: https://docs.unity3d.com/Manual/CommandLineArguments.html
|
21
25
|
headless_args = "-buildTarget #{params[:build_target]}"
|
22
26
|
headless_args << " -batchmode -nographics -quit" # some arguments that are required when running Unity in headless-mode
|
23
27
|
headless_args << " -accept-apiupdate -releaseCodeOptimization"
|
24
|
-
headless_args << " -projectPath #{Helper::UnityEditorHelper.
|
28
|
+
headless_args << " -projectPath #{Helper::UnityEditorHelper.unity_project_path}"
|
25
29
|
headless_args << " -logFile unity-export-logs/#{DateTime.now.strftime('%Y-%m-%d_%H-%M-%S-%L')}_#{params[:build_target]}_build.log" # logging; not specifying a path will print the log to the console
|
26
30
|
|
27
31
|
# following are custom arguments defined in 'UnityExporter.BuildUtility'
|
@@ -29,7 +33,12 @@ module Fastlane
|
|
29
33
|
headless_args << " -executeMethod armet.BuildExporter.BuildUtility.CreateBuild"
|
30
34
|
headless_args << " -newVersion #{params[:new_version]}" if params[:new_version]
|
31
35
|
headless_args << " -newVersionCode #{params[:new_version_code]}" if params[:new_version_code]
|
32
|
-
|
36
|
+
|
37
|
+
if params[:export_path]
|
38
|
+
headless_args << " -exportPath #{params[:export_path]}"
|
39
|
+
else
|
40
|
+
headless_args << " -exportPath fastlane-build-exporter/#{params[:build_target]}/unity-export"
|
41
|
+
end
|
33
42
|
|
34
43
|
# NOTE: the different relative paths used in 'projectPath' and 'exportPath'
|
35
44
|
# while 'projectPath' is relative to the 'fastfile',
|
@@ -62,7 +71,7 @@ module Fastlane
|
|
62
71
|
return
|
63
72
|
end
|
64
73
|
|
65
|
-
UI.message("Open 'logFile', if you want to know whats going on with your build.")
|
74
|
+
UI.message("Open 'logFile', if you want to know whats going on with your build. Look for its path in the invocation of the next line.")
|
66
75
|
invocation = unity_path.to_s
|
67
76
|
invocation << " #{params[:arguments]}"
|
68
77
|
sh(invocation) # 'sh' will print what's passed to it
|
@@ -159,7 +168,21 @@ module Fastlane
|
|
159
168
|
UI.user_error!("Please pass a valid version code. For options see 'fastlane action unity_exporter'")
|
160
169
|
end
|
161
170
|
end
|
162
|
-
end)
|
171
|
+
end),
|
172
|
+
|
173
|
+
FastlaneCore::ConfigItem.new(key: :project_path,
|
174
|
+
env_name: "FL_UNITY_PROJECT_PATH",
|
175
|
+
description: "The path to the Unity project. The starting point for relative paths is the directory that contains the 'fastlane' folder",
|
176
|
+
optional: true,
|
177
|
+
type: String,
|
178
|
+
conflicting_options: [:arguments]),
|
179
|
+
|
180
|
+
FastlaneCore::ConfigItem.new(key: :export_path,
|
181
|
+
env_name: "FL_UNITY_EXPORT_PATH",
|
182
|
+
description: "The path to the exported Unity project. The starting point for relative paths is the root of the Unity project",
|
183
|
+
optional: true,
|
184
|
+
type: String,
|
185
|
+
conflicting_options: [:arguments])
|
163
186
|
]
|
164
187
|
end
|
165
188
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'fastlane/action'
|
2
|
+
require_relative '../helper/unity_editor_helper'
|
3
|
+
require_relative '../helper/generic_helper'
|
4
|
+
|
5
|
+
module Fastlane
|
6
|
+
module Actions
|
7
|
+
class UnityGetBuildNumberAction < Action
|
8
|
+
def self.run(params)
|
9
|
+
build_number = Helper::GenericHelper.build_exporter_build_number
|
10
|
+
if build_number == ""
|
11
|
+
return "unity_exporter_error_occurred"
|
12
|
+
end
|
13
|
+
|
14
|
+
return build_number
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.description
|
18
|
+
"Will get the build number that was used for the latest Unity export action. Therefore make sure to call the Unity export action before you use this action."
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.authors
|
22
|
+
["steft"]
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.return_value
|
26
|
+
"Returns the build number that was used for the latest Unity export action. In case of error will return 'unity_exporter_error_occurred'."
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.details
|
30
|
+
# Optional:
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.available_options
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.is_supported?(platform)
|
37
|
+
# Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
|
38
|
+
# See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
|
39
|
+
[:ios, :android].include?(platform)
|
40
|
+
true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'fastlane/action'
|
2
|
+
require_relative '../helper/unity_editor_helper'
|
3
|
+
require_relative '../helper/generic_helper'
|
4
|
+
|
5
|
+
module Fastlane
|
6
|
+
module Actions
|
7
|
+
class UnityGetVersionNumberAction < Action
|
8
|
+
def self.run(params)
|
9
|
+
version_number = Helper::GenericHelper.build_exporter_version_number
|
10
|
+
if version_number == ""
|
11
|
+
return "unity_exporter_error_occurred"
|
12
|
+
end
|
13
|
+
|
14
|
+
return version_number
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.description
|
18
|
+
"Will get the version number that was used for the latest Unity export action. Therefore make sure to call the Unity export action before you use this action."
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.authors
|
22
|
+
["steft"]
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.return_value
|
26
|
+
"Returns the version number that was used for the latest Unity export action. In case of error will return 'unity_exporter_error_occurred'."
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.details
|
30
|
+
# Optional:
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.available_options
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.is_supported?(platform)
|
37
|
+
# Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
|
38
|
+
# See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
|
39
|
+
[:ios, :android].include?(platform)
|
40
|
+
true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -1,11 +1,46 @@
|
|
1
1
|
require 'fastlane_core/ui/ui'
|
2
2
|
require 'shellwords'
|
3
|
+
require_relative './unity_editor_helper'
|
3
4
|
|
4
5
|
module Fastlane
|
5
6
|
UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
|
6
7
|
|
7
8
|
module Helper
|
8
9
|
class GenericHelper
|
10
|
+
@git_log_path = "fastlane-unity-exporter/logs/#{DateTime.now.strftime('%Y-%m-%d_%H-%M-%S-%L')}_git.log"
|
11
|
+
|
12
|
+
def self.build_exporter_versions
|
13
|
+
# this is created and updated whenever you create a build via the build exporter
|
14
|
+
build_exporter_versions_file = "#{Helper::UnityEditorHelper.unity_project_path}/BuildExporter/latest-build-version.txt"
|
15
|
+
|
16
|
+
if File.file?(build_exporter_versions_file)
|
17
|
+
return File.readlines(build_exporter_versions_file, chomp: true)
|
18
|
+
else
|
19
|
+
UI.user_error!("Versions file does not exist yet. You must execute the Unity export action beforehand.")
|
20
|
+
return []
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.build_exporter_version_number
|
25
|
+
versions = build_exporter_versions
|
26
|
+
|
27
|
+
if versions.count > 0
|
28
|
+
return versions[0]
|
29
|
+
else
|
30
|
+
return ""
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.build_exporter_build_number
|
35
|
+
versions = build_exporter_versions
|
36
|
+
|
37
|
+
if versions.count > 0
|
38
|
+
return versions[1]
|
39
|
+
else
|
40
|
+
return ""
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
9
44
|
def self.shellify(path)
|
10
45
|
if FastlaneCore::Helper.is_mac?
|
11
46
|
return Shellwords.escape(path)
|
@@ -8,9 +8,14 @@ module Fastlane
|
|
8
8
|
|
9
9
|
module Helper
|
10
10
|
class UnityEditorHelper
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
# project path relative if following hierarchy is given: "root/{unity-project}/fastlane-build-exporter/{platform}-export/."
|
12
|
+
# p File.expand_path("../../")
|
13
|
+
@project_path_default = "../../"
|
14
|
+
@project_path = ""
|
15
|
+
|
16
|
+
def self.unity_project_path
|
17
|
+
return @project_path if @project_path != ""
|
18
|
+
|
14
19
|
return "../../"
|
15
20
|
end
|
16
21
|
|
@@ -46,6 +51,7 @@ module Fastlane
|
|
46
51
|
# TODO Unity currently does not support commandline arguments for the Package Manager
|
47
52
|
exporter_package_namespace = "io.armet.unity.buildexporter"
|
48
53
|
included = load_unity_project_package_manifest.include?(exporter_package_namespace)
|
54
|
+
# UI.message("exporter package part of Unity project: '#{included}'")
|
49
55
|
unless included
|
50
56
|
UI.user_error!("Package 'io.armet.unity.exporter' must be added to the Unity project.")
|
51
57
|
end
|
@@ -57,19 +63,25 @@ module Fastlane
|
|
57
63
|
relative_path = if FastlaneCore::Helper.is_test?
|
58
64
|
"/tmp/fastlane/tests/fixtures/unity_project"
|
59
65
|
else
|
60
|
-
|
66
|
+
unity_project_path
|
61
67
|
end
|
62
68
|
|
63
69
|
package_manifest_path = "#{relative_path}/Packages/manifest.json"
|
64
|
-
|
65
|
-
|
70
|
+
|
71
|
+
# we verify the path to the Unity project by looking for the 'manifest.json' file
|
72
|
+
if File.file?(package_manifest_path)
|
73
|
+
return File.read(package_manifest_path)
|
74
|
+
else
|
75
|
+
UI.user_error!("Cannot find 'manifest.json' at '#{package_manifest_path}'. Make sure that the Unity project path is properly set.")
|
76
|
+
return ""
|
77
|
+
end
|
66
78
|
end
|
67
79
|
|
68
80
|
def self.load_unity_project_version
|
69
81
|
relative_path = if FastlaneCore::Helper.is_test?
|
70
82
|
"/tmp/fastlane/tests/fixtures/unity_project"
|
71
83
|
else
|
72
|
-
|
84
|
+
unity_project_path
|
73
85
|
end
|
74
86
|
|
75
87
|
project_version_txt_path = "#{relative_path}/ProjectSettings/ProjectVersion.txt"
|
@@ -28,7 +28,7 @@ module Fastlane
|
|
28
28
|
|
29
29
|
def self.verify_default_path
|
30
30
|
# verifies that the Unity Hub exists at the default path
|
31
|
-
exists = File.file?(Helper::UnityHubHelper.unity_hub_path(false))
|
31
|
+
exists = File.file?(Helper::UnityHubHelper.unity_hub_path(false))
|
32
32
|
unless exists
|
33
33
|
UI.error("Unity Hub does not exist at path '#{Helper::UnityHubHelper.unity_hub_path(false)}'")
|
34
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-unity_exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ar:met
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -161,6 +161,8 @@ files:
|
|
161
161
|
- lib/fastlane/plugin/unity_exporter.rb
|
162
162
|
- lib/fastlane/plugin/unity_exporter/actions/unity_commit_version_bump.rb
|
163
163
|
- lib/fastlane/plugin/unity_exporter/actions/unity_export.rb
|
164
|
+
- lib/fastlane/plugin/unity_exporter/actions/unity_get_build_number.rb
|
165
|
+
- lib/fastlane/plugin/unity_exporter/actions/unity_get_version_number.rb
|
164
166
|
- lib/fastlane/plugin/unity_exporter/helper/generic_helper.rb
|
165
167
|
- lib/fastlane/plugin/unity_exporter/helper/unity_editor_helper.rb
|
166
168
|
- lib/fastlane/plugin/unity_exporter/helper/unity_hub_helper.rb
|