k_director 0.12.0 → 0.14.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: 61ab15797b459bd3b8a2938801a016638c268ef5339cd5df1a5a4a7985c255cd
4
- data.tar.gz: d8670419a2617533e13c8ad2eef7e1f74b412ee780c119550f670d850b6f9897
3
+ metadata.gz: 54958cfb760bc051a50fd025ddecf686f591977d69e3799d4f9f2d389982b48f
4
+ data.tar.gz: 384246ae71efb39e95b55f9f40724c53610daa77ad681ea60534500a43038a20
5
5
  SHA512:
6
- metadata.gz: 67eabf548f77d0d21d444b8186304054fe097195ce78a7f5d8e0ccc072dd04b16a05d59a43956d287c2045e3fe2aeb8a9ba778442c2620dd1ff9668b503968a0
7
- data.tar.gz: c29f1c1d1440a5de7d3081cefd7463efcd4d6d8d95020d72a3efab8f71c25c5ee7ba0fceb0b9e76d2a5eb372a0459080299d9952a82cb19ea3ed3cca2ad26202
6
+ metadata.gz: ee1fe32bebf5f70c3a68315a8f1e430c4b032628e5c16ef5fa98f76553a65d6fa59c15e8d8c778ffc2cc839a9667e96a264ca67101b1a898fd8c11d8db02d5b4
7
+ data.tar.gz: 9328fe80f0e363c8f787fe242b4c8112b288d45d31ea1b374c8e63b0a137998d45545a6ff3d9080b2c403bedab0efc8e52295e16920bfce15e0b9b6905d444ef
data/.builders/boot.rb CHANGED
@@ -68,4 +68,4 @@ resource_manager
68
68
  .glob('generators/**/*.rb')
69
69
  resource_manager.add_resources
70
70
 
