souls 0.17.8 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of souls might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9ec8b8cd3e1f7ed49262ff08bf985db04cf2971553fc0bce2830be53d908d4c
4
- data.tar.gz: edec905bb1cdb4600788c7b9a6bb21cfe0769d186addd57840c46cf870bdbcda
3
+ metadata.gz: 0d78ed0a6ac81ec57cd9c7fe665a06cecace1b2340e99f7a7b431fae48c2fdda
4
+ data.tar.gz: 1235ad8b76775fc9243e00e695c94ec0e63ce6f43c6417be81b1969506d3aece
5
5
  SHA512:
6
- metadata.gz: 90bf3257b5d2dd97cb568b7778dd28264fcfcdf66d9960127ebe31d07c8c282324b708d2efd409f794d5b3d23045232bc63ab119e6d94f9ebd0ecd539fb32646
7
- data.tar.gz: c296af0062e756331e34466dda4a75e47f724ab1270209d7b00e8f4b9b747826bd323d7b3079b75f09af23bc4e70fd3376c95439803fe9e362211e0059d1df94
6
+ metadata.gz: 8876fcdff3e8d94d0c081702f9561dd816b591d6eab718b37548d865ae44ee1e9354e7a062049fba1cdd97e48bc420c6f8e7ed74d62da2574d19b6b82d27dd2c
7
+ data.tar.gz: aa1e1855338316851ad4d7b79c2084f069df85e51a46ce662f0e900cb4098cf52174daaf96c9c740cefb9c4427cbba08cef70cf4758bca16891f72d7271a1956
data/.rubocop.yml CHANGED
@@ -104,6 +104,9 @@ Style/FrozenStringLiteralComment:
104
104
  Style/RedundantReturn:
105
105
  AllowMultipleReturnValues: true
106
106
 
107
+ Style/RedundantArgument:
108
+ Enabled: false
109
+
107
110
  Style/Semicolon:
108
111
  Exclude:
109
112
  - "spec/**/*"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- souls (0.17.7)
