k_starter 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/generators/01-bootstrap.rb +16 -16
  3. data/.rubocop.yml +14 -0
  4. data/CHANGELOG.md +7 -0
  5. data/Gemfile +22 -0
  6. data/README.md +1 -1
  7. data/exe/k_starter +15 -0
  8. data/ext/k_starter/extconf.rb +5 -0
  9. data/ext/k_starter/k_starter.c +9 -0
  10. data/ext/k_starter/k_starter.h +6 -0
  11. data/lib/k_starter/app.rb +16 -0
  12. data/lib/k_starter/app_generator.rb +198 -0
  13. data/lib/k_starter/cli.rb +63 -0
  14. data/lib/k_starter/commands/.keep +1 -0
  15. data/lib/k_starter/commands/command.rb +54 -0
  16. data/lib/k_starter/commands/configuration/configuration_menu.rb +46 -0
  17. data/lib/k_starter/commands/project/bootstrap_project.rb +28 -0
  18. data/lib/k_starter/commands/project/edit_project.rb +34 -0
  19. data/lib/k_starter/commands/project/new_project.rb +28 -0
  20. data/lib/k_starter/commands/project/project_menu.rb +51 -0
  21. data/lib/k_starter/commands/project/select_new_project_type.rb +44 -0
  22. data/lib/k_starter/database/base_model.rb +21 -0
  23. data/lib/k_starter/database/config_model.rb +99 -0
  24. data/lib/k_starter/database/project_model.rb +94 -0
  25. data/lib/k_starter/map.rb +46 -0
  26. data/lib/k_starter/questions/ask_questions.rb +20 -0
  27. data/lib/k_starter/questions/base_question.rb +208 -0
  28. data/lib/k_starter/questions/gem.rb +132 -0
  29. data/lib/k_starter/questions/rails.rb +162 -0
  30. data/lib/k_starter/questions/svelte.rb +52 -0
  31. data/lib/k_starter/r7_hotwire.rb +98 -0
  32. data/lib/k_starter/schema.rb +89 -0
  33. data/lib/k_starter/starters/base.rb +80 -0
  34. data/lib/k_starter/starters/gem.rb +71 -0
  35. data/lib/k_starter/starters/nuxt.rb +29 -0
  36. data/lib/k_starter/starters/rails.rb +29 -0
  37. data/lib/k_starter/starters/svelte.rb +45 -0
  38. data/lib/k_starter/tty_helpers.rb +118 -0
  39. data/lib/k_starter/version.rb +1 -1
  40. data/lib/k_starter.rb +44 -1
  41. data/package-lock.json +2 -2
  42. data/package.json +1 -1
  43. metadata +172 -1
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KStarter
4
+ module Starters
5
+ # Generate command line for a new ruby gem project.
6
+ class Nuxt
7
+ attr_reader :data
8
+
9
+ def initialize(data)
10
+ @data = data
11
+ end
12
+
13
+ def execute
14
+ script
15
+ end
16
+
17
+ private
18
+
19
+ def script
20
+ <<-BASH
21
+
22
+ cd #{data.root_path}
23
+ npx nuxi init #{data.name}
24
+
25
+ BASH
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KStarter
4
+ module Starters
5
+ # Generate command line for a new ruby gem project.
6
+ class Rails
7
+ attr_reader :data
8
+
9
+ def initialize(data)
10
+ @data = data
11
+ end
12
+
13
+ def execute
14
+ script
15
+ end
16
+
17
+ private
18
+
19
+ def script
20
+ <<-BASH
21
+
22
+ cd #{data.root_path}
23
+ npx degit sveltejs/template #{data.name}
24
+
25
+ BASH
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Examples
4
+ # bundle gem --coc --ci=github --exe --linter=rubocop --test=rspec --mit k_genesis
5
+ # bundle gem --coc --test=rspec --mit k_genesis
6
+ # bundle gem --coc --test=rspec --mit conventional_gitflow
7
+ # bundle gem --coc --test=rspec --mit k_director
8
+ # bundle gem --coc --test=rspec --mit k_config
9
+ # bundle gem --coc --test=rspec --mit funky
10
+ # bundle gem --coc --test=rspec --mit --linter=rubocop --ci-github cmdlet
11
+ # bundle gem --coc --test=rspec --mit cmdlet
12
+ # bundle gem --coc --test=rspec --mit drawio_dsl
13
+ # bundle gem --coc --test=rspec --mit tailwind_dsl
14
+ # bundle gem --coc --test=rspec --mit test-google-cloud-functions
15
+ # bundle gem --coc --test=rspec --mit test_google_cloud_functions
16
+ # bundle gem --coc --test=rspec --mit handlebarsjs
17
+ # bundle gem --coc --test=rspec --mit k_starter
18
+
19
+ module KStarter
20
+ module Starters
21
+ # Generate command line for a new ruby gem project.
22
+ class Svelte
23
+ attr_reader :data
24
+
25
+ def initialize(data)
26
+ @data = data
27
+ end
28
+
29
+ def execute
30
+ script
31
+ end
32
+
33
+ private
34
+
35
+ def script
36
+ <<-BASH
37
+
38
+ cd #{data.root_path}
39
+ npx degit sveltejs/template #{data.name}
40
+
41
+ BASH
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'app'
4
+ require 'forwardable'
5
+
6
+ module KStarter
7
+ # Base command class
8
+ module TtyHelpers
9
+ # Commandlet Configuration
10
+ def config
11
+ KStarter::App.config
12
+ end
13
+
14
+ # The external commands runner
15
+ #
16
+ # @see http://www.rubydoc.info/gems/tty-command
17
+ #
18
+ # @api public
19
+ def command(**options)
20
+ require 'tty-command'
21
+ TTY::Command.new(options)
22
+ end
23
+
24
+ # The cursor movement
25
+ #
26
+ # @see http://www.rubydoc.info/gems/tty-cursor
27
+ #
28
+ # @api public
29
+ def cursor
30
+ require 'tty-cursor'
31
+ TTY::Cursor
32
+ end
33
+
34
+ # Open a file or text in the user's preferred editor
35
+ #
36
+ # @see http://www.rubydoc.info/gems/tty-editor
37
+ #
38
+ # @api public
39
+ def editor
40
+ require 'tty-editor'
41
+ TTY::Editor
42
+ end
43
+
44
+ # File manipulation utility methods
45
+ #
46
+ # @see http://www.rubydoc.info/gems/tty-file
47
+ #
48
+ # @api public
49
+ def generator
50
+ require 'tty-file'
51
+ TTY::File
52
+ end
53
+
54
+ # Terminal output paging
55
+ #
56
+ # @see http://www.rubydoc.info/gems/tty-pager
57
+ #
58
+ # @api public
59
+ def pager(**options)
60
+ require 'tty-pager'
61
+ TTY::Pager.new(options)
62
+ end
63
+
64
+ # Terminal platform and OS properties
65
+ #
66
+ # @see http://www.rubydoc.info/gems/tty-pager
67
+ #
68
+ # @api public
69
+ def platform
70
+ require 'tty-platform'
71
+ TTY::Platform.new
72
+ end
73
+
74
+ # The interactive prompt
75
+ #
76
+ # @see http://www.rubydoc.info/gems/tty-prompt
77
+ #
78
+ # @api public
79
+ def prompt
80
+ require 'tty-prompt'
81
+ p = TTY::Prompt.new
82
+ p.on(:keyescape) do
83
+ raise KStarter::EscapePressed
84
+ end
85
+ p
86
+ end
87
+
88
+ # Get terminal screen properties
89
+ #
90
+ # @see http://www.rubydoc.info/gems/tty-screen
91
+ #
92
+ # @api public
93
+ def screen
94
+ require 'tty-screen'
95
+ TTY::Screen
96
+ end
97
+
98
+ # The unix which utility
99
+ #
100
+ # @see http://www.rubydoc.info/gems/tty-which
101
+ #
102
+ # @api public
103
+ def which(*args)
104
+ require 'tty-which'
105
+ TTY::Which.which(*args)
106
+ end
107
+
108
+ # Check if executable exists
109
+ #
110
+ # @see http://www.rubydoc.info/gems/tty-which
111
+ #
112
+ # @api public
113
+ def exec_exist?(*args)
114
+ require 'tty-which'
115
+ TTY::Which.exist?(*args)
116
+ end
117
+ end
118
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KStarter
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
data/lib/k_starter.rb CHANGED
@@ -1,12 +1,55 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'pry'
4
+
5
+ require 'json'
6
+ require 'dry-struct'
7
+ require 'tty-config'
8
+ require 'tty-prompt'
9
+ require 'tty-table'
10
+ require 'k_util'
11
+
12
+ require 'dry/cli'
13
+ require 'k_doc'
14
+ require 'k_manager'
15
+ require 'k_manager/cli/base_command'
16
+ require 'k_manager/cli/commands'
17
+ require 'k_manager/cli/new'
18
+
19
+ require 'rails/generators/rails/app/app_generator'
20
+
3
21
  require_relative 'k_starter/version'
