souls 0.23.3 → 0.23.7

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.
data/lib/souls.rb CHANGED
@@ -10,166 +10,174 @@ require "paint"
10
10
  require "whirly"
11
11
 
12
12
  module Souls
13
- SOULS_METHODS = [
14
- "model",
15
- "query",
16
- "mutation",
17
- "type",
18
- "resolver",
19
- "policy",
20
- "rspec_factory",
21
- "rspec_model",
22
- "rspec_query",
23
- "rspec_mutation",
24
- "rspec_resolver",
25
- "rspec_policy"
26
- ]
13
+ SOULS_METHODS = %w[
14
+ model
15
+ query
16
+ mutation
17
+ type
18
+ resolver
19
+ policy
20
+ rspec_factory
21
+ rspec_model
22
+ rspec_query
23
+ rspec_mutation
24
+ rspec_resolver
25
+ rspec_policy
26
+ ].freeze
27
+ public_constant :SOULS_METHODS
27
28
  class Error < StandardError; end
28
- class << self
29
- attr_accessor :configuration
29
+ class << self
30
+ attr_accessor :configuration
31
+ end
30
32
 
31
- def run_psql
32
- system "docker run --rm -d \
33
- -p 5433:5432 \
34
- -v postgres-tmp:/var/lib/postgresql/data \
35
- -e POSTGRES_USER=postgres \
36
- -e POSTGRES_PASSWORD=postgres \
37
- -e POSTGRES_DB=souls_test \
38
- postgres:13-alpine"
39
- system "docker ps"
40
- end
33
+ def self.run_psql
34
+ system(
35
+ "docker run --rm -d \
36
+ -p 5433:5432 \
37
+ -v postgres-tmp:/var/lib/postgresql/data \
38
+ -e POSTGRES_USER=postgres \
39
+ -e POSTGRES_PASSWORD=postgres \
40
+ -e POSTGRES_DB=souls_test \
41
+ postgres:13-alpine"
42
+ )
43
+ system("docker ps")
44
+ end
41
45
 
42
- def run_mysql
43
- system "docker run --rm -d \
44
- -p 3306:3306 \
45
- -v mysql-tmp:/var/lib/mysql \
46
- -e MYSQL_USER=mysql \
47
- -e MYSQL_ROOT_PASSWORD=mysql \
48
- -e MYSQL_DB=souls_test \
49
- mysql:latest"
50
- system "docker ps"
51
- end
46
+ def self.run_mysql
47
+ system(
48
+ "docker run --rm -d \
49
+ -p 3306:3306 \
50
+ -v mysql-tmp:/var/lib/mysql \
51
+ -e MYSQL_USER=mysql \
52
+ -e MYSQL_ROOT_PASSWORD=mysql \
53
+ -e MYSQL_DB=souls_test \
54
+ mysql:latest"
55
+ )
56
+ system("docker ps")
57
+ end
52
58
 
53
- def run_awake url
54
- app = Souls.configuration.app
55
- system "gcloud scheduler jobs create http #{app}-awake --schedule '0,10,20,30,40,50 * * * *' --uri #{url} --http-method GET"
56
- end
59
+ def self.run_awake(url)
60
+ app = Souls.configuration.app
61
+ system(
62
+ "gcloud scheduler jobs create http #{app}-awake
63
+ --schedule '0,10,20,30,40,50 * * * *' --uri #{url} --http-method GET"
64
+ )
65
+ end
57
66
 
58
- def show_wait_spinner(fps = 10)
59
- chars = %w[| / - \\]
60
- delay = 1.0 / fps
61
- iter = 0
62
- spinner = Thread.new do
63
- while iter
64
- print chars[(iter += 1) % chars.length]
65
- sleep delay
66
- print "\b"
67
- end
68
- end
69
- yield.tap do
70
- iter = false
71
- spinner.join
67
+ def self.show_wait_spinner(fps = 10)
68
+ chars = %w[| / - \\]
69
+ delay = 1.0 / fps
70
+ iter = 0
71
+ spinner =
72
+ Thread.new do
73
+ while iter
74
+ print(chars[(iter += 1) % chars.length])
75
+ sleep(delay)
76
+ print("\b")
72
77
  end
