souls 0.51.2 → 0.52.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -1
  3. data/exe/souls +4 -202
  4. data/lib/souls/api/generate/application.rb +97 -94
  5. data/lib/souls/api/generate/connection.rb +5 -4
  6. data/lib/souls/api/generate/edge.rb +5 -4
  7. data/lib/souls/api/generate/index.rb +0 -1
  8. data/lib/souls/api/generate/manager.rb +9 -7
  9. data/lib/souls/api/generate/model.rb +16 -18
  10. data/lib/souls/api/generate/mutation.rb +217 -218
  11. data/lib/souls/api/generate/policy.rb +5 -5
  12. data/lib/souls/api/generate/query.rb +51 -51
  13. data/lib/souls/api/generate/resolver.rb +115 -115
  14. data/lib/souls/api/generate/rspec_factory.rb +53 -53
  15. data/lib/souls/api/generate/rspec_model.rb +5 -5
  16. data/lib/souls/api/generate/rspec_mutation.rb +178 -178
  17. data/lib/souls/api/generate/rspec_policy.rb +5 -5
  18. data/lib/souls/api/generate/rspec_query.rb +111 -111
  19. data/lib/souls/api/generate/rspec_resolver.rb +163 -163
  20. data/lib/souls/api/generate/type.rb +66 -66
  21. data/lib/souls/api/index.rb +7 -4
  22. data/lib/souls/api/update/index.rb +15 -0
  23. data/lib/souls/api/update/mutation.rb +68 -64
  24. data/lib/souls/api/update/resolver.rb +59 -60
  25. data/lib/souls/api/update/rspec_factory.rb +40 -39
  26. data/lib/souls/api/update/rspec_mutation.rb +84 -83
  27. data/lib/souls/api/update/rspec_resolver.rb +70 -69
  28. data/lib/souls/api/update/type.rb +39 -38
  29. data/lib/souls/cli/console/index.rb +13 -1
  30. data/lib/souls/cli/create/index.rb +97 -93
  31. data/lib/souls/cli/db/index.rb +122 -1
  32. data/lib/souls/cli/docker/index.rb +30 -38
  33. data/lib/souls/cli/gcloud/compute/index.rb +100 -98
  34. data/lib/souls/cli/gcloud/iam/index.rb +84 -69
  35. data/lib/souls/cli/gcloud/index.rb +36 -35
  36. data/lib/souls/cli/gcloud/pubsub/subscriptions.rb +40 -27
  37. data/lib/souls/cli/gcloud/pubsub/topics.rb +16 -10
  38. data/lib/souls/cli/gcloud/run/index.rb +23 -17
  39. data/lib/souls/cli/gcloud/sql/index.rb +66 -47
  40. data/lib/souls/cli/index.rb +3 -20
  41. data/lib/souls/cli/init/index.rb +140 -140
  42. data/lib/souls/cli/release/release.rb +106 -105
  43. data/lib/souls/cli/server/index.rb +12 -1
  44. data/lib/souls/cli/sync/conf.rb +39 -38
  45. data/lib/souls/cli/sync/model.rb +19 -20
  46. data/lib/souls/cli/sync/pubsub.rb +69 -70
  47. data/lib/souls/cli/upgrade/gemfile.rb +108 -0
  48. data/lib/souls/cli/upgrade/index.rb +1 -1
  49. data/lib/souls/cli.rb +57 -0
  50. data/lib/souls/index.rb +1 -5
  51. data/lib/souls/version.rb +1 -1
  52. data/lib/souls/versions/.souls_api_version +1 -1
  53. data/lib/souls/versions/.souls_worker_version +1 -1
  54. data/lib/souls/worker/generate/index.rb +1 -1
  55. data/lib/souls/worker/generate/job.rb +45 -0
  56. data/lib/souls/worker/generate/mailer.rb +38 -43
  57. data/lib/souls/worker/index.rb +3 -1
  58. data/lib/souls.rb +2 -0
  59. metadata +19 -5
  60. data/lib/souls/api/generate/migration.rb +0 -51
  61. data/lib/souls/cli/upgrade/gem_update.rb +0 -107
  62. data/lib/souls/worker/generate/mutation.rb +0 -44
@@ -1,7 +1,7 @@
1
1
  module Souls
