mogu 0.3.0 → 0.4.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/README.md +3 -1
- data/docker-compose.yml +2 -0
- data/lib/mogu/cli.rb +10 -3
- data/lib/mogu/prompt.rb +35 -39
- data/lib/mogu/template.rb +25 -20
- data/lib/mogu/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83c36d8a3dcfd0d836638de3e3f7cadcdb0ba191014ad43c0284b5fdc5cf3c75
|
4
|
+
data.tar.gz: e415394242ec7c6dc4f74c9d5319b0bb8b981b31920ff2d3b8d9eea2068e9476
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: debd2684a695d3d2d9dadfd60514e51903e566a576546e7691e681e0a483efc5739388016682f51bccfb1fc1d739d784b8945a79df7b2b6c3dbb7672a77bed19
|
7
|
+
data.tar.gz: 36140ce40449777bb3a7f55e6d237360b03021629eef4b036aa8f0fcbe4a16b4fb8aed849569b91229af2f55769f7ce908c8f26b29b43e34a6027350b19933c5
|
data/README.md
CHANGED
data/docker-compose.yml
CHANGED
data/lib/mogu/cli.rb
CHANGED
@@ -1,15 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'optparse'
|
3
4
|
require 'rails/command'
|
4
5
|
|
5
6
|
module Mogu
|
6
7
|
class CLI
|
7
8
|
class << self
|
8
9
|
def start
|
9
|
-
|
10
|
-
prompt.run
|
10
|
+
params = OptionParser.getopts(ARGV, 'v')
|
11
11
|
|
12
|
-
|
12
|
+
if params['v']
|
13
|
+
puts "mogu #{Mogu::VERSION}"
|
14
|
+
else
|
15
|
+
prompt = Mogu::Prompt.new
|
16
|
+
prompt.run
|
17
|
+
|
18
|
+
Rails::Command.invoke :application, ['new', *prompt.to_opt]
|
19
|
+
end
|
13
20
|
end
|
14
21
|
end
|
15
22
|
end
|
data/lib/mogu/prompt.rb
CHANGED
@@ -4,102 +4,98 @@ require 'tty-prompt'
|
|
4
4
|
|
5
5
|
module Mogu
|
6
6
|
class Prompt
|
7
|
-
|
7
|
+
Result = Struct.new(:app_path, :customizes, :database, :javascript, :css, :gems, :template, keyword_init: true)
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@prompt = TTY::Prompt.new
|
11
|
-
|
12
|
-
result = Struct.new(:app_path, :customizes, :database, :javascript, :css, :gems, :template, keyword_init: true)
|
13
|
-
@result = result.new(app_path: '', customizes: [], database: '', javascript: '', css: '', gems: [], template: nil)
|
11
|
+
@result = Result.new(app_path: '', customizes: [], database: '', javascript: '', css: '', gems: [], template: nil)
|
14
12
|
end
|
15
13
|
|
16
14
|
def run
|
17
|
-
result.app_path = app_path
|
18
|
-
result.customizes = customizes
|
19
|
-
|
20
|
-
result.database = database if database?
|
21
|
-
result.javascript = javascript if javascript?
|
22
|
-
result.css = css if css?
|
23
|
-
result.gems = gems if gems?
|
24
|
-
result.template = Mogu::Template.create result.gems if template?
|
15
|
+
@result.app_path = app_path
|
16
|
+
@result.customizes = customizes
|
17
|
+
|
18
|
+
@result.database = database if database?
|
19
|
+
@result.javascript = javascript if javascript?
|
20
|
+
@result.css = css if css?
|
21
|
+
@result.gems = gems if gems?
|
22
|
+
@result.template = Mogu::Template.create @result.gems if template?
|
25
23
|
end
|
26
24
|
|
27
25
|
def to_opt
|
28
|
-
[
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
[
|
27
|
+
@result.app_path,
|
28
|
+
database? ? ['-d', @result.database] : [],
|
29
|
+
javascript? ? ['-j', @result.javascript] : [],
|
30
|
+
css? ? ['-c', @result.css] : [],
|
32
31
|
rspec? ? %w[-T] : [],
|
33
|
-
template? ? ['-m', result.template.
|
32
|
+
template? ? ['-m', @result.template.path] : []
|
34
33
|
].flatten
|
35
34
|
end
|
36
35
|
|
37
36
|
private
|
38
37
|
|
39
38
|
def database?
|
40
|
-
result.customizes.include? 'database'
|
39
|
+
@result.customizes.include? 'database'
|
41
40
|
end
|
42
41
|
|
43
42
|
def javascript?
|
44
|
-
result.customizes.include? 'javascript'
|
43
|
+
@result.customizes.include? 'javascript'
|
45
44
|
end
|
46
45
|
|
47
46
|
def css?
|
48
|
-
result.customizes.include? 'css'
|
47
|
+
@result.customizes.include? 'css'
|
49
48
|
end
|
50
49
|
|
51
50
|
def gems?
|
52
|
-
result.customizes.include? 'gems'
|
53
|
-
end
|
54
|
-
|
55
|
-
def brakeman?
|
56
|
-
result.gems.include? 'brakeman'
|
51
|
+
@result.customizes.include? 'gems'
|
57
52
|
end
|
58
53
|
|
59
54
|
def rspec?
|
60
|
-
result.gems.include? 'rspec'
|
61
|
-
end
|
62
|
-
|
63
|
-
def rubocop?
|
64
|
-
result.gems.include? 'rubocop'
|
55
|
+
@result.gems.include? 'rspec'
|
65
56
|
end
|
66
57
|
|
67
58
|
def template?
|
68
|
-
|
59
|
+
@result.gems.any?
|
69
60
|
end
|
70
61
|
|
71
62
|
def app_path
|
72
|
-
prompt.ask 'Please input app path', required: true
|
63
|
+
@prompt.ask 'Please input app path', required: true
|
73
64
|
end
|
74
65
|
|
75
66
|
def css
|
76
67
|
choices = %w[tailwind bootstrap bulma postcss sass]
|
77
68
|
|
78
|
-
prompt.select 'Choose css', choices
|
69
|
+
@prompt.select 'Choose css', choices
|
79
70
|
end
|
80
71
|
|
81
72
|
def customizes
|
82
|
-
choices =
|
73
|
+
choices = [
|
74
|
+
{ name: 'database (Default: sqlite3)', value: 'database' },
|
75
|
+
{ name: 'javascript (Default: importmap)', value: 'javascript' },
|
76
|
+
{ name: 'css', value: 'css' },
|
77
|
+
{ name: 'gems', value: 'gems' }
|
78
|
+
]
|
83
79
|
|
84
|
-
prompt.multi_select 'Choose customizes', choices
|
80
|
+
@prompt.multi_select 'Choose customizes', choices
|
85
81
|
end
|
86
82
|
|
87
83
|
def database
|
88
84
|
choices = %w[sqlite3 mysql postgresql oracle sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc]
|
89
85
|
|
90
|
-
prompt.select 'Choose database', choices
|
86
|
+
@prompt.select 'Choose database', choices
|
91
87
|
end
|
92
88
|
|
93
89
|
def gems
|
94
|
-
choices = %w[brakeman rspec rubocop]
|
90
|
+
choices = %w[brakeman solargraph rspec rubocop]
|
95
91
|
|
96
|
-
prompt.multi_select 'Choose gems', choices
|
92
|
+
@prompt.multi_select 'Choose gems', choices
|
97
93
|
end
|
98
94
|
|
99
95
|
def javascript
|
100
96
|
choices = %w[importmap webpack esbuild rollup]
|
101
97
|
|
102
|
-
prompt.select 'Choose javascript', choices
|
98
|
+
@prompt.select 'Choose javascript', choices
|
103
99
|
end
|
104
100
|
end
|
105
101
|
end
|
data/lib/mogu/template.rb
CHANGED
@@ -4,8 +4,6 @@ require 'tempfile'
|
|
4
4
|
|
5
5
|
module Mogu
|
6
6
|
class Template
|
7
|
-
attr_reader :file
|
8
|
-
|
9
7
|
class << self
|
10
8
|
def create(gems)
|
11
9
|
template = new
|
@@ -19,12 +17,17 @@ module Mogu
|
|
19
17
|
@file = Tempfile.new
|
20
18
|
end
|
21
19
|
|
20
|
+
def path
|
21
|
+
@file.path
|
22
|
+
end
|
23
|
+
|
22
24
|
def write(gems)
|
23
|
-
file.write brakeman_code if gems.include? 'brakeman'
|
24
|
-
file.write
|
25
|
-
file.write
|
25
|
+
@file.write brakeman_code if gems.include? 'brakeman'
|
26
|
+
@file.write solargraph_code if gems.include? 'solargraph'
|
27
|
+
@file.write rspec_code if gems.include? 'rspec'
|
28
|
+
@file.write rubocop_code if gems.include? 'rubocop'
|
26
29
|
|
27
|
-
file.rewind
|
30
|
+
@file.rewind
|
28
31
|
end
|
29
32
|
|
30
33
|
private
|
@@ -35,6 +38,12 @@ module Mogu
|
|
35
38
|
CODE
|
36
39
|
end
|
37
40
|
|
41
|
+
def solargraph_code
|
42
|
+
<<~CODE
|
43
|
+
gem 'solargraph', group: :development
|
44
|
+
CODE
|
45
|
+
end
|
46
|
+
|
38
47
|
def rspec_code
|
39
48
|
<<~CODE
|
40
49
|
gem 'factory_bot_rails', group: %i[development test]
|
@@ -50,25 +59,21 @@ module Mogu
|
|
50
59
|
<<~CODE
|
51
60
|
gem 'rubocop-rails', group: :development, require: false
|
52
61
|
|
53
|
-
create_file '.rubocop.yml',
|
62
|
+
create_file '.rubocop.yml', <<~YML
|
63
|
+
require:
|
64
|
+
- rubocop-rails
|
65
|
+
|
66
|
+
AllCops:
|
67
|
+
NewCops: enable
|
68
|
+
|
69
|
+
Rails:
|
70
|
+
Enabled: true
|
71
|
+
YML
|
54
72
|
|
55
73
|
after_bundle do
|
56
74
|
run 'rubocop --auto-gen-config'
|
57
75
|
end
|
58
76
|
CODE
|
59
77
|
end
|
60
|
-
|
61
|
-
def rubocop_yml
|
62
|
-
<<~CODE
|
63
|
-
require:
|
64
|
-
- rubocop-rails
|
65
|
-
|
66
|
-
AllCops:
|
67
|
-
NewCops: enable
|
68
|
-
|
69
|
-
Rails:
|
70
|
-
Enabled: true
|
71
|
-
CODE
|
72
|
-
end
|
73
78
|
end
|
74
79
|
end
|
data/lib/mogu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mogu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MoguraStore
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|