k_director 0.12.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
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