k_director 0.11.0 → 0.12.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: 0e855ea56fe8350c6d8f348caafec612a3faa998f6f39f0bfd631c0968b5476f
4
- data.tar.gz: 3a8ef5a51b2f968d17e688953cf6868a5a387bbe7579a19896fd0c21d4c01b36
3
+ metadata.gz: 61ab15797b459bd3b8a2938801a016638c268ef5339cd5df1a5a4a7985c255cd
4
+ data.tar.gz: d8670419a2617533e13c8ad2eef7e1f74b412ee780c119550f670d850b6f9897
5
5
  SHA512:
6
- metadata.gz: bf168f42f0a1e1df0bc0e169b824601579c793623458b5d13fbd8b3cf933d2fbe8abacf4e52f76c3c4795585cb32b276a5bae3505fa74d2cc63cb3d839a27341
7
- data.tar.gz: c3d3d4fd6fc847d62d23e32c15db3874badce4c8743d28c40111d725eb7a3e5f4d39fdb3442b42c213ae524c262d128ea9de4062e985a044ce4e8c85bba2bae5
6
+ metadata.gz: 67eabf548f77d0d21d444b8186304054fe097195ce78a7f5d8e0ccc072dd04b16a05d59a43956d287c2045e3fe2aeb8a9ba778442c2620dd1ff9668b503968a0
7
+ data.tar.gz: c29f1c1d1440a5de7d3081cefd7463efcd4d6d8d95020d72a3efab8f71c25c5ee7ba0fceb0b9e76d2a5eb372a0459080299d9952a82cb19ea3ed3cca2ad26202
data/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ ## [0.11.3](https://github.com/klueless-io/k_director/compare/v0.11.2...v0.11.3) (2022-02-08)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add simple dsl ([0fd61ab](https://github.com/klueless-io/k_director/commit/0fd61abbe90a136c96b750fcf7456bc46aa73463))
7
+
8
+ ## [0.11.2](https://github.com/klueless-io/k_director/compare/v0.11.1...v0.11.2) (2022-02-08)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add typed_dom to base_director ([22ee75d](https://github.com/klueless-io/k_director/commit/22ee75da20cd00fe1f48f7027775b59dcf1c17a5))
14
+ * move add, oadd, tadd, fadd from blueprint_director to base_director ([82f6aa0](https://github.com/klueless-io/k_director/commit/82f6aa02311ec04b9cb716846630274700deefb5))
15
+
16
+ ## [0.11.1](https://github.com/klueless-io/k_director/compare/v0.11.0...v0.11.1) (2022-02-07)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * move add, oadd, tadd, fadd from blueprint_director to base_director ([caab926](https://github.com/klueless-io/k_director/commit/caab92618406a072c3e326a3a640f7c6a4b71f03))
22
+
23
+ # [0.11.0](https://github.com/klueless-io/k_director/compare/v0.10.4...v0.11.0) (2022-02-07)
24
+
25
+
26
+ ### Features
27
+
28
+ * move github, blueprint and package_json fluent accessors onto BaseDirector ([88fa3fd](https://github.com/klueless-io/k_director/commit/88fa3fd0df530bef3731f0b4a62369d925df2fa5))
29
+
1
30
  ## [0.10.4](https://github.com/klueless-io/k_director/compare/v0.10.3...v0.10.4) (2022-02-07)
2
31
 
3
32
 
@@ -3,18 +3,13 @@
3
3
  module KDirector
4
4
  module Builders
5
5
  # Actions document builder
6
- class ActionsBuilder
6
+ class ActionsBuilder < KDirector::Builders::DomBuilder
7
7
  attr_reader :actions
8
- attr_reader :dom
9
8
  attr_reader :last_action
10
9
 
11
- def initialize
12
- reset
13
- end
14
-
15
10
  def reset
11
+ super
16
12
  @actions = []
17
- @dom = {}
18
13
  @last_action = {}
19
14
  end
20
15
 
@@ -23,100 +18,12 @@ module KDirector
23
18
  @last_action = action
24
19
  end
25
20
 
26
- # Set many key/value pairs gainst a group
27
- #
28
- # example:
29
- # set_many(:github, repo_name: 'repo-name', organization: 'org-name')
30
- def group_set(group = nil, **opts)
31
- return if group.nil? && opts.empty?
32
-
33
- if group.nil?
34
- opts.each do |key, value|
35
- set(key, value)
36
- end
37
- else
38
- dom[group] = {} if opts.empty? # initialize the group name if no options are provided
39
- opts.each do |key, value|
40
- set(group, key, value)
41
- end
42
- end
43
- end
44
-
45
- # set key_set/value pair, can be used for
46
- #
47
- # - simple key/value pairs
48
- # - initialize key/array pairs
49
- #
50
- # example:
51
- # set(:a, 1)
52
- # set(:a, [])
53
- # set(:a, [1, 2, 3])
54
- # set(:a, some_value, default_value: 'use if not supplied')
55
- # set(:a, :b, 'nested value')
56
- # set(:a, :b, :c, 'deeply nested value')
57
- # set(:a, :b, :c, :d, :e, :f, 'depth is no barrier')
58
- def set(*keyset_value, default_value: nil)
59
- size = keyset_value.size
60
-
61
- raise ArgumentError, 'set requires 2 or more arguments' if size < 2
62
-
63
- target = initialize_hierarchy(keyset_value)
64
-
65
- set_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
66
- end
67
-
68
- # add value to array
69
- # set(:a, [])
70
- # add(:a, 1])
71
- # add(:a, 2])
72
- # add(:a, 3])
73
- def add(*keyset_value, default_value: nil)
74
- size = keyset_value.size
75
-
76
- raise ArgumentError, 'add requires 2 or more arguments' if size < 2
77
-
78
- target = initialize_hierarchy(keyset_value)
79
-
80
- add_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
81
- end
82
-
83
21
  def debug
84
22
  puts JSON.pretty_generate(actions)
85
- puts JSON.pretty_generate(dom)
86
- # log.structure(dom)
23
+ super
87
24
 
88
25
  self
89
26
  end
90
-
91
- def build
92
- # hook into the set, add and queue_action methods form memoization
93
- KUtil.data.to_open_struct(@dom)
94
- end
95
-
96
- private
97
-
98
- def initialize_hierarchy(keys_value)
99
- target = @dom
100
-
101
- return target unless keys_value.size > 2
102
-
103
- keys_value.slice(0..-3).each_with_index do |key, _index|
104
- target[key] = {} unless target.key?(key)
105
- target = target[key]
106
- end
107
- target
108
- end
109
-
110
- def set_kv(target, key, value, default_value: nil)
111
- set_value = value.nil? ? default_value : value
112
- target[key] = set_value
113
- end
114
-
115
- def add_kv(target, key, value, default_value: nil)
116
- add_value = value.nil? ? default_value : value
117
- target[key] = [] unless target.key?(key)
118
- target[key] << add_value
119
- end
120
27
  end
121
28
  end
122
29
  end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDirector
4
+ module Builders
5
+ # Dom builder
6
+ class DomBuilder
7
+ attr_reader :dom
8
+
9
+ def initialize
10
+ reset
11
+ end
12
+
13
+ def reset
14
+ @dom = {}
15
+ end
16
+
17
+ # Set many key/value pairs gainst a group
18
+ #
19
+ # example:
20
+ # set_many(:github, repo_name: 'repo-name', organization: 'org-name')
21
+ def group_set(group = nil, **opts)
22
+ return if group.nil? && opts.empty?
23
+
24
+ if group.nil?
25
+ opts.each do |key, value|
26
+ set(key, value)
27
+ end
28
+ else
29
+ dom[group] = {} if opts.empty? # initialize the group name if no options are provided
30
+ opts.each do |key, value|
31
+ set(group, key, value)
32
+ end
33
+ end
34
+ end
35
+
36
+ # set key_set/value pair, can be used for
37
+ #
38
+ # - simple key/value pairs
39
+ # - initialize key/array pairs
40
+ #
41
+ # example:
42
+ # set(:a, 1)
43
+ # set(:a, [])
44
+ # set(:a, [1, 2, 3])
45
+ # set(:a, some_value, default_value: 'use if not supplied')
46
+ # set(:a, :b, 'nested value')
47
+ # set(:a, :b, :c, 'deeply nested value')
48
+ # set(:a, :b, :c, :d, :e, :f, 'depth is no barrier')
49
+ def set(*keyset_value, default_value: nil)
50
+ size = keyset_value.size
51
+
52
+ raise ArgumentError, 'set requires 2 or more arguments' if size < 2
53
+
54
+ target = initialize_hierarchy(keyset_value)
55
+
56
+ set_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
57
+ end
58
+
59
+ # add value to array
60
+ # set(:a, [])
61
+ # add(:a, 1])
62
+ # add(:a, 2])
63
+ # add(:a, 3])
64
+ def add(*keyset_value, default_value: nil)
65
+ size = keyset_value.size
66
+
67
+ raise ArgumentError, 'add requires 2 or more arguments' if size < 2
68
+
69
+ target = initialize_hierarchy(keyset_value)
70
+
71
+ add_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
72
+ end
73
+
74
+ def debug
75
+ puts JSON.pretty_generate(dom)
76
+ # log.structure(dom)
77
+
78
+ self
79
+ end
80
+
81
+ def build
82
+ # hook into the set, add and queue_action methods form memoization
83
+ KUtil.data.to_open_struct(@dom)
84
+ end
85
+
86
+ private
87
+
88
+ def initialize_hierarchy(keys_value)
89
+ target = @dom
90
+
91
+ return target unless keys_value.size > 2
92
+
93
+ keys_value.slice(0..-3).each_with_index do |key, _index|
94
+ target[key] = {} unless target.key?(key)
95
+ target = target[key]
96
+ end
97
+ target
98
+ end
99
+
100
+ def set_kv(target, key, value, default_value: nil)
101
+ set_value = value.nil? ? default_value : value
102
+ target[key] = set_value
103
+ end
104
+
105
+ def add_kv(target, key, value, default_value: nil)
106
+ add_value = value.nil? ? default_value : value
107
+ target[key] = [] unless target.key?(key)
108
+ target[key] << add_value
109
+ end
110
+ end
111
+ end
112
+ end
@@ -51,6 +51,10 @@ module KDirector
51
51
  builder.dom
52
52
  end
53
53
 
54
+ def typed_dom
55
+ builder.build
56
+ end
57
+
54
58
  # Used by child directors to inherit options from parent
55
59
  def inherited_opts(**opts)
56
60
  {
@@ -89,6 +93,37 @@ module KDirector
89
93
  @options.on_action
90
94
  end
91
95
 
96
+ # Add a single file into the code base
97
+ #
98
+ # This is a wrapper around add_file that will add the file to the codebase using template path rules
99
+ #
100
+ # @param [String] output_filename The output file name, this can be a relative path
101
+ # @param [Hash] **opts The options
102
+ # @option opts [String] :template_filename Template filename can be set or it will default to the same value as the output file name
103
+ # @option opts [String] :template_subfolder Template subfolder
104
+ def add(output_file, **opts)
105
+ template_file = opts[:template_file] || output_file
106
+ template_parts = [template_base_folder, opts[:template_subfolder], template_file].reject(&:blank?)
107
+ template_path = File.join(*template_parts)
108
+
109
+ # maybe template_file should be renamed to template_path in k_builder
110
+ opts[:template_file] = template_path
111
+
112
+ add_file(output_file, **opts)
113
+ end
114
+
115
+ def oadd(name, **opts)
116
+ add(name, **{ open: true }.merge(opts))
117
+ end
118
+
119
+ def tadd(name, **opts)
120
+ add(name, **{ open_template: true }.merge(opts))
121
+ end
122
+
123
+ def fadd(name, **opts)
124
+ add(name, **{ on_exist: :write }.merge(opts))
125
+ end
126
+
92
127
  # Add a file to target folder
93
128
  def add_file(file, **opts)
94
129
  opts = {
@@ -7,35 +7,6 @@ module KDirector
7
7
  #
8
8
  # A blueprint is a recipe that you can follow to build out assets on the target application
9
9
  class Blueprint < KDirector::Directors::ChildDirector
10
- # Add a single file into the code base
11
- #
12
- # @param [String] output_filename The output file name, this can be a relative path
13
- # @param [Hash] **opts The options
14
- # @option opts [String] :template_filename Template filename can be set or it will default to the same value as the output file name
15
- # @option opts [String] :template_subfolder Template subfolder
16
- def add(output_file, **opts)
17
- template_file = opts[:template_file] || output_file
18
- template_parts = [template_base_folder, opts[:template_subfolder], template_file].reject(&:blank?)
19
- template_path = File.join(*template_parts)
20
-
21
- # maybe template_file should be renamed to template_path in k_builder
22
- opts[:template_file] = template_path
23
-
24
- add_file(output_file, **opts)
25
- end
26
-
27
- def oadd(name, **opts)
28
- add(name, **{ open: true }.merge(opts))
29
- end
30
-
31
- def tadd(name, **opts)
32
- add(name, **{ open_template: true }.merge(opts))
33
- end
34
-
35
- def fadd(name, **opts)
36
- add(name, **{ on_exist: :write }.merge(opts))
37
- end
38
-
39
10
  # def template_content(template_file, **opts)
40
11
  # template_parts = [template_base_folder, opts[:template_subfolder], template_file].reject(&:blank?)
41
12
  # template_file = File.join(*template_parts)
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDirector
4
+ module Dsls
5
+ # BasicDsl is a DSL for generating basic projects.
6
+ class BasicDsl < KDirector::Directors::BaseDirector
7
+ def default_template_base_folder
8
+ 'basic'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDirector
4
- VERSION = '0.11.0'
4
+ VERSION = '0.12.0'
5
5
  end
data/lib/k_director.rb CHANGED
@@ -7,6 +7,7 @@ require 'k_builder'
7
7
  require 'k_ext/github'
8
8
 
9
9
  require_relative 'k_director/version'
10
+ require_relative 'k_director/builders/dom_builder'
10
11
  require_relative 'k_director/builders/actions_builder'
11
12
  require_relative 'k_director/directors/base_director'
12
13
  require_relative 'k_director/directors/child_director'
@@ -17,6 +18,7 @@ require_relative 'k_director/dsls/children/package_json_configuration'
17
18
  require_relative 'k_director/dsls/children/package_json'
18
19
  require_relative 'k_director/dsls/nuxt3_dsl'
19
20
  require_relative 'k_director/dsls/ruby_gem_dsl'
21
+ require_relative 'k_director/dsls/simple_dsl'
20
22
 
21
23
  module KDirector
22
24
  # raise KDirector::Error, 'Sample message'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "k_director",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_director",
9
- "version": "0.11.0",
9
+ "version": "0.12.0",
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.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Command line and CI/CD tools for k_director",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_director
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-07 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -113,6 +113,7 @@ files:
113
113
  - k_director.gemspec
114
114
  - lib/k_director.rb
115
115
  - lib/k_director/builders/actions_builder.rb
116
+ - lib/k_director/builders/dom_builder.rb
116
117
  - lib/k_director/directors/base_director.rb
117
118
  - lib/k_director/directors/child_director.rb
118
119
  - lib/k_director/directors/data.rb
@@ -122,6 +123,7 @@ files:
122
123
  - lib/k_director/dsls/children/package_json_configuration.rb
123
124
  - lib/k_director/dsls/nuxt3_dsl.rb
124
125
  - lib/k_director/dsls/ruby_gem_dsl.rb
126
+ - lib/k_director/dsls/simple_dsl.rb
125
127
  - lib/k_director/version.rb
126
128
  - package-lock.json
127
129
  - package.json