u3d 1.0.19 → 1.0.20
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/.github_changelog_generator +1 -1
- data/CHANGELOG.md +29 -0
- data/Gemfile.lock +1 -1
- data/README.md +21 -0
- data/config/log_rules.json +29 -5
- data/lib/u3d/cache.rb +2 -13
- data/lib/u3d/commands.rb +2 -1
- data/lib/u3d/failure_reporter.rb +38 -0
- data/lib/u3d/iniparser.rb +1 -11
- data/lib/u3d/installation.rb +95 -0
- data/lib/u3d/log_analyzer.rb +12 -0
- data/lib/u3d/unity_versions.rb +28 -28
- data/lib/u3d/version.rb +1 -1
- data/lib/u3d.rb +1 -0
- data/lib/u3d_core/helper.rb +15 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab0e4249d0406f5fb52fdbec3de6d5da617e749d
|
4
|
+
data.tar.gz: bb2dca8350752bf2eea3ca212b838661fd8b4762
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2250d5b8c92617ac32e8108abff60d6dc93fbab21d5ce8007a0639e832444635f8c68c596c5cc7cefdfbfab2420aa269da4bd91ff3b1518630d8cf319533807
|
7
|
+
data.tar.gz: 04d154f9e8c7bdb6f7cac0f3a47711c5e2fe1b8cd4efa5a086fb6984e67fa7d9776498983cb3167e6c98ad302cd19fea4081a8afc0dec6b146f078fb733a10e3
|
data/.github_changelog_generator
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v1.0.20](https://github.com/DragonBox/u3d/tree/v1.0.20) (2018-04-19)
|
4
|
+
[Full Changelog](https://github.com/DragonBox/u3d/compare/v1.0.19...v1.0.20)
|
5
|
+
|
6
|
+
**Implemented enhancements:**
|
7
|
+
|
8
|
+
- u3d/list: display full revision number \(prepares for \#274\) [\#280](https://github.com/DragonBox/u3d/pull/280) ([lacostej](https://github.com/lacostej))
|
9
|
+
- u3d/prettify: catch build pipeline messages [\#279](https://github.com/DragonBox/u3d/pull/279) ([niezbop](https://github.com/niezbop))
|
10
|
+
- u3d/prettify: fix exception rule start pattern [\#273](https://github.com/DragonBox/u3d/pull/273) ([niezbop](https://github.com/niezbop))
|
11
|
+
- u3d/\*: failure reporter [\#267](https://github.com/DragonBox/u3d/pull/267) ([niezbop](https://github.com/niezbop))
|
12
|
+
- Move duplicated data\_path out of U3d::Cache/U3d::INIparser to U3dCore::Helper [\#266](https://github.com/DragonBox/u3d/pull/266) ([niezbop](https://github.com/niezbop))
|
13
|
+
|
14
|
+
**Fixed bugs:**
|
15
|
+
|
16
|
+
- UnityEngine.Debug.Log\[Error|Warning|\]Format do not appear in u3d run output [\#269](https://github.com/DragonBox/u3d/issues/269)
|
17
|
+
- u3d/prettify: Catch Enlighten jobs failure [\#272](https://github.com/DragonBox/u3d/pull/272) ([niezbop](https://github.com/niezbop))
|
18
|
+
|
19
|
+
**Closed issues:**
|
20
|
+
|
21
|
+
- u3d/log catch all BuildPipeline:BuildPlayerInternalNoCheck messages [\#278](https://github.com/DragonBox/u3d/issues/278)
|
22
|
+
- New LTS releases not recognised [\#276](https://github.com/DragonBox/u3d/issues/276)
|
23
|
+
- cache stopped building [\#275](https://github.com/DragonBox/u3d/issues/275)
|
24
|
+
- incompatible character encodings: CP850 and UTF-8 [\#268](https://github.com/DragonBox/u3d/issues/268)
|
25
|
+
|
26
|
+
**Merged pull requests:**
|
27
|
+
|
28
|
+
- u3d/available support LTS \(\#276\) [\#277](https://github.com/DragonBox/u3d/pull/277) ([lacostej](https://github.com/lacostej))
|
29
|
+
- Document locale unicode requirements \(fixes \#268\) [\#271](https://github.com/DragonBox/u3d/pull/271) ([lacostej](https://github.com/lacostej))
|
30
|
+
- u3d/prettify: Fix UnityEngine.Debug.LogXXXFormat not being caught [\#270](https://github.com/DragonBox/u3d/pull/270) ([niezbop](https://github.com/niezbop))
|
31
|
+
|
3
32
|
## [v1.0.19](https://github.com/DragonBox/u3d/tree/v1.0.19) (2018-03-09)
|
4
33
|
[Full Changelog](https://github.com/DragonBox/u3d/compare/v1.0.18...v1.0.19)
|
5
34
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -61,6 +61,17 @@ The prettifyer is on by default but can be turned off to get Unity's raw output.
|
|
61
61
|
gem install u3d
|
62
62
|
```
|
63
63
|
|
64
|
+
### Setup
|
65
|
+
|
66
|
+
u3d requires some environment variables set up to run correctly. In particular processing log files requires your locales to be set to a UTF-8 locale. In your shell profile add the following lines:
|
67
|
+
|
68
|
+
```
|
69
|
+
export LC_ALL=en_US.UTF-8
|
70
|
+
export LANG=en_US.UTF-8
|
71
|
+
```
|
72
|
+
|
73
|
+
You can find your shell profile at ~/.bashrc, ~/.bash_profile or ~/.zshrc depending on your system.
|
74
|
+
|
64
75
|
## Unity versions numbering
|
65
76
|
|
66
77
|
Unity uses the following version formatting: 0.0.0x0. The \'x\' can takes different values:
|
@@ -73,6 +84,16 @@ Some versions are known to have a different numbering, e.g. Linux 2017.1.0f3 is
|
|
73
84
|
|
74
85
|
When referencing to a version on the CLI, u3d sanitizes these weird versions. For example, if you ask u3d to launch unity 2017.1.0f3 on Linux, you can use `u3d -u 2017.1.0f3` and it will find "2017.1.0xf3Linux".
|
75
86
|
|
87
|
+
### Unity build numbers
|
88
|
+
|
89
|
+
Every Unity version has a build number in the form of a 12 characters hexadecimal (e.g. `bf5cca3e2788`). You might have noticed them: those build numbers are currently part of the download URLs that `u3d available` displays.
|
90
|
+
|
91
|
+
Most of the time Unity users won't have to pay attention to build numbers. In a few scenarios, they become important.
|
92
|
+
|
93
|
+
For example, sometimes Unity releases multiple builds with the same version but different build numbers, e.g. when releasing hot fixes. If you need a hotfix release, you might need to ensure that you are using it.
|
94
|
+
|
95
|
+
Right now u3d has light support for build numbers. The build number can be found inside the Unity installation files and u3d will extract them and `u3d list` will display both the version and the build number. In the future u3d will have more features to help you managing installations of those special builds. Follow this [request for enhancement](https://github.com/DragonBox/u3d/issues/274) for more information.
|
96
|
+
|
76
97
|
## Default Installation paths
|
77
98
|
|
78
99
|
The standard Unity installer has some quirks:
|
data/config/log_rules.json
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
},
|
25
25
|
"exception": {
|
26
26
|
"active": true,
|
27
|
-
"start_pattern": "[eE]xception\\w*: (?<message>.*)\\n",
|
27
|
+
"start_pattern": "^(?:(?!\\().)*[eE]xception\\w*: (?<message>.*)\\n",
|
28
28
|
"end_pattern": "(?:Filename: (?:[\\w/:]+/(?<file>\\w+\\.\\w+))? Line: (?<line>-?\\d+)|(?<fileunknown>filename unknown)>:(?<lineunknown>-?\\d+))",
|
29
29
|
"start_message": false,
|
30
30
|
"end_message": "%{file}%{fileunknown}(line %{line}%{lineunknown}): %{message}",
|
@@ -53,7 +53,7 @@
|
|
53
53
|
},
|
54
54
|
"log": {
|
55
55
|
"active": true,
|
56
|
-
"start_pattern": "UnityEngine\\.Debug:Log
|
56
|
+
"start_pattern": "UnityEngine\\.Debug:Log(?:Format)?\\((?:String, )?Object(?:\\[\\])?\\)",
|
57
57
|
"fetch_first_line_not_matching": [
|
58
58
|
"UnityEngine\\.",
|
59
59
|
"^\\n"
|
@@ -66,7 +66,7 @@
|
|
66
66
|
},
|
67
67
|
"log_assertion": {
|
68
68
|
"active": true,
|
69
|
-
"start_pattern": "UnityEngine\\.Debug:LogAssertion
|
69
|
+
"start_pattern": "UnityEngine\\.Debug:LogAssertion(?:Format)?\\((?:String, )?Object(?:\\[\\])?\\)",
|
70
70
|
"fetch_first_line_not_matching": [
|
71
71
|
"UnityEngine\\.",
|
72
72
|
"^\\n"
|
@@ -80,7 +80,7 @@
|
|
80
80
|
},
|
81
81
|
"log_warning": {
|
82
82
|
"active": true,
|
83
|
-
"start_pattern": "UnityEngine\\.Debug:LogWarning
|
83
|
+
"start_pattern": "UnityEngine\\.Debug:LogWarning(?:Format)?\\((?:String, )?Object(?:\\[\\])?\\)",
|
84
84
|
"fetch_first_line_not_matching": [
|
85
85
|
"UnityEngine\\.",
|
86
86
|
"^\\n",
|
@@ -95,7 +95,7 @@
|
|
95
95
|
},
|
96
96
|
"log_error": {
|
97
97
|
"active": true,
|
98
|
-
"start_pattern": "UnityEngine\\.Debug:LogError
|
98
|
+
"start_pattern": "UnityEngine\\.Debug:LogError(?:Format)?\\((?:String, )?Object(?:\\[\\])?\\)",
|
99
99
|
"fetch_first_line_not_matching": [
|
100
100
|
"UnityEngine\\.",
|
101
101
|
"^\\n",
|
@@ -125,6 +125,22 @@
|
|
125
125
|
"end_message": "[LOG] %{file}(line %{line}): %{message}",
|
126
126
|
"type": "error"
|
127
127
|
},
|
128
|
+
"build_pipeline_message": {
|
129
|
+
"active": true,
|
130
|
+
"start_pattern": "UnityEditor\\.BuildPipeline:BuildPlayerInternalNoCheck",
|
131
|
+
"fetch_first_line_not_matching": [
|
132
|
+
"UnityEditor\\.",
|
133
|
+
"^\\n",
|
134
|
+
"^\\t",
|
135
|
+
"^ "
|
136
|
+
],
|
137
|
+
"fetched_line_pattern": "(?<message>.*)\\n",
|
138
|
+
"fetched_line_message": false,
|
139
|
+
"start_message": false,
|
140
|
+
"end_pattern": "Filename: (?:.+/(?<file>\\w+\\.\\w+\\.\\w+))? Line: (?<line>-?\\d+)",
|
141
|
+
"end_message": "[LOG] %{file}(line %{line}): %{message}",
|
142
|
+
"type": "warning"
|
143
|
+
},
|
128
144
|
"batchmode_exit": {
|
129
145
|
"active": true,
|
130
146
|
"start_pattern": "Exiting batchmode successfully now!",
|
@@ -297,6 +313,14 @@
|
|
297
313
|
"comment": "Asset managing and packaging",
|
298
314
|
"phase_start_pattern": "Packing sprites",
|
299
315
|
"rules": {
|
316
|
+
"enlighten_failure": {
|
317
|
+
"active": true,
|
318
|
+
"start_pattern": "'(?<jobname>.+)' job failed with error code: (?<code>-?\\d+) \\('(?<message>.+)'\\)",
|
319
|
+
"start_message": false,
|
320
|
+
"end_pattern": "Filename: (?:.+/(?<file>\\w+\\.\\w+\\.\\w+))? Line: (?<line>-?\\d+)",
|
321
|
+
"end_message": "Enlighten job \"%{jobname}\" failed with status code %{code} %{file}(line %{line}): %{message}",
|
322
|
+
"type": "error"
|
323
|
+
},
|
300
324
|
"pack_warning": {
|
301
325
|
"active": true,
|
302
326
|
"start_pattern": "WARNING: (?<message>.+)",
|
data/lib/u3d/cache.rb
CHANGED
@@ -31,11 +31,7 @@ module U3d
|
|
31
31
|
class Cache
|
32
32
|
using ::CoreExtensions::OperatingSystem
|
33
33
|
|
34
|
-
#
|
35
|
-
DEFAULT_LINUX_PATH = File.join(ENV['HOME'], '.u3d').freeze
|
36
|
-
DEFAULT_MAC_PATH = File.join(ENV['HOME'], 'Library', 'Application Support', 'u3d').freeze
|
37
|
-
DEFAULT_WINDOWS_PATH = File.join(ENV['HOME'], 'AppData', 'Local', 'u3d').freeze
|
38
|
-
# Name of the file itself
|
34
|
+
# Name of the cache file
|
39
35
|
DEFAULT_NAME = 'cache.json'.freeze
|
40
36
|
# Maximum duration after which the cache is considered outdated
|
41
37
|
# Currently set to 24h
|
@@ -73,14 +69,7 @@ module U3d
|
|
73
69
|
end
|
74
70
|
|
75
71
|
def self.default_os_path
|
76
|
-
|
77
|
-
when :linux
|
78
|
-
DEFAULT_LINUX_PATH
|
79
|
-
when :mac
|
80
|
-
DEFAULT_MAC_PATH
|
81
|
-
when :win
|
82
|
-
DEFAULT_WINDOWS_PATH
|
83
|
-
end
|
72
|
+
U3dCore::Helper.data_path
|
84
73
|
end
|
85
74
|
|
86
75
|
private #-------------------------------------------------------------------
|
data/lib/u3d/commands.rb
CHANGED
@@ -56,7 +56,8 @@ module U3d
|
|
56
56
|
sorted_keys = vcomparators.sort.map { |v| v.version.to_s }
|
57
57
|
sorted_keys.each do |k|
|
58
58
|
u = map[k]
|
59
|
-
|
59
|
+
version = "#{u.version.ljust(13)} [#{u.build_number}]".ljust(30)
|
60
|
+
UI.message "Version #{version}(#{u.root_path})"
|
60
61
|
packages = u.packages
|
61
62
|
next unless options[:packages] && packages && !packages.empty?
|
62
63
|
UI.message 'Packages:'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module U3d
|
6
|
+
# Internal class to use when trying to improve the prettifier
|
7
|
+
# Opt-in with env variable U3D_REPORT_FAILURES
|
8
|
+
class FailureReporter
|
9
|
+
class << self
|
10
|
+
def report(failure_type: "DEFAULT", failure_message: "", data: {})
|
11
|
+
return unless ENV['U3D_REPORT_FAILURES']
|
12
|
+
report = {
|
13
|
+
type: failure_type,
|
14
|
+
message: failure_message,
|
15
|
+
data: data
|
16
|
+
}
|
17
|
+
|
18
|
+
FileUtils.mkdir_p default_report_path
|
19
|
+
report_file = File.join(
|
20
|
+
default_report_path,
|
21
|
+
"#{failure_type}.#{Date.now.strftime('%Y%m%dT%H%M')}.failure.json"
|
22
|
+
)
|
23
|
+
|
24
|
+
File.open(report_file, 'w') do |file|
|
25
|
+
file.write JSON.pretty_generate(report)
|
26
|
+
end
|
27
|
+
rescue StandardError => e
|
28
|
+
UI.important "Unable to report a #{failure_type} failure. Please use --verbose to get more information about the failure"
|
29
|
+
UI.verbose "Unable to report failure: #{e}"
|
30
|
+
UI.verbose "Failure was: [#{failure_type}]: #{failure_message}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def default_report_path
|
34
|
+
File.join(U3dCore::Helper.data_path, 'failures')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/u3d/iniparser.rb
CHANGED
@@ -31,9 +31,6 @@ module U3d
|
|
31
31
|
# @!group INI parameters to load and save ini files
|
32
32
|
#####################################################
|
33
33
|
INI_NAME = 'unity-%<version>s-%<os>s.ini'.freeze
|
34
|
-
INI_LINUX_PATH = File.join(ENV['HOME'], '.u3d', 'ini_files').freeze
|
35
|
-
INI_MAC_PATH = File.join(ENV['HOME'], 'Library', 'Application Support', 'u3d', 'ini_files').freeze
|
36
|
-
INI_WIN_PATH = File.join(ENV['HOME'], 'AppData', 'Local', 'u3d', 'ini_files').freeze
|
37
34
|
|
38
35
|
class << self
|
39
36
|
def load_ini(version, cached_versions, os: U3dCore::Helper.operating_system, offline: false)
|
@@ -106,14 +103,7 @@ url=#{url}
|
|
106
103
|
end
|
107
104
|
|
108
105
|
def default_ini_path
|
109
|
-
|
110
|
-
when :linux
|
111
|
-
INI_LINUX_PATH
|
112
|
-
when :mac
|
113
|
-
INI_MAC_PATH
|
114
|
-
when :win
|
115
|
-
INI_WIN_PATH
|
116
|
-
end
|
106
|
+
File.join(U3dCore::Helper.data_path, 'ini_files')
|
117
107
|
end
|
118
108
|
end
|
119
109
|
end
|
data/lib/u3d/installation.rb
CHANGED
@@ -109,6 +109,10 @@ module U3d
|
|
109
109
|
plist['CFBundleVersion']
|
110
110
|
end
|
111
111
|
|
112
|
+
def build_number
|
113
|
+
plist['UnityBuildNumber']
|
114
|
+
end
|
115
|
+
|
112
116
|
def default_log_file
|
113
117
|
"#{ENV['HOME']}/Library/Logs/Unity/Editor.log"
|
114
118
|
end
|
@@ -163,6 +167,39 @@ module U3d
|
|
163
167
|
end
|
164
168
|
end
|
165
169
|
|
170
|
+
class LinuxInstallationHelper
|
171
|
+
STRINGS_FULL_VERSION_MATCHER = /^[0-9\.abfp]+_[0-9a-f]{12}/
|
172
|
+
|
173
|
+
def find_build_number(root)
|
174
|
+
known_rev_locations.each do |p|
|
175
|
+
rev = find_build_number_in("#{root}#{p}")
|
176
|
+
return rev if rev
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
private
|
181
|
+
|
182
|
+
def strings(path)
|
183
|
+
command = "strings #{path.shellescape}"
|
184
|
+
`#{command}`.split("\n")
|
185
|
+
end
|
186
|
+
|
187
|
+
# sorted by order of speed to fetch the strings data
|
188
|
+
def known_rev_locations
|
189
|
+
['/Editor/BugReporter/unity.bugreporter',
|
190
|
+
'/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/lib/UnityNativeJs/UnityNative.js.mem',
|
191
|
+
'/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/Variations/linux32_headless_nondevelopment_mono/LinuxPlayer',
|
192
|
+
'/Editor/Unity']
|
193
|
+
end
|
194
|
+
|
195
|
+
def find_build_number_in(path = nil)
|
196
|
+
return nil unless File.exist? path
|
197
|
+
str = strings(path)
|
198
|
+
lines = str.select { |l| l =~ STRINGS_FULL_VERSION_MATCHER }
|
199
|
+
lines.empty? ? nil : lines[0].split('_')[1]
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
166
203
|
class LinuxInstallation < Installation
|
167
204
|
def version
|
168
205
|
# I don't find an easy way to extract the version on Linux
|
@@ -176,6 +213,10 @@ module U3d
|
|
176
213
|
version
|
177
214
|
end
|
178
215
|
|
216
|
+
def build_number
|
217
|
+
@build_number ||= LinuxInstallationHelper.new.find_build_number(root_path)
|
218
|
+
end
|
219
|
+
|
179
220
|
def default_log_file
|
180
221
|
"#{ENV['HOME']}/.config/unity3d/Editor.log"
|
181
222
|
end
|
@@ -220,6 +261,56 @@ module U3d
|
|
220
261
|
end
|
221
262
|
end
|
222
263
|
|
264
|
+
class WindowsInstallationHelper
|
265
|
+
def build_number(exe_path)
|
266
|
+
s = string_file_info("Unity Version", exe_path)
|
267
|
+
if s
|
268
|
+
a = s.split("_")
|
269
|
+
return a[1] if a.count > 1
|
270
|
+
end
|
271
|
+
nil
|
272
|
+
end
|
273
|
+
|
274
|
+
private
|
275
|
+
|
276
|
+
def string_file_info(info, path)
|
277
|
+
require "Win32API"
|
278
|
+
get_file_version_info_size = Win32API.new('version.dll', 'GetFileVersionInfoSize', 'PP', 'L')
|
279
|
+
get_file_version_info = Win32API.new('version.dll', 'GetFileVersionInfo', 'PIIP', 'I')
|
280
|
+
ver_query_value = Win32API.new('version.dll', 'VerQueryValue', 'PPPP', 'I')
|
281
|
+
rtl_move_memory = Win32API.new('kernel32.dll', 'RtlMoveMemory', 'PLL', 'I')
|
282
|
+
|
283
|
+
file = path.tr("/", "\\")
|
284
|
+
|
285
|
+
buf = [0].pack('L')
|
286
|
+
version_size = get_file_version_info_size.call(file + "\0", buf)
|
287
|
+
raise Exception if version_size.zero? # TODO: use GetLastError
|
288
|
+
|
289
|
+
version_info = 0.chr * version_size
|
290
|
+
version_ok = get_file_version_info.call(file, 0, version_size, version_info)
|
291
|
+
raise Exception if version_ok.zero? # TODO: use GetLastError
|
292
|
+
|
293
|
+
# hardcoding lang codepage
|
294
|
+
struct_path = "\\StringFileInfo\\040904b0\\#{info}"
|
295
|
+
|
296
|
+
addr = [0].pack('L')
|
297
|
+
size = [0].pack('L')
|
298
|
+
query_ok = ver_query_value.call(version_info, struct_path + "\0", addr, size)
|
299
|
+
raise Exception if query_ok.zero?
|
300
|
+
|
301
|
+
raddr = addr.unpack('L')[0]
|
302
|
+
rsize = size.unpack('L')[0]
|
303
|
+
|
304
|
+
info = Array.new(rsize, 0).pack('L*')
|
305
|
+
rtl_move_memory.call(info, raddr, info.length)
|
306
|
+
info.strip
|
307
|
+
rescue StandardError => e
|
308
|
+
UI.verbose("Failure to find '#{info}' under '#{path}': #{e}")
|
309
|
+
UI.verbose(e.backtrace)
|
310
|
+
nil
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
223
314
|
class WindowsInstallation < Installation
|
224
315
|
def version
|
225
316
|
path = "#{root_path}/Editor/Data/"
|
@@ -228,6 +319,10 @@ module U3d
|
|
228
319
|
PlaybackEngineUtils.unity_version(package)
|
229
320
|
end
|
230
321
|
|
322
|
+
def build_number
|
323
|
+
@build_number ||= WindowsInstallationHelper.new.build_number(exe_path)
|
324
|
+
end
|
325
|
+
|
231
326
|
def default_log_file
|
232
327
|
if @logfile.nil?
|
233
328
|
begin
|
data/lib/u3d/log_analyzer.rb
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
## --- END LICENSE BLOCK ---
|
22
22
|
|
23
23
|
require 'json'
|
24
|
+
require 'u3d/failure_reporter'
|
24
25
|
|
25
26
|
module U3d
|
26
27
|
# Analyzes log by filtering output along a set of rules
|
@@ -197,6 +198,17 @@ module U3d
|
|
197
198
|
# If it is still active during phase change, it means that something went wrong
|
198
199
|
context = @lines_memory.map { |l| "> #{l}" }.join('')
|
199
200
|
UI.error("[#{@active_phase}] Could not finish active rule '#{@active_rule}'. Aborting it. Context:\n#{context}")
|
201
|
+
|
202
|
+
U3d::FailureReporter.report(
|
203
|
+
failure_type: "PRETTIFIER",
|
204
|
+
failure_message: "Could not finish rule",
|
205
|
+
data: {
|
206
|
+
phase: @active_phase,
|
207
|
+
rule: @active_rule,
|
208
|
+
context: context.split("\n")
|
209
|
+
}
|
210
|
+
)
|
211
|
+
|
200
212
|
@active_rule = nil
|
201
213
|
end
|
202
214
|
UI.verbose("--- Ending #{@active_phase} phase ---")
|
data/lib/u3d/unity_versions.rb
CHANGED
@@ -106,6 +106,8 @@ module U3d
|
|
106
106
|
UNITY_LINUX_DOWNLOADS = 'https://forum.unity.com/threads/unity-on-linux-release-notes-and-known-issues.350256/'.freeze
|
107
107
|
# URL for the main releases for Windows and Macintosh
|
108
108
|
UNITY_DOWNLOADS = 'https://unity3d.com/get-unity/download/archive'.freeze
|
109
|
+
# URL for the LTS releases for Windows and Macintosh
|
110
|
+
UNITY_LTSES = 'https://unity3d.com/unity/qa/lts-releases'.freeze
|
109
111
|
# URL for the patch releases for Windows and Macintosh
|
110
112
|
UNITY_PATCHES = 'https://unity3d.com/unity/qa/patch-releases'.freeze
|
111
113
|
# URL for the beta releases list, they need to be accessed after
|
@@ -220,23 +222,34 @@ module U3d
|
|
220
222
|
end
|
221
223
|
end
|
222
224
|
|
225
|
+
class VersionsFetcher
|
226
|
+
attr_accessor :versions
|
227
|
+
|
228
|
+
def initialize(pattern:)
|
229
|
+
@versions = {}
|
230
|
+
@pattern = pattern
|
231
|
+
end
|
232
|
+
|
233
|
+
def fetch_some(type, url)
|
234
|
+
UI.message "Loading Unity #{type} releases"
|
235
|
+
current = UnityVersions.fetch_version(url, @pattern)
|
236
|
+
UI.success "Found #{current.count} #{type} releases."
|
237
|
+
@versions.merge!(current)
|
238
|
+
end
|
239
|
+
|
240
|
+
def fetch_all_channels
|
241
|
+
fetch_some('lts', UNITY_LTSES)
|
242
|
+
fetch_some('stable', UNITY_DOWNLOADS)
|
243
|
+
fetch_some('patch', UNITY_PATCHES)
|
244
|
+
fetch_some('beta', UNITY_BETAS)
|
245
|
+
@versions
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
223
249
|
class MacVersions
|
224
250
|
class << self
|
225
251
|
def list_available
|
226
|
-
|
227
|
-
UI.message 'Loading Unity releases'
|
228
|
-
current = UnityVersions.fetch_version(UNITY_DOWNLOADS, MAC_DOWNLOAD)
|
229
|
-
UI.success "Found #{current.count} releases." if current.count.nonzero?
|
230
|
-
versions = versions.merge(current)
|
231
|
-
UI.message 'Loading Unity patch releases'
|
232
|
-
current = UnityVersions.fetch_version_paged(UNITY_PATCHES, MAC_DOWNLOAD)
|
233
|
-
UI.success "Found #{current.count} patch releases." if current.count.nonzero?
|
234
|
-
versions = versions.merge(current)
|
235
|
-
UI.message 'Loading Unity beta releases'
|
236
|
-
current = UnityVersions.fetch_betas(UNITY_BETAS, MAC_DOWNLOAD)
|
237
|
-
UI.success "Found #{current.count} beta releases." if current.count.nonzero?
|
238
|
-
versions = versions.merge(current)
|
239
|
-
versions
|
252
|
+
VersionsFetcher.new(pattern: MAC_DOWNLOAD).fetch_all_channels
|
240
253
|
end
|
241
254
|
end
|
242
255
|
end
|
@@ -244,20 +257,7 @@ module U3d
|
|
244
257
|
class WindowsVersions
|
245
258
|
class << self
|
246
259
|
def list_available
|
247
|
-
|
248
|
-
UI.message 'Loading Unity releases'
|
249
|
-
current = UnityVersions.fetch_version(UNITY_DOWNLOADS, WIN_DOWNLOAD)
|
250
|
-
UI.success "Found #{current.count} releases." if current.count.nonzero?
|
251
|
-
versions = versions.merge(current)
|
252
|
-
UI.message 'Loading Unity patch releases'
|
253
|
-
current = UnityVersions.fetch_version_paged(UNITY_PATCHES, WIN_DOWNLOAD)
|
254
|
-
UI.success "Found #{current.count} patch releases." if current.count.nonzero?
|
255
|
-
versions = versions.merge(current)
|
256
|
-
UI.message 'Loading Unity beta releases'
|
257
|
-
current = UnityVersions.fetch_betas(UNITY_BETAS, WIN_DOWNLOAD)
|
258
|
-
UI.success "Found #{current.count} beta releases." if current.count.nonzero?
|
259
|
-
versions = versions.merge(current)
|
260
|
-
versions
|
260
|
+
VersionsFetcher.new(pattern: WIN_DOWNLOAD).fetch_all_channels
|
261
261
|
end
|
262
262
|
end
|
263
263
|
end
|
data/lib/u3d/version.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
## --- END LICENSE BLOCK ---
|
22
22
|
|
23
23
|
module U3d
|
24
|
-
VERSION = '1.0.
|
24
|
+
VERSION = '1.0.20'.freeze
|
25
25
|
DESCRIPTION = 'Provides numerous tools for installing, managing and running the Unity game engine from command line.'.freeze
|
26
26
|
UNITY_VERSIONS_NOTE = "Unity uses the following version formatting: 0.0.0x0. The \'x\' can takes different values:\n"\
|
27
27
|
"\t. 'f' are the main release candidates for Unity\n"\
|
data/lib/u3d.rb
CHANGED
data/lib/u3d_core/helper.rb
CHANGED
@@ -26,6 +26,21 @@ require 'colored'
|
|
26
26
|
|
27
27
|
module U3dCore
|
28
28
|
module Helper
|
29
|
+
DEFAULT_LINUX_PATH = File.join(ENV['HOME'], '.u3d').freeze
|
30
|
+
DEFAULT_MAC_PATH = File.join(ENV['HOME'], 'Library', 'Application Support', 'u3d').freeze
|
31
|
+
DEFAULT_WINDOWS_PATH = File.join(ENV['HOME'], 'AppData', 'Local', 'u3d').freeze
|
32
|
+
|
33
|
+
def self.data_path
|
34
|
+
case operating_system
|
35
|
+
when :linux
|
36
|
+
DEFAULT_LINUX_PATH
|
37
|
+
when :mac
|
38
|
+
DEFAULT_MAC_PATH
|
39
|
+
when :win
|
40
|
+
DEFAULT_WINDOWS_PATH
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
29
44
|
# Runs a given command using backticks (`)
|
30
45
|
# and prints them out using the UI.command method
|
31
46
|
def self.backticks(command, print: true)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u3d
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jerome Lacoste
|
@@ -379,6 +379,7 @@ files:
|
|
379
379
|
- lib/u3d/compatibility.rb
|
380
380
|
- lib/u3d/download_validator.rb
|
381
381
|
- lib/u3d/downloader.rb
|
382
|
+
- lib/u3d/failure_reporter.rb
|
382
383
|
- lib/u3d/iniparser.rb
|
383
384
|
- lib/u3d/installation.rb
|
384
385
|
- lib/u3d/installer.rb
|