souls 0.24.3 → 0.24.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba7f71524ac605ce72fcb622c1c00d0ff27efaf802ffe77fb1f480fa1473b324
4
- data.tar.gz: 9b9e076744f383c65617cd3b70298257d3ed2e3193dd90747c488e9248c695f9
3
+ metadata.gz: b2d5b134e45db7243b8abcfcf23622276de3d76f386d63123695dbe07a1359df
4
+ data.tar.gz: 413356865c3203299c148c8be2ab40be0a1793d08a96ad56d9962868eabcb6af
5
5
  SHA512:
6
- metadata.gz: 59a4c236a08e4cb86522396ee2c39a4db6084975013350925baee58ae24f4cbf0d4487c828684ba69f163c9cec9452bf2c12da928cc7fc2ccc493332020e08e0
7
- data.tar.gz: 9ddf0ba770f7a8c18d6a677a2039cbd9306179b8876f33b54fbe3d496c5366abfa93374d314b34c37aec53712d7e78133dd9a36317097071b8a85a2aa6aa06ed
6
+ metadata.gz: 0760b5f71c86db10d87a1be895d37ef1fcf00111453d16619531a6d3dc30b895e3dd39a1172d5acb0b9b52001d2136c459918c029e14dbb8b6ce7a683d1a4855
7
+ data.tar.gz: 15b14c42fce4845c49a7f510f177ca82c41ff065616ce8bb2fdcc738f115b2f094d4cb71e32cffadb5b2661a34b6d75311ce7000d1218e660af66717a5ae03fb
data/exe/souls CHANGED
@@ -32,8 +32,9 @@ begin
32
32
  strain = $stdin.gets.chomp.to_i
33
33
  case strain
34
34
  when 1, 2
35
- Souls::Init.download_souls(app_name: app_name, repository_name: "souls_#{STRAINS[strain.to_i - 1]}")
36
- Souls::Init.initial_config_init(app_name: app_name, strain: STRAINS[strain.to_i - 1])
35
+ service_name = (STRAINS[strain.to_i - 1]).to_s
36
+ Souls::Init.download_souls(app_name: app_name, service_name: service_name)
37
+ Souls::Init.initial_config_init(app_name: app_name, service_name: service_name)
37
38
  else
38
39
  puts(Paint["Coming Soon...", :blue])
39
40
  end
@@ -94,6 +95,17 @@ begin
94
95
  Souls.update_gemfile
95
96
  Whirly.status = "Done!"
96
97
  end
98
+ when "update"
99
+ service_name = ARGV[1]
100
+ permit_services = %w[api worker console admin media]
101
+ raise(StandardError, "Wrong Service Name!") unless permit_services.include?(service_name)
102
+
103
+ status = Paint["Saving Repo...", :yellow]
104
+ Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
105
+ Whirly.status = status
106
+ result = Paint[Souls.update_repo(service_name: service_name), :green]
107
+ Whirly.status = result
108
+ end
97
109
  when "add"
98
110
  graphql_class = ARGV[1]
99
111
  case graphql_class
data/lib/souls.rb CHANGED
@@ -3,11 +3,13 @@ require "active_support/core_ext/string/inflections"
3
3
  require_relative "souls/init"
4
4
  require_relative "souls/generate"
5
5
  require_relative "souls/gcloud"
6
+ require "dotenv/load"
6
7
  require "json"
7
8
  require "fileutils"
8
9
  require "net/http"
9
10
  require "paint"
10
11
  require "whirly"
12
+ require "google/cloud/firestore"
11
13
 
12
14
  module Souls
