modsvaskr 0.1.12 → 0.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/lib/modsvaskr/config.rb +2 -2
- data/lib/modsvaskr/games/skyrim_se.rb +5 -1
- data/lib/modsvaskr/in_game_tests_runner.rb +4 -4
- data/lib/modsvaskr/tests_runner.rb +5 -5
- data/lib/modsvaskr/tests_suite.rb +1 -1
- data/lib/modsvaskr/tests_suites/interior_cell.rb +2 -2
- data/lib/modsvaskr/ui.rb +6 -6
- data/lib/modsvaskr/version.rb +1 -1
- data/lib/modsvaskr/xedit.rb +3 -3
- metadata +16 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6caea974a5397c715e9db769996a3f54743087b12fbdacb99afd362ade4f8ede
|
4
|
+
data.tar.gz: 8af266d6861b5a3b8c44b0ddbb9d73771b6afe731edd0637d27f4426d7552119
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55f3a256e428d8ac50dce938915f0eb4910f6b9281a56ef69eb140556a7d41058d431cc28520bfe982e859be4e083afedbe39f9d7897caf6ad7f952672b61ced
|
7
|
+
data.tar.gz: e444a4bc0e219245a3b29ce9d01183f64792fbed1d6e4fe7e8a09cffa124577a19af100309e85b237315bd6d3c5b46544507989e9f08e8ac542f7b04386eb6ec
|
data/lib/modsvaskr/config.rb
CHANGED
@@ -15,14 +15,14 @@ module Modsvaskr
|
|
15
15
|
@config = YAML.safe_load(File.read(file)) || {}
|
16
16
|
# Parse all game types plugins
|
17
17
|
# Hash<Symbol, Class>
|
18
|
-
@game_types = Dir.glob("#{__dir__}/games/*.rb").
|
18
|
+
@game_types = Dir.glob("#{__dir__}/games/*.rb").to_h do |game_type_file|
|
19
19
|
require game_type_file
|
20
20
|
base_name = File.basename(game_type_file, '.rb')
|
21
21
|
[
|
22
22
|
base_name.to_sym,
|
23
23
|
Games.const_get(base_name.split('_').collect(&:capitalize).join.to_sym)
|
24
24
|
]
|
25
|
-
end
|
25
|
+
end
|
26
26
|
end
|
27
27
|
|
28
28
|
# Get the games list
|
@@ -50,6 +50,10 @@ module Modsvaskr
|
|
50
50
|
dawnguard.esm
|
51
51
|
hearthfires.esm
|
52
52
|
dragonborn.esm
|
53
|
+
ccbgssse001-fish.esm
|
54
|
+
ccqdrsse001-survivalmode.esl
|
55
|
+
ccbgssse037-curios.esl
|
56
|
+
ccbgssse025-advdsgs.esm
|
53
57
|
]
|
54
58
|
end
|
55
59
|
|
@@ -60,7 +64,7 @@ module Modsvaskr
|
|
60
64
|
# * Array<String>: List of all active plugins, including masters
|
61
65
|
def read_load_order
|
62
66
|
game_esps +
|
63
|
-
File.read("#{ENV
|
67
|
+
File.read("#{ENV.fetch('USERPROFILE')}/AppData/Local/Skyrim Special Edition/plugins.txt").split("\n").map do |line|
|
64
68
|
line =~ /^\*(.+)$/ ? Regexp.last_match(1).downcase : nil
|
65
69
|
end.compact
|
66
70
|
end
|
@@ -54,7 +54,7 @@ module Modsvaskr
|
|
54
54
|
def run(selected_tests)
|
55
55
|
unknown_tests_suites = selected_tests.keys - @available_tests_suites
|
56
56
|
log "[ In-game testing #{@game.name} ] - !!! The following in-game tests suites are not supported: #{unknown_tests_suites.join(', ')}" unless unknown_tests_suites.empty?
|
57
|
-
tests_to_run = selected_tests.
|
57
|
+
tests_to_run = selected_tests.except(*unknown_tests_suites)
|
58
58
|
return if tests_to_run.empty?
|
59
59
|
|
60
60
|
FileUtils.mkdir_p "#{@game.path}/Data/SKSE/Plugins/StorageUtilData"
|
@@ -171,7 +171,7 @@ module Modsvaskr
|
|
171
171
|
# Check for which reason the game has stopped, and eventually end the testing session.
|
172
172
|
# Careful as this JSON file can be written by Papyrus that treat strings as case insensitive.
|
173
173
|
# cf. https://github.com/xanderdunn/skaar/wiki/Common-Tasks
|
174
|
-
auto_test_config = JSON.parse(File.read(auto_test_config_file))['string'].
|
174
|
+
auto_test_config = JSON.parse(File.read(auto_test_config_file))['string'].to_h { |key, value| [key.downcase, value.downcase] }
|
175
175
|
if auto_test_config['stopped_by'] == 'user'
|
176
176
|
log "[ In-game testing #{@game.name} ] - Tests have been stopped by user."
|
177
177
|
break
|
@@ -199,12 +199,12 @@ module Modsvaskr
|
|
199
199
|
File.write(
|
200
200
|
"#{@game.path}/Data/SKSE/Plugins/StorageUtilData/AutoTest_#{first_tests_suite_to_run}_Statuses.json",
|
201
201
|
JSON.pretty_generate(
|
202
|
-
'string' => ((last_test_statuses[first_tests_suite_to_run] || []) + [[first_test_to_run, '']]).
|
202
|
+
'string' => ((last_test_statuses[first_tests_suite_to_run] || []) + [[first_test_to_run, '']]).to_h do |(test_name, test_status)|
|
203
203
|
[
|
204
204
|
test_name,
|
205
205
|
test_name == first_test_to_run ? 'failed_ctd' : test_status
|
206
206
|
]
|
207
|
-
end
|
207
|
+
end
|
208
208
|
)
|
209
209
|
)
|
210
210
|
# Notify the callbacks updating test statuses
|
@@ -21,14 +21,14 @@ module Modsvaskr
|
|
21
21
|
@config = config
|
22
22
|
@game = game
|
23
23
|
# Parse tests suites
|
24
|
-
@tests_suites = Dir.glob("#{__dir__}/tests_suites/*.rb").
|
24
|
+
@tests_suites = Dir.glob("#{__dir__}/tests_suites/*.rb").to_h do |tests_suite_file|
|
25
25
|
tests_suite = File.basename(tests_suite_file, '.rb').to_sym
|
26
26
|
require "#{__dir__}/tests_suites/#{tests_suite}.rb"
|
27
27
|
[
|
28
28
|
tests_suite,
|
29
29
|
TestsSuites.const_get(tests_suite.to_s.split('_').collect(&:capitalize).join.to_sym).new(tests_suite, @game)
|
30
30
|
]
|
31
|
-
end
|
31
|
+
end
|
32
32
|
@tests_info_file = "#{@game.path}/Data/Modsvaskr/Tests/TestsInfo.json"
|
33
33
|
end
|
34
34
|
|
@@ -136,7 +136,7 @@ module Modsvaskr
|
|
136
136
|
selected_in_game_tests_downcase = selected_in_game_tests.map(&:downcase)
|
137
137
|
in_game_tests_subscriptions[in_game_tests_suite] = [] unless in_game_tests_subscriptions.key?(in_game_tests_suite)
|
138
138
|
in_game_tests_subscriptions[in_game_tests_suite] << {
|
139
|
-
tests_suite
|
139
|
+
tests_suite:,
|
140
140
|
in_game_tests: selected_in_game_tests_downcase,
|
141
141
|
selected_tests: suite_selected_tests
|
142
142
|
}
|
@@ -175,12 +175,12 @@ module Modsvaskr
|
|
175
175
|
unless defined?(@tests_info_cache)
|
176
176
|
@tests_info_cache =
|
177
177
|
if File.exist?(@tests_info_file)
|
178
|
-
JSON.parse(File.read(@tests_info_file)).
|
178
|
+
JSON.parse(File.read(@tests_info_file)).to_h do |tests_suite_str, tests_suite_info|
|
179
179
|
[
|
180
180
|
tests_suite_str.to_sym,
|
181
181
|
tests_suite_info.transform_values { |test_info| test_info.transform_keys(&:to_sym) }
|
182
182
|
]
|
183
|
-
end
|
183
|
+
end
|
184
184
|
else
|
185
185
|
{}
|
186
186
|
end
|
data/lib/modsvaskr/ui.rb
CHANGED
@@ -45,13 +45,13 @@ module Modsvaskr
|
|
45
45
|
end
|
46
46
|
CursesMenu.new(
|
47
47
|
"Modsvaskr v#{Modsvaskr::VERSION} - Stronghold of Mods#{!last_modsvaskr_version.nil? && last_modsvaskr_version != Modsvaskr::VERSION ? " - !!! New version available: #{last_modsvaskr_version}" : ''}",
|
48
|
-
key_presses:
|
48
|
+
key_presses:
|
49
49
|
) do |main_menu|
|
50
50
|
@config.games.each do |game|
|
51
51
|
main_menu.item "#{game.name} (#{game.path})" do
|
52
52
|
CursesMenu.new(
|
53
53
|
"Modsvaskr v#{Modsvaskr::VERSION} - Stronghold of Mods > #{game.name}",
|
54
|
-
key_presses:
|
54
|
+
key_presses:
|
55
55
|
) do |game_menu|
|
56
56
|
game_menu.item 'Testing' do
|
57
57
|
# Read tests info
|
@@ -61,7 +61,7 @@ module Modsvaskr
|
|
61
61
|
selected_tests_suites = {}
|
62
62
|
CursesMenu.new(
|
63
63
|
"Modsvaskr v#{Modsvaskr::VERSION} - Stronghold of Mods > #{game.name} > Testing",
|
64
|
-
key_presses:
|
64
|
+
key_presses:
|
65
65
|
) do |test_menu|
|
66
66
|
tests_runner.tests_suites.each do |tests_suite|
|
67
67
|
statuses_for_suite = tests_runner.statuses_for(tests_suite)
|
@@ -83,7 +83,7 @@ module Modsvaskr
|
|
83
83
|
execute: proc do
|
84
84
|
CursesMenu.new(
|
85
85
|
"Modsvaskr v#{Modsvaskr::VERSION} - Stronghold of Mods > #{game.name} > Testing > Tests #{tests_suite}",
|
86
|
-
key_presses:
|
86
|
+
key_presses:
|
87
87
|
) do |tests_suite_menu|
|
88
88
|
statuses_for_suite.each do |(test_name, test_status)|
|
89
89
|
test_selected = selected_tests_suites.key?(tests_suite) && selected_tests_suites[tests_suite].key?(test_name)
|
@@ -110,7 +110,7 @@ module Modsvaskr
|
|
110
110
|
if all_tests_selected
|
111
111
|
selected_tests_suites.delete(tests_suite)
|
112
112
|
else
|
113
|
-
selected_tests_suites[tests_suite] = statuses_for_suite.
|
113
|
+
selected_tests_suites[tests_suite] = statuses_for_suite.to_h { |(test_name, _test_status)| [test_name, nil] }
|
114
114
|
end
|
115
115
|
:menu_refresh
|
116
116
|
end
|
@@ -179,7 +179,7 @@ module Modsvaskr
|
|
179
179
|
main_menu.item 'See logs' do
|
180
180
|
CursesMenu.new(
|
181
181
|
'Modsvaskr - Stronghold of Mods > Logs',
|
182
|
-
key_presses:
|
182
|
+
key_presses:
|
183
183
|
) do |logs_menu|
|
184
184
|
File.read(Logger.log_file).split("\n").each do |line|
|
185
185
|
logs_menu.item line
|
data/lib/modsvaskr/version.rb
CHANGED
data/lib/modsvaskr/xedit.rb
CHANGED
@@ -53,11 +53,11 @@ module Modsvaskr
|
|
53
53
|
#
|
54
54
|
# Parameters::
|
55
55
|
# * *csv* (String): Name of the CSV file (from Edit Scripts), without .csv
|
56
|
-
# *
|
56
|
+
# * Proc: Code called for each CSV row
|
57
57
|
# Parameters::
|
58
58
|
# * *row* (Array<String>): CSV row
|
59
|
-
def parse_csv(csv, &
|
60
|
-
CSV.parse(Encoding.to_utf_8(File.read("#{install_path}/Edit Scripts/#{csv}.csv", mode: 'rb'))).each(&
|
59
|
+
def parse_csv(csv, &)
|
60
|
+
CSV.parse(Encoding.to_utf_8(File.read("#{install_path}/Edit Scripts/#{csv}.csv", mode: 'rb'))).each(&)
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modsvaskr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Muriel Salvan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses_menu
|
@@ -44,42 +44,42 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.13'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.13'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
61
|
+
version: '3.12'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
68
|
+
version: '3.12'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: webmock
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
75
|
+
version: '3.18'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
82
|
+
version: '3.18'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: sem_ver_components
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,28 +100,28 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1.
|
103
|
+
version: '1.41'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '1.
|
110
|
+
version: '1.41'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rubocop-rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '2.
|
117
|
+
version: '2.16'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '2.
|
124
|
+
version: '2.16'
|
125
125
|
description: Command-line UI handling a full Mods' ecosystem for Bethesda's games.
|
126
126
|
email:
|
127
127
|
- muriel@x-aeon.com
|
@@ -152,7 +152,8 @@ files:
|
|
152
152
|
homepage: https://github.com/Muriel-Salvan/modsvaskr
|
153
153
|
licenses:
|
154
154
|
- BSD-3-Clause
|
155
|
-
metadata:
|
155
|
+
metadata:
|
156
|
+
rubygems_mfa_required: 'true'
|
156
157
|
post_install_message:
|
157
158
|
rdoc_options: []
|
158
159
|
require_paths:
|
@@ -161,14 +162,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
161
162
|
requirements:
|
162
163
|
- - ">="
|
163
164
|
- !ruby/object:Gem::Version
|
164
|
-
version: '
|
165
|
+
version: '3.1'
|
165
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
167
|
requirements:
|
167
168
|
- - ">="
|
168
169
|
- !ruby/object:Gem::Version
|
169
170
|
version: '0'
|
170
171
|
requirements: []
|
171
|
-
rubygems_version: 3.
|
172
|
+
rubygems_version: 3.3.26
|
172
173
|
signing_key:
|
173
174
|
specification_version: 4
|
174
175
|
summary: 'Stronghold for mods acting like companions: The Modsvaskr'
|