mogu 0.7.0 → 0.8.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: 997481175fb0e2074d0627ba83fd7fc057d85f3747c550f79c9ff45fd2442108
4
- data.tar.gz: 8b4463bb1008a206d3c9db2d57ea834be6d631b7c75fc11870711cb18ce67ffc
3
+ metadata.gz: ff62aaa44ea6ba8a4fa79cc8453cf5ac54bfe142b06d95d5512d80ea6e644540
4
+ data.tar.gz: 7ce4af13262e1cad5baf01e1c258a9d8d46918c8dc6f7b222f090d249c92d11e
5
5
  SHA512:
6
- metadata.gz: e13ab164f9080b1145e0d15f3014d892d67305f12984a8eaa1be04b58f6be367c33f7c02668f09325fd12719218dbcbcd599cfc388f55f1aae7808fa907940ff
7
- data.tar.gz: a356b500527b00a46c08c9fa6631faa88b4669dc9a8d39bf81d54a9a3c6308ee68ab1f8a4ee1179c82bc9c1f379914a0acff7452bec650210853c9094d4a8947
6
+ metadata.gz: 7f7552ae5a1531d8bc61d7b0df6dfaaa867ee26d6e9a091a12c650b63aa5afb04725a9cebca260f8f9b4aa20fe52541db02c10e710a333b1e22b883af29f922b
7
+ data.tar.gz: f9cf99602a0ad431399e55dcf76f84a29f6e5f7adc3ce8a2fe26bee759c4de62dfbfc11cd5654fdc637dc4faceeb0af75def7f165a11a57b305ccfbbd9cdcfa3
data/README.md CHANGED
@@ -38,37 +38,42 @@ mogu new
38
38
  ```
39
39
 
40
40
  ```bash
41
- Please input app path
42
-
43
- Do you want api mode? (y/N)
44
-
45
- Choose customizes
46
- > ⬡ database (Default: sqlite3)
47
- ⬡ javascript (Default: importmap)
48
- css
49
- skips
50
-
51
- Choose database
52
- > sqlite3
53
- mysql
54
- postgresql
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
55
59
  ...
56
60
 
57
- Choose javascript
58
- > importmap
59
- webpack
60
- esbuild
61
- rollup
62
-
63
- Choose css
64
- > tailwind
65
- bootstrap
66
- bulma
67
- postcss
68
- sass
69
-
70
- Choose skips
71
- > test
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
72
77
  ```
73
78
 
74
79
  ### gem
@@ -80,11 +85,13 @@ mogu gem
80
85
  ```
81
86
 
82
87
  ```bash
83
- Choose gems
84
- > brakeman
85
- solargraph
86
- rspec
87
- rubocop
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
+
88
95
  ```
89
96
 
90
97
  ## Development
@@ -1,18 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'cli/ui'
3
4
  require 'erb'
4
5
  require 'rails/command'
5
6
  require 'tempfile'
6
- require 'tty-prompt'
7
7
 
8
8
  module Mogu
9
9
  class GemCommand
10
10
  def run
11
11
  erb = ERB.new File.read(File.expand_path('templates/gem.erb', __dir__))
12
- prompt = TTY::Prompt.new
13
12
  template = Tempfile.new
14
13
 
15
- gems = prompt.multi_select 'Choose gems', gem_choices
14
+ gems = ask_gems
16
15
  template.write erb.result_with_hash(gems: gems)
17
16
  template.rewind
18
17
 
@@ -23,8 +22,10 @@ module Mogu
23
22
 
24
23
  private
25
24
 
26
- def gem_choices
27
- %w[brakeman solargraph rspec rubocop]
25
+ def ask_gems
26
+ options = %w[brakeman solargraph rspec rubocop]
27
+
28
+ ::CLI::UI::Prompt.ask 'Choose gems', multiple: true, options: options
28
29
  end
29
30
  end
30
31
  end
