souls 1.6.15 → 1.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3f025bcadbd709efbfe575c70bd72c7d097afe3f3ffff21afb6eed5ce7ff6a4
4
- data.tar.gz: 38abcac4ffeca852239ebc179c3384638525c46cea878753d79e2a620364ca68
3
+ metadata.gz: 32302ba2e0fd1c7f83b719c9dce0ab98c34a38f988f7f2b6f384fab8819a9990
4
+ data.tar.gz: cdd9b060a8fdbf9ced59a1ec2398387a7a44ad6d885d4027c0d4c75ada92c065
5
5
  SHA512:
6
- metadata.gz: bfce0b57fd661955b8d0ee99b9ddcf4b6dbd3a28e856177c5825d9da62980a6cfdd35e3001b01e280a47966ee18ce89845c2023bc6f9e0d96851547e68db332e
7
- data.tar.gz: 6ec755000b1d602ae2314cf5cc225e34a041f5a3081edeed5e0f60f9c587ea03fb2cf58b0f7e70aae0690a039568659608636c04b6af3c41aa7ba4119f765ba9
6
+ metadata.gz: 90b63307663021f3885fa96f09a49b784a3a5fd7c22f260e2602442342ad8fd630ef9e6ba76361548fce88afcb50240dec170cc3d895988b0b84d3dd8daf5e54
7
+ data.tar.gz: 2546afbd6fce7bd1c08beb29b622cb851bc3ccb0fa138f6f729b05af7c38e1af168f57cb6c6d3634730a2f246c9c8787bb8ca7c89cc862996e1102de44d1102a
@@ -3,7 +3,8 @@ module Souls
3
3
  desc "setup_vpc_nat", "Set Up VPC Cloud Nat"
4
4
  method_option :range, default: "10.124.0.0/28", aliases: "--range", desc: "GCP VPC Network IP Range"
5
5
  def setup_vpc_nat
6
- puts(Paint["Initializing NAT Setup This process might take about 5 min...", :yellow])
6
+ puts(Paint["Initializing NAT Setup This process might take about 10 min...", :yellow])
7
+ Souls::Gcloud.new.config_set
7
8
  create_network
8
9
  create_firewall_tcp(range: options[:range])
9
10
  create_firewall_ssh
@@ -14,7 +15,9 @@ module Souls
14
15
  create_nat
15
16
  Souls::Sql.new.invoke(:setup_private_ip)
16
17
  update_workflows
18
+ update_env
17
19
  puts(Paint["Cloud NAT is All Set!", :green])
20
+ puts(Paint["\nYou need to deploy to update production DB_HOST environment!", :yellow])
18
21
  true
19
22
  rescue Thor::Error => e
20
23
  raise(Thor::Error, e)
@@ -22,6 +25,23 @@ module Souls
22
25
 
23
26
  private
24
27
 
28
+ def update_env
29
+ instance_name = Souls.configuration.instance_name
30
+ private_instance_ip = `gcloud sql instances list | grep #{instance_name} | awk '{print $6}'`.strip
31
+ Dir.chdir(Souls.get_mother_path.to_s) do
32
+ file_path = ".env.production"
33
+ env_production = File.readlines(file_path)
34
+ env_production[0] = "SOULS_DB_HOST=#{private_instance_ip}\n"
35
+ File.open(file_path, "w") { |f| f.write(env_production.join) }
36
+ end
37
+ system("gh secret set DB_HOST -b #{private_instance_ip}")
38
+ end
39
+
40
+ def get_external_ip
41
+ app_name = Souls.configuration.app
42
+ `gcloud compute addresses list | grep #{app_name}-worker-ip | awk '{print $2}'`.strip
43
+ end
44
+
25
45
  def create_network
26
46
  app_name = Souls.configuration.app
27
47
  system("gcloud compute networks create #{app_name}")
@@ -122,7 +122,7 @@ module Souls
122
122
  instance_name = Souls.configuration.instance_name if instance_name.blank?