73
78
  end
79
+ yield.tap do
80
+ iter = false
81
+ spinner.join
82
+ end
83
+ end
74
84
 
75
- def gemfile_latest_version
76
- file_path = "./Gemfile"
77
- updated_gems = []
78
- updated_gem_versions = []
79
- updated_lines = []
80
- console_log = []
81
- from_dev = false
82
- File.open(file_path, "r") do |f|
83
- f.each_line do |line|
84
- from_dev = true if line.include? "group"
85
- next unless line.include? "gem "
86
- gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
87
- url = URI("https://rubygems.org/api/v1/versions/#{gem[0]}/latest.json")
88
- res = Net::HTTP.get_response(url)
89
- data = JSON.parse res.body
90
- next if data["version"].to_s == gem[1].to_s
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
- console_log << if gem[0].to_s == "souls"
100
- "#{gem[0]} v#{gem[1]} → v#{data["version"]}\n\nSOULs Doc: https://souls.elsoul.nl"
101
- else
102
- "#{gem[0]} v#{gem[1]} → v#{data["version"]}"
103
- end
104
- end
105
- end
106
- {
107
- gems: updated_gems,
108
- lines: updated_lines,
109
- console_log: console_log,
110
- updated_gem_versions: updated_gem_versions
111
- }
85
+ def self.gemfile_latest_version
86
+ file_path = "./Gemfile"
87
+ updated_gems = []
88
+ updated_gem_versions = []
89
+ updated_lines = []
90
+ from_dev = false
91
+ File.open(file_path, "r") do |f|
92
+ f.each_line do |line|
93
+ from_dev = true if line.include?("group")
94
+ next unless line.include?("gem ")
95
+
96
+ gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
97
+ url = URI("https://rubygems.org/api/v1/versions/#{gem[0]}/latest.json")
98
+ res = Net::HTTP.get_response(url)
99
+ data = JSON.parse(res.body)
100
+ next if data["version"].to_s == gem[1].to_s
101
+
102
+ updated_lines << if from_dev
103
+ " gem \"#{gem[0]}\", \"#{data['version']}\""
104
+ else
105
+ "gem \"#{gem[0]}\", \"#{data['version']}\""
106
+ end
107
+ updated_gems << (gem[0]).to_s
108
+ updated_gem_versions << data["version"]
109
+ system("gem update #{gem[0]}")
112
110
  end
111
+ end
112
+ {
113
+ gems: updated_gems,
114
+ lines: updated_lines,
115
+ updated_gem_versions: updated_gem_versions
116
+ }
117
+ end
113
118
 
