k_director 0.7.0 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0672ad44c4bedc02e26c444b2d2dd018d12e6d979a8d87fe751c30544e77b878
4
- data.tar.gz: a58c986bc9d6b969368e423b124710726b59f9f3a7157f1c61ae9119bef6433b
3
+ metadata.gz: 5939eff40d316d1567818484e3d6bed5ebea38b6252e6f8413773fb3b6237483
4
+ data.tar.gz: f1ac410aab5054420f5d1ed8231167b9a7c3f5fbb7f3c6e921f1e3a585e3bcc7
5
5
  SHA512:
6
- metadata.gz: 98a1a2ffa7ebfb543395ec9362d2c05721d98fb2158b51daf8af4040297abbd0a2209ce31b59ac637fb598caaaa6af17c7c246e2ae0c5be90023f93666e305d8
7
- data.tar.gz: 187c6b3e7b2be6f0f51994741771cae2399f87db17fba890afb042035235698627110a9aa43696591de970c2b9d32c21fce68d82dd2a3cc23054cd6be17d4100
6
+ metadata.gz: d22685499a5845dfe933e4d8f9bc2c6d8c4905c18f8e66cdae2c20a5c4fa9d57138c234dde2fe5a41d3ece4a874e1f0d18fe47159e17a623dcab8a7b435c18fe
7
+ data.tar.gz: 7eb329e8211d8fe6ea1eafdc4c52ee4da1b0fdfde538744625c2327379dd04c28bb346ec5fa3cb234f9efd314e1f53f209f64d522596e65de16e048f84a352b5
data/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [0.7.0](https://github.com/klueless-io/k_director/compare/v0.6.2...v0.7.0) (2022-02-03)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * apply cops ([3ed749b](https://github.com/klueless-io/k_director/commit/3ed749b504264f93dfcfbc7c57fb10e91c1aca36))
7
+
8
+
9
+ ### Features
10
+
11
+ * add github dsll support and scenario tests ([ce9b0c8](https://github.com/klueless-io/k_director/commit/ce9b0c8ad6df9dc1154074e9e23c5310919bd112))
12
+
1
13
  ## [0.6.2](https://github.com/klueless-io/k_director/compare/v0.6.1...v0.6.2) (2022-02-01)
2
14
 
3
15
 
@@ -0,0 +1,288 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDirector
4
+ module Dsls
5
+ # Nuxt3Dsl is a DSL for generating Nuxt3.x projects.
6
+ class Nuxt3Dsl < KDirector::Directors::BaseDirector
7
+ def default_template_base_folder
8
+ 'nuxt3'
9
+ end
10
+
11
+ def github(**opts, &block)
12
+ github = Dsl::Github.new(self, **opts)
13
+ github.instance_eval(&block)
14
+
15
+ self
16
+ end
17
+
18
+ def blueprint(**opts, &block)
19
+ blueprint = Dsl::RubyGemBlueprint.new(self, **opts)
20
+ blueprint.instance_eval(&block)
21
+
22
+ self
23
+ end
24
+
25
+ # def blueprint(**opts, &block)
26
+ # blueprint = Dsl::Blueprint.new(self, **opts)
27
+ # blueprint.instance_eval(&block)
28
+
29
+ # self
30
+ # end
31
+
32
+ # def app(**opts, &block)
33
+ # app = Dsl::Nuxt3App.new(self, **opts)
34
+ # app.instance_eval(&block)
35
+
36
+ # self
37
+ # end
38
+
39
+ # def layouts(**opts, &block)
40
+ # layouts = Dsl::Nuxt3Layout.new(self, **opts)
41
+ # layouts.instance_eval(&block)
42
+
43
+ # self
44
+ # end
45
+
46
+ # def pages(**opts, &block)
47
+ # pages = Dsl::Nuxt3Page.new(self, **opts)
48
+ # pages.instance_eval(&block)
49
+
50
+ # self
51
+ # end
52
+
53
+ # def components(**opts, &block)
54
+ # components = Dsl::Nuxt3Component.new(self, **opts)
55
+ # components.instance_eval(&block)
56
+
57
+ # self
58
+ # end
59
+
60
+ # def stories(**opts, &block)
61
+ # stories = Dsl::Nuxt3Story.new(self, **opts)
62
+ # stories.instance_eval(&block)
63
+
64
+ # self
65
+ # end
66
+
67
+ # def apis(**opts, &block)
68
+ # apis = Dsl::Nuxt3Api.new(self, **opts)
69
+ # apis.instance_eval(&block)
70
+
71
+ # self
72
+ # end
73
+ end
74
+
75
+ # class Nuxt3App < KDirector::Directors::ChildDirector
76
+
77
+ # def setup_tailwind
78
+ # run_command('yarn add -D tailwindcss@latest')
79
+ # run_command('yarn add -D postcss@^8.3.11') # @latest
80
+ # run_command('yarn add -D autoprefixer@latest')
81
+ # run_command('npx tailwindcss init -p')
82
+ # end
83
+
84
+ # def setup_storybook
85
+ # run_command('yarn add -D @storybook/vue3')
86
+ # run_command('yarn add -D @storybook/addon-docs')
87
+ # run_command('yarn add -D @storybook/addon-essentials')
88
+ # run_command('yarn add -D @storybook/addon-storysource')
89
+ # run_command('yarn add -D @storybook/addon-postcss')
90
+ # run_command('yarn add -D storybook-builder-vite')
91
+ # end
92
+ # # >> "postcss": "^8.4.5", // Post CSS 8.4.5 does not work with storybook
93
+ # end
94
+
95
+ # class Nuxt3Layout < KDirector::Directors::ChildDirector
96
+ # # @param [Hash] **opts The options
97
+ # # @option opts [String] :variant Template variant name
98
+ # # @option opts [String] :template_subfolder Template subfolder
99
+ # def layout(name, **opts)
100
+ # variant = opts[:variant] || name
101
+ # template_filename = "#{dasherize.parse(variant.to_s)}.vue"
102
+ # template_file = resolve_template_file("nuxt3/layouts", template_filename, **opts)
103
+ # output_filename = "#{dasherize.parse(name.to_s)}.vue"
104
+ # output_file = File.join('layouts', output_filename)
105
+
106
+ # opts = {
107
+ # template_file: template_file
108
+ # }.merge(opts)
109
+
110
+ # add_file(output_file, **opts)
111
+ # end
112
+
113
+ # def olayout(name, **opts); layout(name, **{ open: true }.merge(opts)); end
114
+ # def tlayout(name, **opts); layout(name, **{ open_template: true }.merge(opts)); end
115
+ # def flayout(name, **opts); layout(name, **{ on_exist: :write }.merge(opts)); end
116
+
117
+ # def sample_layout(name, **opts)
118
+ # layout(name, template_subfolder: 'samples', **opts)
119
+ # end
120
+
121
+ # def osample_layout(name, **opts); sample_layout(name, **{ open: true }.merge(opts)); end
122
+ # def tsample_layout(name, **opts); sample_layout(name, **{ open_template: true }.merge(opts)); end
123
+ # def fsample_layout(name, **opts); sample_layout(name, **{ on_exist: :write }.merge(opts)); end
124
+
125
+ # end
126
+
127
+ # class Nuxt3Page < KDirector::Directors::ChildDirector
128
+ # # @param [Hash] **opts The options
129
+ # # @option opts [String] :subfolder Output subfolder
130
+ # # @option opts [String] :variant Template variant name
131
+ # # @option opts [String] :template_subfolder Template subfolder
132
+ # def page(name, **opts)
133
+ # variant = opts[:variant] || name
134
+ # template_filename = "#{dasherize.parse(variant.to_s)}.vue"
135
+ # template_file = resolve_template_file("nuxt3/pages", template_filename, **opts)
136
+ # output_filename = "#{dasherize.parse(name.to_s)}.vue"
137
+ # parts = ['pages', opts[:subfolder], output_filename].reject(&:blank?).map(&:to_s)
138
+ # output_file = File.join(*parts)
139
+
140
+ # opts = {
141
+ # template_file: template_file,
142
+ # dom: {
143
+ # page_name: opts[:page_name] || name,
144
+ # main_key: opts[:main_key] || :sample
145
+ # }
146
+ # }.merge(opts)
147
+
148
+ # add_file(output_file, **opts)
149
+ # end
150
+ # def opage(name, **opts); page(name, **{ open: true }.merge(opts)); end
151
+ # def tpage(name, **opts); page(name, **{ open_template: true }.merge(opts)); end
152
+ # def fpage(name, **opts); page(name, **{ on_exist: :write }.merge(opts)); end
153
+
154
+ # def sample_page(name, **opts)
155
+ # page(name, template_subfolder: 'samples', **opts)
156
+ # end
157
+
158
+ # def osample_page(name, **opts); sample_page(name, **{ open: true }.merge(opts)); end
159
+ # def tsample_page(name, **opts); sample_page(name, **{ open_template: true }.merge(opts)); end
160
+ # def fsample_page(name, **opts); sample_page(name, **{ on_exist: :write }.merge(opts)); end
161
+
162
+ # def tw_page(name, element, element_name, **opts)
163
+ # options = {
164
+ # subfolder: "tailwind/#{element}",
165
+ # variant: 'one-component',
166
+ # dom: {
167
+ # page_name: "#{opts[:page_name] || name}",
168
+ # vue_component: "<#{camel.parse(element.to_s)}#{camel.parse(element_name.to_s)} />"
169
+ # }
170
+ # }.merge(opts)
171
+
172
+ # page(name, **options)
173
+ # end
174
+ # end
175
+
176
+ # class Nuxt3Component < KDirector::Directors::ChildDirector
177
+ # # @param [Hash] **opts The options
178
+ # # @option opts [String] :variant Template variant name
179
+ # # @option opts [String] :template_subfolder Template subfolder
180
+ # def component(name, **opts)
181
+ # variant = opts[:variant] || name
182
+ # template_filename = "#{camel.parse(variant.to_s)}.vue"
183
+ # template_file = resolve_template_file("nuxt3/components", template_filename, **opts)
184
+ # output_filename = "#{camel.parse(name.to_s)}.vue"
185
+ # parts = ['components', opts[:subfolder], output_filename].reject(&:blank?).map(&:to_s)
186
+ # output_file = File.join(*parts)
187
+
188
+ # opts = {
189
+ # template_file: template_file,
190
+ # dom: {
191
+ # component_name: opts[:component_name] || name
192
+ # }
193
+ # }.merge(opts)
194
+
195
+ # add_file(output_file, **opts)
196
+ # end
197
+ # def ocomponent(name, **opts); component(name, **{ open: true }.merge(opts)); end
198
+ # def tcomponent(name, **opts); component(name, **{ open_template: true }.merge(opts)); end
199
+ # def fcomponent(name, **opts); component(name, **{ on_exist: :write }.merge(opts)); end
200
+
201
+ # def sample_component(name, **opts)
202
+ # component(name, template_subfolder: 'samples', **opts)
203
+ # end
204
+
205
+ # def osample_component(name, **opts); sample_component(name, **{ open: true }.merge(opts)); end
206
+ # def tsample_component(name, **opts); sample_component(name, **{ open_template: true }.merge(opts)); end
207
+ # def fsample_component(name, **opts); sample_component(name, **{ on_exist: :write }.merge(opts)); end
208
+
209
+ # def tw_component(name, element, element_name, **opts)
210
+ # tw_element_file = k_builder.target_file(element.to_s, "#{element_name}.html", folder_key: :tailwind_elements)
211
+ # tw_element = File.exist?(tw_element_file) ? File.read(tw_element_file) : "element not found: #{tw_element_file}"
212
+
213
+ # options = {
214
+ # subfolder: element,
215
+ # variant: :tw_html_component,
216
+ # dom: {
217
+ # component_name: "#{opts[:component_name] || name}",
218
+ # tailwind_element: tw_element
219
+ # }
220
+ # }.merge(opts)
221
+
222
+ # component(name, **options)
223
+ # end
224
+ # end
225
+
226
+ # class Nuxt3Story < KDirector::Directors::ChildDirector
227
+ # # @param [Hash] **opts The options
228
+ # # @option opts [String] :variant Template variant name
229
+ # # @option opts [String] :template_subfolder Template subfolder
230
+ # def component_story(name, **opts)
231
+ # variant = opts[:variant] || name
232
+ # template_filename = "#{variant.to_s}.stories.js"
233
+ # template_file = resolve_template_file("nuxt3/stories", template_filename, **opts)
234
+ # output_filename = "#{camel.parse(name.to_s)}.stories.js"
235
+ # output_file = File.join('stories', output_filename)
236
+
237
+ # opts = {
238
+ # template_file: template_file,
239
+ # }.merge(opts)
240
+
241
+ # add_file(output_file, **opts)
242
+ # end
243
+
244
+ # def ocomponent_story(name, **opts); component_story(name, **{ open: true }.merge(opts)); end
245
+ # def tcomponent_story(name, **opts); component_story(name, **{ open_template: true }.merge(opts)); end
246
+ # def fcomponent_story(name, **opts); component_story(name, **{ on_exist: :write }.merge(opts)); end
247
+
248
+ # def sample_component_story(name, **opts)
249
+ # component_story(name, template_subfolder: 'samples', **opts)
250
+ # end
251
+
252
+ # def osample_component_story(name, **opts); component_story(name, **{ open: true }.merge(opts)); end
253
+ # def tsample_component_story(name, **opts); component_story(name, **{ open_template: true }.merge(opts)); end
254
+ # def fsample_component_story(name, **opts); component_story(name, **{ on_exist: :write }.merge(opts)); end
255
+ # end
256
+
257
+ # class Nuxt3Api < KDirector::Directors::ChildDirector
258
+ # # @param [Hash] **opts The options
259
+ # # @option opts [String] :variant Template variant name
260
+ # # @option opts [String] :template_subfolder Template subfolder
261
+ # def api(name, **opts)
262
+ # variant = opts[:variant] || name
263
+ # template_filename = "#{dasherize.parse(variant.to_s)}.ts"
264
+ # template_file = resolve_template_file("nuxt3/server/api", template_filename, **opts)
265
+ # output_filename = "#{dasherize.parse(name.to_s)}.ts"
266
+ # output_file = File.join('server/api', output_filename)
267
+
268
+ # opts = {
269
+ # template_file: template_file,
270
+ # }.merge(opts)
271
+
272
+ # add_file(output_file, **opts)
273
+ # end
274
+
275
+ # def oapi(name, **opts); api(name, **{ open: true }.merge(opts)); end
276
+ # def tapi(name, **opts); api(name, **{ open_template: true }.merge(opts)); end
277
+ # def fapi(name, **opts); api(name, **{ on_exist: :write }.merge(opts)); end
278
+
279
+ # def sample_api(name, **opts)
280
+ # api(name, template_subfolder: 'samples', **opts)
281
+ # end
282
+
283
+ # def osample_api(name, **opts); sample_api(name, **{ open: true }.merge(opts)); end
284
+ # def tsample_api(name, **opts); sample_api(name, **{ open_template: true }.merge(opts)); end
285
+ # def fsample_api(name, **opts); sample_api(name, **{ on_exist: :write }.merge(opts)); end
286
+ # end
287
+ end
288
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDirector
4
- VERSION = '0.7.0'
4
+ VERSION = '0.7.1'
5
5
  end
data/lib/k_director.rb CHANGED
@@ -12,6 +12,7 @@ require_relative 'k_director/directors/child_director'
12
12
  require_relative 'k_director/directors/data'
13
13
  require_relative 'k_director/dsls/children/blueprint'
14
14
  require_relative 'k_director/dsls/children/github'
15
+ require_relative 'k_director/dsls/nuxt3_dsl'
15
16
 
16
17
  module KDirector
17
18
  # raise KDirector::Error, 'Sample message'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "k_director",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_director",
9
- "version": "0.7.0",
9
+ "version": "0.7.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_director",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Command line and CI/CD tools for k_director",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_director
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -76,7 +76,6 @@ extra_rdoc_files: []
76
76
  files:
77
77
  - ".builders/_.rb"
78
78
  - ".builders/boot.rb"
79
- - ".builders/dsl/github_dsl.rb"
80
79
  - ".builders/dsl/ruby_gem_dsl.rb"
81
80
  - ".builders/generators/01-bootstrap.rb"
82
81
  - ".builders/run.rb"
@@ -104,6 +103,7 @@ files:
104
103
  - lib/k_director/directors/data.rb
105
104
  - lib/k_director/dsls/children/blueprint.rb
106
105
  - lib/k_director/dsls/children/github.rb
106
+ - lib/k_director/dsls/nuxt3_dsl.rb
107
107
  - lib/k_director/version.rb
108
108
  - package-lock.json
109
109
  - package.json
@@ -1,129 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Dsl
4
- class Github < Dsl::Directors::ChildDirector
5
- def initialize(parent, **opts)
6
- super(parent, **opts)
7
-
8
- @options.repo_name ||= parent.options.repo_name
9
- @options.repo_organization ||= parent.options.repo_organization
10
- end
11
-
12
- def repo_name
13
- @options.repo_name
14
- end
15
-
16
- def repo_organization
17
- @options.repo_organization
18
- end
19
-
20
- def list_repositories
21
- repos = api.all_repositories
22
-
23
- KExt::Github::Printer::repositories_as_table repos
24
-
25
- log.kv 'Repository count', repos.length
26
- rescue StandardError => error
27
- log.exception(error)
28
- end
29
-
30
- def open_repository(**opts)
31
- info = repo_info(**opts)
32
-
33
- system("open -a 'Google Chrome' #{info.link}")
34
- end
35
-
36
- def create_repository(**opts)
37
- info = repo_info(**opts)
38
-
39
- repo = api.all_repositories.find { |r| r.full_name == info.full_name }
40
-
41
- if repo.nil?
42
- log.heading 'Repository create'
43
- log.kv 'Repository Name', info.name
44
- log.kv 'Repository Full Name', info.full_name
45
- log.kv 'Organization Name', info.organization if info.organization
46
- success = api.create_repository(info.name, organization: info.organization)
47
- log.info "Repository: #{info.full_name} created" if success
48
- log.error "Repository: #{info.full_name} was not created" unless success
49
-
50
- system("open -a 'Google Chrome' #{info.link}") if opts[:open]
51
- else
52
- log.warn 'Repository already exists, nothing to create'
53
- end
54
-
55
- log_repo_info(info)
56
- rescue StandardError => error
57
- log.exception(error)
58
- end
59
-
60
- def delete_repository(**opts)
61
- info = repo_info(**opts)
62
-
63
- repo = api.all_repositories.find { |r| r.full_name == info.full_name }
64
-
65
- if repo.present?
66
- log.heading 'Repository delete'
67
- log.kv 'Repository Name', info.name
68
- log.kv 'Repository Full Name', info.full_name
69
- log.kv 'Organization Name', info.organization if info.organization
70
- success = delete_api.delete_repository(info.full_name, organization: info.organization)
71
- log.info "Repository: #{info.full_name} deleted" if success
72
- log.error "Repository: #{info.full_name} was not deleted" unless success
73
- # system("open -a 'Google Chrome' #{info.link}") if opts[:open]
74
- else
75
- log.warn 'Repository does not exist, nothing to delete'
76
- end
77
-
78
- log_repo_info(info)
79
- rescue StandardError => error
80
- log.exception(error)
81
- end
82
-
83
- def repo_info(**opts)
84
- name = opts[:name] || self.repo_name
85
- name = name.to_s
86
- username = opts[:username] || self.username
87
- organization = opts[:organization] || self.repo_organization
88
- account = organization || username
89
- full_name = [account, name].compact.join("/")
90
- link = "https://github.com/#{full_name}"
91
- ssh_link = "git@github.com:#{full_name}.git"
92
-
93
- OpenStruct.new(
94
- name: name,
95
- full_name: full_name,
96
- link: link,
97
- ssh_link: ssh_link,
98
- username: username,
99
- organization: organization
100
- )
101
- end
102
-
103
- private
104
-
105
-
106
- def username
107
- KExt::Github.configuration.user
108
- end
109
-
110
- def api
111
- token = KExt::Github.configuration.personal_access_token
112
- KExt::Github::Api.instance(token)
113
- end
114
-
115
- def delete_api
116
- token = KExt::Github.configuration.personal_access_token_delete
117
- KExt::Github::Api.instance(token)
118
- end
119
-
120
- def log_repo_info(info)
121
- log.kv 'SSH', info.ssh_link
122
- log.kv 'HTTPS', info.git_link
123
- log.kv 'GITHUB', KUtil.console.hyperlink(info.link, info.link)
124
-
125
- # log.json repo.to_h
126
- end
127
-
128
- end
129
- end