2
- module Api::Generate
3
- ## Generate Rspec Model
4
- def self.rspec_model(class_name: "user")
2
+ class Generate < Thor
3
+ desc "rspec_model [CLASS_NAME]", "Generate Rspec Model Test from schema.rb"
4
+ def rspec_model(class_name)
5
5
  file_dir = "./spec/models/"
6
6
  FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
7
7
  file_path = "./spec/models/#{class_name}_spec.rb"
@@ -20,8 +20,8 @@ module Souls
20
20
  end
21
21
  puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
22
22
  file_path
23
- rescue StandardError => e
24
- raise(StandardError, e)
23
+ rescue Thor::Error => e
24
+ raise(Thor::Error, e)
25
25
  end
26
26
  end
27
27
  end
@@ -1,135 +1,152 @@
1
1
  module Souls
2
- module Api::Generate
3
- ## Generate Rspec Mutation
4
- class << self
5
- def rspec_mutation_head(class_name: "user")
6
- file_dir = "./spec/mutations/base/"
7
- FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
8
- file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
9
- File.open(file_path, "w") do |f|
10
- f.write(<<~TEXT)
11
- RSpec.describe \"#{class_name.camelize} Mutation テスト\" do
12
- describe "#{class_name.camelize} データを登録する" do
13
- TEXT
14
- end
2
+ class Generate < Thor
3
+ desc "rspec_mutation [CLASS_NAME]", "Generate Rspec Mutation Test from schema.rb"
4
+ def rspec_mutation(class_name)
5
+ singularized_class_name = class_name.singularize
6
+ file_path = "./spec/mutations/base/#{singularized_class_name}_spec.rb"
7
+ return "RspecMutation already exist! #{file_path}" if File.exist?(file_path)
8
+
9
+ rspec_mutation_head(class_name: singularized_class_name)
10
+ rspec_mutation_after_head(class_name: singularized_class_name)
11
+ rspec_mutation_params(class_name: singularized_class_name)
12
+ rspec_mutation_params_response(class_name: singularized_class_name)
13
+ rspec_mutation_end(class_name: singularized_class_name)
14
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
15
+ file_path
16
+ rescue StandardError => e
17
+ raise(StandardError, e)
18
+ end
19
+
20
+ private
21
+
22
+ def rspec_mutation_head(class_name: "user")
23
+ file_dir = "./spec/mutations/base/"
24
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
25
+ file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
26
+ File.open(file_path, "w") do |f|
27
+ f.write(<<~TEXT)
28
+ RSpec.describe \"#{class_name.camelize} Mutation テスト\" do
29
+ describe "#{class_name.camelize} データを登録する" do
30
+ TEXT
15
31
  end
32
+ end
16
33
 