114
- def update_gemfile
115
- file_path = "./Gemfile"
116
- tmp_file = "./tmp/Gemfile"
117
- new_gems = gemfile_latest_version
118
- logs = []
119
- message = Paint["\nAlready Up to date!", :green]
120
- return "Already Up to date!" && puts(message) if new_gems[:gems].blank?
121
- @i = 0
122
- File.open(file_path, "r") do |f|
123
- File.open(tmp_file, "w") do |new_line|
124
- f.each_line do |line|
125
- gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
126
- if new_gems[:gems].include? gem[0]
127
- old_ver = gem[1].split(".")
128
- new_ver = new_gems[:updated_gem_versions][@i].split(".")
129
- if old_ver[0] < new_ver[0]
130
- logs << Paint % [
131
- "#{gem[0]} v#{gem[1]} %{red_text}",
132
- :white,
133
- {
134
- red_text: ["v#{new_gems[:updated_gem_versions][@i]}", :red]
135
- }
136
- ]
137
- elsif old_ver[1] < new_ver[1]
138
- logs << Paint % [
139
- "#{gem[0]} v#{gem[1]} v#{new_ver[0]}.%{yellow_text}",
140
- :white,
141
- {
142
- yellow_text: ["#{new_ver[1]}.#{new_ver[2]}", :yellow]
143
- }
144
- ]
145
- elsif old_ver[2] < new_ver[2]
146
- logs << Paint % [
147
- "#{gem[0]} v#{gem[1]} v#{new_ver[0]}.#{new_ver[1]}.%{green_text}",
148
- :white,
149
- {
150
- green_text: [(new_ver[2]).to_s, :green]
151
- }
152
- ]
153
- end
154
- new_line.write "#{new_gems[:lines][@i]}\n"
155
- @i += 1
156
- else
157
- new_line.write line
158
- end
119
+ def self.update_gemfile
120
+ file_path = "./Gemfile"
121
+ tmp_file = "./tmp/Gemfile"
122
+ new_gems = gemfile_latest_version
123
+ logs = []
124
+ message = Paint["\nAlready Up to date!", :green]
125
+ return "Already Up to date!" && puts(message) if new_gems[:gems].blank?
126
+
127
+ @i = 0
128
+ File.open(file_path, "r") do |f|
129
+ File.open(tmp_file, "w") do |new_line|
130
+ f.each_line do |line|
131
+ gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
132
+ if new_gems[:gems].include?(gem[0])
133
+ old_ver = gem[1].split(".")
134
+ new_ver = new_gems[:updated_gem_versions][@i].split(".")
135
+ if old_ver[0] < new_ver[0]
136
+ logs << Paint % [
137
+ "#{gem[0]} v#{gem[1]} → %{red_text}",
138
+ :white,
139
+ {
140
+ red_text: ["v#{new_gems[:updated_gem_versions][@i]}", :red]
141
+ }
142
+ ]
143
+ elsif old_ver[1] < new_ver[1]
144
+ logs << Paint % [
145
+ "#{gem[0]} v#{gem[1]} → v#{new_ver[0]}.%{yellow_text}",
146
+ :white,
147
+ {
148
+ yellow_text: ["#{new_ver[1]}.#{new_ver[2]}", :yellow]
149
+ }
150
+ ]
151
+ elsif old_ver[2] < new_ver[2]
152
+ logs << Paint % [
153
+ "#{gem[0]} v#{gem[1]} → v#{new_ver[0]}.#{new_ver[1]}.%{green_text}",
154
+ :white,
155
+ {
156
+ green_text: [(new_ver[2]).to_s, :green]
157
+ }
158
+ ]
159
+ end
160
+ if gem[0] == "souls"
161
+ logs << Paint % ["\nSOULs Doc: %{cyan_text}", :white, { cyan_text: ["https://souls.elsoul.nl\n", :cyan] }]
159
162
  end
163
+ new_line.write("#{new_gems[:lines][@i]}\n")
164
+ @i += 1
165
+ else
166
+ new_line.write(line)
160
167
  end
161
168
  end
162
- FileUtils.rm "./Gemfile"
163
- FileUtils.rm "./Gemfile.lock"
164
- FileUtils.mv "./tmp/Gemfile", "./Gemfile"
165
- system "bundle update"
166
- success = Paint["\n\nSuccessfully Updated These Gems!\n", :green]
167
- puts success
168
- logs.each do |line|
169
- puts line
170
- end
171
169
  end
172
170
  end
171
+ FileUtils.rm("./Gemfile")
172
+ FileUtils.rm("./Gemfile.lock")
173
+ FileUtils.mv("./tmp/Gemfile", "./Gemfile")
174
+ system("bundle update")
175
+ success = Paint["\n\nSuccessfully Updated These Gems!\n", :green]
176
+ puts(success)
177
+ logs.each do |line|
178
+ puts(line)
179
+ end
180
+ end
173
181
 
174
182
  def self.configure
175
183
  self.configuration ||= Configuration.new
@@ -1,61 +1,71 @@
1
1
  module Souls
2
2
  module Gcloud
