souls 0.24.4 → 0.24.5

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: 949cc1a83a8fd104832c205db7f8eab135bc3298523751538a7d767769b7ac27
4
- data.tar.gz: 2fa4257d0231d0363989a9ec85028276e68e33752c3a57067b1e5f5895dcdb24
3
+ metadata.gz: 67f7e7198ec3b50441d76d83f17500df4a1f92f7c49e23143626a6229279aaae
4
+ data.tar.gz: c20d8e26c040f6132a06e854f30c9c5ea2f15c87945407df1e0d8effac427c88
5
5
  SHA512:
6
- metadata.gz: ef3ab7e883db0805b78b41e5f51dfb2666617e99a07b490b84c36622c216efd81ac0346dbb9dd226db06704ca24828dc2cdb40c699516add438c318512736ce9
7
- data.tar.gz: 0ec076686c79072c96978a55430d00a59cca6c1978077e8a48dd3108dc074fc2770f4a8a9c42d4b490308380fa5ab7d4cc6c2e410ab34f376fefcd35a87e468b
6
+ metadata.gz: e5790b5cde1a9f507df76250ec89896b43b747eaaffdf17c3a7c8533bdca27a50afe2185585f37fbdca34cdfc48a1add8a4b42f0069f41ab867352ed836d7c74
7
+ data.tar.gz: 63d1cb575a722d2e045039bf6e7f091c48dfff4a57b76cbf3752009250c87d090ec31c48fa17607c3782aabc148ac12c0509b365cd1d7c27fb424ede32541c62
data/exe/souls CHANGED
@@ -32,7 +32,7 @@ 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]}")
35
+ Souls::Init.download_souls(app_name: app_name, service_name: (STRAINS[strain.to_i - 1]).to_s)
36
36
  Souls::Init.initial_config_init(app_name: app_name, strain: STRAINS[strain.to_i - 1])
37
37
  else
38
38
  puts(Paint["Coming Soon...", :blue])
@@ -94,6 +94,17 @@ begin
94
94
  Souls.update_gemfile
95
95
  Whirly.status = "Done!"
96
96
  end
97
+ when "update"
98
+ service_name = ARGV[1]
99
+ permit_services = %w[api worker console admin media]
100
+ raise(StandardError, "Wrong Service Name!") unless permit_services.include?(service_name)
101
+
102
+ status = Paint["Saving Repo...", :yellow]
103
+ Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
104
+ Whirly.status = status
105
+ result = Paint[Souls.update_repo(service_name: service_name), :green]
106
+ Whirly.status = result
107
+ end
97
108
  when "add"
98
109
  graphql_class = ARGV[1]
99
110
  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,58 @@ 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
+
177
+ case current_dir_name
178
+ when "souls"
179
+ system("echo 'v#{new_ver}' > apps/#{service_name}/.souls_version")
180
+ system("cd apps/ && tar -czf ../#{service_name}.tgz #{service_name}/ && cd ..")
181
+ when "api", "worker", "console", "admin", "media"
182
+ system("echo 'v#{new_ver}' > .souls_version")
183
+ system("cd .. && tar -czf ../#{service_name}.tgz #{service_name}/ && cd #{service_name}")
184
+ else
185
+ raise(StandardError, "You are at wrong directory!")
186
+ end
187
+
188
+ system("gsutil cp #{service_name}.tgz #{bucket_url}/#{service_name.pluralize}/#{file_name}")
189
+ file_url = "https://storage.googleapis.com/souls-bucket/boilerplates/#{service_name.pluralize}/#{file_name}"
190
+ version_log(service_name: service_name, version_counter: new_ver, file_url: file_url)
191
+ FileUtils.rm("#{service_name}.tgz")
192
+ "#{service_name}-v#{new_ver} Succefully Stored to GCS! "
193
+ end
194
+
195
+ def version_log(service_name: "api", version_counter: 1, file_url: "")
196
+ version = "v#{version_counter}"
197
+ time = Time.now.strftime("%F-%H-%M-%S")
198
+ firestore = Google::Cloud::Firestore.new(project_id: ENV["FIRESTORE_PID"])
199
+ doc_ref = firestore.doc("#{service_name}/#{version_counter}")
200
+ doc_ref.set({ version: version, version_counter: version_counter, file_url: file_url, created_at: time })
201
+ end
202
+
203
+ def get_latest_version(service_name: "api")
204
+ firestore = Google::Cloud::Firestore.new(project_id: ENV["FIRESTORE_PID"])
205
+ versions = firestore.doc("#{service_name}/1")
206
+ if versions.get.exists?
207
+ versions = firestore.col(service_name.to_s)
208
+ query = versions.order("version_counter", "desc").limit(1)
209
+ query.get do |v|
210
+ return {
211
+ version_counter: v.data[:version_counter],
212
+ version: v.data[:version],
213
+ file_url: v.data[:file_url],
214
+ create_at: v.data[:create_at]
215
+ }
216
+ end
217
+ else
218
+ { version_counter: 0 }
219
+ end
220
+ end
221
+
168
222
  def configure