4
+ souls (0.20.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -28,11 +28,10 @@ You can focus on business logic. No more infra problems.
28
28
 
29
29
  SOULs creates 5 types of framework.
30
30
 
31
- 1. API - GraphQL (Ruby) - Simple API
32
- 2. API - GraphQL to call gRPC (Ruby) - for heavy task processes
33
- 3. Service - gRPC Serverless Scalable Service (Ruby)
34
- 4. Media Web Client - Media web client with SSG (TypeScript)
35
- 5. Admin Web Client - Admin Console and CMS (TypeScript)
31
+ 1. API - GraphQL (Ruby) - Simple API - Cloud Run
32
+ 2. Worker - Google Pub/Sub Worker API (Ruby) - Cloud Run
33
+ 3. Media Web Client - Media web client with SSG (TypeScript)
34
+ 4. Admin Web Client - Admin Console and CMS (TypeScript)
36
35
 
37
36
  ## Dependency
38
37
 
@@ -71,10 +70,9 @@ And Create Your APP
71
70
  ### Choose SOULs Type:
72
71
 
73
72
  1. API
74
- 2. API - gRPC
75
- 3. Service
76
- 4. Media Web
77
- 5. Admin Web
73
+ 2. Workewr
74
+ 3. Media Web
75
+ 4. Admin Web
78
76
 
79
77
 
80
78
  ## SOULs Document
data/Rakefile CHANGED
@@ -4,3 +4,12 @@ require "rspec/core/rake_task"
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
6
  task :default => :spec
7
+
8
+ namespace :task do
9
+ task :g do
10
+ file_path = "./lib/souls/generate/"
11
+ Souls::SOULS_METHODS.each do |f|
12
+ FileUtils.touch "#{file_path}#{f}.rb"
13
+ end
14
+ end
15
+ end
data/config/souls.rb ADDED
@@ -0,0 +1,4 @@
1
+ Souls.configure do |config|
2
+ config.app = "souls"
3
+ config.strain = "graph"
4
+ end
data/exe/souls CHANGED
@@ -1,9 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "souls"
3
- STRAINS = ["graph", "worker", "media", "admin"]
3
+ begin
4
+ require "./config/souls" unless ARGV[0] == "new" || ARGV[0] == "i" || ARGV[0] == "-v"
5
+ rescue
6
+ Souls::Init.config_init
7
+ end
4
8
  begin
5
9
  case ARGV[0]
6
10
  when "new"
11
+ STRAINS = ["api", "worker", "media", "admin"]
7
12
  if ARGV[1].nil?
8
13
  puts "you need to specify your app name \n `souls new app_name`"
9
14
  exit
@@ -12,6 +17,7 @@ begin
12
17
  strain = STDIN.gets.chomp.to_i
13
18
  (1..4).include?(strain) ? puts("Generating SOULs.. \n") : raise(StandardError, "Choose Number 1..4")
14
19
  Souls::Init.download_souls app_name: ARGV[1], repository_name: "souls_#{STRAINS[strain.to_i - 1]}"
20
+ Souls::Init.initial_config_init app_name: ARGV[1], strain: STRAINS[strain.to_i - 1]
15
21
  when "s", "server"
16
22
  strain = Souls.configuration.strain
17
23
  case strain
@@ -37,8 +43,6 @@ begin
37
43
  end
38
44
  when "i", "infra"
39
45
  Souls.send ARGV[1]
40
- when "init"
41
- Souls::Init.config_init
42
46
  when "-v", "--version"
43
47
  puts Souls::VERSION
44
48
  when "add"
@@ -59,51 +63,49 @@ begin
59
63
  when "g", "generate"
60
64
  case ARGV[1]
61
65
  when "test_dir"
62
- Souls::Init.test_dir
63
- when "policy"
64
- Souls::Init.policy class_name: ARGV[2]
65
- when "rspec_policy"
66
- Souls::Init.rspec_policy class_name: ARGV[2]
67
- when "node_type"
68
- Souls::Init.node_type class_name: ARGV[2]
69
- when "resolver"
70
- Souls::Init.resolver class_name: ARGV[2]
71
- when "job"
72
- Souls::Init.job class_name: ARGV[2]
66
+ Souls::Generate.test_dir
73
67
  when "model"
74
- Souls::Init.model class_name: ARGV[2]
68
+ Souls::Generate.model class_name: ARGV[2]
75
69
  when "mutation"
76
- Souls::Init.mutation class_name: ARGV[2]
70
+ Souls::Generate.mutation class_name: ARGV[2]
77
71
  when "query"
78
- Souls::Init.query class_name: ARGV[2]
72
+ Souls::Generate.query class_name: ARGV[2]
79
73
  when "type"
80
- Souls::Init.type class_name: ARGV[2]
81
- when "migrate"
82
- Souls::Init.single_migrate class_name: ARGV[2]
83
- when "migrate_all"
84
- Souls::Init.migrate_all
85
- when "migration"
86
- system "rake db:create_migration NAME=create_#{ARGV[2]}"
74
+ Souls::Generate.type class_name: ARGV[2]
75
+ when "resolver"
76
+ Souls::Generate.resolver class_name: ARGV[2]
77
+ when "policy"
78
+ Souls::Generate.policy class_name: ARGV[2]
87
79
  when "rspec_factory"
88
- Souls::Init.rspec_factory class_name: ARGV[2]
80
+ Souls::Generate.rspec_factory class_name: ARGV[2]
89
81
  when "rspec_model"
90
- Souls::Init.rspec_model class_name: ARGV[2]
82
+ Souls::Generate.rspec_model class_name: ARGV[2]
91
83
  when "rspec_mutation"
92
- Souls::Init.rspec_mutation class_name: ARGV[2]
84
+ Souls::Generate.rspec_mutation class_name: ARGV[2]
93
85
  when "rspec_query"
94
- Souls::Init.rspec_query class_name: ARGV[2]
95
- when "rspec_type"
96
- Souls::Init.rspec_type class_name: ARGV[2]
86
+ Souls::Generate.rspec_query class_name: ARGV[2]
97
87
  when "rspec_resolver"
98
- Souls::Init.rspec_resolver class_name: ARGV[2]
88
+ Souls::Generate.rspec_resolver class_name: ARGV[2]
89
+ when "rspec_policy"
90
+ Souls::Generate.rspec_policy class_name: ARGV[2]
91
+ when "node_type"
92
+ Souls::Generate.node_type class_name: ARGV[2]
93
+ when "job"
94
+ Souls::Generate.job class_name: ARGV[2]
95
+ when "migrate"
96
+ Souls::Generate.single_migrate class_name: ARGV[2]
97
+ when "migrate_all"
98
+ Souls::Generate.migrate_all
99
+ when "migration"
100
+ system "rake db:create_migration NAME=create_#{ARGV[2]}"
99
101
  else
100
102
  "SOULs!"
101
103
  end
102
104
  when "d"
103
- Souls::Init.add_delete class_name: ARGV[1]
105
+ Souls::Generate.delete_all class_name: ARGV[1]
104
106
  when "update"
105
- Souls::Init.add_delete class_name: ARGV[1]
106
- Souls::Init.single_migrate class_name: ARGV[1]
107
+ Souls::Generate.add_delete class_name: ARGV[1]
108
+ Souls::Generate.single_migrate class_name: ARGV[1]
107
109
  when "db:create"
108
110
  system "rake db:create && rake db:create RACK_ENV=test"
109
111
  when "db:migrate"
data/lib/souls.rb CHANGED
@@ -1,65 +1,43 @@
1
1
  require "souls/version"
2
2
  require "active_support/core_ext/string/inflections"
3
3
  require "souls/init"
4
- require "souls/generate"
5
4
  require "json"
6
5
  require "fileutils"
6
+ Dir["./lib/souls/generate/*.rb"].each { |f| require f }
7
7
 
8
8
  module Souls
9
+ SOULS_METHODS = [
10
+ "model",
11
+ "query",
12
+ "mutation",
13
+ "type",
14
+ "resolver",
15
+ "policy",
16
+ "rspec_factory",
17
+ "rspec_model",
18
+ "rspec_query",
19
+ "rspec_mutation",
20
+ "rspec_resolver",
21
+ "rspec_policy"
22
+ ]
9
23
  class Error < StandardError; end
10
24
  class << self
11
25
  attr_accessor :configuration
12
26
 
13
27
  def run_psql
14
- `docker run --rm -d \
28
+ system "docker run --rm -d \
15
29
  -p 5433:5432 \
16
30
  -v postgres-tmp:/var/lib/postgresql/data \
17
31
  -e POSTGRES_USER=postgres \
18
32
  -e POSTGRES_PASSWORD=postgres \
19
33
  -e POSTGRES_DB=souls_test \
20
- postgres:13-alpine`
21
- puts `docker ps`
34
+ postgres:13-alpine"
35
+ system "docker ps"
22
36
  end
23
37
 
24
- def run_awake
38
+ def run_awake url
25
39
  app = Souls.configuration.app
26
- `gcloud scheduler jobs create http #{app}-awake --schedule "0,10,20,30,40,50 * * * *" --uri "https://#{app}.el-soul.com" --http-method GET`
27
- end
28
-
29
- def deploy_local
30
- `docker network create --driver bridge shared`
31
-
32
- `docker run -d --name proxy \
33
- -p 80:80 -p 443:443 \
34
- -v "/var/run/docker.sock:/tmp/docker.sock:ro" \
35
- -v "$pwd/certs:/etc/nginx/certs:ro" \
36
- -v "/etc/nginx/vhost.d" \
37
- -v "/usr/share/nginx/html" \
38
- --network shared \
39
- --restart always \
40
- jwilder/nginx-proxy`
41
-
42
- `docker run -d --name letsencrypt \
43
- -v "/home/certs:/etc/nginx/certs" \
44
- -v "/var/run/docker.sock:/var/run/docker.sock:ro" \
45
- --volumes-from proxy \
46
- --network shared \
47
- --restart always \
48
- jrcs/letsencrypt-nginx-proxy-companion`
49
-
50
- `docker run -d --name nginx \
51
- -p 80:80 \
52
- -e VIRTUAL_HOST=souls.el-soul.com \
53
- -e LETSENCRYPT_HOST=souls.el-soul.com \
54
- -e LETSENCRYPT_EMAIL=info@gmail.com \
55
- --network shared \
56
- --link web \
57
- poppinfumi/ruby-nginx:latest`
58
-
59
- `docker run -d --name web \
60
- -p 3000:3000 \
61
- --network shared \
62
- poppinfumi/souls_api`
40
+ system "gcloud scheduler jobs create http #{app}-awake --schedule '0,10,20,30,40,50 * * * *' --uri #{url} --http-method GET"
63
41
  end
64
42
  end
65
43
 
@@ -69,10 +47,11 @@ module Souls
69
47
  end
70
48
 
71
49
  class Configuration
72
- attr_accessor :app
50
+ attr_accessor :app, :strain
73
51
 
74
52
  def initialize
75
53
  @app = nil
54
+ @strain = nil
76
55
  end
77
56
  end
78
57
  end
@@ -0,0 +1,156 @@
1
+ module Souls
2
+ module Generate
3
+ class << self
4
+ ## Common Methods
5
+ def generated_paths class_name: "user"
6
+ singularized_class_name = class_name.singularize.underscore
7
+ pluralized_class_name = class_name.pluralize.underscore
8
+ [
9
+ "./app/models/#{singularized_class_name}.rb",
10
+ "./app/policies/#{singularized_class_name}_policy.rb",
11
+ "./app/graphql/mutations/create_#{singularized_class_name}.rb",
12
+ "./app/graphql/mutations/delete_#{singularized_class_name}.rb",
13
+ "./app/graphql/mutations/destroy_delete_#{singularized_class_name}.rb",
14
+ "./app/graphql/mutations/update_#{singularized_class_name}.rb",
15
+ "./app/graphql/queries/#{singularized_class_name}.rb",
16
+ "./app/graphql/queries/#{pluralized_class_name}.rb",
17
+ "./app/graphql/resolvers/#{singularized_class_name}_search.rb",
18
+ "./app/graphql/types/#{singularized_class_name}_type.rb",
19
+ "./app/graphql/types/#{singularized_class_name}_node_type.rb",
20
+ "./spec/factories/#{pluralized_class_name}.rb",
21
+ "./spec/mutations/#{singularized_class_name}_spec.rb",
22
+ "./spec/models/#{singularized_class_name}_spec.rb",
23
+ "./spec/queries/#{singularized_class_name}_spec.rb",
24
+ "./spec/policies/#{singularized_class_name}_policy_spec.rb",
25
+ "./spec/resolvers/#{singularized_class_name}_search_spec.rb"
26
+ ]
27
+ end
28
+
29
+ def get_type_and_name line
30
+ line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
31
+ end
32
+
33
+ def get_tables
34
+ path = "./db/schema.rb"
35
+ tables = []
36
+ File.open(path, "r") do |f|
37
+ f.each_line.with_index do |line, i|
38
+ tables << line.split("\"")[1] if line.include?("create_table")
39
+ end
40
+ end
41
+ tables
42
+ end
43
+
44
+ def test_dir
45
+ FileUtils.mkdir_p "./app/graphql/mutations"
46
+ FileUtils.mkdir_p "./app/graphql/queries"
47
+ FileUtils.mkdir_p "./app/graphql/types"
48
+ FileUtils.mkdir_p "./app/graphql/resolvers"
49
+ FileUtils.mkdir_p "./app/models"
50
+ FileUtils.mkdir_p "./app/policies"
51
+ FileUtils.mkdir_p "./spec/factories"
52
+ FileUtils.mkdir_p "./spec/queries"
53
+ FileUtils.mkdir_p "./spec/mutations"
54
+ FileUtils.mkdir_p "./spec/models"
55
+ FileUtils.mkdir_p "./spec/resolvers"
56
+ FileUtils.mkdir_p "./spec/policies"
57
+ FileUtils.mkdir_p "./config"
58
+ FileUtils.touch "./config/souls.rb"
59
+ FileUtils.mkdir_p "./db/"
60
+ FileUtils.touch "./db/schema.rb"
61
+ puts "test dir created!"
62
+ end
63
+
64
+ def type_check type
65
+ {
66
+ bigint: "Integer",
67
+ string: "String",
68
+ float: "Float",
69
+ text: "String",
70
+ datetime: "GraphQL::Types::ISO8601DateTime",
71
+ date: "GraphQL::Types::ISO8601DateTime",
72
+ boolean: "Boolean",
73
+ integer: "Integer"
74
+ }[type.to_sym]
75
+ end
76
+
77
+ def get_test_type type
78
+ {
79
+ bigint: 1,
80
+ float: 4.2,
81
+ string: '"MyString"',
82
+ text: '"MyString"',
83
+ datetime: "Time.now",
84
+ date: "Time.now",
85
+ boolean: false,
86
+ integer: 1
87
+ }[type.to_sym]
88
+ end
89
+
90
+ def table_check line: "", class_name: ""
91
+ if line.include?("create_table") && (line.split(" ")[1].gsub("\"", "").gsub(",", "") == class_name.pluralize.to_s)
92
+ return true
93
+ end
94
+ false
95
+ end
96
+
97
+ def migrate class_name: "souls"
98
+ singularized_class_name = class_name.singularize
99
+ [
100
+ model: model(class_name: singularized_class_name),
101
+ types: type(class_name: singularized_class_name),
102
+ resolver: resolver(class_name: singularized_class_name),
103
+ rspec_factory: rspec_factory(class_name: singularized_class_name),
104
+ rspec_model: rspec_model(class_name: singularized_class_name),
105
+ rspec_mutation: rspec_mutation(class_name: singularized_class_name),
106
+ rspec_query: rspec_query(class_name: singularized_class_name),
107
+ rspec_resolver: rspec_resolver(class_name: singularized_class_name),
108
+ queries: query(class_name: singularized_class_name),
109
+ mutations: mutation(class_name: singularized_class_name)
110
+ ]
111
+ end
112
+
113
+ def delete_all class_name: "souls"
114
+ singularized_class_name = class_name.singularize.underscore
115
+ pluralized_class_name = class_name.pluralize.underscore
116
+ FileUtils.rm "./app/models/#{singularized_class_name}.rb"
117
+ FileUtils.rm "./app/policies/#{singularized_class_name}_policy.rb"
118
+ FileUtils.rm_rf "./app/graphql/mutations/#{singularized_class_name}"
119
+ FileUtils.rm "./app/graphql/queries/#{singularized_class_name}.rb"
120
+ FileUtils.rm "./app/graphql/queries/#{pluralized_class_name}.rb"
121
+ FileUtils.rm "./app/graphql/resolvers/#{singularized_class_name}_search.rb"
122
+ FileUtils.rm "./app/graphql/types/#{singularized_class_name}_type.rb"
123
+ FileUtils.rm "./app/graphql/types/#{singularized_class_name}_node_type.rb"
124
+ FileUtils.rm "./spec/factories/#{pluralized_class_name}.rb"
125
+ FileUtils.rm "./spec/mutations/#{singularized_class_name}_spec.rb"
126
+ FileUtils.rm "./spec/models/#{singularized_class_name}_spec.rb"
127
+ FileUtils.rm "./spec/queries/#{singularized_class_name}_spec.rb"
128
+ FileUtils.rm "./spec/policies/#{singularized_class_name}_policy_spec.rb"
129
+ FileUtils.rm "./spec/resolvers/#{singularized_class_name}_search_spec.rb"
130
+ puts "deleted #{class_name.camelize} CRUD!"
131
+ rescue StandardError => error
132
+ puts error
133
+ end
134
+
135
+ def single_migrate class_name: "user"
136
+ puts "◆◆◆ Let's Auto Generate CRUD API SET ◆◆◆\n"
137
+ migrate class_name: class_name
138
+ puts "Generated #{class_name.camelize} CRUD Files\n"
139
+ Souls::Generate.generated_paths(class_name: class_name).each { |f| puts f }
140
+ puts "\nAll files created from ./db/schema.rb"
141
+ puts "\n\n"
142
+ end
143
+
144
+ def migrate_all
145
+ puts "◆◆◆ Let's Auto Generate CRUD API SET ◆◆◆\n"
146
+ get_tables.each do |class_name|
147
+ migrate class_name: class_name.singularize
148
+ puts "Generated #{class_name.camelize} CRUD Files\n"
149
+ Souls::Generate.generated_paths(class_name: class_name).each { |f| puts f }
150
+ puts "\n"
151
+ end
152
+ puts "\nAll files created from ./db/schema.rb"
153
+ end
154
+ end
155
+ end
156
+ end