k_director 0.1.2 → 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/.rubocop.yml +3 -0
- data/README.md +8 -0
- data/docs/CHANGELOG.md +39 -0
- data/k_director.gemspec +1 -0
- data/lib/k_director/builders/actions_builder.rb +80 -10
- data/{.builders/dsl → lib/k_director}/directors/base_director.rb +44 -9
- data/lib/k_director/directors/child_director.rb +18 -0
- data/lib/k_director/dsls/children/blueprint.rb +58 -0
- data/lib/k_director/dsls/children/github.rb +35 -0
- data/lib/k_director/version.rb +1 -1
- data/lib/k_director.rb +6 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +21 -7
- data/.builders/dsl/builders/actions_builder.rb +0 -27
- data/.builders/dsl/builders/dom_builder.rb +0 -40
- 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/.rubocop.yml
CHANGED
data/README.md
CHANGED
data/docs/CHANGELOG.md
ADDED
@@ -0,0 +1,39 @@
|
|
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
|
+
|
13
|
+
# [0.3.0](https://github.com/klueless-io/k_director/compare/v0.2.0...v0.3.0) (2022-01-29)
|
14
|
+
|
15
|
+
|
16
|
+
### Features
|
17
|
+
|
18
|
+
* add Blueprint DSL ([c27ec12](https://github.com/klueless-io/k_director/commit/c27ec124b8c55b84f2dfd67f37de6ab2c4fb8d22))
|
19
|
+
|
20
|
+
# [0.2.0](https://github.com/klueless-io/k_director/compare/v0.1.2...v0.2.0) (2022-01-27)
|
21
|
+
|
22
|
+
|
23
|
+
### Features
|
24
|
+
|
25
|
+
* add BaseDirector and ChildDirector ([d32265a](https://github.com/klueless-io/k_director/commit/d32265a1e46811bde6bdfbef4b8c9dc8602a8f88))
|
26
|
+
|
27
|
+
## [0.1.2](https://github.com/klueless-io/k_director/compare/v0.1.1...v0.1.2) (2022-01-26)
|
28
|
+
|
29
|
+
|
30
|
+
### Bug Fixes
|
31
|
+
|
32
|
+
* add semver change log ([2069bd2](https://github.com/klueless-io/k_director/commit/2069bd24b9d32649c666480da76781514beeecf3))
|
33
|
+
|
34
|
+
|
35
|
+
## [0.1.1](https://github.com/klueless-io/k_director/compare/v0.1.0...v0.1.1) (2022-01-26)
|
36
|
+
|
37
|
+
### Feature
|
38
|
+
|
39
|
+
* add dom and action builder ([a61e841](https://github.com/klueless-io/k_director/commit/a61e841a40f544f4751e4aaa012d60a447d2dfab))
|
data/k_director.gemspec
CHANGED
@@ -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
|
@@ -1,14 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module KDirector
|
4
4
|
module Directors
|
5
|
+
# Base Director is paired with the ActionsBuilder and provides a base
|
6
|
+
# on which to build code generation directors.
|
5
7
|
class BaseDirector
|
6
8
|
include KLog::Logging
|
7
9
|
|
8
10
|
class << self
|
9
11
|
def init(k_builder, builder = nil, **opts)
|
10
12
|
if builder.nil?
|
11
|
-
builder =
|
13
|
+
builder = KDirector::Builders::ActionsBuilder.new
|
12
14
|
else
|
13
15
|
builder.reset
|
14
16
|
end
|
@@ -20,9 +22,9 @@ module Dsl
|
|
20
22
|
attr_reader :builder
|
21
23
|
attr_reader :k_builder
|
22
24
|
attr_reader :options
|
23
|
-
|
24
|
-
|
25
|
+
|
25
26
|
def initialize(k_builder, builder, **opts)
|
27
|
+
@index = 1
|
26
28
|
@k_builder = k_builder
|
27
29
|
@builder = builder
|
28
30
|
@options = OpenStruct.new(**opts)
|
@@ -33,10 +35,29 @@ module Dsl
|
|
33
35
|
@options.on_action ||= :queue # %i[queue execute]
|
34
36
|
end
|
35
37
|
|
38
|
+
def dom
|
39
|
+
@index += 1
|
40
|
+
puts "dom#{@index}"
|
41
|
+
builder.dom
|
42
|
+
end
|
43
|
+
|
44
|
+
# Used by child directors to inherit options from parent
|
45
|
+
def inherited_opts(**opts)
|
46
|
+
{
|
47
|
+
on_exist: @options.on_exist,
|
48
|
+
on_action: @options.on_action,
|
49
|
+
template_base_folder: @options.template_base_folder
|
50
|
+
}.merge(opts)
|
51
|
+
end
|
52
|
+
|
36
53
|
def director_name
|
37
54
|
@options.director_name
|
38
55
|
end
|
39
56
|
|
57
|
+
def director_name=(name)
|
58
|
+
@options.director_name = name
|
59
|
+
end
|
60
|
+
|
40
61
|
def template_base_folder
|
41
62
|
@options.template_base_folder
|
42
63
|
end
|
@@ -49,38 +70,46 @@ module Dsl
|
|
49
70
|
@options.on_action
|
50
71
|
end
|
51
72
|
|
73
|
+
# Add a file to target folder
|
52
74
|
def add_file(file, **opts)
|
53
75
|
opts = {
|
54
76
|
on_exist: on_exist
|
55
77
|
}.merge(opts)
|
56
78
|
|
57
|
-
opts[:dom] = dom if dom
|
79
|
+
opts[:dom] = dom.except(:actions) if dom
|
58
80
|
|
59
81
|
handle_action(k_builder.add_file_action(file, **opts))
|
60
82
|
|
61
83
|
self
|
62
84
|
end
|
63
85
|
|
86
|
+
# Set current target folder
|
87
|
+
# rubocop:disable Naming/AccessorMethodName
|
64
88
|
def set_current_folder_action(folder_key)
|
65
|
-
# RUN (not handle)
|
89
|
+
# RUN (not handle), current folder effects subsequent actions and so it needs to be executed straight away.
|
66
90
|
run_action(k_builder.set_current_folder_action(folder_key))
|
67
91
|
|
68
92
|
self
|
69
93
|
end
|
94
|
+
# rubocop:enable Naming/AccessorMethodName
|
70
95
|
alias cd set_current_folder_action
|
71
96
|
|
97
|
+
# Run a command using shell, this is useful with command line tools
|
72
98
|
def run_command(command)
|
73
99
|
handle_action(k_builder.run_command_action(command))
|
74
100
|
|
75
101
|
self
|
76
102
|
end
|
77
103
|
|
104
|
+
# Run a command using Open3.capture2, can be used in place of run_command
|
105
|
+
# but is also useful with multiline scripts
|
78
106
|
def run_script(script)
|
79
107
|
handle_action(k_builder.run_script_action(script))
|
80
108
|
|
81
109
|
self
|
82
110
|
end
|
83
111
|
|
112
|
+
# play any un-played actions
|
84
113
|
def play_actions
|
85
114
|
k_builder.play_actions(builder.actions)
|
86
115
|
end
|
@@ -89,7 +118,8 @@ module Dsl
|
|
89
118
|
log.section_heading director_name
|
90
119
|
|
91
120
|
h = options.to_h.sort.to_h
|
92
|
-
h.
|
121
|
+
h.each_key do |key|
|
122
|
+
# requires k_funky
|
93
123
|
log.kv(titleize.parse(key.to_s), h[key])
|
94
124
|
end
|
95
125
|
nil
|
@@ -109,7 +139,7 @@ module Dsl
|
|
109
139
|
end
|
110
140
|
|
111
141
|
def default_director_name
|
112
|
-
titleize.parse(self.class.name.split(
|
142
|
+
titleize.parse(self.class.name.split('::').last)
|
113
143
|
end
|
114
144
|
|
115
145
|
def folder_parts(*parts)
|
@@ -126,6 +156,11 @@ module Dsl
|
|
126
156
|
builder.queue_action(action)
|
127
157
|
k_builder.run_action(action)
|
128
158
|
end
|
159
|
+
|
160
|
+
def titleize
|
161
|
+
require 'handlebars/helpers/string_formatting/titleize'
|
162
|
+
Handlebars::Helpers::StringFormatting::Titleize.new
|
163
|
+
end
|
129
164
|
end
|
130
165
|
end
|
131
|
-
end
|
166
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KDirector
|
4
|
+
module Directors
|
5
|
+
# Child directors hang of a parent director and provide fluent builders for
|
6
|
+
# specialized flow control, e.g branching of a RubyGem Director into a GitHub
|
7
|
+
# Child director
|
8
|
+
class ChildDirector < KDirector::Directors::BaseDirector
|
9
|
+
attr_reader :parent
|
10
|
+
|
11
|
+
def initialize(parent, **opts)
|
12
|
+
@parent = parent
|
13
|
+
|
14
|
+
super(parent.k_builder, parent.builder, **@parent.inherited_opts(**opts))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KDirector
|
4
|
+
module Dsls
|
5
|
+
module Children
|
6
|
+
# Blueprint DSL is used to add files to the target folder.
|
7
|
+
#
|
8
|
+
# A blueprint is a recipe that you can follow to build out assets on the target application
|
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
|
+
# def template_content(template_file, **opts)
|
40
|
+
# template_parts = [template_base_folder, opts[:template_subfolder], template_file].reject(&:blank?)
|
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_file, **opts)
|
48
|
+
template_parts = [template_base_folder, opts[:template_subfolder], template_file].reject(&:blank?)
|
49
|
+
template_path = File.join(*template_parts)
|
50
|
+
|
51
|
+
script = k_builder.process_any_content(template_file: template_path, **opts)
|
52
|
+
|
53
|
+
run_script(script)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# klueless-io
|
4
|
+
# k_director
|
5
|
+
# kluless-sites
|
6
|
+
|
7
|
+
module KDirector
|
8
|
+
module Dsls
|
9
|
+
module Children
|
10
|
+
# Github DSL provides useful GitHub actions such as (create, delete, list, open repository).
|
11
|
+
class Github < KDirector::Directors::ChildDirector
|
12
|
+
def initialize(parent, **opts)
|
13
|
+
super(parent, **opts)
|
14
|
+
|
15
|
+
@options.repo_name ||= parent.options.repo_name
|
16
|
+
@options.repo_organization ||= parent.options.repo_organization
|
17
|
+
end
|
18
|
+
|
19
|
+
def repo
|
20
|
+
return parent.options.repo if defined? parent.options.repo
|
21
|
+
|
22
|
+
parent.options.repo = OpenStruct.new(name: nil, organization: nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
def name
|
26
|
+
repo.repo_name
|
27
|
+
end
|
28
|
+
|
29
|
+
def organization
|
30
|
+
repo.repo_organization
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/k_director/version.rb
CHANGED
data/lib/k_director.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'k_log'
|
3
4
|
require 'k_util'
|
5
|
+
require 'k_builder'
|
4
6
|
|
5
7
|
require_relative 'k_director/version'
|
6
|
-
require_relative 'k_director/builders/dom_builder'
|
7
8
|
require_relative 'k_director/builders/actions_builder'
|
9
|
+
require_relative 'k_director/directors/base_director'
|
10
|
+
require_relative 'k_director/directors/child_director'
|
11
|
+
require_relative 'k_director/dsls/children/blueprint'
|
12
|
+
require_relative 'k_director/dsls/children/github'
|
8
13
|
|
9
14
|
module KDirector
|
10
15
|
# raise KDirector::Error, 'Sample message'
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "k_director",
|
3
|
-
"version": "0.1
|
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.1
|
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.1
|
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
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: k_builder
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: k_util
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -48,10 +62,6 @@ extra_rdoc_files: []
|
|
48
62
|
files:
|
49
63
|
- ".builders/_.rb"
|
50
64
|
- ".builders/boot.rb"
|
51
|
-
- ".builders/dsl/builders/actions_builder.rb"
|
52
|
-
- ".builders/dsl/builders/dom_builder.rb"
|
53
|
-
- ".builders/dsl/directors/base_director.rb"
|
54
|
-
- ".builders/dsl/directors/child_director.rb"
|
55
65
|
- ".builders/dsl/github_dsl.rb"
|
56
66
|
- ".builders/dsl/ruby_gem_dsl.rb"
|
57
67
|
- ".builders/generators/01-bootstrap.rb"
|
@@ -70,12 +80,16 @@ files:
|
|
70
80
|
- Rakefile
|
71
81
|
- bin/console
|
72
82
|
- bin/setup
|
83
|
+
- docs/CHANGELOG.md
|
73
84
|
- docs/CODE_OF_CONDUCT.md
|
74
85
|
- docs/LICENSE.txt
|
75
86
|
- k_director.gemspec
|
76
87
|
- lib/k_director.rb
|
77
88
|
- lib/k_director/builders/actions_builder.rb
|
78
|
-
- lib/k_director/
|
89
|
+
- lib/k_director/directors/base_director.rb
|
90
|
+
- lib/k_director/directors/child_director.rb
|
91
|
+
- lib/k_director/dsls/children/blueprint.rb
|
92
|
+
- lib/k_director/dsls/children/github.rb
|
79
93
|
- lib/k_director/version.rb
|
80
94
|
- package-lock.json
|
81
95
|
- package.json
|
@@ -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,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
|