169
223
  self.configuration ||= Configuration.new
170
224
  yield(configuration)
data/lib/souls/init.rb CHANGED
@@ -16,7 +16,10 @@ module Souls
16
16
  f.write(<<~TEXT)
17
17
  Souls.configure do |config|
18
18
  config.app = "#{app_name}"
19
+ config.project_id = "souls-api"
19
20
  config.strain = "#{strain}"
21
+ config.worker_endpoint = "https://worker.com"
22
+ config.fixed_gems = ["excluded_gem"]
20
23
  end
21
24
  TEXT
22
25
  end
@@ -24,33 +27,36 @@ module Souls
24
27
  puts(e)
25
28
  end
26
29
 
27
- def self.download_souls(app_name: "souls", repository_name: "souls_api ")
28
- version = get_version(repository_name: repository_name)
29
- system("curl -OL https://github.com/elsoul/#{repository_name}/archive/#{version}.tar.gz")
30
- system("tar -zxvf ./#{version}.tar.gz")
31
- system("mkdir #{app_name}")
32
- folder = version.delete("v")
33
- `cp -r #{repository_name}-#{folder}/. #{app_name}/`
34
- `rm -rf #{version}.tar.gz && rm -rf #{repository_name}-#{folder}`
30
+ def self.download_souls(app_name: "souls", service_name: "api")
31
+ latest_gem = Souls.get_latest_version(service_name: service_name)
32
+ file_name = latest_gem[:file_url].to_s.match(%r{/([^/]+)/?$})[1]
33
+ system("curl -OL #{latest_gem[:file_url]}")
34
+ system("mkdir -p #{app_name}/#{service_name}")
35
+ system("tar -zxvf ./#{file_name} -C #{app_name}/")
36
+ FileUtils.rm(file_name)
35
37
  line = Paint["====================================", :yellow]
36
38
  puts("\n")
37
39
  puts(line)
38
- txt = <<~TEXT
40
+ txt2 = <<~TEXT
39
41
  _____ ____ __ ____#{' '}
40
- / ___// __ \\/ / / / / _____
41
- \\__ \\/ / / / / / / / / ___/
42
- ___/ / /_/ / /_/ / /___(__ )#{' '}
43
- /____/\\____/\\____/_____/____/#{' '}
42
+ / ___// __ \\/ / / / / %{red1}
43
+ \\__ \\/ / / / / / / / %{red2}
44
+ ___/ / /_/ / /_/ / /___%{red3}#{' '}
45
+ /____/\\____/\\____/_____%{red4}#{' '}
44
46
  TEXT
45
- message = Paint[txt, :cyan]
46
- 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)
47
53
  puts(line)
48
54
  welcome = Paint["Welcome to SOULs!", :white]
49
55
  puts(welcome)
50
56
  souls_ver = Paint["SOULs Version: #{Souls::VERSION}", :white]
51
57
  puts(souls_ver)
52
58
  puts(line)
53
- 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",
54
60
  :white]
55
61
  puts(cd)
56
62
  puts(line)
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Souls
2
- VERSION = "0.24.4".freeze
2
+ VERSION = "0.24.5".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.4
4
+ version: 0.24.5
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