17
- def rspec_mutation_after_head(class_name: "user")
18
- file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
19
- path = "./db/schema.rb"
20
- @on = false
21
- @user_exist = false
22
- @relation_params = []
23
- File.open(file_path, "a") do |new_line|
24
- File.open(path, "r") do |f|
25
- f.each_line.with_index do |line, _i|
26
- if @on
27
- if line.include?("t.index") || line.strip == "end"
28
- if @relation_params.empty?
29
- new_line.write(<<-TEXT)
34
+ def rspec_mutation_after_head(class_name: "user")
35
+ file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
36
+ path = "./db/schema.rb"
37
+ @on = false
38
+ @user_exist = false
39
+ @relation_params = []
40
+ File.open(file_path, "a") do |new_line|
41
+ File.open(path, "r") do |f|
42
+ f.each_line.with_index do |line, _i|
43
+ if @on
44
+ if line.include?("t.index") || line.strip == "end"
45
+ if @relation_params.empty?
46
+ new_line.write(<<-TEXT)
30
47
  let(:#{class_name}) { FactoryBot.attributes_for(:#{class_name}) }
31
48
 
32
49
  let(:mutation) do
33
50
  %(mutation {
34
51
  create#{class_name.camelize}(input: {
35
- TEXT
36
- else
37
- new_line.write(<<-TEXT)
52
+ TEXT
53
+ else
54
+ new_line.write(<<-TEXT)
38
55
  let(:#{class_name}) { FactoryBot.attributes_for(:#{class_name}, #{@relation_params.join(', ')}) }
39
56
 
40
57
  let(:mutation) do
41
58
  %(mutation {
42
59
  create#{class_name.camelize}(input: {
43
- TEXT
44
- end
45
- break
46
- end
47
- _, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
48
- case name
49
- when "user_id"
50
- relation_col = name.gsub("_id", "")
51
- new_line.write(" let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n")
52
- when /$*_id\z/
53
- relation_col = name.gsub("_id", "")
54
- @relation_params << "#{name}: get_global_key(\"#{name.singularize.camelize.gsub(
55
- 'Id',
56
- ''
57
- )}\", #{relation_col}.id)"
58
- new_line.write(" let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n")
60
+ TEXT
59
61
  end
62
+ break
63
+ end
64
+ _, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
65
+ case name
66
+ when "user_id"
67
+ relation_col = name.gsub("_id", "")
68
+ new_line.write(" let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n")
69
+ when /$*_id\z/
70
+ relation_col = name.gsub("_id", "")
71
+ @relation_params << "#{name}: get_global_key(\"#{name.singularize.camelize.gsub(
72
+ 'Id',
73
+ ''
74
+ )}\", #{relation_col}.id)"
75
+ new_line.write(" let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n")
60
76
  end
61
- @on = true if Souls.table_check(line: line, class_name: class_name)
62
77
  end
78
+ @on = true if Souls.table_check(line: line, class_name: class_name)
63
79
  end
64
80
  end
65
81
  end
82
+ end
66
83
 
67
- def rspec_mutation_params(class_name: "user")
68
- file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
69
- path = "./db/schema.rb"
70
- @on = false
71
- @user_exist = false
72
- File.open(file_path, "a") do |new_line|
73
- File.open(path, "r") do |f|
74
- f.each_line.with_index do |line, _i|
75
- if @on
76
- if line.include?("t.index") || line.strip == "end"
77
- new_line.write(
78
- " }) {\n #{class_name.singularize.camelize(:lower)}Edge {\n node {\n"
79
- )
80
- new_line.write(" id\n")
81
- break
82
- end
83
- type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
84
- array_true = line.include?("array: true")
85
- case name
86
- when "created_at", "updated_at"
87
- next
88
- when "user_id"
89
- @user_exist = true
90
- when /$*_id\z/
91
- camel = name.singularize.camelize(:lower)
92
- new_line.write(
93
- " #{camel}: \"\#{#{class_name.singularize}[:#{name.singularize.underscore}]}\"\n"
94
- )
95
- else
96
- camel = name.singularize.camelize(:lower)
97
- camels = name.pluralize.camelize(:lower)
98
- case type
99
- when "string", "text", "date", "datetime"
100
- if array_true
101
- new_line.write(
102
- " #{camels}: \#{#{class_name.singularize}[:#{name.pluralize.underscore}]}\n"
103
- )
104
- else
105
- new_line.write(
106
- " #{camel}: \"\#{#{class_name.singularize}[:#{name.singularize.underscore}]}\"\n"
107
- )
108
- end
109
- when "bigint", "integer", "float", "boolean"
84
+ def rspec_mutation_params(class_name: "user")
85
+ file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
86
+ path = "./db/schema.rb"
87
+ @on = false
88
+ @user_exist = false
89
+ File.open(file_path, "a") do |new_line|
90
+ File.open(path, "r") do |f|
91
+ f.each_line.with_index do |line, _i|
92
+ if @on
93
+ if line.include?("t.index") || line.strip == "end"
94
+ new_line.write(
95
+ " }) {\n #{class_name.singularize.camelize(:lower)}Edge {\n node {\n"
96
+ )
97
+ new_line.write(" id\n")
98
+ break
99
+ end
100
+ type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
101
+ array_true = line.include?("array: true")
102
+ case name
103
+ when "created_at", "updated_at"
104
+ next
105
+ when "user_id"
106
+ @user_exist = true
107
+ when /$*_id\z/
108
+ camel = name.singularize.camelize(:lower)
109
+ new_line.write(
110
+ " #{camel}: \"\#{#{class_name.singularize}[:#{name.singularize.underscore}]}\"\n"
111
+ )
112
+ else
113
+ camel = name.singularize.camelize(:lower)
114
+ camels = name.pluralize.camelize(:lower)
115
+ case type
116
+ when "string", "text", "date", "datetime"
117
+ if array_true
118
+ new_line.write(
119
+ " #{camels}: \#{#{class_name.singularize}[:#{name.pluralize.underscore}]}\n"
120
+ )
121
+ else
110
122
  new_line.write(
111
- " #{camel}: \#{#{class_name.singularize}[:#{name.singularize.underscore}]}\n"
123
+ " #{camel}: \"\#{#{class_name.singularize}[:#{name.singularize.underscore}]}\"\n"
112
124
  )
113
125
  end
126
+ when "bigint", "integer", "float", "boolean"
127
+ new_line.write(
128
+ " #{camel}: \#{#{class_name.singularize}[:#{name.singularize.underscore}]}\n"
129
+ )
114
130
  end
115
131
  end
116
- @on = true if Souls.table_check(line: line, class_name: class_name)
117
132
  end
133
+ @on = true if Souls.table_check(line: line, class_name: class_name)
118
134
  end
119
135
  end
120
136
  end
137
+ end
121
138
 
122
- def rspec_mutation_params_response(class_name: "user")
123
- file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
124
- path = "./db/schema.rb"
125
- @on = false
126
- File.open(file_path, "a") do |new_line|
127
- File.open(path, "r") do |f|
128
- f.each_line.with_index do |line, _i|
129
- if @on
130
- if line.include?("t.index") || line.strip == "end"
131
- if @user_exist
132
- new_line.write(<<-TEXT)
139
+ def rspec_mutation_params_response(class_name: "user")
140
+ file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
141
+ path = "./db/schema.rb"
142
+ @on = false
143
+ File.open(file_path, "a") do |new_line|
144
+ File.open(path, "r") do |f|
145
+ f.each_line.with_index do |line, _i|
146
+ if @on
147
+ if line.include?("t.index") || line.strip == "end"
148
+ if @user_exist
149
+ new_line.write(<<-TEXT)
133
150
  }
134
151
  }
