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 +4 -4
- data/.builders/boot.rb +1 -1
- data/docs/CHANGELOG.md +21 -0
- data/k_director.gemspec +1 -0
- data/lib/k_director/builders/dom_builder.rb +33 -30
- data/lib/k_director/directors/base_director.rb +11 -1
- data/lib/k_director/version.rb +1 -1
- data/lib/k_director.rb +1 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +16 -3
- data/.builders/dsl/ruby_gem_dsl.rb +0 -77
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54958cfb760bc051a50fd025ddecf686f591977d69e3799d4f9f2d389982b48f
|
4
|
+
data.tar.gz: 384246ae71efb39e95b55f9f40724c53610daa77ad681ea60534500a43038a20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee1fe32bebf5f70c3a68315a8f1e430c4b032628e5c16ef5fa98f76553a65d6fa59c15e8d8c778ffc2cc839a9667e96a264ca67101b1a898fd8c11d8db02d5b4
|
7
|
+
data.tar.gz: 9328fe80f0e363c8f787fe242b4c8112b288d45d31ea1b374c8e63b0a137998d45545a6ff3d9080b2c403bedab0efc8e52295e16920bfce15e0b9b6905d444ef
|
data/.builders/boot.rb
CHANGED
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
@@ -17,18 +17,18 @@ module KDirector
|
|
17
17
|
# Set many key/value pairs gainst a group
|
18
18
|
#
|
19
19
|
# example:
|
20
|
-
#
|
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,
|
46
|
-
# set(:a, :
|
47
|
-
# set(:a, :
|
48
|
-
# set(:a, :b, :c,
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
-
#
|
61
|
-
# add(:a,
|
62
|
-
# add(:a,
|
63
|
-
# add(:a,
|
64
|
-
|
65
|
-
|
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
|
70
|
+
raise ArgumentError, 'add requires 1 or more keys' if size < 1
|
68
71
|
|
69
|
-
target = initialize_hierarchy(
|
72
|
+
target = initialize_hierarchy(keys)
|
70
73
|
|
71
|
-
add_kv(target,
|
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(
|
91
|
+
def initialize_hierarchy(keys)
|
89
92
|
target = @dom
|
90
93
|
|
91
|
-
return target unless
|
94
|
+
return target unless keys.size > 1
|
92
95
|
|
93
|
-
|
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 =
|
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
|
data/lib/k_director/version.rb
CHANGED
data/lib/k_director.rb
CHANGED
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "k_director",
|
3
|
-
"version": "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.
|
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
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.
|
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
|
+
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
|