souls 1.19.9 → 1.20.3

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: 47404f43681adfd3c3ee24a1bcec31e7e538f944d4b55b6d43b2024888a9a169
4
- data.tar.gz: b883f0d9337e02c3ffc75ec982a156f393618b752991a256303975e80130f362
3
+ metadata.gz: '0946f596e96e2c08ba61f98665d3fc2bf8c61a8663c4c2b67362b1403e6ab280'
4
+ data.tar.gz: 8b756a0ef09f8c69b1510efd87c3dc182e21dda316bbb171e1efaa8bc2e75611
5
5
  SHA512:
6
- metadata.gz: 414619b49aa78b8e735705ee0e4b278d1159345a652d386bbe3cd19f80b6997584968110ce3fee19f6b135b289d0a5544cd1d774b83303dc5d1d0deab3d7e6aa
7
- data.tar.gz: 6c98c7ca8c8ac5ed740649dfecb5ab899571b2421d95c5840e68087b1c4fc24aa32b239fbad6989d51afe787b5424a5c6c6cb5d3c0fda98b795cb2a5b6d173d1
6
+ metadata.gz: 956e561c42dda0190e62098bc92e37c7ed9bf13f8e0a15202309d97dc59d8d2647f001b34bb750df56c62f2018a8ebc4c478c90fe56b51d8ff9bc2b3e2bc7556
7
+ data.tar.gz: 3ef473d0c5e2e3599039ae56bd4fd717795d50f63ce6fcbe7d356fd4e69b5aef1ec75d8bf48d65b0d3cccfedb976f520b84e94fbc103aa0f744870b5b00fecf4
@@ -1,5 +1,24 @@
1
1
  module SOULs
2
2
  class SOULsMutation < GraphQL::Schema::RelayClassicMutation
3
+ def self.post(url:, payload: {}, content_type: "application/json")
4
+ response = Faraday.post(url, payload.to_json, "Content-Type": content_type)
5
+ response.body
6
+ end
7
+
8
+ def self.souls_worker_trigger(query_name:)
9
+ query_name = query_name.gsub("_", "-")
10
+ worker_name = FileUtils.pwd.split("/").last
11
+ topic_name = "souls-#{worker_name}-#{query_name}"
12
+ query = query_name.underscore.camelize(:lower)
13
+ query_string = souls_make_graphql_query(query: query)
14
+ case ENV["RACK_ENV"]
15
+ when "production"
16
+ souls_publish_pubsub_queue(topic_name: topic_name, message: query_string)
17
+ when "development"
18
+ puts(souls_post_to_dev(worker_name: worker_name, query_string: query_string))
19
+ end
20
+ end
21
+
3
22
  def self.souls_check_user_permissions(user, obj, method)
4
23
  raise(StandardError, "Invalid or Missing Token") unless user
5
24
 
@@ -5,6 +5,11 @@ module SOULs
5
5
  attr_accessor :schedule
6
6
  end
7
7
 
8
+ def self.post(url:, payload: {}, content_type: "application/json")
9
+ response = Faraday.post(url, payload.to_json, "Content-Type": content_type)
10
+ response.body
11
+ end
12
+
8
13
  def self.check_user_permissions(user, obj, method)
9
14
  raise(StandardError, "Invalid or Missing Token") unless user
10
15
 
@@ -1,6 +1,6 @@
1
- require_relative "./templates/functions_env_yaml"
1
+ require_relative "./templates/functions/functions_env_yaml"
2
2
 
3
- Dir["#{SOULs::SOULS_PATH}/lib/souls/cli/create/templates/*/*.rb"].map do |f|
3
+ Dir["#{SOULs::SOULS_PATH}/lib/souls/cli/create/templates/functions/*/*.rb"].map do |f|
4
4
  require f
5
5
  end
6
6
 
@@ -47,6 +47,19 @@ module SOULs
47
47
  SOULs::Painter.create_file(file_path)
48
48
  end
49
49
  create_env_yaml(file_dir: file_dir)
50
+ endroll = <<~TEXT
51
+
52
+ ♤ Deploy Cloud Functions ♤
53
+
54
+ $ cd apps/cf-#{version_string}-#{function_name}
55
+ $ souls functions deploy
56
+
57
+ $ souls functions help
58
+
59
+
60
+ Doc: https://souls.elsoul.nl
61
+ TEXT
62
+ puts(Paint[endroll, :white])
50
63
  end
51
64
 
52
65
  private
@@ -62,7 +75,7 @@ module SOULs
62
75
  end
63
76
 
64
77
  def get_runtime_create_method(runtime:)
65
- Dir["#{SOULs::SOULS_PATH}/lib/souls/cli/create/templates/#{runtime}/*"].map do |n|
78
+ Dir["#{SOULs::SOULS_PATH}/lib/souls/cli/create/templates/functions/#{runtime}/*"].map do |n|
66
79
  n.split("/").last.gsub(".rb", "")
67
80
  end
68
81
  end