135
152
  }
@@ -153,9 +170,9 @@ module Souls
153
170
  end
154
171
  expect(a1).to include(
155
172
  "id" => be_a(String),
156
- TEXT
157
- else
158
- new_line.write(<<-TEXT)
173
+ TEXT
174
+ else
175
+ new_line.write(<<-TEXT)
159
176
  }
160
177
  }
161
178
  }
@@ -176,97 +193,80 @@ module Souls
176
193
  end
177
194
  expect(a1).to include(
178
195
  "id" => be_a(String),
179
- TEXT
180
- end
181
- break
196
+ TEXT
182
197
  end
183
- _, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
184
- array_true = line.include?("array: true")
185
- case name
186
- when "user_id", "created_at", "updated_at", /$*_id\z/
187
- next
198
+ break
199
+ end
200
+ _, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
201
+ array_true = line.include?("array: true")
202
+ case name
203
+ when "user_id", "created_at", "updated_at", /$*_id\z/
204
+ next
205
+ else
206
+ if array_true
207
+ new_line.write(" #{name.pluralize.camelize(:lower)}\n")
188
208
  else
189
- if array_true
190
- new_line.write(" #{name.pluralize.camelize(:lower)}\n")
191
- else
192
- new_line.write(" #{name.singularize.camelize(:lower)}\n")
193
- end
209
+ new_line.write(" #{name.singularize.camelize(:lower)}\n")
194
210
  end
195
211
  end
196
- @on = true if Souls.table_check(line: line, class_name: class_name)
197
212
  end
213
+ @on = true if Souls.table_check(line: line, class_name: class_name)
198
214
  end
199
215
  end
200
216
  end
217
+ end
201
218
 
202
- def rspec_mutation_end(class_name: "user")
203
- file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
204
- path = "./db/schema.rb"
205
- @on = false
206
- File.open(file_path, "a") do |new_line|
207
- File.open(path, "r") do |f|
208
- f.each_line.with_index do |line, _i|
209
- if @on
210
- if line.include?("t.index") || line.strip == "end"
211
- new_line.write(<<~TEXT)
212
- )
213
- end
219
+ def rspec_mutation_end(class_name: "user")
220
+ file_path = "./spec/mutations/base/#{class_name.singularize}_spec.rb"
221
+ path = "./db/schema.rb"
222
+ @on = false
223
+ File.open(file_path, "a") do |new_line|
224
+ File.open(path, "r") do |f|
225
+ f.each_line.with_index do |line, _i|
226
+ if @on
227
+ if line.include?("t.index") || line.strip == "end"
228
+ new_line.write(<<~TEXT)
229
+ )
214
230
  end
