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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b6b652ea5e6c6cff5a7afea1a7001739c1037b999574e11010c24eb56f12a4a
4
- data.tar.gz: 8d6d194add2fff01d83ed36568940892e4f915b8b1093df8d904e3a9227c93f8
3
+ metadata.gz: 83c36d8a3dcfd0d836638de3e3f7cadcdb0ba191014ad43c0284b5fdc5cf3c75
4
+ data.tar.gz: e415394242ec7c6dc4f74c9d5319b0bb8b981b31920ff2d3b8d9eea2068e9476
5
5
  SHA512:
6
- metadata.gz: eb5b43087c23d0cb37565a73aff07563fcf3fcc597e5c572c7619cca1df8d92e37892e28a1370abc5e09ed1b380222290fab16e14979859db3eb58ac7a8a5fa3
7
- data.tar.gz: a91fdab847dd718b44f017e1f149949a8fee092d150452eb63d2c84db74e2261d502cb7c31e7ec4faffeeac3595faab3a2c94aea43c8db34cc647f5c4648677c
6
+ metadata.gz: debd2684a695d3d2d9dadfd60514e51903e566a576546e7691e681e0a483efc5739388016682f51bccfb1fc1d739d784b8945a79df7b2b6c3dbb7672a77bed19
7
+ data.tar.gz: 36140ce40449777bb3a7f55e6d237360b03021629eef4b036aa8f0fcbe4a16b4fb8aed849569b91229af2f55769f7ce908c8f26b29b43e34a6027350b19933c5
data/README.md CHANGED
@@ -51,7 +51,9 @@ Choose css
51
51
  sass
52
52
 
53
53
  Choose gems
54
- > ⬡ rspec
54
+ > ⬡ brakeman
55
+ ⬡ rspec
56
+ ⬡ rubocop
55
57
  ```
56
58
 
57
59
  ## Development
data/docker-compose.yml CHANGED
@@ -5,8 +5,10 @@ services:
5
5
  image: ruby
6
6
  volumes:
7
7
  - .:/workspace
8
+ - gem-credentials-data:/root/.local/share/gem
8
9
  - gem-data:/usr/local/bundle
9
10
  working_dir: /workspace
10
11
 
11
12
  volumes:
13
+ gem-credentials-data:
12
14
  gem-data:
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
- prompt = Mogu::Prompt.new
10
- prompt.run
10
+ params = OptionParser.getopts(ARGV, 'v')
11
11
 
12
- Rails::Command.invoke :application, ['new', *prompt.to_opt]
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
- attr_reader :prompt, :result
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
- [result.app_path] + [
29
- database? ? ['-d', result.database] : [],
30
- javascript? ? ['-j', result.javascript] : [],
31
- css? ? ['-c', result.css] : [],
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.file.path] : []
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
- [brakeman?, rspec?, rubocop?].any?
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 = %w[database javascript css gems]
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 rspec_code if gems.include? 'rspec'
25
- file.write rubocop_code if gems.include? 'rubocop'
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', #{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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mogu
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
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.3.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-20 00:00:00.000000000 Z
11
+ date: 2022-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties