Icarus-Mod-Tools 2.0 → 2.0.3

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
  SHA256:
3
- metadata.gz: aba02b8c9f3f8a95dfaff8dc2a13914d9ec71153da336e2dc2ab954d6e5d6560
4
- data.tar.gz: aad3f90f121957a893282dfc91cd424e21ecdbb155ecde1135f35644f86e8a3d
3
+ metadata.gz: 9c66a2adaabe6da3d7ef43db063f7d2924e182e574b4d9d77c1786a15aea1c8b
4
+ data.tar.gz: d28b3240fbfc0670ab652ac131bfad396f1e6e09e30fbd7c5c3dace8c51e1784
5
5
  SHA512:
6
- metadata.gz: 54dd466afe7f4f01a2deb0999752cc298ee52a2b1f4da0e1abf26c82677ecabf1a9f293765dc081d6f5c5e05ea017c57da1cbf9ac114a287df922c8ab40ba696
7
- data.tar.gz: b6f4a7bf87a62d190928cbf42ca57864c8651a2f7e353869e6221364f7f3e2c7ce59e51b69818636afe99c1ada9dfdbde4dcc29a43981b6caeab913856d1a779
6
+ metadata.gz: 35b823d39db613491f965a185a43bcf848629e84ca88fca358e2bc9412bbc42802c92a6fc6fe72870907e6d970415fe4d037035057a946bd19495b7bf9650a9c
7
+ data.tar.gz: 7e625e03b7d027a0d52f28d955b80abf3cab001f879a0169a7e500d0123775801580e9c7b8ef85438ba7eb7813b7ac02f37114ea37496e7b1beeec1e73bdd1d1
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## History (reverse chronological order)
6
6
 
7
+ ## [2.0.2](https://github.com/DonovanMods/icarus-mod-tools/compare/v2.0.1...v2.0.2) (2023-02-04)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * Create fileType and fileURL along with files ([a5294a4](https://github.com/DonovanMods/icarus-mod-tools/commit/a5294a479bcc68f6e4125f5062db9a0dbd48bdf8))
13
+ * Create fileType and fileURL along with files ([db5620f](https://github.com/DonovanMods/icarus-mod-tools/commit/db5620fafefd750196d6470f00e4000971adae1f))
14
+
15
+ ### v2.0 - 2023-02-03
16
+
17
+ - Converts to new `files` object, replacing fileType and fileURL
18
+
7
19
  ### v1.9 - 2023-01-28
8
20
 
9
21
  - Renamed `Progs` to `Tools`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- Icarus-Mod-Tools (2.0)
4
+ Icarus-Mod-Tools (2.0.3)
5
5
  google-cloud-firestore (~> 2.7)
6
6
  octokit (~> 6.0)
7
7
  paint (~> 2.3)
@@ -38,7 +38,7 @@ GEM
38
38
  google-cloud-env (1.6.0)
39
39
  faraday (>= 0.17.3, < 3.0)
40
40
  google-cloud-errors (1.3.0)
41
- google-cloud-firestore (2.9.0)
41
+ google-cloud-firestore (2.9.1)
42
42
  concurrent-ruby (~> 1.0)
43
43
  google-cloud-core (~> 1.5)
44
44
  google-cloud-firestore-v1 (~> 0.0)
@@ -50,7 +50,6 @@ GEM
50
50
  google-cloud-location (0.3.0)
51
51
  gapic-common (>= 0.16.0, < 2.a)
52
52
  google-cloud-errors (~> 1.0)
53
- google-protobuf (3.21.12-x86_64-darwin)
54
53
  google-protobuf (3.21.12-x86_64-linux)
55
54
  googleapis-common-protos (1.4.0)
56
55
  google-protobuf (~> 3.14)
@@ -65,9 +64,6 @@ GEM
65
64
  multi_json (~> 1.11)
66
65
  os (>= 0.9, < 2.0)
67
66
  signet (>= 0.16, < 2.a)
68
- grpc (1.51.0-x86_64-darwin)
69
- google-protobuf (~> 3.21)
70
- googleapis-common-protos-types (~> 1.0)
71
67
  grpc (1.51.0-x86_64-linux)
72
68
  google-protobuf (~> 3.21)
73
69
  googleapis-common-protos-types (~> 1.0)
@@ -122,7 +118,7 @@ GEM
122
118
  rspec-core (~> 3.12.0)
123
119
  rspec-expectations (~> 3.12.0)
124
120
  rspec-mocks (~> 3.12.0)
125
- rspec-core (3.12.0)
121
+ rspec-core (3.12.1)
126
122
  rspec-support (~> 3.12.0)
127
123
  rspec-expectations (3.12.2)
128
124
  diff-lcs (>= 1.2.0, < 2.0)
@@ -177,4 +173,4 @@ DEPENDENCIES
177
173
  rubocop-rspec (~> 2.16)
178
174
 
179
175
  BUNDLED WITH
180
- 2.3.14
176
+ 2.3.26
File without changes
data/README.md CHANGED
@@ -33,8 +33,10 @@ Create a file called `.imtconfig.json` in your home directory with the following
33
33
  },
34
34
  "collections": {
35
35
  "modinfo": "meta/modinfo",
36
+ "toolinfo": "meta/toolinfo",
36
37
  "repositories": "meta/repos",
37
- "mods": "mods"
38
+ "mods": "mods",
39
+ "tools": "tools"
38
40
  }
39
41
  },
