k_starter 0.1.0 → 0.1.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.
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