13
15
  SOULS_METHODS = %w[
@@ -165,6 +167,60 @@ module Souls
165
167
  end
166
168
  end
167
169
 
170
+ def update_repo(service_name: "api")
171
+ current_dir_name = FileUtils.pwd.to_s.match(%r{/([^/]+)/?$})[1]
172
+ latest_gem = get_latest_version(service_name: service_name)
173
+ new_ver = latest_gem[:version_counter] + 1
174
+ bucket_url = "gs://souls-bucket/boilerplates"
175
+ file_name = "#{service_name}-v#{new_ver}.tgz"
176
+ release_name = "#{service_name}-latest.tgz"
177
+
178
+ case current_dir_name
179
+ when "souls"
180
+ system("echo 'v#{new_ver}' > apps/#{service_name}/.souls_version")
181
+ system("cd apps/ && tar -czf ../#{service_name}.tgz #{service_name}/ && cd ..")
182
+ when "api", "worker", "console", "admin", "media"
183
+ system("echo 'v#{new_ver}' > .souls_version")
184
+ system("cd .. && tar -czf ../#{service_name}.tgz #{service_name}/ && cd #{service_name}")
185
+ else
186
+ raise(StandardError, "You are at wrong directory!")
187
+ end
188
+
189
+ system("gsutil cp #{service_name}.tgz #{bucket_url}/#{service_name.pluralize}/#{file_name}")
190
+ system("gsutil cp #{service_name}.tgz #{bucket_url}/#{service_name.pluralize}/#{release_name}")
191
+ file_url = "https://storage.googleapis.com/souls-bucket/boilerplates/#{service_name.pluralize}/#{file_name}"
192
+ version_log(service_name: service_name, version_counter: new_ver, file_url: file_url)
193
+ FileUtils.rm("#{service_name}.tgz")
194
+ "#{service_name}-v#{new_ver} Succefully Stored to GCS! "
195
+ end
196
+
197
+ def version_log(service_name: "api", version_counter: 1, file_url: "")
198
+ version = "v#{version_counter}"
199
+ time = Time.now.strftime("%F-%H-%M-%S")
200
+ firestore = Google::Cloud::Firestore.new(project_id: ENV["FIRESTORE_PID"])
201
+ doc_ref = firestore.doc("#{service_name}/#{version_counter}")
202
+ doc_ref.set({ version: version, version_counter: version_counter, file_url: file_url, created_at: time })
203
+ end
204
+
205
+ def get_latest_version(service_name: "api")
206
+ firestore = Google::Cloud::Firestore.new(project_id: ENV["FIRESTORE_PID"])
207
+ versions = firestore.doc("#{service_name}/1")
208
+ if versions.get.exists?
209
+ versions = firestore.col(service_name.to_s)
210
+ query = versions.order("version_counter", "desc").limit(1)
211
+ query.get do |v|
212
+ return {
213
+ version_counter: v.data[:version_counter],
214
+ version: v.data[:version],
215
+ file_url: v.data[:file_url],
216
+ create_at: v.data[:create_at]
217
+ }
218
+ end
219
+ else
220
+ { version_counter: 0 }
221
+ end
222
+ end
223
+
168
224
  def configure
169
225
  self.configuration ||= Configuration.new
170
226
  yield(configuration)
data/lib/souls/init.rb CHANGED
@@ -9,33 +9,54 @@ module Souls
9
9
  data[0]["tag_name"]
10
10
  end
11
11
 
12
- def self.download_souls(app_name: "souls", repository_name: "souls_api ")
13
- version = get_version(repository_name: repository_name)
14
- system("curl -OL https://github.com/elsoul/#{repository_name}/archive/#{version}.tar.gz")
15
- system("tar -zxvf ./#{version}.tar.gz")
16
- system("mkdir #{app_name}")
17
- folder = version.delete("v")
18
- `cp -r #{repository_name}-#{folder}/. #{app_name}/`
19
- `rm -rf #{version}.tar.gz && rm -rf #{repository_name}-#{folder}`
12
+ def self.initial_config_init(app_name: "souls", service_name: "api")
13
+ FileUtils.touch("./#{app_name}/#{service_name}/config/souls.rb")
14
+ file_path = "./#{app_name}/#{service_name}/config/souls.rb"
15
+ File.open(file_path, "w") do |f|
16
+ f.write(<<~TEXT)
17
+ Souls.configure do |config|
18
+ config.app = "#{app_name}"
19
+ config.project_id = "souls-api"
20
+ config.strain = "#{service_name}"
21
+ config.worker_endpoint = "https://worker.com"
22
+ config.fixed_gems = ["excluded_gem"]
23
+ end
24
+ TEXT
25
+ end
26
+ rescue StandardError => e
27
+ puts(e)
28
+ end
29
+
30
+ def self.download_souls(app_name: "souls", service_name: "api")
31
+ file_name = "#{service_name}-latest.tgz"
32
+ url = "https://storage.googleapis.com/souls-bucket/boilerplates/#{service_name.pluralize}/#{file_name}"
33
+ system("curl -OL #{url}")
34
+ system("mkdir -p #{app_name}/#{service_name}")
35
+ system("tar -zxvf ./#{file_name} -C #{app_name}/")
36
+ FileUtils.rm(file_name)
20
37
  line = Paint["====================================", :yellow]
21
38
  puts("\n")
22
39
  puts(line)
23
- txt = <<~TEXT
40
+ txt2 = <<~TEXT
24
41
  _____ ____ __ ____#{' '}
25
- / ___// __ \\/ / / / / _____
26
- \\__ \\/ / / / / / / / / ___/
27
- ___/ / /_/ / /_/ / /___(__ )#{' '}
28
- /____/\\____/\\____/_____/____/#{' '}
42
+ / ___// __ \\/ / / / / %{red1}
43
+ \\__ \\/ / / / / / / / %{red2}
44
+ ___/ / /_/ / /_/ / /___%{red3}#{' '}
45
+ /____/\\____/\\____/_____%{red4}#{' '}
29
46
  TEXT
30
- message = Paint[txt, :cyan]
31
- puts(message)
47
+ red1 = ["_____", :red]
48
+ red2 = ["/ ___/", :red]
49
+ red3 = ["(__ )", :red]
50
+ red4 = ["/____/", :red]
51
+ ms = Paint % [txt2, :cyan, { red1: red1, red2: red2, red3: red3, red4: red4 }]
52
+ puts(ms)
32
53
  puts(line)
33
54
  welcome = Paint["Welcome to SOULs!", :white]
34
55
  puts(welcome)
35
56
  souls_ver = Paint["SOULs Version: #{Souls::VERSION}", :white]
36
57
  puts(souls_ver)
37
58
  puts(line)
38
- cd = Paint["Easy to Run\n$ cd #{app_name}\n$ bundle\n$ souls s\nGo To : http://localhost:3000\n\nDoc: https://souls.elsoul.nl",
59
+ cd = Paint["Easy to Run\n$ cd #{app_name}/#{service_name}\n$ bundle\n$ souls s\nGo To : http://localhost:3000\n\nDoc: https://souls.elsoul.nl",
39
60
  :white]
40
61
  puts(cd)
41
62
  puts(line)
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Souls
2
- VERSION = "0.24.3".freeze
2
+ VERSION = "0.24.7".freeze
3
3
  public_constant :VERSION
4
4
  end
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.24.3
4
+ version: 0.24.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - POPPIN-FUMI
@@ -12,6 +12,20 @@ bindir: exe
12
12
  cert_chain: []
13
13
  date: 2021-07-22 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: google-cloud-firestore
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.6.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '='
27
+ - !ruby/object:Gem::Version
28
+ version: 2.6.1
15
29
  - !ruby/object:Gem::Dependency
16
30
  name: paint
17
31
  requirement: !ruby/object:Gem::Requirement