3
- class << self
4
- def auth_login
5
- project_id = Souls.configuration.project_id
6
- system "gcloud config set project #{project_id}"
7
- system "gcloud auth login"
8
- end
3
+ def self.auth_login
4
+ project_id = Souls.configuration.project_id
5
+ system("gcloud config set project #{project_id}")
6
+ system("gcloud auth login")
7
+ end
8
+
9
+ def self.enable_permissions
10
+ system("gcloud services enable compute.googleapis.com")
11
+ puts("Operating permission to compute.googleapis.com ...")
12
+ system("gcloud services enable iam.googleapis.com")
13
+ puts("Operating permission to iam.googleapis.com ...")
14
+ system("gcloud services enable dns.googleapis.com")
15
+ puts("Operating permission to dns.googleapis.com ...")
16
+ system("gcloud services enable sqladmin.googleapis.com")
17
+ puts("Operating permission to sqladmin.googleapis.com ...")
18
+ system("gcloud services enable sql-component.googleapis.com")
19
+ puts("Operating permission to sql-component.googleapis.com ...")
20
+ system("gcloud services enable servicenetworking.googleapis.com")
21
+ puts("Operating permission to servicenetworking.googleapis.com ...")
22
+ system("gcloud services enable containerregistry.googleapis.com")
23
+ puts("Operating permission to containerregistry.googleapis.com")
24
+ system("gcloud services enable run.googleapis.com")
25
+ puts("Operating permission to run.googleapis.com")
26
+ end
9
27
 
10
- def enable_permissions
11
- system "gcloud services enable compute.googleapis.com"
12
- puts "Operating permission to compute.googleapis.com ..."
13
- system "gcloud services enable iam.googleapis.com"
14
- puts "Operating permission to iam.googleapis.com ..."
15
- system "gcloud services enable dns.googleapis.com"
16
- puts "Operating permission to dns.googleapis.com ..."
17
- system "gcloud services enable sqladmin.googleapis.com"
18
- puts "Operating permission to sqladmin.googleapis.com ..."
19
- system "gcloud services enable sql-component.googleapis.com"
20
- puts "Operating permission to sql-component.googleapis.com ..."
21
- system "gcloud services enable servicenetworking.googleapis.com"
22
- puts "Operating permission to servicenetworking.googleapis.com ..."
23
- system "gcloud services enable containerregistry.googleapis.com"
24
- puts "Operating permission to containerregistry.googleapis.com"
25
- system "gcloud services enable run.googleapis.com"
26
- puts "Operating permission to run.googleapis.com"
27
- end
28
+ def self.create_network
29
+ return "Error: Please Set Souls.configuration" if Souls.configuration.app.nil?
28
30
 
29
- def create_network
30
- return "Error: Please Set Souls.configuration" if Souls.configuration.app.nil?
31
- network = Souls.configuration.app
32
- system "gcloud compute networks create #{network}"
33
- rescue StandardError => e
34
- raise StandardError, e
35
- end
31
+ network = Souls.configuration.app
32
+ system("gcloud compute networks create #{network}")
33
+ rescue StandardError => e
34
+ raise(StandardError, e)
35
+ end
36
36
 
37
- def create_firewall ip_range: "10.140.0.0/20"
38
- network = Souls.configuration.app
39
- system "gcloud compute firewall-rules create #{network} --network #{network} --allow tcp,udp,icmp --source-ranges #{ip_range}"
40
- system "gcloud compute firewall-rules create #{network}-ssh --network #{network} --allow tcp:22,tcp:3389,icmp"
41
- end
37
+ def self.create_firewall(ip_range: "10.140.0.0/20")
38
+ network = Souls.configuration.app
39
+ system(
40
+ "gcloud compute firewall-rules create #{network}
41
+ --network #{network}
42
+ --allow tcp,udp,icmp
43
+ --source-ranges #{ip_range}"
44
+ )
45
+ system("gcloud compute firewall-rules create #{network}-ssh --network #{network} --allow tcp:22,tcp:3389,icmp")
46
+ end
42
47
 
43
- def create_private_access
44
- network = Souls.configuration.app
45
- project_id = Souls.configuration.project_id
46
- system "gcloud compute addresses create #{network}-my-network \
47
- --global \
48
- --purpose=VPC_PEERING \
49
- --prefix-length=16 \
50
- --description='peering range for SOULs' \
51
- --network=#{network} \
52
- --project=#{project_id}"
53
- end
48
+ def self.create_private_access
49
+ network = Souls.configuration.app
50
+ project_id = Souls.configuration.project_id
51
+ system(
52
+ "gcloud compute addresses create #{network}-my-network \
53
+ --global \
54
+ --purpose=VPC_PEERING \
55
+ --prefix-length=16 \
56
+ --description='peering range for SOULs' \
57
+ --network=#{network} \
58
+ --project=#{project_id}"
59
+ )
60
+ end
54
61
 
