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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66bfeb5b766221eeda0cb0e7157b90c3852c7c617934a60e91794dd322090a18
4
- data.tar.gz: fdad194dbe2c758946e83ba609ab27e9f7651e71e12ebc78730a2036f2c66cde
3
+ metadata.gz: 0036ab3aba8fde78577b1c3e02d9adb122d14631c309eb6cd8e849d43777928c
4
+ data.tar.gz: 7566359e95804068637fd4e52da588a8445d978d0986cbbc2cc6b84063728a30
5
5
  SHA512:
6
- metadata.gz: ef4b7707f28b83b8d7c4a700e301c34729a501721f63e293c1772670f73c59cadf25f7b19abbcf91a31c110729b03e9633deb6699b603837948c7684691e6a2b
7
- data.tar.gz: 72043f631e73267482e4e0d9a52541f8e121ded63222d714f9fa2503ecebb8c4cba88a541748a2d7bba9379b67199ea58bf266b6da9ea84c52db039d24c27cb3
6
+ metadata.gz: 004ca6fe76f586ef5eb163797dfca591098bd4d3454c0a80366bf9f43f1f4be2a1fd78f94ba522a6d227e9c1b4f6ece76e3e5877989757579d6c44cb9c37a674
7
+ data.tar.gz: 9d94e04bfe8b244ff8940700b6c3ce49a100eac27e28f29e14b3f7d27f995ece20178fa9f8380408ef7b03588f472135c6370b1916bdd26bdbc20814d34e8a99
data/.builders/_.rb CHANGED
@@ -1,4 +1,3 @@
1
- require_relative './dsl/builders/dom_builder'
2
1
  require_relative './dsl/builders/actions_builder'
3
2
  require_relative './dsl/directors/base_director'
4
3
  require_relative './dsl/directors/child_director'
@@ -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, # %i[queue execute]
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
- # Data builder for KBuilder Actions
6
- class ActionsBuilder < KDirector::Builders::DomBuilder
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
- super(schema)
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
- dom[:actions] << current_node(action)
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 actions
16
- dom[:actions]
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 schema
22
- {
23
- actions: []
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
- # WHAT IS THIS FOR?
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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDirector
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
  end
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.0",
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.0",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k_director",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
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.4.0
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-29 00:00:00.000000000 Z
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