71
- KManager.fire_actions(:load_content, :register_document, :load_document)
71
+ KManager.boot
data/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ # [0.13.0](https://github.com/klueless-io/k_director/compare/v0.12.1...v0.13.0) (2022-02-11)
2
+
3
+
4
+ ### Features
5
+
6
+ * dom builder set method now uses value: and will support hashes as a value ([24145a1](https://github.com/klueless-io/k_director/commit/24145a15d03b9670a605846b5c1dcb4635bb374d))
7
+
8
+ ## [0.12.1](https://github.com/klueless-io/k_director/compare/v0.12.0...v0.12.1) (2022-02-11)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * builder can be configured via #default_builder_type ([f82c46f](https://github.com/klueless-io/k_director/commit/f82c46f10aea06b154d5ac957e71cce1216cae4a))
14
+
15
+ # [0.12.0](https://github.com/klueless-io/k_director/compare/v0.11.3...v0.12.0) (2022-02-11)
16
+
17
+
18
+ ### Features
19
+
20
+ * split dom_builder out from actions_builder ([f728e0e](https://github.com/klueless-io/k_director/commit/f728e0e04ef668928ed78ed6e008c3996a2023e8))
21
+
1
22
  ## [0.11.3](https://github.com/klueless-io/k_director/compare/v0.11.2...v0.11.3) (2022-02-08)
2
23
 
3
24
 
data/k_director.gemspec CHANGED
@@ -47,4 +47,5 @@ Gem::Specification.new do |spec|
47
47
  spec.add_dependency 'k_builder', '~> 0.0.0'
48
48
  spec.add_dependency 'k_ext-github', '~> 0.0.0'
49
49
  spec.add_dependency 'k_util', '~> 0.0.0'
50
+ spec.add_dependency 'nokogiri', '~> 1.13'
50
51
  end
@@ -17,18 +17,18 @@ module KDirector
17
17
  # Set many key/value pairs gainst a group
18
18
  #
19
19
  # example:
20
- # set_many(:github, repo_name: 'repo-name', organization: 'org-name')
20
+ # group_set(:github, repo_name: 'repo-name', organization: 'org-name')
21
21
  def group_set(group = nil, **opts)
22
22
  return if group.nil? && opts.empty?
23
23
 
24
24
  if group.nil?
25
25
  opts.each do |key, value|
26
- set(key, value)
26
+ set(key, value: value)
27
27
  end
28
28
  else
29
29
  dom[group] = {} if opts.empty? # initialize the group name if no options are provided
30
30
  opts.each do |key, value|
31
- set(group, key, value)
31
+ set(group, key, value: value)
32
32
  end
33
33
  end
34
34
  end
@@ -39,36 +39,39 @@ module KDirector
39
39
  # - initialize key/array pairs
40
40
  #
41
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)
42
+ # set(:a, value: 1)
43
+ # set(:a, value: [])
44
+ # set(:a, value: [1, 2, 3])
45
+ # set(:a, value: { a: 1, b: 2 })
46
+ # set(:a, value: some_value, default_value: 'use if not supplied')
47
+ # set(:a, value: :b, 'nested value')
48
+ # set(:a, value: :b, :c, 'deeply nested value')
49
+ # set(:a, value: :b, :c, :d, :e, :f, 'depth is no barrier')
50
+ def set(*keys, value: nil, default_value: nil)
51
+ size = keys.size
52
+
53
+ raise ArgumentError, 'set requires 1 or more keys' if size < 1
54
+
55
+ target = initialize_hierarchy(keys)
56
+
57
+ set_kv(target, keys[size - 1], value, default_value: default_value)
57
58
  end
58
59
 
59
60
  # 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
61
+ # add(:a, 1)
62
+ # add(:a, 2)
63
+ # add(:a, 3)
64
+ # add(:a, {key: 1})
65
+ # add(:a, {key: 2})
66
+ # add(:a, {key: 3})
67
+ def add(*keys, value: nil, default_value: nil)
68
+ size = keys.size
66
69
 
67
- raise ArgumentError, 'add requires 2 or more arguments' if size < 2
70
+ raise ArgumentError, 'add requires 1 or more keys' if size < 1
68
71
 
69
- target = initialize_hierarchy(keyset_value)
72
+ target = initialize_hierarchy(keys)
70
73
 
71
- add_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
74
+ add_kv(target, keys[size - 1], value, default_value: default_value)
72
75
  end
73
76
 
74
77
  def debug
@@ -85,12 +88,12 @@ module KDirector
85
88
 
86
89
  private
87
90
 
88
- def initialize_hierarchy(keys_value)
91
+ def initialize_hierarchy(keys)
89
92
  target = @dom
90
93
 
91
- return target unless keys_value.size > 2
94
+ return target unless keys.size > 1
92
95
 
93
- keys_value.slice(0..-3).each_with_index do |key, _index|
96
+ keys.slice(0..-2).each_with_index do |key, _index|
94
97
  target[key] = {} unless target.key?(key)
95
98
  target = target[key]
96
99
  end
@@ -10,13 +10,23 @@ module KDirector
10
10
  class << self
11
11
  def init(k_builder, builder = nil, **opts)
12
12
  if builder.nil?
13
- builder = KDirector::Builders::ActionsBuilder.new
13
+ builder = builder_type.new
14
14
  else
15
15
  builder.reset
16
16
  end
17
17
 
18
18
  new(k_builder, builder, **opts)
19
19
  end
20
+
21
+ def builder_type
22
+ return @builder_type if defined? @builder_type
23
+
24
+ @builder_type = KDirector::Builders::ActionsBuilder
25
+ end
26
+
27
+ def default_builder_type(type)
28
+ @builder_type = type
29
+ end
20
30
  end
21
31
 
22
32
  attr_reader :builder
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDirector
4
- VERSION = '0.12.0'
4
+ VERSION = '0.14.0'
5
5
  end
data/lib/k_director.rb CHANGED
@@ -5,6 +5,7 @@ require 'k_log'
5
5
  require 'k_util'
6
6
  require 'k_builder'
7
7
  require 'k_ext/github'
8
+ require 'nokogiri'
8
9
 
9
10
  require_relative 'k_director/version'
10
11
  require_relative 'k_director/builders/dom_builder'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "k_director",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_director",
9
- "version": "0.12.0",
9
+ "version": "0.14.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.12.0",
3
+ "version": "0.14.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.12.0
4
+ version: 0.14.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-11 00:00:00.000000000 Z
11
+ date: 2022-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.13'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.13'
83
97
  description: " KDirector provides domain specific language implementations for
84
98
  code generation\n"
85
99
  email:
@@ -90,7 +104,6 @@ extra_rdoc_files: []
90
104
  files:
91
105
  - ".builders/_.rb"
92
106
  - ".builders/boot.rb"
93
- - ".builders/dsl/ruby_gem_dsl.rb"
94
107
  - ".builders/generators/01-bootstrap.rb"
95
108
  - ".builders/run.rb"
96
109
  - ".githooks/commit-msg"
@@ -1,77 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Dsl
4
- class RubyGemDsl < Dsl::Directors::BaseDirector
5
- def default_director_name
6
- 'Ruby Gem'
7
- end
8
-
9
- def repo_name
10
- options.repo_name
11
- end
12
-
13
- def repo_account
14
- options.repo_account
15
- end
16
-
17
- # def default_template_base_folder
18
- # end
19
- # def initialize(k_builder, builder, **opts)
20
- # super(k_builder, builder, **opts)
21
- # # @on_action = opts[:on_action] || :queue # %i[queue execute]
22
- # end
23
- def github(**opts, &block)
24
- github = Dsl::Github.new(self, **opts)
25
- github.instance_eval(&block)
26
-
27
- self
28
- end
29
-
30
- def blueprint(**opts, &block)
31
- blueprint = Dsl::RubyGemBlueprint.new(self, **opts)
32
- blueprint.instance_eval(&block)
33
-
34
- self
35
- end
36
- end
37
-
38
- class RubyGemBlueprint < Dsl::Directors::ChildDirector
39
- def template_content(template_filename)
40
- template_parts = [template_base_folder, template_filename]
41
- template_file = File.join(*template_parts)
42
-
43
- file = k_builder.find_template_file(template_file)
44
- File.read(file)
45
- end
46
-
47
- def run_template_script(template_filename, **opts)
48
- template_parts = [template_base_folder, template_filename]
49
- template_file = File.join(*template_parts)
50
-
51
- script = k_builder.process_any_content(template_file: template_file, **opts)
52
-
53
- run_script(script)
54
- # action = k_builder.run_script_action(script)
55
- # run_action(action)
56
- end
57
-
58
- # Create a single file
59
- #
60
- # @param [String] output_filename The output file name, this can be a relative path
61
- # @param [Hash] **opts The options
62
- # @option opts [String] :template_filename Template filename can be set or it will default to the same value as the output file name
63
- # @option opts [String] :template_subfolder Template subfolder
64
- def add(output_file, **opts)
65
- template_file = opts[:template_file] || output_file
66
- template_parts = [template_base_folder, opts[:template_subfolder], opts[:template_variant], template_file].reject(&:blank?)
67
-
68
- opts[:template_file] = File.join(*template_parts)
69
-
70
- add_file(output_file, **opts)
71
- end
72
-
73
- def oadd(name, **opts); add(name, **{ open: true }.merge(opts)); end
74
- def tadd(name, **opts); add(name, **{ open_template: true }.merge(opts)); end
75
- def fadd(name, **opts); add(name, **{ on_exist: :write }.merge(opts)); end
76
- end
77
- end