55
- def create_sql_instance root_pass: "Postgre123!", zone: "asia-northeast1-b"
56
- app = "#{Souls.configuration.app}-db"
57
- system "gcloud sql instances create #{app} --database-version=POSTGRES_13 --cpu=2 --memory=7680MB --zone=#{zone} --root-password='#{root_pass}' --database-flags cloudsql.iam_authentication=on"
58
- end
62
+ def self.create_sql_instance(root_pass: "Postgre123!", zone: "asia-northeast1-b")
63
+ app = "#{Souls.configuration.app}-db"
64
+ system(
65
+ "gcloud sql instances create #{app}
66
+ --database-version=POSTGRES_13 --cpu=2 --memory=7680MB --zone=#{zone}
67
+ --root-password='#{root_pass}' --database-flags cloudsql.iam_authentication=on"
68
+ )
59
69
  end
60
70
  end
61
71
  end
@@ -1,32 +1,30 @@
1
1
  module Souls
2
2
  module Gcloud
3
- class << self
4
- def create_service_account service_account: "souls-app"
5
- `gcloud iam service-accounts create #{service_account} \
6
- --description="Souls Service Account" \
7
- --display-name="#{service_account}"`
8
- end
3
+ def self.create_service_account(service_account: "souls-app")
4
+ `gcloud iam service-accounts create #{service_account} \
5
+ --description="Souls Service Account" \
6
+ --display-name="#{service_account}"`
7
+ end
9
8
 
10
- def create_service_account_key service_account: "souls-app"
11
- project_id = Souls.configuration.project_id
12
- `gcloud iam service-accounts keys create ./config/keyfile.json \
13
- --iam-account #{service_account}@#{project_id}.iam.gserviceaccount.com`
14
- end
9
+ def self.create_service_account_key(service_account: "souls-app")
10
+ project_id = Souls.configuration.project_id
11
+ `gcloud iam service-accounts keys create ./config/keyfile.json \
12
+ --iam-account #{service_account}@#{project_id}.iam.gserviceaccount.com`
13
+ end
15
14
 
16
- def add_service_account_role service_account: "souls-app", role: "roles/firebase.admin"
17
- project_id = Souls.configuration.project_id
18
- `gcloud projects add-iam-policy-binding #{project_id} \
19
- --member="serviceAccount:#{service_account}@#{project_id}.iam.gserviceaccount.com" \
20
- --role="#{role}"`
21
- end
15
+ def self.add_service_account_role(service_account: "souls-app", role: "roles/firebase.admin")
16
+ project_id = Souls.configuration.project_id
17
+ `gcloud projects add-iam-policy-binding #{project_id} \
18
+ --member="serviceAccount:#{service_account}@#{project_id}.iam.gserviceaccount.com" \
19
+ --role="#{role}"`
20
+ end
22
21
 
23
- def add_permissions service_account: "souls-app"
24
- self.add_service_account_role service_account: service_account, role: "roles/cloudsql.serviceAgent"
25
- self.add_service_account_role service_account: service_account, role: "roles/containerregistry.ServiceAgent"
26
- self.add_service_account_role service_account: service_account, role: "roles/pubsub.serviceAgent"
27
- self.add_service_account_role service_account: service_account, role: "roles/firestore.serviceAgent"
28
- self.add_service_account_role service_account: service_account, role: "roles/iam.serviceAccountUser"
29
- end
22
+ def self.add_permissions(service_account: "souls-app")
23
+ add_service_account_role(service_account: service_account, role: "roles/cloudsql.serviceAgent")
24
+ add_service_account_role(service_account: service_account, role: "roles/containerregistry.ServiceAgent")
25
+ add_service_account_role(service_account: service_account, role: "roles/pubsub.serviceAgent")
26
+ add_service_account_role(service_account: service_account, role: "roles/firestore.serviceAgent")
27
+ add_service_account_role(service_account: service_account, role: "roles/iam.serviceAccountUser")
30
28
  end
31
29
  end
32
30
  end