22
+ require_relative 'k_starter/tty_helpers'
23
+ require_relative 'k_starter/app_generator'
24
+ require_relative 'k_starter/schema'
25
+ require_relative 'k_starter/map'
26
+ require_relative 'k_starter/database/base_model'
27
+ require_relative 'k_starter/database/config_model'
28
+ require_relative 'k_starter/database/project_model'
29
+ require_relative 'k_starter/questions/base_question'
30
+ require_relative 'k_starter/questions/rails'
31
+ require_relative 'k_starter/questions/gem'
32
+ require_relative 'k_starter/questions/svelte'
33
+ require_relative 'k_starter/questions/ask_questions'
34
+ require_relative 'k_starter/cli'
35
+ require_relative 'k_starter/commands/command'
36
+ require_relative 'k_starter/commands/configuration/configuration_menu'
37
+ require_relative 'k_starter/commands/project/project_menu'
38
+ require_relative 'k_starter/commands/project/select_new_project_type'
39
+ require_relative 'k_starter/commands/project/new_project'
40
+ require_relative 'k_starter/commands/project/edit_project'
41
+ require_relative 'k_starter/commands/project/bootstrap_project'
42
+ require_relative 'k_starter/starters/base'
43
+ require_relative 'k_starter/starters/gem'
44
+ require_relative 'k_starter/starters/nuxt'
45
+ require_relative 'k_starter/starters/rails'
46
+ require_relative 'k_starter/starters/svelte'
4
47
 
