souls 0.51.2 → 0.52.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/exe/souls +4 -202
- data/lib/souls/api/generate/application.rb +97 -94
- data/lib/souls/api/generate/connection.rb +5 -4
- data/lib/souls/api/generate/edge.rb +5 -4
- data/lib/souls/api/generate/index.rb +0 -1
- data/lib/souls/api/generate/manager.rb +9 -7
- data/lib/souls/api/generate/model.rb +16 -18
- data/lib/souls/api/generate/mutation.rb +217 -218
- data/lib/souls/api/generate/policy.rb +5 -5
- data/lib/souls/api/generate/query.rb +51 -51
- data/lib/souls/api/generate/resolver.rb +115 -115
- data/lib/souls/api/generate/rspec_factory.rb +53 -53
- data/lib/souls/api/generate/rspec_model.rb +5 -5
- data/lib/souls/api/generate/rspec_mutation.rb +178 -178
- data/lib/souls/api/generate/rspec_policy.rb +5 -5
- data/lib/souls/api/generate/rspec_query.rb +111 -111
- data/lib/souls/api/generate/rspec_resolver.rb +163 -163
- data/lib/souls/api/generate/type.rb +66 -66
- data/lib/souls/api/index.rb +7 -4
- data/lib/souls/api/update/index.rb +15 -0
- data/lib/souls/api/update/mutation.rb +68 -64
- data/lib/souls/api/update/resolver.rb +59 -60
- data/lib/souls/api/update/rspec_factory.rb +40 -39
- data/lib/souls/api/update/rspec_mutation.rb +84 -83
- data/lib/souls/api/update/rspec_resolver.rb +70 -69
- data/lib/souls/api/update/type.rb +39 -38
- data/lib/souls/cli/console/index.rb +13 -1
- data/lib/souls/cli/create/index.rb +97 -93
- data/lib/souls/cli/db/index.rb +122 -1
- data/lib/souls/cli/docker/index.rb +30 -38
- data/lib/souls/cli/gcloud/compute/index.rb +100 -98
- data/lib/souls/cli/gcloud/iam/index.rb +84 -69
- data/lib/souls/cli/gcloud/index.rb +36 -35
- data/lib/souls/cli/gcloud/pubsub/subscriptions.rb +40 -27
- data/lib/souls/cli/gcloud/pubsub/topics.rb +16 -10
- data/lib/souls/cli/gcloud/run/index.rb +23 -17
- data/lib/souls/cli/gcloud/sql/index.rb +66 -47
- data/lib/souls/cli/index.rb +3 -20
- data/lib/souls/cli/init/index.rb +140 -140
- data/lib/souls/cli/release/release.rb +106 -105
- data/lib/souls/cli/server/index.rb +12 -1
- data/lib/souls/cli/sync/conf.rb +39 -38
- data/lib/souls/cli/sync/model.rb +19 -20
- data/lib/souls/cli/sync/pubsub.rb +69 -70
- data/lib/souls/cli/upgrade/gemfile.rb +108 -0
- data/lib/souls/cli/upgrade/index.rb +1 -1
- data/lib/souls/cli.rb +57 -0
- data/lib/souls/index.rb +1 -5
- data/lib/souls/version.rb +1 -1
- data/lib/souls/versions/.souls_api_version +1 -1
- data/lib/souls/versions/.souls_worker_version +1 -1
- data/lib/souls/worker/generate/index.rb +1 -1
- data/lib/souls/worker/generate/job.rb +45 -0
- data/lib/souls/worker/generate/mailer.rb +38 -43
- data/lib/souls/worker/index.rb +3 -1
- data/lib/souls.rb +2 -0
- metadata +19 -5
- data/lib/souls/api/generate/migration.rb +0 -51
- data/lib/souls/cli/upgrade/gem_update.rb +0 -107
- data/lib/souls/worker/generate/mutation.rb +0 -44
@@ -0,0 +1,108 @@
|
|
1
|
+
module Souls
|
2
|
+
class Upgrade < Thor
|
3
|
+
desc "gemfile", "Update Gemfile/Gemfile.lock Version"
|
4
|
+
def gemfile
|
5
|
+
file_path = "./Gemfile"
|
6
|
+
tmp_file = "./tmp/Gemfile"
|
7
|
+
new_gems = gemfile_latest_version
|
8
|
+
logs = []
|
9
|
+
message = Paint["\nAlready Up to date!", :green]
|
10
|
+
return "Already Up to date!" && puts(message) if new_gems[:gems].blank?
|
11
|
+
|
12
|
+
@i = 0
|
13
|
+
File.open(file_path, "r") do |f|
|
14
|
+
File.open(tmp_file, "w") do |new_line|
|
15
|
+
f.each_line do |line|
|
16
|
+
gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
|
17
|
+
if new_gems[:gems].include?(gem[0])
|
18
|
+
old_ver = gem[1].split(".")
|
19
|
+
new_ver = new_gems[:updated_gem_versions][@i].split(".")
|
20
|
+
if old_ver[0] < new_ver[0]
|
21
|
+
logs << (Paint % [
|
22
|
+
"#{gem[0]} v#{gem[1]} → %{red_text}",
|
23
|
+
:white,
|
24
|
+
{
|
25
|
+
red_text: ["v#{new_gems[:updated_gem_versions][@i]}", :red]
|
26
|
+
}
|
27
|
+
])
|
28
|
+
elsif old_ver[1] < new_ver[1]
|
29
|
+
logs << (Paint % [
|
30
|
+
"#{gem[0]} v#{gem[1]} → v#{new_ver[0]}.%{yellow_text}",
|
31
|
+
:white,
|
32
|
+
{
|
33
|
+
yellow_text: ["#{new_ver[1]}.#{new_ver[2]}", :yellow]
|
34
|
+
}
|
35
|
+
])
|
36
|
+
elsif old_ver[2] < new_ver[2]
|
37
|
+
logs << (Paint % [
|
38
|
+
"#{gem[0]} v#{gem[1]} → v#{new_ver[0]}.#{new_ver[1]}.%{green_text}",
|
39
|
+
:white,
|
40
|
+
{
|
41
|
+
green_text: [(new_ver[2]).to_s, :green]
|
42
|
+
}
|
43
|
+
])
|
44
|
+
end
|
45
|
+
if gem[0] == "souls"
|
46
|
+
logs << (Paint % [
|
47
|
+
"\nSOULs Doc: %{cyan_text}",
|
48
|
+
:white,
|
49
|
+
{ cyan_text: ["https://souls.elsoul.nl\n", :cyan] }
|
50
|
+
])
|
51
|
+
end
|
52
|
+
new_line.write("#{new_gems[:lines][@i]}\n")
|
53
|
+
@i += 1
|
54
|
+
else
|
55
|
+
new_line.write(line)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
FileUtils.rm("./Gemfile")
|
61
|
+
FileUtils.rm("./Gemfile.lock")
|
62
|
+
FileUtils.mv("./tmp/Gemfile", "./Gemfile")
|
63
|
+
system("bundle update")
|
64
|
+
success = Paint["\n\nSuccessfully Updated These Gems!\n", :green]
|
65
|
+
puts(success)
|
66
|
+
logs.each do |line|
|
67
|
+
puts(line)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def gemfile_latest_version
|
74
|
+
file_path = "./Gemfile"
|
75
|
+
updated_gems = []
|
76
|
+
updated_gem_versions = []
|
77
|
+
updated_lines = []
|
78
|
+
from_dev = false
|
79
|
+
File.open(file_path, "r") do |f|
|
80
|
+
f.each_line do |line|
|
81
|
+
from_dev = true if line.include?("group")
|
82
|
+
next unless line.include?("gem ")
|
83
|
+
|
84
|
+
gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
|
85
|
+
url = URI("https://rubygems.org/api/v1/versions/#{gem[0]}/latest.json")
|
86
|
+
res = Net::HTTP.get_response(url)
|
87
|
+
data = JSON.parse(res.body)
|
88
|
+
next if Souls.configuration.fixed_gems.include?(gem[0].to_s)
|
89
|
+
next if data["version"].to_s == gem[1].to_s
|
90
|
+
|
91
|
+
updated_lines << if from_dev
|
92
|
+
" gem \"#{gem[0]}\", \"#{data['version']}\""
|
93
|
+
else
|
94
|
+
"gem \"#{gem[0]}\", \"#{data['version']}\""
|
95
|
+
end
|
96
|
+
updated_gems << (gem[0]).to_s
|
97
|
+
updated_gem_versions << data["version"]
|
98
|
+
system("gem update #{gem[0]}")
|
99
|
+
end
|
100
|
+
end
|
101
|
+
{
|
102
|
+
gems: updated_gems,
|
103
|
+
lines: updated_lines,
|
104
|
+
updated_gem_versions: updated_gem_versions
|
105
|
+
}
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -1 +1 @@
|
|
1
|
-
require_relative "./
|
1
|
+
require_relative "./gemfile"
|
data/lib/souls/cli.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require "souls"
|
2
|
+
module Souls
|
3
|
+
class CLI < Thor
|
4
|
+
desc "api [COMMAND]", "souls api Commands"
|
5
|
+
subcommand "api", API
|
6
|
+
|
7
|
+
desc "gcloud [COMMAND]", "souls gcloud Commands"
|
8
|
+
subcommand "gcloud", Gcloud
|
9
|
+
|
10
|
+
desc "docker [COMMAND]", "souls docker Commands"
|
11
|
+
subcommand "docker", Docker
|
12
|
+
|
13
|
+
desc "create [COMMAND]", "souls create worker $worker_name"
|
14
|
+
subcommand "create", Create
|
15
|
+
|
16
|
+
desc "sync", "souls sync Commands"
|
17
|
+
subcommand "sync", Sync
|
18
|
+
|
19
|
+
desc "upgrade", "souls upgrade Commands"
|
20
|
+
subcommand "upgrade", Upgrade
|
21
|
+
|
22
|
+
desc "worker [COMMAND]", "souls worker Commands"
|
23
|
+
subcommand "worker", Worker
|
24
|
+
|
25
|
+
# rubocop:disable Style/StringHashKeys
|
26
|
+
map "c" => :console
|
27
|
+
map "s" => :server
|
28
|
+
map "db:migrate" => :migrate
|
29
|
+
map "db:create_migration" => :create_migration
|
30
|
+
map "db:add_column" => :add_column
|
31
|
+
map "db:rename_column" => :rename_column
|
32
|
+
map "db:change_column" => :change_column
|
33
|
+
map "db:remove_column" => :remove_column
|
34
|
+
map "db:drop_table" => :drop_table
|
35
|
+
map "db:create" => :db_create
|
36
|
+
map "db:migrate:reset" => :mirgate_reset
|
37
|
+
map "db:seed" => :seed
|
38
|
+
map "t" => :test
|
39
|
+
map ["-v", "--v", "--version", "-version"] => :version
|
40
|
+
# rubocop:enable Style/StringHashKeys
|
41
|
+
|
42
|
+
desc "version", "SOULs Version"
|
43
|
+
def version
|
44
|
+
puts(Souls::VERSION)
|
45
|
+
end
|
46
|
+
|
47
|
+
desc "test", "Run Rspec & Rubocop"
|
48
|
+
def test
|
49
|
+
system("rubocop -A")
|
50
|
+
system("bundle exec rspec")
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.exit_on_failure?
|
54
|
+
false
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/souls/index.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "thor"
|
1
2
|
require_relative "./api/index"
|
2
3
|
require_relative "./cli/index"
|
3
4
|
require_relative "./version"
|
@@ -5,9 +6,4 @@ require_relative "./worker/index"
|
|
5
6
|
require_relative "./utils/index"
|
6
7
|
|
7
8
|
module Souls
|
8
|
-
module Api
|
9
|
-
end
|
10
|
-
|
11
|
-
module Worker
|
12
|
-
end
|
13
9
|
end
|
data/lib/souls/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.31.0
|
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.31.0
|
@@ -1,2 +1,2 @@
|
|
1
1
|
require_relative "./mailer"
|
2
|
-
require_relative "./
|
2
|
+
require_relative "./job"
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Souls
|
2
|
+
class Generate < Thor
|
3
|
+
desc "job [CLASS_NAME]", "Generate Job File in Worker"
|
4
|
+
method_option mailer: :boolean, aliases: "--mailer", default: false, desc: "Generate Mailer Template"
|
5
|
+
def job(class_name)
|
6
|
+
if options[:mailer]
|
7
|
+
mailer(class_name)
|
8
|
+
else
|
9
|
+
create_mutation(class_name: class_name)
|
10
|
+
end
|
11
|
+
rescue Thor::Error => e
|
12
|
+
raise(Thor::Error, e)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def create_mutation(class_name: "send-mailer")
|
18
|
+
file_dir = "./app/graphql/mutations/"
|
19
|
+
FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
|
20
|
+
file_path = "#{file_dir}#{class_name.singularize}.rb"
|
21
|
+
raise(StandardError, "Mutation already exist! #{file_path}") if File.exist?(file_path)
|
22
|
+
|
23
|
+
File.open(file_path, "w") do |f|
|
24
|
+
f.write(<<~TEXT)
|
25
|
+
module Mutations
|
26
|
+
class #{class_name.camelize} < BaseMutation
|
27
|
+
description "Job Description"
|
28
|
+
field :response, String, null: false
|
29
|
+
|
30
|
+
def resolve
|
31
|
+
# Define Job Here
|
32
|
+
|
33
|
+
{ response: "Job done!" }
|
34
|
+
rescue StandardError => e
|
35
|
+
GraphQL::ExecutionError.new(e.to_s)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
TEXT
|
40
|
+
end
|
41
|
+
puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
|
42
|
+
file_path
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,56 +1,51 @@
|
|
1
1
|
module Souls
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
mailgun_mailer(class_name: class_name)
|
10
|
-
end
|
11
|
-
end
|
2
|
+
class Generate < Thor
|
3
|
+
desc "mailer [MAILER_NAME]", "Generate Mailer Template in Worker"
|
4
|
+
def mailer(class_name)
|
5
|
+
mailgun_mailer(class_name: class_name)
|
6
|
+
rescue Thor::Error => e
|
7
|
+
raise(Thor::Error, e)
|
8
|
+
end
|
12
9
|
|
13
|
-
|
10
|
+
private
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
def mailgun_mailer(class_name: "mailer")
|
13
|
+
file_dir = "./app/graphql/mutations/"
|
14
|
+
FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
|
15
|
+
file_path = "#{file_dir}#{class_name.singularize}.rb"
|
16
|
+
raise(StandardError, "Mailer already exist! #{file_path}") if File.exist?(file_path)
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
File.open(file_path, "w") do |f|
|
19
|
+
f.write(<<~TEXT)
|
20
|
+
module Mutations
|
21
|
+
class #{class_name.camelize} < BaseMutation
|
22
|
+
description "Mail を送信します。"
|
23
|
+
field :response, String, null: false
|
27
24
|
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
def resolve
|
26
|
+
# First, instantiate the Mailgun Client with your API key
|
27
|
+
mg_client = ::Mailgun::Client.new("YOUR-API-KEY")
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
29
|
+
# Define your message parameters
|
30
|
+
message_params = {
|
31
|
+
from: "postmaster@YOUR-DOMAIN",
|
32
|
+
to: "sending@to.mail.com",
|
33
|
+
subject: "SOULs Mailer test!",
|
34
|
+
text: "It is really easy to send a message!"
|
35
|
+
}
|
39
36
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|
37
|
+
# Send your message through the client
|
38
|
+
mg_client.send_message("YOUR-MAILGUN-DOMAIN", message_params)
|
39
|
+
{ response: "Job done!" }
|
40
|
+
rescue StandardError => e
|
41
|
+
GraphQL::ExecutionError.new(e.to_s)
|
47
42
|
end
|
48
|
-
|
43
|
+
end
|
49
44
|
end
|
50
|
-
|
51
|
-
file_path
|
52
|
-
end
|
45
|
+
TEXT
|
53
46
|
end
|
47
|
+
puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
|
48
|
+
file_path
|
54
49
|
end
|
55
50
|
end
|
56
51
|
end
|
data/lib/souls/worker/index.rb
CHANGED
data/lib/souls.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative "souls/index"
|
2
|
+
require_relative "souls/cli"
|
2
3
|
require "active_support/core_ext/string/inflections"
|
3
4
|
require "date"
|
4
5
|
require "json"
|
@@ -7,6 +8,7 @@ require "net/http"
|
|
7
8
|
require "paint"
|
8
9
|
require "whirly"
|
9
10
|
require "tty-prompt"
|
11
|
+
require "thor"
|
10
12
|
|
11
13
|
module Souls
|
12
14
|
extend Souls::Utils
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: souls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.52.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- POPPIN-FUMI
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-09-
|
13
|
+
date: 2021-09-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -96,6 +96,20 @@ dependencies:
|
|
96
96
|
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: 0.3.0
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: thor
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 1.1.0
|
106
|
+
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.1.0
|
99
113
|
description: |-
|
100
114
|
SOULs はサーバーレスフルスタックフレームワークです。柔軟な Ruby GraphQL API と Worker はルーティングの必要がありません。
|
101
115
|
クラウド環境への自動デプロイ、CI/CD ワークフローを標準装備。開発者がビジネスロジックに集中し、楽しくコードが書けるような環境を目指しています。
|
@@ -118,7 +132,6 @@ files:
|
|
118
132
|
- lib/souls/api/generate/edge.rb
|
119
133
|
- lib/souls/api/generate/index.rb
|
120
134
|
- lib/souls/api/generate/manager.rb
|
121
|
-
- lib/souls/api/generate/migration.rb
|
122
135
|
- lib/souls/api/generate/model.rb
|
123
136
|
- lib/souls/api/generate/mutation.rb
|
124
137
|
- lib/souls/api/generate/policy.rb
|
@@ -139,6 +152,7 @@ files:
|
|
139
152
|
- lib/souls/api/update/rspec_mutation.rb
|
140
153
|
- lib/souls/api/update/rspec_resolver.rb
|
141
154
|
- lib/souls/api/update/type.rb
|
155
|
+
- lib/souls/cli.rb
|
142
156
|
- lib/souls/cli/console/index.rb
|
143
157
|
- lib/souls/cli/create/index.rb
|
144
158
|
- lib/souls/cli/db/index.rb
|
@@ -160,7 +174,7 @@ files:
|
|
160
174
|
- lib/souls/cli/sync/index.rb
|
161
175
|
- lib/souls/cli/sync/model.rb
|
162
176
|
- lib/souls/cli/sync/pubsub.rb
|
163
|
-
- lib/souls/cli/upgrade/
|
177
|
+
- lib/souls/cli/upgrade/gemfile.rb
|
164
178
|
- lib/souls/cli/upgrade/index.rb
|
165
179
|
- lib/souls/index.rb
|
166
180
|
- lib/souls/utils/index.rb
|
@@ -168,8 +182,8 @@ files:
|
|
168
182
|
- lib/souls/versions/.souls_api_version
|
169
183
|
- lib/souls/versions/.souls_worker_version
|
170
184
|
- lib/souls/worker/generate/index.rb
|
185
|
+
- lib/souls/worker/generate/job.rb
|
171
186
|
- lib/souls/worker/generate/mailer.rb
|
172
|
-
- lib/souls/worker/generate/mutation.rb
|
173
187
|
- lib/souls/worker/index.rb
|
174
188
|
homepage: https://souls.elsoul.nl
|
175
189
|
licenses:
|