souls 1.15.5 → 1.16.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 +4 -4
- data/lib/souls/cli/create/functions.rb +51 -29
- data/lib/souls/cli/create/{template → templates}/functions_env_yaml.rb +0 -0
- data/lib/souls/cli/create/templates/go/function.rb +46 -0
- data/lib/souls/cli/create/templates/go/go.rb +9 -0
- data/lib/souls/cli/create/templates/nodejs/index.rb +26 -0
- data/lib/souls/cli/create/templates/nodejs/package.rb +16 -0
- data/lib/souls/cli/create/templates/python/main.rb +24 -0
- data/lib/souls/cli/create/templates/python/requirements.rb +11 -0
- data/lib/souls/cli/create/templates/ruby/gemfile.rb +14 -0
- data/lib/souls/cli/create/templates/ruby/index.rb +26 -0
- data/lib/souls/cli/gcloud/functions/index.rb +29 -10
- data/lib/souls/index.rb +1 -0
- data/lib/souls/souls_path.rb +10 -0
- data/lib/souls/version.rb +1 -1
- data/lib/souls/versions/.souls_api_version +1 -1
- data/lib/souls/versions/.souls_worker_version +1 -1
- data/lib/souls.rb +0 -14
- metadata +15 -8
- data/lib/souls/cli/create/template/functions_app.rb +0 -24
- data/lib/souls/cli/create/template/functions_gemfile.rb +0 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3f15f29d4efb8c41654774dac322c065ba387b326b9d8884b35dcebfe4e76f20
|
|
4
|
+
data.tar.gz: 4dff20a144f48f194b4d2d39cdc8d22e0e4471b6b493d30adc84029a8006fe59
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 48f2436a0515b1ba00183ebda98b5bd3590c0bc58a966bf2a29f31d583b31e886a022d780ffb244516bbd22f8c15f815da95e262dd2f729ee68ce6907eecc152
|
|
7
|
+
data.tar.gz: 4edcb626880e6e51da8333a01613f7d31e6e64ef1fcdb5a9ead2882255e426f45531f33f74656f76c95ab2007ad252bfeeabee9567c471fec02141ea82db5582
|
|
@@ -1,41 +1,57 @@
|
|
|
1
|
-
require_relative "./
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
require_relative "./templates/functions_env_yaml"
|
|
2
|
+
|
|
3
|
+
Dir["#{Souls::SOULS_PATH}/lib/souls/cli/create/templates/*/*.rb"].map do |f|
|
|
4
|
+
require f
|
|
5
|
+
end
|
|
6
|
+
|
|
4
7
|
module Souls
|
|
5
8
|
class Create < Thor
|
|
6
9
|
desc "functions", "Create SOULs functions"
|
|
7
|
-
def functions
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
def functions(function_name)
|
|
11
|
+
supported_languages = {
|
|
12
|
+
ruby: %w[2.6 2.7],
|
|
13
|
+
nodejs: %w[16 14 12 10],
|
|
14
|
+
python: %w[3.9 3.8 3.7],
|
|
15
|
+
go: ["1.16", "1.13"]
|
|
16
|
+
}
|
|
12
17
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
prompt = TTY::Prompt.new
|
|
19
|
+
runtime = prompt.select("Select Runtime?", supported_languages.keys.map(&:to_s).map(&:camelize))
|
|
20
|
+
runtime_downcased = runtime.downcase
|
|
21
|
+
version = prompt.select("Select Version?", supported_languages[runtime.downcase.to_sym].sort.reverse)
|
|
22
|
+
version_string = "#{runtime_downcased}#{version.gsub('.', '')}"
|
|
23
|
+
runtime_methods = get_runtime_create_method(runtime: runtime_downcased)
|
|
24
|
+
file_dir = "./apps/cf_#{version_string}_#{function_name}"
|
|
17
25
|
FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
|
|
18
|
-
file_path = "#{file_dir}/app.rb"
|
|
19
|
-
raise(StandardError, "Already Exist!") if File.exist?(file_path)
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
runtime_methods.each do |method|
|
|
28
|
+
file_extension =
|
|
29
|
+
case runtime_downcased
|
|
30
|
+
when "nodejs"
|
|
31
|
+
method == "package" ? "json" : "js"
|
|
32
|
+
when "python"
|
|
33
|
+
method == "requirements" ? "txt" : "py"
|
|
34
|
+
when "go"
|
|
35
|
+
method == "go" ? "mod" : "go"
|
|
36
|
+
else
|
|
37
|
+
"rb"
|
|
38
|
+
end
|
|
39
|
+
file_path =
|
|
40
|
+
if method == "gemfile"
|
|
41
|
+
"#{file_dir}/Gemfile"
|
|
42
|
+
else
|
|
43
|
+
"#{file_dir}/#{method}.#{file_extension}"
|
|
44
|
+
end
|
|
45
|
+
file_name = file_dir.gsub("./apps/", "")
|
|
46
|
+
File.write(file_path, Object.const_get("Template::#{runtime}").__send__(method, file_name))
|
|
47
|
+
Souls::Painter.create_file(file_path)
|
|
48
|
+
end
|
|
49
|
+
create_env_yaml(file_dir: file_dir)
|
|
24
50
|
end
|
|
25
51
|
|
|
26
|
-
|
|
27
|
-
file_dir = "./apps/functions"
|
|
28
|
-
FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
|
|
29
|
-
file_path = "#{file_dir}/Gemfile"
|
|
30
|
-
raise(StandardError, "Already Exist!") if File.exist?(file_path)
|
|
31
|
-
|
|
32
|
-
File.write(file_path, Template.functions_gemfile)
|
|
33
|
-
Souls::Painter.create_file(file_path)
|
|
34
|
-
file_path
|
|
35
|
-
end
|
|
52
|
+
private
|
|
36
53
|
|
|
37
|
-
def create_env_yaml
|
|
38
|
-
file_dir = "./apps/functions"
|
|
54
|
+
def create_env_yaml(file_dir:)
|
|
39
55
|
FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
|
|
40
56
|
file_path = "#{file_dir}/.env.yaml"
|
|
41
57
|
raise(StandardError, "Already Exist!") if File.exist?(file_path)
|
|
@@ -44,5 +60,11 @@ module Souls
|
|
|
44
60
|
Souls::Painter.create_file(file_path)
|
|
45
61
|
file_path
|
|
46
62
|
end
|
|
63
|
+
|
|
64
|
+
def get_runtime_create_method(runtime:)
|
|
65
|
+
Dir["#{Souls::SOULS_PATH}/lib/souls/cli/create/templates/#{runtime}/*"].map do |n|
|
|
66
|
+
n.split("/").last.gsub(".rb", "")
|
|
67
|
+
end
|
|
68
|
+
end
|
|
47
69
|
end
|
|
48
70
|
end
|
|
File without changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Template
|
|
2
|
+
module Go
|
|
3
|
+
def self.function(file_name)
|
|
4
|
+
<<~APP
|
|
5
|
+
// Package p contains an HTTP Cloud Function.
|
|
6
|
+
package p
|
|
7
|
+
|
|
8
|
+
import (
|
|
9
|
+
"encoding/json"
|
|
10
|
+
"fmt"
|
|
11
|
+
"html"
|
|
12
|
+
"io"
|
|
13
|
+
"log"
|
|
14
|
+
"net/http"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
// HelloWorld prints the JSON encoded "message" field in the body
|
|
18
|
+
// of the request or "Hello, World!" if there isn't one.
|
|
19
|
+
func #{file_name}(w http.ResponseWriter, r *http.Request) {
|
|
20
|
+
var d struct {
|
|
21
|
+
Message string `json:"message"`
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
|
|
25
|
+
switch err {
|
|
26
|
+
case io.EOF:
|
|
27
|
+
fmt.Fprint(w, "Hello World!")
|
|
28
|
+
return
|
|
29
|
+
default:
|
|
30
|
+
log.Printf("json.NewDecoder: %v", err)
|
|
31
|
+
http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if d.Message == "" {
|
|
37
|
+
fmt.Fprint(w, "Hello World!")
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
|
+
fmt.Fprint(w, html.EscapeString(d.Message))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
APP
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Template
|
|
2
|
+
module Nodejs
|
|
3
|
+
def self.index(file_name)
|
|
4
|
+
<<~APP
|
|
5
|
+
const express = require('express');
|
|
6
|
+
const bodyParser = require('body-parser');
|
|
7
|
+
|
|
8
|
+
const app = express();
|
|
9
|
+
app.use(bodyParser.urlencoded({ extended: true }));
|
|
10
|
+
|
|
11
|
+
app.get('/souls-functions-get', (req, res)=>{
|
|
12
|
+
res.json(req.query)
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
app.get('/souls-functions-get/:id', (req, res)=>{
|
|
16
|
+
res.json(req.params)
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
app.post('/souls-functions-post', (req, res)=>{
|
|
20
|
+
res.json(req.body)
|
|
21
|
+
});
|
|
22
|
+
exports.#{file_name} = app;
|
|
23
|
+
APP
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Template
|
|
2
|
+
module Python
|
|
3
|
+
def self.main(file_name)
|
|
4
|
+
<<~APP
|
|
5
|
+
def #{file_name}(request):
|
|
6
|
+
"""Responds to any HTTP request.
|
|
7
|
+
Args:
|
|
8
|
+
request (flask.Request): HTTP request object.
|
|
9
|
+
Returns:
|
|
10
|
+
The response text or any set of values that can be turned into a
|
|
11
|
+
Response object using
|
|
12
|
+
`make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
|
|
13
|
+
"""
|
|
14
|
+
request_json = request.get_json()
|
|
15
|
+
if request.args and 'message' in request.args:
|
|
16
|
+
return request.args.get('message')
|
|
17
|
+
elif request_json and 'message' in request_json:
|
|
18
|
+
return request_json['message']
|
|
19
|
+
else:
|
|
20
|
+
return f'Hello World!'
|
|
21
|
+
APP
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Template
|
|
2
|
+
module Ruby
|
|
3
|
+
def self.index(file_name)
|
|
4
|
+
<<~APP
|
|
5
|
+
require "functions_framework"
|
|
6
|
+
require "sinatra/base"
|
|
7
|
+
require "dotenv/load"
|
|
8
|
+
|
|
9
|
+
class App < Sinatra::Base
|
|
10
|
+
get "/souls-functions-get/:name" do
|
|
11
|
+
"SOULs Functions Job Done! - \#{params['name']}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
post "/souls-functions-post" do
|
|
15
|
+
params = JSON.parse(request.body.read)
|
|
16
|
+
"SOULs Functions Job Done! - \#{params['name']}"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
FunctionsFramework.http(\"#{file_name}\") do |request|
|
|
21
|
+
App.call(request.env)
|
|
22
|
+
end
|
|
23
|
+
APP
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -3,15 +3,19 @@ module Souls
|
|
|
3
3
|
desc "deploy", "Deploy Cloud Functions"
|
|
4
4
|
def deploy
|
|
5
5
|
require(Souls.get_mother_path.to_s + "/config/souls")
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
gcloud functions deploy souls_functions --project=#{project_id} \
|
|
11
|
-
--runtime ruby27 --trigger-http --allow-unauthenticated --env-vars-file .env.yaml
|
|
12
|
-
"
|
|
13
|
-
)
|
|
6
|
+
current_dir = FileUtils.pwd.split("/").last
|
|
7
|
+
unless current_dir.match?(/^cf_/)
|
|
8
|
+
Souls::Painter.error("You are at wrong dir!\nPlease go to `apps/functions` dir!")
|
|
9
|
+
return false
|
|
14
10
|
end
|
|
11
|
+
|
|
12
|
+
runtime = current_dir.match(/cf_(\D+\d+)_/)[1]
|
|
13
|
+
system(
|
|
14
|
+
"
|
|
15
|
+
gcloud functions deploy #{current_dir} --project=#{project_id} \
|
|
16
|
+
--runtime #{runtime} --trigger-http --allow-unauthenticated --env-vars-file .env.yaml
|
|
17
|
+
"
|
|
18
|
+
)
|
|
15
19
|
end
|
|
16
20
|
|
|
17
21
|
desc "describe", "Describe SOULs Functions"
|
|
@@ -25,13 +29,28 @@ module Souls
|
|
|
25
29
|
def url
|
|
26
30
|
require(Souls.get_mother_path.to_s + "/config/souls")
|
|
27
31
|
project_id = Souls.configuration.project_id
|
|
28
|
-
|
|
32
|
+
current_dir = FileUtils.pwd.split("/").last
|
|
33
|
+
Souls::Painter.success(`gcloud functions describe #{current_dir} --project=#{project_id}| grep url`)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
desc "all_url", "Get SOULs Functions All URL"
|
|
37
|
+
def all_url
|
|
38
|
+
require(Souls.get_mother_path.to_s + "/config/souls")
|
|
39
|
+
project_id = Souls.configuration.project_id
|
|
40
|
+
Dir.chdir(Souls.get_mother_path.to_s) do
|
|
41
|
+
souls_functions = Dir["apps/cf_*"]
|
|
42
|
+
cf_dir = souls_functions.map { |n| n.split("/").last }
|
|
43
|
+
cf_dir.each do |dir|
|
|
44
|
+
Souls::Painter.success(`gcloud functions describe #{dir} --project=#{project_id}| grep url`)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
29
47
|
end
|
|
30
48
|
|
|
31
49
|
desc "dev", "Check SOULs Functions dev"
|
|
32
50
|
def dev
|
|
33
51
|
Dir.chdir(Souls.get_functions_path.to_s) do
|
|
34
|
-
|
|
52
|
+
current_dir = FileUtils.pwd.split("/").last
|
|
53
|
+
system("bundle exec functions-framework-ruby --target #{current_dir}")
|
|
35
54
|
end
|
|
36
55
|
end
|
|
37
56
|
end
|
data/lib/souls/index.rb
CHANGED
data/lib/souls/version.rb
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.16.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.16.0
|
data/lib/souls.rb
CHANGED
|
@@ -3,7 +3,6 @@ require_relative "souls/cli"
|
|
|
3
3
|
require "active_support/core_ext/string/inflections"
|
|
4
4
|
require "date"
|
|
5
5
|
require "json"
|
|
6
|
-
require "fileutils"
|
|
7
6
|
require "net/http"
|
|
8
7
|
require "paint"
|
|
9
8
|
require "whirly"
|
|
@@ -13,19 +12,6 @@ require "resolv"
|
|
|
13
12
|
|
|
14
13
|
module Souls
|
|
15
14
|
extend Souls::Utils
|
|
16
|
-
SOULS_METHODS = %w[
|
|
17
|
-
model
|
|
18
|
-
query
|
|
19
|
-
mutation
|
|
20
|
-
type
|
|
21
|
-
resolver
|
|
22
|
-
rspec_factory
|
|
23
|
-
rspec_model
|
|
24
|
-
rspec_query
|
|
25
|
-
rspec_mutation
|
|
26
|
-
rspec_resolver
|
|
27
|
-
].freeze
|
|
28
|
-
public_constant :SOULS_METHODS
|
|
29
15
|
class Error < StandardError; end
|
|
30
16
|
class << self
|
|
31
17
|
attr_accessor :configuration
|
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.
|
|
4
|
+
version: 1.16.0
|
|
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-
|
|
13
|
+
date: 2022-01-03 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: activesupport
|
|
@@ -176,9 +176,15 @@ files:
|
|
|
176
176
|
- lib/souls/cli/console/index.rb
|
|
177
177
|
- lib/souls/cli/create/functions.rb
|
|
178
178
|
- lib/souls/cli/create/index.rb
|
|
179
|
-
- lib/souls/cli/create/
|
|
180
|
-
- lib/souls/cli/create/
|
|
181
|
-
- lib/souls/cli/create/
|
|
179
|
+
- lib/souls/cli/create/templates/functions_env_yaml.rb
|
|
180
|
+
- lib/souls/cli/create/templates/go/function.rb
|
|
181
|
+
- lib/souls/cli/create/templates/go/go.rb
|
|
182
|
+
- lib/souls/cli/create/templates/nodejs/index.rb
|
|
183
|
+
- lib/souls/cli/create/templates/nodejs/package.rb
|
|
184
|
+
- lib/souls/cli/create/templates/python/main.rb
|
|
185
|
+
- lib/souls/cli/create/templates/python/requirements.rb
|
|
186
|
+
- lib/souls/cli/create/templates/ruby/gemfile.rb
|
|
187
|
+
- lib/souls/cli/create/templates/ruby/index.rb
|
|
182
188
|
- lib/souls/cli/db/create_migration.rb
|
|
183
189
|
- lib/souls/cli/db/create_migration_rbs.rb
|
|
184
190
|
- lib/souls/cli/db/index.rb
|
|
@@ -269,6 +275,7 @@ files:
|
|
|
269
275
|
- lib/souls/cli/upgrade/index.rb
|
|
270
276
|
- lib/souls/cli/upgrade/submodule.rb
|
|
271
277
|
- lib/souls/index.rb
|
|
278
|
+
- lib/souls/souls_path.rb
|
|
272
279
|
- lib/souls/utils/index.rb
|
|
273
280
|
- lib/souls/version.rb
|
|
274
281
|
- lib/souls/versions/.souls_api_version
|
|
@@ -278,7 +285,7 @@ licenses:
|
|
|
278
285
|
- Apache-2.0
|
|
279
286
|
metadata:
|
|
280
287
|
rubygems_mfa_required: 'true'
|
|
281
|
-
post_install_message:
|
|
288
|
+
post_install_message:
|
|
282
289
|
rdoc_options: []
|
|
283
290
|
require_paths:
|
|
284
291
|
- lib
|
|
@@ -294,7 +301,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
294
301
|
version: '0'
|
|
295
302
|
requirements: []
|
|
296
303
|
rubygems_version: 3.2.32
|
|
297
|
-
signing_key:
|
|
304
|
+
signing_key:
|
|
298
305
|
specification_version: 4
|
|
299
306
|
summary: Ruby Serverless Framework 'SOULs' | Ruby サーバーレスフレームワーク SOULs. Powered by
|
|
300
307
|
Ruby GraphQL, RBS/Steep, Active Record, RSpec, RuboCop, and Google Cloud.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Template
|
|
2
|
-
def self.functions_app
|
|
3
|
-
<<~APP
|
|
4
|
-
require "functions_framework"
|
|
5
|
-
require "sinatra/base"
|
|
6
|
-
require "dotenv/load"
|
|
7
|
-
|
|
8
|
-
class App < Sinatra::Base
|
|
9
|
-
get "/souls-functions-get/:name" do
|
|
10
|
-
"SOULs Functions Job Done! - \#{params['name']}"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
post "/souls-functions-post" do
|
|
14
|
-
params = JSON.parse(request.body.read)
|
|
15
|
-
"SOULs Functions Job Done! - \#{params['name']}"
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
FunctionsFramework.http("souls_functions") do |request|
|
|
20
|
-
App.call(request.env)
|
|
21
|
-
end
|
|
22
|
-
APP
|
|
23
|
-
end
|
|
24
|
-
end
|