40
42
  "github": {
@@ -73,6 +75,7 @@ Commands:
73
75
  imt add modinfo # Adds an entry to 'meta/modinfo/list'
74
76
  imt add toolinfo # Adds an entry to 'meta/toolinfo/list'
75
77
  imt add repos # Adds an entry to 'meta/repos/list'
78
+ imt add mod <filename> # Adds an entry to 'mods' when given a modinfo.json file
76
79
 
77
80
  Options:
78
81
  -C, [--config=CONFIG] # Path to the config file
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = spec.homepage
18
- spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGES.md"
18
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
19
19
  spec.metadata["rubygems_mfa_required"] = "true"
20
20
 
21
21
  # Specify which files should be added to the gem when it is released.
@@ -11,7 +11,7 @@ module Icarus
11
11
  desc "modinfo", "Adds an entry to 'meta/modinfo/list'"
12
12
  def modinfo(item)
13
13
  firestore = Firestore.new
14
- payload = [firestore.list(:modinfo), item].flatten.compact
14
+ payload = [firestore.modinfo, item].flatten.compact
15
15
 
16
16
  puts firestore.update(:modinfo, payload, merge: true) ? "Success" : "Failure"
17
17
  end
@@ -19,7 +19,7 @@ module Icarus
19
19
  desc "toolinfo", "Adds an entry to 'meta/toolinfo/list'"
20
20
  def toolinfo(item)
21
21
  firestore = Firestore.new
22
- payload = [firestore.list(:toolinfo), item].flatten.compact
22
+ payload = [firestore.toolinfo, item].flatten.compact
23
23
 
24
24
  puts firestore.update(:toolinfo, payload, merge: true) ? "Success" : "Failure"
25
25
  end
@@ -27,7 +27,7 @@ module Icarus
27
27
  desc "repos", "Adds an entry to 'meta/repos/list'"
28
28
  def repos(item)
29
29
  firestore = Firestore.new
30
- payload = [firestore.list(:repositories), item].flatten.compact
30
+ payload = [firestore.repositories, item].flatten.compact
31
31
 
32
32
  puts firestore.update(:repositories, payload, merge: true) ? "Success" : "Failure"
33
33
  end
@@ -10,21 +10,21 @@ module Icarus
10
10
  class List < SubcommandBase
11
11
  desc "modinfo", "Displays data from 'meta/modinfo/list'"
12
12
  def modinfo
13
- modinfo_array = Firestore.new.list(:modinfo)
13
+ modinfo_array = Firestore.new.send(:modinfo)
14
14
  puts modinfo_array
15
15
  puts "Total: #{modinfo_array.count}" if verbose > 1
16
16
  end
17
17
 
18
18
  desc "toolinfo", "Displays data from 'meta/toolinfo/list'"
19
19
  def toolinfo
20
- toolinfo_array = Firestore.new.list(:toolinfo)
20
+ toolinfo_array = Firestore.new.send(:toolinfo)
21
21
  puts toolinfo_array
22
22
  puts "Total: #{toolinfo_array.count}" if verbose > 1
23
23
  end
24
24
 
25
25
  desc "repos", "Displays data from 'meta/repos/list'"
26
26
  def repos
27
- repos = Firestore.new.list(:repositories)
27
+ repos = Firestore.new.send(:repositories)
28
28
  puts repos
29
29
  puts "Total: #{repos.count}" if verbose > 1
30
30
  end
@@ -64,7 +64,7 @@ module Icarus
64
64
  puts "Sorted by #{sort_field}" if sort_field && verbose > 2
65
65
  puts "Filtered by #{filter_field} = #{filter_value}" if filter_field && verbose > 2
66
66
 
67
- items = Firestore.new.list(type)
67
+ items = Firestore.new.send(type)
68
68
 
69
69
  # Filter by field
70
70
  items.select! { |item| item.send(filter_field).downcase =~ /#{filter_value&.downcase}/ } if filter_field
@@ -13,10 +13,15 @@ module Icarus
13
13
  def initialize
14
14
  @client = Google::Cloud::Firestore.new(credentials: Config.firebase.credentials.to_h)
15
15
  @collections = Config.firebase.collections
16
+ @repositories = repositories
17
+ @modinfo = modinfo
18
+ @toolinfo = toolinfo
19
+ @mods = mods
20
+ @tools = tools
16
21
  end
17
22
 
18
- def repos
19
- @repos ||= list(:repositories)
23
+ def repositories
24
+ @repositories ||= list(:repositories)
20
25
  end
21
26
 
22
27
  def modinfo
@@ -36,35 +41,7 @@ module Icarus
36
41
  end
37
42
 
38
43
  def find_by_type(type:, name:, author:)
39
- list(type).find { |obj| obj.name == name && obj.author == author }
40
- end
41
-
42
- def get_list(type)
43
- raise "Invalid type: #{type} - unknown collection" unless collections.respond_to?(type)
44
-
45
- @client.doc(collections.send(type)).get[:list]
46
- end
47
-
48
- def list(type)
49
- case type.to_sym
50
- when :modinfo, :toolinfo, :repositories
51
- get_list(type)
52
- when :mods, :tools
53
- @client.col(collections.send(type)).get.map do |doc|
54
- klass = type == :mods ? Icarus::Mod::Tools::Modinfo : Icarus::Mod::Tools::Toolinfo
55
- klass.new(doc.data, id: doc.document_id, created: doc.create_time, updated: doc.update_time)
56
- end
57
- else
58
- raise "Invalid type: #{type}"
59
- end
60
- end
61
-
62
- def update_or_create(type, payload, merge:)
63
- doc_id = payload.id || find_by_type(type:, name: payload.name, author: payload.author)&.id
64
-
65
- return @client.doc("#{collections.send(type)}/#{doc_id}").set(payload.to_h, merge:) if doc_id
66
-
67
- @client.col(collections.send(type)).add(payload.to_h)
44
+ instance_variable_get("@#{type}").find { |obj| obj.name == name && obj.author == author }
68
45
  end
69
46
 
70
47
  def update(type, payload, merge: false)
@@ -98,6 +75,28 @@ module Icarus
98
75
 
99
76
  private
100
77
 
78
+ def list(type)
79
+ case type.to_sym
80
+ when :modinfo, :toolinfo, :repositories
81
+ @client.doc(collections.send(type)).get[:list]
82
+ when :mods, :tools
83
+ @client.col(collections.send(type)).get.map do |doc|
84
+ klass = type == :mods ? Icarus::Mod::Tools::Modinfo : Icarus::Mod::Tools::Toolinfo
85
+ klass.new(doc.data, id: doc.document_id, created: doc.create_time, updated: doc.update_time)
86
+ end
87
+ else
88
+ raise "Invalid type: #{type}"
89
+ end
90
+ end
91
+
92
+ def update_or_create(type, payload, merge:)
93
+ doc_id = payload.id || find_by_type(type:, name: payload.name, author: payload.author)&.id
94
+
95
+ return @client.doc("#{collections.send(type)}/#{doc_id}").set(payload.to_h, merge:) if doc_id
96
+
97
+ @client.col(collections.send(type)).add(payload.to_h)
98
+ end
99
+
101
100
  def pluralize(type)
102
101
  type.to_s.end_with?("s") ? type.to_s : "#{type}s"
103
102
  end
@@ -9,15 +9,24 @@ module Icarus
9
9
  class Modinfo < Baseinfo
10
10
  HASHKEYS = %i[name author version compatibility description long_description files fileType fileURL imageURL readmeURL].freeze
11
11
 
12
+ # rubocop:disable Metrics/AbcSize
12
13
  def to_h
13
- HASHKEYS.each_with_object({}) do |key, hash|
14
- next if key == :files && @data[:files].nil?
15
- next if %i[fileType fileURL].include?(key.to_sym) && !@data[:files].nil?
14
+ db_hash = HASHKEYS.each_with_object({}) do |key, hash|
15
+ # next if %i[fileType fileURL].include?(key.to_sym)
16
16
  next if key == :long_description && @data[:long_description].nil?
17
17
 
18
18
  hash[key] = @data[key]
19
19
  end
20
+
21
+ db_hash[:files] = { @data[:fileType].downcase.to_sym => @data[:fileURL] } if db_hash[:files].nil? && !@data[:fileType].nil?
22
+
23
+ # Remove this once all mods have been updated
24
+ db_hash[:fileType] = db_hash[:files].keys.first.to_s if db_hash[:fileType].nil? && !db_hash[:files].nil?
25
+ db_hash[:fileURL] = db_hash[:files].values.first if db_hash[:fileURL].nil? && !db_hash[:files].nil?
26
+
27
+ db_hash
20
28
  end
29
+ # rubocop:enable Metrics/AbcSize
21
30
 
22
31
  def file_types
23
32
  files&.keys || [@data[:fileType] || "pak"]
@@ -19,7 +19,7 @@ module Icarus
19
19
  end
20
20
 
21
21
  def repositories
22
- @firestore.repos
22
+ @firestore.repositories
23
23
  end
24
24
 
25
25
  def update(modinfo_array)
@@ -19,7 +19,7 @@ module Icarus
19
19
  end
20
20
 
21
21
  def repositories
22
- @firestore.repos
22
+ @firestore.repositories
23
23
  end
24
24
 
25
25
  def update(toolinfo_array)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Icarus
4
4
  module Mod
5
- VERSION = "2.0"
5
+ VERSION = "2.0.3"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Icarus-Mod-Tools
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.0'
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Donovan Young
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
11
  date: 2023-02-04 00:00:00.000000000 Z
@@ -76,11 +76,11 @@ extra_rdoc_files: []
76
76
  files:
77
77
  - ".rspec"
78
78
  - ".rubocop.yml"
79
- - CHANGES.md
79
+ - CHANGELOG.md
80
80
  - Gemfile
81
81
  - Gemfile.lock
82
82
  - Guardfile
83
- - LICENSE.md
83
+ - LICENSE
84
84
  - README.md
85
85
  - Rakefile
86
86
  - exe/imt
@@ -113,9 +113,9 @@ licenses: []
113
113
  metadata:
114
114
  homepage_uri: https://github.com/DonovanMods/icarus-mod-tools
115
115
  source_code_uri: https://github.com/DonovanMods/icarus-mod-tools
116
- changelog_uri: https://github.com/DonovanMods/icarus-mod-tools/blob/main/CHANGES.md
116
+ changelog_uri: https://github.com/DonovanMods/icarus-mod-tools/blob/main/CHANGELOG.md
117
117
  rubygems_mfa_required: 'true'
118
- post_install_message:
118
+ post_install_message:
119
119
  rdoc_options: []
120
120
  require_paths:
121
121
  - lib
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubygems_version: 3.3.26
135
- signing_key:
135
+ signing_key:
136
136
  specification_version: 4
137
137
  summary: Various tools for Icarus Modding
138
138
  test_files: []