5
48
  module KStarter
6
49
  # raise KStarter::Error, 'Sample message'
7
50
  Error = Class.new(StandardError)
8
51
 
9
- # Your code goes here...
52
+ EscapePressed = Class.new(StandardError)
10
53
  end
11
54
 
12
55
  if ENV.fetch('KLUE_DEBUG', 'false').downcase == 'true'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "k_starter",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_starter",
9
- "version": "0.1.0",
9
+ "version": "0.1.1",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k_starter",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Create starter applications for Rails, Ruby, and various javascript frameworks.",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_starter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -10,6 +10,34 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2022-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dry-struct
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: k_doc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.37
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.37
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: k_log
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +52,118 @@ dependencies:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
54
  version: 0.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: k_manager
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: k_util
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: railties
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '6'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '6'
97
+ - !ruby/object:Gem::Dependency
98
+ name: tty-config
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.5'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: tty-editor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.7'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.7'
125
+ - !ruby/object:Gem::Dependency
126
+ name: tty-prompt
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.23'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.23'
139
+ - !ruby/object:Gem::Dependency
140
+ name: tty-table
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.12.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.12.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: pastel
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.8'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.8'
27
167
  description: " Create starter applications for Rails, Ruby, and various javascript
28
168
  frameworks.\n"
29
169
  email:
@@ -49,7 +189,38 @@ files:
49
189
  - bin/console
50
190
  - bin/setup
51
191
  - exe/k_starter
192
+ - ext/k_starter/extconf.rb
193
+ - ext/k_starter/k_starter.c
194
+ - ext/k_starter/k_starter.h
52
195
  - lib/k_starter.rb
196
+ - lib/k_starter/app.rb
197
+ - lib/k_starter/app_generator.rb
198
+ - lib/k_starter/cli.rb
199
+ - lib/k_starter/commands/.keep
200
+ - lib/k_starter/commands/command.rb
201
+ - lib/k_starter/commands/configuration/configuration_menu.rb
202
+ - lib/k_starter/commands/project/bootstrap_project.rb
203
+ - lib/k_starter/commands/project/edit_project.rb
204
+ - lib/k_starter/commands/project/new_project.rb
205
+ - lib/k_starter/commands/project/project_menu.rb
206
+ - lib/k_starter/commands/project/select_new_project_type.rb
207
+ - lib/k_starter/database/base_model.rb
208
+ - lib/k_starter/database/config_model.rb
209
+ - lib/k_starter/database/project_model.rb
210
+ - lib/k_starter/map.rb
211
+ - lib/k_starter/questions/ask_questions.rb
212
+ - lib/k_starter/questions/base_question.rb
213
+ - lib/k_starter/questions/gem.rb
214
+ - lib/k_starter/questions/rails.rb
215
+ - lib/k_starter/questions/svelte.rb
216
+ - lib/k_starter/r7_hotwire.rb
217
+ - lib/k_starter/schema.rb
218
+ - lib/k_starter/starters/base.rb
219
+ - lib/k_starter/starters/gem.rb
220
+ - lib/k_starter/starters/nuxt.rb
221
+ - lib/k_starter/starters/rails.rb
222
+ - lib/k_starter/starters/svelte.rb
223
+ - lib/k_starter/tty_helpers.rb
53
224
  - lib/k_starter/version.rb
54
225
  - package-lock.json
55
226
  - package.json