mogu 0.6.0 → 0.8.1
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/.devcontainer/devcontainer.json +1 -1
- data/.vscode/settings.json +1 -0
- data/Gemfile +2 -0
- data/README.md +62 -31
- data/Steepfile +9 -0
- data/lib/mogu/cli.rb +6 -5
- data/lib/mogu/gem_command.rb +31 -0
- data/lib/mogu/new_command.rb +91 -0
- data/lib/mogu/templates/gem.erb +39 -0
- data/lib/mogu/version.rb +1 -1
- data/lib/mogu.rb +2 -2
- data/mogu.gemspec +1 -1
- data/sig/mogu/cli.rbs +10 -0
- data/sig/mogu/gem_command.rbs +11 -0
- data/sig/mogu/new_command.rbs +25 -0
- data/sig/mogu/version.rbs +6 -0
- data/sig/patch.rbs +19 -0
- metadata +20 -13
- data/lib/mogu/prompt.rb +0 -127
- data/lib/mogu/template.rb +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 269a89adb5358437707573187ca45661b19bde3752d18cda866624c22feffa4b
|
4
|
+
data.tar.gz: 26189a50fd73c9ceefcbef18a05bf161f1832fe26f6449decad4ee8af094e1bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdb9286c8524786c016a556b946a135de8df76cb0be38a6277b9edac6245d6235f3754bdfd4c61e7f7980db9a41a9435d16e90c68caaf6c75f804125bf2d667b
|
7
|
+
data.tar.gz: '0291883c08d156c983f845408f53eafe57d0576c58b065015ba3c5b7ee937fa3d3eff431367feb73d371a1860b6777cb5aff4d91a609bcbd2f7baabae2e1eaa8'
|
@@ -20,7 +20,7 @@
|
|
20
20
|
"settings": {},
|
21
21
|
|
22
22
|
// Add the IDs of extensions you want installed when the container is created.
|
23
|
-
"extensions": ["castwide.solargraph"]
|
23
|
+
"extensions": ["castwide.solargraph", "soutaro.steep-vscode"]
|
24
24
|
|
25
25
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
26
26
|
// "forwardPorts": [],
|
data/.vscode/settings.json
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -12,6 +12,7 @@ CLI to create rails projects interactively.
|
|
12
12
|
- database
|
13
13
|
- javascript
|
14
14
|
- css
|
15
|
+
- skips
|
15
16
|
- Support in adding gems
|
16
17
|
|
17
18
|
## Installation
|
@@ -22,45 +23,75 @@ gem install mogu
|
|
22
23
|
|
23
24
|
## Usage
|
24
25
|
|
26
|
+
### help
|
27
|
+
|
25
28
|
```bash
|
26
|
-
mogu
|
29
|
+
mogu help
|
27
30
|
```
|
28
31
|
|
29
|
-
|
30
|
-
Please input app path
|
32
|
+
### new
|
31
33
|
|
32
|
-
|
34
|
+
Create rails projects interactively.
|
33
35
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
⬡ css
|
38
|
-
⬡ gems
|
36
|
+
```bash
|
37
|
+
mogu new
|
38
|
+
```
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
```bash
|
41
|
+
? Please input app path
|
42
|
+
>
|
43
|
+
|
44
|
+
? Do you want api mode? (Choose with ↑ ↓ ⏎)
|
45
|
+
> 1. no
|
46
|
+
2. yes
|
47
|
+
|
48
|
+
? Choose customizes (Toggle options. Choose with ↑ ↓ ⏎, filter with 'f')
|
49
|
+
> 1. ☐ database (Default: sqlite3)
|
50
|
+
2. ☐ javascript (Default: importmap)
|
51
|
+
3. ☐ css
|
52
|
+
4. ☐ skips
|
53
|
+
0. Done
|
54
|
+
|
55
|
+
? Choose database (Choose with ↑ ↓ ⏎, filter with 'f')
|
56
|
+
> 1. sqlite3
|
57
|
+
2. mysql
|
58
|
+
3. postgresql
|
44
59
|
...
|
45
60
|
|
46
|
-
Choose javascript
|
47
|
-
> importmap
|
48
|
-
webpack
|
49
|
-
esbuild
|
50
|
-
rollup
|
51
|
-
|
52
|
-
Choose css
|
53
|
-
> tailwind
|
54
|
-
bootstrap
|
55
|
-
bulma
|
56
|
-
postcss
|
57
|
-
sass
|
58
|
-
|
59
|
-
Choose
|
60
|
-
>
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
? Choose javascript (Choose with ↑ ↓ ⏎, filter with 'f')
|
62
|
+
> 1. importmap
|
63
|
+
2. webpack
|
64
|
+
3. esbuild
|
65
|
+
4. rollup
|
66
|
+
|
67
|
+
? Choose css (Choose with ↑ ↓ ⏎, filter with 'f')
|
68
|
+
> 1. tailwind
|
69
|
+
2. bootstrap
|
70
|
+
3. bulma
|
71
|
+
4. postcss
|
72
|
+
5. sass
|
73
|
+
|
74
|
+
? Choose skips (Toggle options. Choose with ↑ ↓ ⏎, filter with 'f')
|
75
|
+
> 1. ☐ test
|
76
|
+
0. Done
|
77
|
+
```
|
78
|
+
|
79
|
+
### gem
|
80
|
+
|
81
|
+
Add gems to rails projects.
|
82
|
+
|
83
|
+
```bash
|
84
|
+
mogu gem
|
85
|
+
```
|
86
|
+
|
87
|
+
```bash
|
88
|
+
? Choose gems (Toggle options. Choose with ↑ ↓ ⏎, filter with 'f')
|
89
|
+
> 1. ☐ brakeman
|
90
|
+
2. ☐ solargraph
|
91
|
+
3. ☐ rspec
|
92
|
+
4. ☐ rubocop
|
93
|
+
0. Done
|
94
|
+
|
64
95
|
```
|
65
96
|
|
66
97
|
## Development
|
data/Steepfile
ADDED
data/lib/mogu/cli.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'rails/command'
|
4
3
|
require 'thor'
|
5
4
|
|
6
5
|
module Mogu
|
7
6
|
class CLI < Thor
|
7
|
+
desc 'gem', 'Add gems to rails projects'
|
8
|
+
def gem
|
9
|
+
Mogu::GemCommand.new.run
|
10
|
+
end
|
11
|
+
|
8
12
|
desc 'new', 'Create rails projects interactively'
|
9
13
|
def new
|
10
|
-
|
11
|
-
prompt.run
|
12
|
-
|
13
|
-
Rails::Command.invoke :application, ['new', *prompt.to_opt]
|
14
|
+
Mogu::NewCommand.new.run
|
14
15
|
end
|
15
16
|
|
16
17
|
desc 'version', 'Display mogu version'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cli/ui'
|
4
|
+
require 'erb'
|
5
|
+
require 'rails/command'
|
6
|
+
require 'tempfile'
|
7
|
+
|
8
|
+
module Mogu
|
9
|
+
class GemCommand
|
10
|
+
def run
|
11
|
+
erb = ERB.new File.read(File.expand_path('templates/gem.erb', __dir__.to_s))
|
12
|
+
template = Tempfile.new
|
13
|
+
|
14
|
+
gems = ask_gems
|
15
|
+
template.write erb.result_with_hash(gems: gems)
|
16
|
+
template.rewind
|
17
|
+
|
18
|
+
ENV.store 'LOCATION', template.path
|
19
|
+
|
20
|
+
Rails::Command.invoke 'app:template'
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def ask_gems
|
26
|
+
options = %w[brakeman solargraph rspec rubocop]
|
27
|
+
|
28
|
+
::CLI::UI::Prompt.ask 'Choose gems', multiple: true, options: options
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cli/ui'
|
4
|
+
require 'rails/command'
|
5
|
+
|
6
|
+
module Mogu
|
7
|
+
class NewCommand
|
8
|
+
def run
|
9
|
+
@app_path = ask_app_path
|
10
|
+
@is_api = confirm_is_api
|
11
|
+
customizes = ask_customizes
|
12
|
+
|
13
|
+
@database = customizes.include?('database') ? ask_database : []
|
14
|
+
@javascript = customizes.include?('javascript') ? ask_javascript : []
|
15
|
+
@css = customizes.include?('css') ? ask_css : []
|
16
|
+
@skips = customizes.include?('skips') ? ask_skips : []
|
17
|
+
|
18
|
+
Rails::Command.invoke :application, ['new', *to_opt]
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def ask_app_path
|
24
|
+
::CLI::UI::Prompt.ask 'Please input app path', allow_empty: false
|
25
|
+
end
|
26
|
+
|
27
|
+
def confirm_is_api
|
28
|
+
::CLI::UI::Prompt.confirm 'Do you want api mode?', default: false
|
29
|
+
end
|
30
|
+
|
31
|
+
def ask_customizes
|
32
|
+
::CLI::UI::Prompt.ask 'Choose customizes', multiple: true do |handler|
|
33
|
+
handler.option('database (Default: sqlite3)') { 'database' }
|
34
|
+
|
35
|
+
unless @is_api
|
36
|
+
handler.option('javascript (Default: importmap)') { 'javascript' }
|
37
|
+
handler.option('css') { 'css' }
|
38
|
+
end
|
39
|
+
|
40
|
+
handler.option('skips') { 'skips' }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def ask_database
|
45
|
+
options = %w[sqlite3 mysql postgresql oracle sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc]
|
46
|
+
|
47
|
+
::CLI::UI::Prompt.ask 'Choose database' do |handler|
|
48
|
+
options.each do |option|
|
49
|
+
handler.option(option) { |s| ['-d', s] }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def ask_javascript
|
55
|
+
options = %w[importmap webpack esbuild rollup]
|
56
|
+
|
57
|
+
::CLI::UI::Prompt.ask 'Choose javascript' do |handler|
|
58
|
+
options.each do |option|
|
59
|
+
handler.option(option) { |s| ['-j', s] }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def ask_css
|
65
|
+
options = %w[tailwind bootstrap bulma postcss sass]
|
66
|
+
|
67
|
+
::CLI::UI::Prompt.ask 'Choose css' do |handler|
|
68
|
+
options.each do |option|
|
69
|
+
handler.option(option) { |s| ['-c', s] }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def ask_skips
|
75
|
+
::CLI::UI::Prompt.ask 'Choose skips', multiple: true do |handler|
|
76
|
+
handler.option('test') { '--skip-test' }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def to_opt
|
81
|
+
[
|
82
|
+
@app_path,
|
83
|
+
@is_api ? '--api' : [],
|
84
|
+
@database,
|
85
|
+
@javascript,
|
86
|
+
@css,
|
87
|
+
*@skips
|
88
|
+
].flatten
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<% if gems.include? 'brakeman' %>
|
2
|
+
gem 'brakeman', group: :development
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% if gems.include? 'rspec' %>
|
6
|
+
gem 'factory_bot_rails', group: %i[development test]
|
7
|
+
gem 'rspec-rails', group: %i[development test]
|
8
|
+
<% end %>
|
9
|
+
|
10
|
+
<% if gems.include? 'rubocop' %>
|
11
|
+
gem 'rubocop-rails', group: :development, require: false
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<% if gems.include? 'solargraph' %>
|
15
|
+
gem 'solargraph', group: :development
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% if gems.include? 'rubocop' %>
|
19
|
+
create_file '.rubocop.yml', <<~YML
|
20
|
+
require:
|
21
|
+
- rubocop-rails
|
22
|
+
|
23
|
+
AllCops:
|
24
|
+
NewCops: enable
|
25
|
+
|
26
|
+
Rails:
|
27
|
+
Enabled: true
|
28
|
+
YML
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
run 'bundle install'
|
32
|
+
|
33
|
+
<% if gems.include? 'rspec' %>
|
34
|
+
generate 'rspec:install'
|
35
|
+
<% end %>
|
36
|
+
|
37
|
+
<% if gems.include? 'rubocop' %>
|
38
|
+
run 'rubocop --auto-gen-config'
|
39
|
+
<% end %>
|
data/lib/mogu/version.rb
CHANGED
data/lib/mogu.rb
CHANGED
data/mogu.gemspec
CHANGED
@@ -32,9 +32,9 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.require_paths = ['lib']
|
33
33
|
|
34
34
|
# Uncomment to register a new dependency of your gem
|
35
|
+
spec.add_dependency 'cli-ui', '~> 1.0'
|
35
36
|
spec.add_dependency 'railties', '~> 7.0'
|
36
37
|
spec.add_dependency 'thor', '~> 1.0'
|
37
|
-
spec.add_dependency 'tty-prompt', '~> 0.23'
|
38
38
|
|
39
39
|
# For more information and examples about making a new gem, checkout our
|
40
40
|
# guide at: https://bundler.io/guides/creating_gem.html
|
data/sig/mogu/cli.rbs
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# TypeProf 0.21.2
|
2
|
+
|
3
|
+
# Classes
|
4
|
+
module Mogu
|
5
|
+
class NewCommand
|
6
|
+
@app_path: String
|
7
|
+
@is_api: bool
|
8
|
+
@database: Array[String]
|
9
|
+
@javascript: Array[String]
|
10
|
+
@css: Array[String]
|
11
|
+
@skips: Array[String]
|
12
|
+
|
13
|
+
def run: -> void
|
14
|
+
|
15
|
+
private
|
16
|
+
def ask_app_path: -> String
|
17
|
+
def confirm_is_api: -> bool
|
18
|
+
def ask_customizes: -> Array[String]
|
19
|
+
def ask_database: -> Array[String]
|
20
|
+
def ask_javascript: -> Array[String]
|
21
|
+
def ask_css: -> Array[String]
|
22
|
+
def ask_skips: -> Array[String]
|
23
|
+
def to_opt: -> Array[String]
|
24
|
+
end
|
25
|
+
end
|
data/sig/patch.rbs
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Classes
|
2
|
+
module CLI
|
3
|
+
module UI
|
4
|
+
class Prompt
|
5
|
+
def self.ask: (String, ?allow_empty: bool, ?multiple: bool, ?options: Array[String]) ?{ (untyped) -> void } -> untyped
|
6
|
+
def self.confirm: (String, ?default: bool) -> bool
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module Rails
|
12
|
+
class Command
|
13
|
+
def self.invoke: (String | Symbol, ?Array[String]) -> void
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Thor
|
18
|
+
def self.desc: (String, String) -> void
|
19
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mogu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MoguraStore
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: cli-ui
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: railties
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '7.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '7.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
54
|
+
version: '1.0'
|
55
55
|
description: CLI to create rails projects interactively.
|
56
56
|
email:
|
57
57
|
- 368034+lisp719@users.noreply.github.com
|
@@ -71,16 +71,23 @@ files:
|
|
71
71
|
- LICENSE.txt
|
72
72
|
- README.md
|
73
73
|
- Rakefile
|
74
|
+
- Steepfile
|
74
75
|
- bin/console
|
75
76
|
- bin/setup
|
76
77
|
- compose.yaml
|
77
78
|
- exe/mogu
|
78
79
|
- lib/mogu.rb
|
79
80
|
- lib/mogu/cli.rb
|
80
|
-
- lib/mogu/
|
81
|
-
- lib/mogu/
|
81
|
+
- lib/mogu/gem_command.rb
|
82
|
+
- lib/mogu/new_command.rb
|
83
|
+
- lib/mogu/templates/gem.erb
|
82
84
|
- lib/mogu/version.rb
|
83
85
|
- mogu.gemspec
|
86
|
+
- sig/mogu/cli.rbs
|
87
|
+
- sig/mogu/gem_command.rbs
|
88
|
+
- sig/mogu/new_command.rbs
|
89
|
+
- sig/mogu/version.rbs
|
90
|
+
- sig/patch.rbs
|
84
91
|
homepage: https://github.com/mogurastore/mogu
|
85
92
|
licenses:
|
86
93
|
- MIT
|
data/lib/mogu/prompt.rb
DELETED
@@ -1,127 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'tty-prompt'
|
4
|
-
|
5
|
-
module Mogu
|
6
|
-
class Prompt
|
7
|
-
Result = Struct.new(
|
8
|
-
:app_path,
|
9
|
-
:is_api,
|
10
|
-
:customizes,
|
11
|
-
:database,
|
12
|
-
:javascript,
|
13
|
-
:css,
|
14
|
-
:gems,
|
15
|
-
:template,
|
16
|
-
keyword_init: true
|
17
|
-
)
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@prompt = TTY::Prompt.new
|
21
|
-
|
22
|
-
@result = Result.new(
|
23
|
-
app_path: '',
|
24
|
-
is_api: false,
|
25
|
-
customizes: [],
|
26
|
-
database: '',
|
27
|
-
javascript: '',
|
28
|
-
css: '',
|
29
|
-
gems: [],
|
30
|
-
template: nil
|
31
|
-
)
|
32
|
-
end
|
33
|
-
|
34
|
-
def run
|
35
|
-
@result.app_path = @prompt.ask 'Please input app path', required: true
|
36
|
-
@result.is_api = @prompt.yes? 'Do you want api mode?', default: false
|
37
|
-
@result.customizes = customizes
|
38
|
-
|
39
|
-
@result.database = database if database?
|
40
|
-
@result.javascript = javascript if javascript?
|
41
|
-
@result.css = css if css?
|
42
|
-
@result.gems = gems if gems?
|
43
|
-
@result.template = Mogu::Template.create @result.gems if template?
|
44
|
-
end
|
45
|
-
|
46
|
-
def to_opt
|
47
|
-
[
|
48
|
-
@result.app_path,
|
49
|
-
@result.is_api ? ['--api'] : [],
|
50
|
-
database? ? ['-d', @result.database] : [],
|
51
|
-
javascript? ? ['-j', @result.javascript] : [],
|
52
|
-
css? ? ['-c', @result.css] : [],
|
53
|
-
rspec? ? %w[-T] : [],
|
54
|
-
template? ? ['-m', @result.template.path] : []
|
55
|
-
].flatten
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def database?
|
61
|
-
@result.customizes.include? 'database'
|
62
|
-
end
|
63
|
-
|
64
|
-
def javascript?
|
65
|
-
@result.customizes.include? 'javascript'
|
66
|
-
end
|
67
|
-
|
68
|
-
def css?
|
69
|
-
@result.customizes.include? 'css'
|
70
|
-
end
|
71
|
-
|
72
|
-
def gems?
|
73
|
-
@result.customizes.include? 'gems'
|
74
|
-
end
|
75
|
-
|
76
|
-
def rspec?
|
77
|
-
@result.gems.include? 'rspec'
|
78
|
-
end
|
79
|
-
|
80
|
-
def template?
|
81
|
-
@result.gems.any?
|
82
|
-
end
|
83
|
-
|
84
|
-
def css
|
85
|
-
choices = %w[tailwind bootstrap bulma postcss sass]
|
86
|
-
|
87
|
-
@prompt.select 'Choose css', choices
|
88
|
-
end
|
89
|
-
|
90
|
-
def customizes
|
91
|
-
choices =
|
92
|
-
if @result.is_api
|
93
|
-
[
|
94
|
-
{ name: 'database (Default: sqlite3)', value: 'database' },
|
95
|
-
{ name: 'gems', value: 'gems' }
|
96
|
-
]
|
97
|
-
else
|
98
|
-
[
|
99
|
-
{ name: 'database (Default: sqlite3)', value: 'database' },
|
100
|
-
{ name: 'javascript (Default: importmap)', value: 'javascript' },
|
101
|
-
{ name: 'css', value: 'css' },
|
102
|
-
{ name: 'gems', value: 'gems' }
|
103
|
-
]
|
104
|
-
end
|
105
|
-
|
106
|
-
@prompt.multi_select 'Choose customizes', choices
|
107
|
-
end
|
108
|
-
|
109
|
-
def database
|
110
|
-
choices = %w[sqlite3 mysql postgresql oracle sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc]
|
111
|
-
|
112
|
-
@prompt.select 'Choose database', choices
|
113
|
-
end
|
114
|
-
|
115
|
-
def gems
|
116
|
-
choices = %w[brakeman solargraph rspec rubocop]
|
117
|
-
|
118
|
-
@prompt.multi_select 'Choose gems', choices
|
119
|
-
end
|
120
|
-
|
121
|
-
def javascript
|
122
|
-
choices = %w[importmap webpack esbuild rollup]
|
123
|
-
|
124
|
-
@prompt.select 'Choose javascript', choices
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
data/lib/mogu/template.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'tempfile'
|
4
|
-
|
5
|
-
module Mogu
|
6
|
-
class Template
|
7
|
-
class << self
|
8
|
-
def create(gems)
|
9
|
-
template = new
|
10
|
-
template.write gems
|
11
|
-
|
12
|
-
template
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def initialize
|
17
|
-
@file = Tempfile.new
|
18
|
-
end
|
19
|
-
|
20
|
-
def path
|
21
|
-
@file.path
|
22
|
-
end
|
23
|
-
|
24
|
-
def write(gems)
|
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'
|
29
|
-
|
30
|
-
@file.rewind
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def brakeman_code
|
36
|
-
<<~CODE
|
37
|
-
gem 'brakeman', group: :development
|
38
|
-
CODE
|
39
|
-
end
|
40
|
-
|
41
|
-
def solargraph_code
|
42
|
-
<<~CODE
|
43
|
-
gem 'solargraph', group: :development
|
44
|
-
CODE
|
45
|
-
end
|
46
|
-
|
47
|
-
def rspec_code
|
48
|
-
<<~CODE
|
49
|
-
gem 'factory_bot_rails', group: %i[development test]
|
50
|
-
gem 'rspec-rails', group: %i[development test]
|
51
|
-
|
52
|
-
after_bundle do
|
53
|
-
generate 'rspec:install'
|
54
|
-
end
|
55
|
-
CODE
|
56
|
-
end
|
57
|
-
|
58
|
-
def rubocop_code
|
59
|
-
<<~CODE
|
60
|
-
gem 'rubocop-rails', group: :development, require: false
|
61
|
-
|
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
|
72
|
-
|
73
|
-
after_bundle do
|
74
|
-
run 'rubocop --auto-gen-config'
|
75
|
-
end
|
76
|
-
CODE
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|