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 +4 -4
- data/docs/CHANGELOG.md +29 -0
- data/lib/k_director/builders/actions_builder.rb +3 -96
- data/lib/k_director/builders/dom_builder.rb +112 -0
- data/lib/k_director/directors/base_director.rb +35 -0
- data/lib/k_director/dsls/children/blueprint.rb +0 -29
- data/lib/k_director/dsls/simple_dsl.rb +12 -0
- data/lib/k_director/version.rb +1 -1
- data/lib/k_director.rb +2 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 61ab15797b459bd3b8a2938801a016638c268ef5339cd5df1a5a4a7985c255cd
|
|
4
|
+
data.tar.gz: d8670419a2617533e13c8ad2eef7e1f74b412ee780c119550f670d850b6f9897
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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)
|
data/lib/k_director/version.rb
CHANGED
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.
|
|
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.
|
|
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
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.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-
|
|
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
|