123
123
  system(
124
124
  "
125
- gcloud beta sql instances patch #{instance_name} \
125
+ gcloud sql instances patch #{instance_name} \
126
126
  --project=#{project_id} \
127
127
  --assign-ip \
128
128
  --authorized-networks=#{ip}
@@ -115,6 +115,8 @@ module Souls
115
115
 
116
116
  def get_latest_gem(app_name)
117
117
  file_path = "./#{app_name}/Gemfile"
118
+ souls_gem = "gem \"souls\", \"#{Souls::VERSION}\""
119
+ souls_gem = "gem \"souls\", \"#{Souls::VERSION}\", path: \"~/.local_souls/\"" if Souls::VERSION.length > 20
118
120
  File.open(file_path, "w") do |f|
119
121
  f.write(<<~TEXT)
120
122
  source "https://rubygems.org"
@@ -130,7 +132,7 @@ module Souls
130
132
  gem "rubocop", "1.22.3"
131
133
  gem "sinatra-activerecord", "2.0.23"
132
134
  gem "solargraph", "0.44.0"
133
- gem "souls", "#{Souls::VERSION}"
135
+ #{souls_gem}
134
136
  gem "steep", "0.46.0"
135
137
  gem "thor", "1.1.0"
136
138
  gem "tty-prompt", "0.23.1"
@@ -1,3 +1,5 @@
1
+ require "securerandom"
2
+
1
3
  module Souls
2
4
  class CLI < Thor
3
5
  desc "release", "Release Gem"
@@ -22,7 +24,7 @@ module Souls
22
24
  Whirly.status = status
23
25
  %w[api worker].each do |s_name|
24
26
  update_service_gemfile(service_name: s_name, version: souls_new_ver)
25
- result = Paint[update_repo(service_name: s_name, update_kind: update_kind), :green]
27
+ result = Paint[update_repo(service_name: s_name, version: souls_new_ver), :green]
26
28
  Whirly.status = result
27
29
  end
28
30
  overwrite_version(new_version: souls_new_ver)
@@ -40,6 +42,46 @@ module Souls
40
42
  end
41
43
  end
42
44
 
45
+ desc "release_local", "Release gem for local use"
46
+ def release_local
47
+ unless `git status`.include?("nothing to commit")
48
+ raise(
49
+ StandardError,
50
+ "You can only release to local with a clean working directory. Please commit your changes."
51
+ )
52
+ end
53
+
54
+ local_dir = "~/.local_souls/"
55
+
56
+ system("mkdir -p #{local_dir}")
57
+ souls_local_ver = generate_local_version
58
+
59
+ status = Paint["Saving Repo...", :yellow]
60
+ Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
61
+ Whirly.status = status
62
+
63
+ %w[api worker].each do |s_name|
64
+ update_service_gemfile(service_name: s_name, version: souls_local_ver, local: true)
65
+ result = Paint[update_repo(service_name: s_name, version: souls_local_ver), :green]
66
+ Whirly.status = result
67
+ end
68
+
69
+ Whirly.status = Paint["Creating local gem..."]
70
+
71
+ overwrite_version(new_version: souls_local_ver)
72
+ system("gem build souls.gemspec --output #{local_dir}souls-#{souls_local_ver}.gem")
73
+ Whirly.status = Paint["Done. Created gem at #{local_dir}souls-#{souls_local_ver}.gem"]
74
+ Whirly.status = Paint["Removing previous versions...", :white]
75
+ system("gem uninstall souls -x --force")
76
+
77
+ Whirly.status = Paint["Installing local gem..."]
78
+ system("gem install #{local_dir}souls-#{souls_local_ver}.gem")
79
+
80
+ Whirly.status = Paint["Cleaning up..."]
81
+ system("git checkout .")
82
+ end
83
+ end
84
+
43
85
  private
44
86
 
45
87
  def write_changelog(current_souls_ver:)
@@ -58,22 +100,20 @@ module Souls
58
100
  File.open("./CHANGELOG.md", "w") { |f| f.write(md) }
59
101
  end
60
102
 
61
- def update_repo(service_name: "api", update_kind: "patch")
103
+ def update_repo(service_name: "api", version: "0.0.1")
62
104
  current_dir_name = FileUtils.pwd.to_s.match(%r{/([^/]+)/?$})[1]
63
- current_ver = Souls.get_latest_version_txt(service_name: service_name)
64
- new_ver = Souls.version_detector(current_ver: current_ver, update_kind: update_kind)
65
105
  bucket_url = "gs://souls-bucket/boilerplates"
66
- file_name = "#{service_name}-v#{new_ver}.tgz"
106
+ file_name = "#{service_name}-v#{version}.tgz"
67
107
  release_name = "#{service_name}-latest.tgz"
68
108
 
69
109
  case current_dir_name
70
110
  when "souls"
71
- system("echo '#{new_ver}' > lib/souls/versions/.souls_#{service_name}_version")
72
- system("echo '#{new_ver}' > apps/#{service_name}/.souls_#{service_name}_version")
111
+ system("echo '#{version}' > lib/souls/versions/.souls_#{service_name}_version")
112
+ system("echo '#{version}' > apps/#{service_name}/.souls_#{service_name}_version")
73
113
  system("cd apps/ && tar -czf ../#{service_name}.tgz #{service_name}/ && cd ..")
74
114
  when "api", "worker", "console", "admin", "media"
75
- system("echo '#{new_ver}' > lib/souls/versions/.souls_#{service_name}_version")
76
- system("echo '#{new_ver}' > .souls_#{service_name}_version")
115
+ system("echo '#{version}' > lib/souls/versions/.souls_#{service_name}_version")
116
+ system("echo '#{version}' > .souls_#{service_name}_version")
77
117
  system("cd .. && tar -czf ../#{service_name}.tgz #{service_name}/ && cd #{service_name}")
78
118
  else
79
119
  raise(StandardError, "You are at wrong directory!")
@@ -83,31 +123,33 @@ module Souls
83
123
  system("gsutil cp #{service_name}.tgz #{bucket_url}/#{service_name.pluralize}/#{release_name}")
84
124
  system("gsutil cp .rubocop.yml #{bucket_url}/.rubocop.yml")
85
125
  FileUtils.rm("#{service_name}.tgz")
86
- "#{service_name}-v#{new_ver} Succefully Stored to GCS! "
126
+ "#{service_name}-v#{version} Succefully Stored to GCS! "
87
127
  end
88
128
 
89
- def update_service_gemfile(service_name: "api", version: "0.0.1")
129
+ def update_service_gemfile(service_name: "api", version: "0.0.1", local: false)
90
130
  file_dir = "./apps/#{service_name}"
91
131
  file_path = "#{file_dir}/Gemfile"
92
- gemfile_lock = "#{file_dir}/Gemfile.lock"
93
- tmp_file = "#{file_dir}/tmp/Gemfile"
132
+
133
+ write_txt = ""
94
134
  File.open(file_path, "r") do |f|
95
- File.open(tmp_file, "w") do |new_line|
96
- f.each_line do |line|
97
- gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
135
+ f.each_line do |line|
136
+ gem = line.gsub("gem ", "").gsub("\"", "").gsub("\n", "").gsub(" ", "").split(",")
137
+ write_txt +=
98
138
  if gem[0] == "souls"
99
- old_ver = gem[1].split(".")
100
- old_ver[2] = (old_ver[2].to_i + 1).to_s
101
- new_line.write(" gem \"souls\", \"#{version}\"\n")
139
+ if local
140
+ " gem \"souls\", \"#{version}\", path: \"~/.local_souls/\"\n"
141
+ else
142
+ " gem \"souls\", \"#{version}\"\n"
143
+ end
102
144
  else
103
- new_line.write(line)
145
+ line
104
146
  end
105
- end
106
147
  end
107
148
  end
108
- FileUtils.rm(file_path)
149
+ File.open(file_path, "w") { |f| f.write(write_txt) }
150
+
151
+ gemfile_lock = "#{file_dir}/Gemfile.lock"
109
152
  FileUtils.rm(gemfile_lock) if File.exist?(gemfile_lock)
110
- FileUtils.mv(tmp_file, file_path)
111
153
  puts(Paint["\nSuccessfully Updated #{service_name} Gemfile!", :green])
112
154
  end
113
155
 
@@ -145,5 +187,14 @@ module Souls
145
187
  FileUtils.rm(file_path)
146
188
  FileUtils.mv(new_file_path, file_path)
147
189
  end
190
+
191
+ def generate_local_version
192
+ max = 99_999_999_999
193
+ a = SecureRandom.random_number(max) + 9999
194
+ b = SecureRandom.random_number(max)
195
+ c = SecureRandom.random_number(max)
196
+
197
+ "#{a}.#{b}.#{c}"
198
+ end
148
199
  end
149
200
  end
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Souls
2
- VERSION = "1.6.15".freeze
2
+ VERSION = "1.7.0".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 1.6.15
1
+ 1.7.0
@@ -1 +1 @@
1
- 1.6.15
1
+ 1.7.0
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: 1.6.15
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - POPPIN-FUMI
@@ -232,7 +232,7 @@ licenses:
232
232
  metadata:
233
233
  homepage_uri: https://souls.elsoul.nl
234
234
  source_code_uri: https://github.com/elsoul/souls
235
- changelog_uri: https://github.com/elsoul/souls/releases/tag/v1.6.15
235
+ changelog_uri: https://github.com/elsoul/souls/releases/tag/v1.7.0
236
236
  post_install_message:
237
237
  rdoc_options: []
238
238
  require_paths: