k_director 0.4.0 → 0.4.1
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/_.rb +0 -1
- data/.builders/generators/01-bootstrap.rb +6 -1
- data/docs/CHANGELOG.md +12 -0
- data/lib/k_director/builders/actions_builder.rb +80 -10
- data/lib/k_director/directors/base_director.rb +12 -3
- data/lib/k_director/version.rb +1 -1
- data/lib/k_director.rb +0 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +2 -7
- data/.builders/dsl/builders/actions_builder.rb +0 -27
- data/.builders/dsl/builders/dom_builder.rb +0 -40
- data/.builders/dsl/directors/base_director.rb +0 -131
- data/.builders/dsl/directors/child_director.rb +0 -27
- data/lib/k_director/builders/dom_builder.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0036ab3aba8fde78577b1c3e02d9adb122d14631c309eb6cd8e849d43777928c
|
4
|
+
data.tar.gz: 7566359e95804068637fd4e52da588a8445d978d0986cbbc2cc6b84063728a30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 004ca6fe76f586ef5eb163797dfca591098bd4d3454c0a80366bf9f43f1f4be2a1fd78f94ba522a6d227e9c1b4f6ece76e3e5877989757579d6c44cb9c37a674
|
7
|
+
data.tar.gz: 9d94e04bfe8b244ff8940700b6c3ce49a100eac27e28f29e14b3f7d27f995ece20178fa9f8380408ef7b03588f472135c6370b1916bdd26bdbc20814d34e8a99
|
data/.builders/_.rb
CHANGED
@@ -6,7 +6,9 @@ KManager.action :bootstrap do
|
|
6
6
|
.init(k_builder,
|
7
7
|
template_base_folder: 'ruby/gem',
|
8
8
|
on_exist: :skip, # %i[skip write compare]
|
9
|
-
on_action: :queue
|
9
|
+
on_action: :queue # %i[queue execute]
|
10
|
+
)
|
11
|
+
.dom(:settings,
|
10
12
|
ruby_version: '2.7',
|
11
13
|
repo_name: application_name,
|
12
14
|
application: application_name,
|
@@ -25,6 +27,9 @@ KManager.action :bootstrap do
|
|
25
27
|
.github do
|
26
28
|
parent.options.repo_info = repo_info
|
27
29
|
|
30
|
+
self.repo
|
31
|
+
self.name
|
32
|
+
|
28
33
|
# create_repository # (:k_director)
|
29
34
|
# delete_repository # (:k_director)
|
30
35
|
# list_repositories
|
data/docs/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# [0.4.0](https://github.com/klueless-io/k_director/compare/v0.3.0...v0.4.0) (2022-01-29)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* run rubocop ([e8805aa](https://github.com/klueless-io/k_director/commit/e8805aaddfde04ba1def563d3f7e5e311fa2841a))
|
7
|
+
|
8
|
+
|
9
|
+
### Features
|
10
|
+
|
11
|
+
* add GitHub DSL ([e8de7d5](https://github.com/klueless-io/k_director/commit/e8de7d599af16be9dced907617d534f029e1e1ad))
|
12
|
+
|
1
13
|
# [0.3.0](https://github.com/klueless-io/k_director/compare/v0.2.0...v0.3.0) (2022-01-29)
|
2
14
|
|
3
15
|
|
@@ -2,26 +2,96 @@
|
|
2
2
|
|
3
3
|
module KDirector
|
4
4
|
module Builders
|
5
|
-
#
|
6
|
-
class ActionsBuilder
|
5
|
+
# Actions document builder
|
6
|
+
class ActionsBuilder
|
7
|
+
attr_reader :actions
|
8
|
+
attr_reader :dom
|
9
|
+
attr_reader :last_action
|
10
|
+
|
7
11
|
def initialize
|
8
|
-
|
12
|
+
reset
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset
|
16
|
+
@actions = []
|
17
|
+
@dom = {}
|
18
|
+
@last_action = {}
|
9
19
|
end
|
10
20
|
|
11
21
|
def queue_action(action)
|
12
|
-
|
22
|
+
@actions << action
|
23
|
+
@last_action = action
|
24
|
+
end
|
25
|
+
|
26
|
+
# set key_set/value pair, can be used for
|
27
|
+
#
|
28
|
+
# - simple key/value pairs
|
29
|
+
# - initialize key/array pairs
|
30
|
+
#
|
31
|
+
# example:
|
32
|
+
# set(:a, 1)
|
33
|
+
# set(:a, [])
|
34
|
+
# set(:a, [1, 2, 3])
|
35
|
+
# set(:a, some_value, default_value: 'use if not supplied')
|
36
|
+
# set(:a, :b, 'nested value')
|
37
|
+
# set(:a, :b, :c, 'deeply nested value')
|
38
|
+
# set(:a, :b, :c, :d, :e, :f, 'depth is no barrier')
|
39
|
+
def set(*keyset_value, default_value: nil)
|
40
|
+
size = keyset_value.size
|
41
|
+
|
42
|
+
raise ArgumentError, 'set requires 2 or more arguments' if size < 2
|
43
|
+
|
44
|
+
target = initialize_hierarchy(keyset_value)
|
45
|
+
|
46
|
+
set_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
|
47
|
+
end
|
48
|
+
|
49
|
+
# add value to array
|
50
|
+
def add(*keyset_value, default_value: nil)
|
51
|
+
size = keyset_value.size
|
52
|
+
|
53
|
+
raise ArgumentError, 'add requires 2 or more arguments' if size < 2
|
54
|
+
|
55
|
+
target = initialize_hierarchy(keyset_value)
|
56
|
+
|
57
|
+
add_kv(target, keyset_value[size - 2], keyset_value[size - 1], default_value: default_value)
|
58
|
+
end
|
59
|
+
|
60
|
+
def debug
|
61
|
+
puts JSON.pretty_generate(dom)
|
62
|
+
# log.structure(dom)
|
63
|
+
|
64
|
+
self
|
13
65
|
end
|
14
66
|
|
15
|
-
def
|
16
|
-
|
67
|
+
def build
|
68
|
+
# hook into the set, add and queue_action methods form memoization
|
69
|
+
KUtil.data.to_open_struct(@dom)
|
17
70
|
end
|
18
71
|
|
19
72
|
private
|
20
73
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
74
|
+
def initialize_hierarchy(keys_value)
|
75
|
+
target = @dom
|
76
|
+
|
77
|
+
return target unless keys_value.size > 2
|
78
|
+
|
79
|
+
keys_value.slice(0..-3).each_with_index do |key, _index|
|
80
|
+
target[key] = {} unless target.key?(key)
|
81
|
+
target = target[key]
|
82
|
+
end
|
83
|
+
target
|
84
|
+
end
|
85
|
+
|
86
|
+
def set_kv(target, key, value, default_value: nil)
|
87
|
+
set_value = value.nil? ? default_value : value
|
88
|
+
target[key] = set_value
|
89
|
+
end
|
90
|
+
|
91
|
+
def add_kv(target, key, value, default_value: nil)
|
92
|
+
add_value = value.nil? ? default_value : value
|
93
|
+
target[key] = [] unless target.key?(key)
|
94
|
+
target[key] << add_value
|
25
95
|
end
|
26
96
|
end
|
27
97
|
end
|
@@ -22,9 +22,9 @@ module KDirector
|
|
22
22
|
attr_reader :builder
|
23
23
|
attr_reader :k_builder
|
24
24
|
attr_reader :options
|
25
|
-
attr_accessor :dom
|
26
25
|
|
27
26
|
def initialize(k_builder, builder, **opts)
|
27
|
+
@index = 1
|
28
28
|
@k_builder = k_builder
|
29
29
|
@builder = builder
|
30
30
|
@options = OpenStruct.new(**opts)
|
@@ -35,6 +35,12 @@ module KDirector
|
|
35
35
|
@options.on_action ||= :queue # %i[queue execute]
|
36
36
|
end
|
37
37
|
|
38
|
+
def dom
|
39
|
+
@index += 1
|
40
|
+
puts "dom#{@index}"
|
41
|
+
builder.dom
|
42
|
+
end
|
43
|
+
|
38
44
|
# Used by child directors to inherit options from parent
|
39
45
|
def inherited_opts(**opts)
|
40
46
|
{
|
@@ -48,6 +54,10 @@ module KDirector
|
|
48
54
|
@options.director_name
|
49
55
|
end
|
50
56
|
|
57
|
+
def director_name=(name)
|
58
|
+
@options.director_name = name
|
59
|
+
end
|
60
|
+
|
51
61
|
def template_base_folder
|
52
62
|
@options.template_base_folder
|
53
63
|
end
|
@@ -66,8 +76,7 @@ module KDirector
|
|
66
76
|
on_exist: on_exist
|
67
77
|
}.merge(opts)
|
68
78
|
|
69
|
-
|
70
|
-
opts[:dom] = dom if dom
|
79
|
+
opts[:dom] = dom.except(:actions) if dom
|
71
80
|
|
72
81
|
handle_action(k_builder.add_file_action(file, **opts))
|
73
82
|
|
data/lib/k_director/version.rb
CHANGED
data/lib/k_director.rb
CHANGED
@@ -5,7 +5,6 @@ require 'k_util'
|
|
5
5
|
require 'k_builder'
|
6
6
|
|
7
7
|
require_relative 'k_director/version'
|
8
|
-
require_relative 'k_director/builders/dom_builder'
|
9
8
|
require_relative 'k_director/builders/actions_builder'
|
10
9
|
require_relative 'k_director/directors/base_director'
|
11
10
|
require_relative 'k_director/directors/child_director'
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "k_director",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.1",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "k_director",
|
9
|
-
"version": "0.4.
|
9
|
+
"version": "0.4.1",
|
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.
|
4
|
+
version: 0.4.1
|
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-01-
|
11
|
+
date: 2022-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: k_log
|
@@ -62,10 +62,6 @@ extra_rdoc_files: []
|
|
62
62
|
files:
|
63
63
|
- ".builders/_.rb"
|
64
64
|
- ".builders/boot.rb"
|
65
|
-
- ".builders/dsl/builders/actions_builder.rb"
|
66
|
-
- ".builders/dsl/builders/dom_builder.rb"
|
67
|
-
- ".builders/dsl/directors/base_director.rb"
|
68
|
-
- ".builders/dsl/directors/child_director.rb"
|
69
65
|
- ".builders/dsl/github_dsl.rb"
|
70
66
|
- ".builders/dsl/ruby_gem_dsl.rb"
|
71
67
|
- ".builders/generators/01-bootstrap.rb"
|
@@ -90,7 +86,6 @@ files:
|
|
90
86
|
- k_director.gemspec
|
91
87
|
- lib/k_director.rb
|
92
88
|
- lib/k_director/builders/actions_builder.rb
|
93
|
-
- lib/k_director/builders/dom_builder.rb
|
94
89
|
- lib/k_director/directors/base_director.rb
|
95
90
|
- lib/k_director/directors/child_director.rb
|
96
91
|
- lib/k_director/dsls/children/blueprint.rb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dsl
|
4
|
-
module Builders
|
5
|
-
class ActionsBuilder < Dsl::Builders::DomBuilder
|
6
|
-
def initialize
|
7
|
-
super(schema)
|
8
|
-
end
|
9
|
-
|
10
|
-
def queue_action(action)
|
11
|
-
dom[:actions] << current_node(action)
|
12
|
-
end
|
13
|
-
|
14
|
-
def actions
|
15
|
-
dom[:actions]
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def schema
|
21
|
-
{
|
22
|
-
actions: []
|
23
|
-
}
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dsl
|
4
|
-
module Builders
|
5
|
-
class DomBuilder
|
6
|
-
attr_reader :dom
|
7
|
-
attr_reader :node
|
8
|
-
|
9
|
-
def initialize(dom = nil)
|
10
|
-
@dom = dom || schema
|
11
|
-
end
|
12
|
-
|
13
|
-
def current_node(node)
|
14
|
-
@node = node
|
15
|
-
end
|
16
|
-
|
17
|
-
alias last_node node
|
18
|
-
|
19
|
-
def reset
|
20
|
-
@dom = schema
|
21
|
-
@last_node = nil
|
22
|
-
end
|
23
|
-
|
24
|
-
def schema
|
25
|
-
{}
|
26
|
-
end
|
27
|
-
|
28
|
-
def logit
|
29
|
-
puts JSON.pretty_generate(dom)
|
30
|
-
# log.structure(dom)
|
31
|
-
|
32
|
-
self
|
33
|
-
end
|
34
|
-
|
35
|
-
def data
|
36
|
-
KUtil.data.to_open_struct(@dom)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,131 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dsl
|
4
|
-
module Directors
|
5
|
-
class BaseDirector
|
6
|
-
include KLog::Logging
|
7
|
-
|
8
|
-
class << self
|
9
|
-
def init(k_builder, builder = nil, **opts)
|
10
|
-
if builder.nil?
|
11
|
-
builder = Dsl::Builders::ActionsBuilder.new
|
12
|
-
else
|
13
|
-
builder.reset
|
14
|
-
end
|
15
|
-
|
16
|
-
new(k_builder, builder, **opts)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_reader :builder
|
21
|
-
attr_reader :k_builder
|
22
|
-
attr_reader :options
|
23
|
-
attr_accessor :dom
|
24
|
-
|
25
|
-
def initialize(k_builder, builder, **opts)
|
26
|
-
@k_builder = k_builder
|
27
|
-
@builder = builder
|
28
|
-
@options = OpenStruct.new(**opts)
|
29
|
-
|
30
|
-
@options.director_name ||= default_director_name
|
31
|
-
@options.template_base_folder ||= default_template_base_folder
|
32
|
-
@options.on_exist ||= :skip # %i[skip write compare]
|
33
|
-
@options.on_action ||= :queue # %i[queue execute]
|
34
|
-
end
|
35
|
-
|
36
|
-
def director_name
|
37
|
-
@options.director_name
|
38
|
-
end
|
39
|
-
|
40
|
-
def template_base_folder
|
41
|
-
@options.template_base_folder
|
42
|
-
end
|
43
|
-
|
44
|
-
def on_exist
|
45
|
-
@options.on_exist
|
46
|
-
end
|
47
|
-
|
48
|
-
def on_action
|
49
|
-
@options.on_action
|
50
|
-
end
|
51
|
-
|
52
|
-
def add_file(file, **opts)
|
53
|
-
opts = {
|
54
|
-
on_exist: on_exist
|
55
|
-
}.merge(opts)
|
56
|
-
|
57
|
-
opts[:dom] = dom if dom
|
58
|
-
|
59
|
-
handle_action(k_builder.add_file_action(file, **opts))
|
60
|
-
|
61
|
-
self
|
62
|
-
end
|
63
|
-
|
64
|
-
def set_current_folder_action(folder_key)
|
65
|
-
# RUN (not handle)
|
66
|
-
run_action(k_builder.set_current_folder_action(folder_key))
|
67
|
-
|
68
|
-
self
|
69
|
-
end
|
70
|
-
alias cd set_current_folder_action
|
71
|
-
|
72
|
-
def run_command(command)
|
73
|
-
handle_action(k_builder.run_command_action(command))
|
74
|
-
|
75
|
-
self
|
76
|
-
end
|
77
|
-
|
78
|
-
def run_script(script)
|
79
|
-
handle_action(k_builder.run_script_action(script))
|
80
|
-
|
81
|
-
self
|
82
|
-
end
|
83
|
-
|
84
|
-
def play_actions
|
85
|
-
k_builder.play_actions(builder.actions)
|
86
|
-
end
|
87
|
-
|
88
|
-
def debug
|
89
|
-
log.section_heading director_name
|
90
|
-
|
91
|
-
h = options.to_h.sort.to_h
|
92
|
-
h.keys.each do |key|
|
93
|
-
log.kv(titleize.parse(key.to_s), h[key])
|
94
|
-
end
|
95
|
-
nil
|
96
|
-
end
|
97
|
-
|
98
|
-
# def debug_info
|
99
|
-
# log.kv 'Template Root Folder' , k_builder.template_folders.folder_paths
|
100
|
-
# log.kv 'Template Base Folder' , template_base_folder
|
101
|
-
# log.kv 'on_exist' , on_exist
|
102
|
-
# log.kv 'on_action' , on_action
|
103
|
-
# end
|
104
|
-
|
105
|
-
private
|
106
|
-
|
107
|
-
def default_template_base_folder
|
108
|
-
''
|
109
|
-
end
|
110
|
-
|
111
|
-
def default_director_name
|
112
|
-
titleize.parse(self.class.name.split("::").last)
|
113
|
-
end
|
114
|
-
|
115
|
-
def folder_parts(*parts)
|
116
|
-
parts.reject(&:blank?).map(&:to_s)
|
117
|
-
end
|
118
|
-
|
119
|
-
def handle_action(action)
|
120
|
-
builder.queue_action(action)
|
121
|
-
k_builder.play_action(action) if on_action == :execute
|
122
|
-
end
|
123
|
-
|
124
|
-
# run action will queue an action just like handle_action, but it will also run it immediately
|
125
|
-
def run_action(action)
|
126
|
-
builder.queue_action(action)
|
127
|
-
k_builder.run_action(action)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dsl
|
4
|
-
module Directors
|
5
|
-
class ChildDirector < Dsl::Directors::BaseDirector
|
6
|
-
attr_reader :parent
|
7
|
-
|
8
|
-
def initialize(parent, **opts)
|
9
|
-
@parent = parent
|
10
|
-
|
11
|
-
opts = {
|
12
|
-
on_exist: parent.on_exist,
|
13
|
-
on_action: parent.on_action,
|
14
|
-
template_base_folder: parent.template_base_folder
|
15
|
-
}.merge(opts)
|
16
|
-
|
17
|
-
super(parent.k_builder, parent.builder, **opts)
|
18
|
-
end
|
19
|
-
|
20
|
-
def debug
|
21
|
-
parent.debug
|
22
|
-
|
23
|
-
super
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KDirector
|
4
|
-
module Builders
|
5
|
-
# Base document builder
|
6
|
-
class DomBuilder
|
7
|
-
attr_reader :dom
|
8
|
-
attr_reader :node
|
9
|
-
|
10
|
-
def initialize(dom = nil)
|
11
|
-
@dom = dom || schema
|
12
|
-
end
|
13
|
-
|
14
|
-
def current_node(node)
|
15
|
-
@node = node
|
16
|
-
end
|
17
|
-
|
18
|
-
alias last_node node
|
19
|
-
|
20
|
-
def reset
|
21
|
-
@dom = schema
|
22
|
-
@last_node = nil
|
23
|
-
end
|
24
|
-
|
25
|
-
def schema
|
26
|
-
{}
|
27
|
-
end
|
28
|
-
|
29
|
-
def logit
|
30
|
-
puts JSON.pretty_generate(dom)
|
31
|
-
# log.structure(dom)
|
32
|
-
|
33
|
-
self
|
34
|
-
end
|
35
|
-
|
36
|
-
def data
|
37
|
-
KUtil.data.to_open_struct(@dom)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|