@@ -11,9 +11,22 @@ module SOULs
11
11
  end
12
12
 
13
13
  runtime = current_dir.match(/cf-(\D+\d+)-/)[1]
14
+ runtime_lang = current_dir.match(/^cf-(\D+)\d+-/)[1]
15
+ entry_point =
16
+ case runtime_lang
17
+ when "nodejs"
18
+ current_dir.underscore.camelize(:lower)
19
+ when "python"
20
+ current_dir.underscore
21
+ when "go"
22
+ current_dir.underscore.camelize
23
+ else
24
+ system("bundle install")
25
+ current_dir
26
+ end
14
27
  system(
15
28
  "
16
- gcloud functions deploy #{current_dir} --project=#{project_id} \
29
+ gcloud functions deploy #{current_dir} --entry-point='#{entry_point}' --project=#{project_id} \
17
30
  --runtime #{runtime} --trigger-http --allow-unauthenticated --env-vars-file .env.yaml
18
31
  "
19
32
  )
@@ -35,7 +48,7 @@ module SOULs
35
48
  Dir.chdir(SOULs.get_mother_path.to_s) do
36
49
  FileUtils.rm_rf("apps/#{name}")
37
50
  end
38
- SOULs::Painter.success("Deleted #{name} functions!")
51
+ SOULs::Painter.warning("Deleted #{name} functions!", "✨")
39
52
  end
40
53
 
41
54
  desc "url", "Get SOULs Functions URL"
@@ -1,12 +1,11 @@
1
1
  module SOULs
2
2
  class CloudScheduler < Thor
3
- desc "awake", "Set Ping Every 15min by Google Cloud Scheduler"
4
- method_option :url, default: "https://souls.souls.nl", aliases: "--url", desc: "Set URL"
5
- def awake
3
+ desc "awake [url]", "Set Ping Every 15min by Google Cloud Scheduler"
4
+ def awake(url)
6
5
  app_name = SOULs.configuration.app
7
6
  system(
8
7
  "gcloud scheduler jobs create http #{app_name}-awake
9
- --schedule '0,10,20,30,40,50 * * * *' --uri #{options[:url]} --http-method GET"
8
+ --schedule '0,10,20,30,40,50 * * * *' --uri #{url} --http-method GET"
10
9
  )
11
10
  end
12
11
 
@@ -18,11 +17,11 @@ module SOULs
18
17
  project_id = SOULs.configuration.project_id
19
18
 
20
19
  schedules_list = current_schedules
21
- worker_name = FileUtils.pwd.split("/").last
20
+ worker_name = FileUtils.pwd.split("/").last.underscore
22
21
  Queries::BaseQuery.all_schedules.each do |k, v|
23
22
  worker_name = FileUtils.pwd.split("/").last
24
- job_name = "souls_#{worker_name}_#{k.to_s.underscore}".to_sym
25
- topic = "souls_#{worker_name}_#{k.to_s.underscore}"
23
+ job_name = "souls-#{worker_name}-#{k.to_s.underscore}".to_sym
24
+ topic = "souls-#{worker_name}-#{k.to_s.underscore}"
26
25
  message_body = "query { #{k.to_s.camelize(:lower)} { response }}"
27
26
 
28
27
  if schedules_list.include?(job_name)
@@ -43,7 +42,7 @@ module SOULs
43
42
  end
44
43
 
45
44
  schedules_list.each do |k, _|
