souls 0.24.4 → 0.24.5

Sign up to get free protection for your applications and to get access to all the features.
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