@@ -1,81 +1,90 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'cli/ui'
3
4
  require 'rails/command'
4
- require 'tty-prompt'
5
5
 
6
6
  module Mogu
7
7
  class NewCommand
8
8
  def run
9
- @prompt = TTY::Prompt.new
9
+ @app_path = ask_app_path
10
+ @is_api = confirm_is_api
11
+ customizes = ask_customizes
10
12
 
11
- @app_path = @prompt.ask 'Please input app path', required: true
12
- @is_api = @prompt.yes? 'Do you want api mode?', default: false
13
- @customizes = @prompt.multi_select 'Choose customizes', customize_choices
14
-
15
- @database = @prompt.select 'Choose database', database_choices if database?
16
- @javascript = @prompt.select 'Choose javascript', javascript_choices if javascript?
17
- @css = @prompt.select 'Choose css', css_choices if css?
18
- @skips = @prompt.multi_select 'Choose skips', skip_choices if @customizes.include? 'skips'
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 : []
19
17
 
20
18
  Rails::Command.invoke :application, ['new', *to_opt]
21
19
  end
22
20
 
23
21
  private
24
22
 
25
- def database?
26
- @customizes.include? 'database'
23
+ def ask_app_path
24
+ ::CLI::UI::Prompt.ask 'Please input app path', allow_empty: false
27
25
  end
28
26
 
29
- def javascript?
30
- @customizes.include? 'javascript'
27
+ def confirm_is_api
28
+ ::CLI::UI::Prompt.confirm 'Do you want api mode?', default: false
31
29
  end
32
30
 
33
- def css?
34
- @customizes.include? 'css'
35
- end
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
36
39
 
37
- def css_choices
38
- %w[tailwind bootstrap bulma postcss sass]
40
+ handler.option('skips') { 'skips' }
41
+ end
39
42
  end
40
43
 
41
- def customize_choices
42
- if @is_api
43
- [
44
- { name: 'database (Default: sqlite3)', value: 'database' },
45
- { name: 'skips', value: 'skips' }
46
- ]
47
- else
48
- [
49
- { name: 'database (Default: sqlite3)', value: 'database' },
50
- { name: 'javascript (Default: importmap)', value: 'javascript' },
51
- { name: 'css', value: 'css' },
52
- { name: 'skips', value: 'skips' }
53
- ]
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
54
51
  end
55
52
  end
56
53
 
57
- def database_choices
58
- %w[sqlite3 mysql postgresql oracle sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc]
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
59
62
  end
60
63
 
61
- def javascript_choices
62
- %w[importmap webpack esbuild rollup]
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
63
72
  end
64
73
 
65
- def skip_choices
66
- [
67
- { name: 'test', value: '--skip-test' }
68
- ]
74
+ def ask_skips
75
+ ::CLI::UI::Prompt.ask 'Choose skips', multiple: true do |handler|
76
+ handler.option('test') { '--skip-test' }
77
+ end
69
78
  end
70
79
 
71
80
  def to_opt
72
81
  [
73
82
  @app_path,
74
- @is_api ? ['--api'] : [],
75
- database? ? ['-d', @database] : [],
76
- javascript? ? ['-j', @javascript] : [],
77
- css? ? ['-c', @css] : [],
78
- @skips.to_a
83
+ @is_api ? '--api' : [],
84
+ @database,
85
+ @javascript,
86
+ @css,
87
+ *@skips
79
88
  ].flatten
80
89
  end
81
90
  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.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
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
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.7.0
4
+ version: 0.8.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-04-10 00:00:00.000000000 Z
11
+ date: 2022-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: railties
14
+ name: cli-ui
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.0'
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: '7.0'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: thor
28
+ name: railties
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
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: '1.0'
40
+ version: '7.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: tty-prompt
42
+ name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.23'
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.23'
54
+ version: '1.0'
55
55
  description: CLI to create rails projects interactively.
56
56
  email:
57
57
  - 368034+lisp719@users.noreply.github.com