215
231
  end
216
- TEXT
217
- break
218
- end
219
- type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
220
- field ||= Souls.type_check(type)
221
- array_true = line.include?("array: true")
222
- case name
223
- when "user_id", "created_at", "updated_at", /$*_id\z/
224
- next
225
- else
226
- case type
227
- when "text", "date", "datetime"
228
- if array_true
229
- new_line.write(" \"#{name.pluralize.camelize(:lower)}\" => be_all(String),\n")
230
- else
231
- new_line.write(" \"#{name.singularize.camelize(:lower)}\" => be_a(String),\n")
232
- end
233
- when "boolean"
234
- if array_true
235
- new_line.write(" \"#{name.pluralize.camelize(:lower)}\" => be_all([true, false]),\n")
236
- else
237
- new_line.write(" \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n")
238
- end
239
- when "string", "bigint", "integer", "float"
240
- if array_true
241
- new_line.write(" \"#{name.pluralize.camelize(:lower)}\" => be_all(#{field}),\n")
242
- else
243
- new_line.write(" \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n")
244
- end
232
+ end
233
+ TEXT
234
+ break
235
+ end
236
+ type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
237
+ field ||= Souls.type_check(type)
238
+ array_true = line.include?("array: true")
239
+ case name
240
+ when "user_id", "created_at", "updated_at", /$*_id\z/
241
+ next
242
+ else
243
+ case type
244
+ when "text", "date", "datetime"
245
+ if array_true
246
+ new_line.write(" \"#{name.pluralize.camelize(:lower)}\" => be_all(String),\n")
247
+ else
248
+ new_line.write(" \"#{name.singularize.camelize(:lower)}\" => be_a(String),\n")
249
+ end
250
+ when "boolean"
251
+ if array_true
252
+ new_line.write(" \"#{name.pluralize.camelize(:lower)}\" => be_all([true, false]),\n")
253
+ else
254
+ new_line.write(" \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n")
255
+ end
256
+ when "string", "bigint", "integer", "float"
257
+ if array_true
258
+ new_line.write(" \"#{name.pluralize.camelize(:lower)}\" => be_all(#{field}),\n")
259
+ else
260
+ new_line.write(" \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n")
245
261
  end
246
262
  end
247
263
  end
248
- @on = true if Souls.table_check(line: line, class_name: class_name)
249
264
  end
265
+ @on = true if Souls.table_check(line: line, class_name: class_name)
250
266
  end
251
267
  end
252
- file_path
253
- end
254
-
255
- def rspec_mutation(class_name: "user")
256
- singularized_class_name = class_name.singularize
257
- file_path = "./spec/mutations/base/#{singularized_class_name}_spec.rb"
258
- return "RspecMutation already exist! #{file_path}" if File.exist?(file_path)
259
-
260
- rspec_mutation_head(class_name: singularized_class_name)
261
- rspec_mutation_after_head(class_name: singularized_class_name)
262
- rspec_mutation_params(class_name: singularized_class_name)
263
- rspec_mutation_params_response(class_name: singularized_class_name)
264
- rspec_mutation_end(class_name: singularized_class_name)
265
- puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
266
- file_path
267
- rescue StandardError => e
268
- raise(StandardError, e)
269
268
  end
269
+ file_path
270
270
  end
271
271
  end
272
272
  end
@@ -1,7 +1,7 @@
1
1
  module Souls
2
- module Api::Generate
3
- ## Generate Rspec Policy
4
- def self.rspec_policy(class_name: "user")
2
+ class Generate < Thor
3
+ desc "rspec_policy [CLASS_NAME]", "Generate Rspec Policy Test from schema.rb"
4
+ def rspec_policy(class_name)
5
5
  dir_name = "./spec/policies"
6
6
  FileUtils.mkdir_p(dir_name) unless Dir.exist?(dir_name)
7
7
  file_path = "./spec/policies/#{class_name}_policy_spec.rb"
@@ -38,8 +38,8 @@ module Souls
38
38
  end
39
39
  puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
40
40
  file_path
41
- rescue StandardError => e
42
- raise(StandardError, e)
41
+ rescue Thor::Error => e
42
+ raise(Thor::Error, e)
43
43
  end
44
44
  end
45
45
  end