46
- next unless k.match?(/^souls_#{worker_name}/)
45
+ next unless k.match?(/^souls-#{worker_name}/)
47
46
 
48
47
  system("gcloud scheduler jobs delete #{k} -q >/dev/null 2>&1")
49
48
  end
@@ -13,19 +13,41 @@ module SOULs
13
13
 
14
14
  zone = "#{region}-b"
15
15
  system("gcloud config set project #{project_id} >/dev/null 2>&1")
16
- Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
17
- system(
18
- "gcloud sql instances create #{instance_name} \
16
+ system(
17
+ "gcloud sql instances create #{instance_name} \
19
18
  --database-version=#{db_type} --cpu=1 --memory=4096MB --zone=#{zone} \
20
19
  --root-password='#{password}' --database-flags cloudsql.iam_authentication=on"
21
- )
22
- SOULs::Sql.new.env(password: password)
23
- SOULs::Github.new.secret_set
24
- Whirly.status = Paint["Cloud SQL #{instance_name} is successfully created! You can push to deploy!", :green]
25
- end
20
+ )
21
+ SOULs::Sql.new.env(password: password)
22
+ SOULs::Github.new.secret_set
23
+ SOULs::Painter.success("Cloud SQL #{instance_name} is successfully created! You can push to deploy!")
26
24
  true
27
25
  end
28
26
 
27
+ desc "stop", "Stop Cloud SQL Instance"
28
+ def stop
29
+ project_id = SOULs.configuration.project_id
30
+ instance_name = SOULs.configuration.instance_name
31
+ system("gcloud sql instances patch #{instance_name} --project=#{project_id} --activation-policy=NEVER")
32
+ SOULs::Painter.warning("Cloud SQL #{instance_name} is stopped!")
33
+ end
34
+
35
+ desc "restart", "Restart Cloud SQL Instance"
36
+ def restart
37
+ project_id = SOULs.configuration.project_id
38
+ instance_name = SOULs.configuration.instance_name
39
+ system("gcloud sql instances restart #{instance_name} --project=#{project_id}")
40
+ SOULs::Painter.success("Cloud SQL #{instance_name} is restarted!")
41
+ end
42
+
43
+ desc "delete", "Delete Cloud SQL Instance"
44
+ def delete
45
+ project_id = SOULs.configuration.project_id
46
+ instance_name = SOULs.configuration.instance_name
47
+ system("gcloud sql instances delete #{instance_name} --project=#{project_id}")
48
+ SOULs::Painter.warning("Cloud SQL #{instance_name} is deleted!", "✨")
49
+ end
50
+
29
51
  desc "env", "Generate .env.production file to deploy"
30
52
  def env(password: "Password")
31
53
  require(SOULs.get_mother_path.to_s + "/config/souls")
@@ -5,6 +5,8 @@ module SOULs
5
5
  desc "release", "Release Gem"
6
6
  def release
7
7
  SOULs::Painter.error("hey! It's Broken!") unless system("rspec")
8
+ FileUtils.rm("apps/api/Gemfile.lock") if File.exist?("apps/api/Gemfile.lock")
9
+ FileUtils.rm("apps/worker/Gemfile.lock") if File.exist?("apps/worker/Gemfile.lock")
8
10
 
9
11
  system("gem install souls")
10
12
  sleep(3)
@@ -40,7 +40,6 @@ module SOULs
40
40
  value = worker_file_names[file_name.to_sym] || 0
41
41
  worker_file_names[file_name.to_sym] = value - 1
42
42
  end
43
- puts(worker_file_names)
44
43
 
45
44
  if worker_file_names.blank?
46
45
  return if souls_topics.blank?
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module SOULs
2
- VERSION = "1.19.9".freeze
2
+ VERSION = "1.20.3".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 1.19.9
1
+ 1.20.3
@@ -1 +1 @@
1
- 1.19.9
1
+ 1.20.3
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: souls
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.9
4
+ version: 1.20.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - POPPIN-FUMI
8
8
  - KishiTheMechanic
9
9
  - James Neve
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-01-07 00:00:00.000000000 Z
13
+ date: 2022-01-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -190,15 +190,15 @@ files:
190
190
  - lib/souls/cli/console/index.rb
191
191
  - lib/souls/cli/create/functions.rb
192
192
  - lib/souls/cli/create/index.rb
193
- - lib/souls/cli/create/templates/functions_env_yaml.rb
194
- - lib/souls/cli/create/templates/go/function.rb
195
- - lib/souls/cli/create/templates/go/go.rb
196
- - lib/souls/cli/create/templates/nodejs/index.rb
197
- - lib/souls/cli/create/templates/nodejs/package.rb
198
- - lib/souls/cli/create/templates/python/main.rb
199
- - lib/souls/cli/create/templates/python/requirements.rb
200
- - lib/souls/cli/create/templates/ruby/app.rb
201
- - lib/souls/cli/create/templates/ruby/gemfile.rb
193
+ - lib/souls/cli/create/templates/functions/functions_env_yaml.rb
194
+ - lib/souls/cli/create/templates/functions/go/function.rb
195
+ - lib/souls/cli/create/templates/functions/go/go.rb
196
+ - lib/souls/cli/create/templates/functions/nodejs/index.rb
197
+ - lib/souls/cli/create/templates/functions/nodejs/package.rb
198
+ - lib/souls/cli/create/templates/functions/python/main.rb
199
+ - lib/souls/cli/create/templates/functions/python/requirements.rb
200
+ - lib/souls/cli/create/templates/functions/ruby/app.rb
201
+ - lib/souls/cli/create/templates/functions/ruby/gemfile.rb
202
202
  - lib/souls/cli/db/create_migration.rb
203
203
  - lib/souls/cli/db/create_migration_rbs.rb
204
204
  - lib/souls/cli/db/index.rb
@@ -299,7 +299,7 @@ licenses:
299
299
  - Apache-2.0
300
300
  metadata:
301
301
  rubygems_mfa_required: 'true'
302
- post_install_message:
302
+ post_install_message:
303
303
  rdoc_options: []
304
304
  require_paths:
305
305
  - lib
@@ -315,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
315
  version: '0'
316
316
  requirements: []
317
317
  rubygems_version: 3.2.32
318
- signing_key:
318
+ signing_key:
319
319
  specification_version: 4
320
320
  summary: Ruby Serverless Framework 'SOULs' | Ruby サーバーレスフレームワーク SOULs. Powered by
321
321
  Ruby GraphQL, RBS/Steep, Active Record, RSpec, RuboCop, and Google Cloud.