k_director 0.11.1 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6ee6da028f776a4ed4ed470290696dfcf2c15c0caa417666e9300f1d75ea390
4
- data.tar.gz: 14dd16cd8185b21eef317ea6b8cfda1ee570c8559e77db264021722889962a74
3
+ metadata.gz: 299e8ce98da8e9466c4394c2bd5b004a62cc69f3f9f99df5e0d94166de79604c
4
+ data.tar.gz: d2919e383af54afd515024ec6c6cc0e11906455680bb1fe62661b2649a32f3e6
5
5
  SHA512:
6
- metadata.gz: 34896604b4d9731e4a4ab0924572fdb65736bab9e71b63491ba16fd9d3f79418e3e63d4d81818048870333c002f76316846617df1ccbe5aaffb1c171e73efdc8
7
- data.tar.gz: dcf6fd9985456ad96ac7383b29a08fcf020b8947502eac2af80c2618481f12bc193d180a1518d40cb4d074d8a8412dcaeecb5c017e1cddeda406ee365deab520
6
+ metadata.gz: afca62f2f2ceeb8bb99aab3d720f23963d4b559144e0388aebdc22bf58deb746da7e86dec8fac60ed90cb76815c146ca8acb9ce868cd2aa1c408b42c6ac2b275
7
+ data.tar.gz: 2fb3e677abf07ad9f7ec9cad4c94beaac720e1d1f8cce8cc0d9e12c988f17fde5e8be91ae6187018de18a4cc3cea032fb8ac277e927613dc0e7d57623b9354d9
data/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ # [0.12.0](https://github.com/klueless-io/k_director/compare/v0.11.3...v0.12.0) (2022-02-11)
2
+
3
+
4
+ ### Features
5
+
6
+ * split dom_builder out from actions_builder ([f728e0e](https://github.com/klueless-io/k_director/commit/f728e0e04ef668928ed78ed6e008c3996a2023e8))
7
+
8
+ ## [0.11.3](https://github.com/klueless-io/k_director/compare/v0.11.2...v0.11.3) (2022-02-08)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add simple dsl ([0fd61ab](https://github.com/klueless-io/k_director/commit/0fd61abbe90a136c96b750fcf7456bc46aa73463))
14
+
15
+ ## [0.11.2](https://github.com/klueless-io/k_director/compare/v0.11.1...v0.11.2) (2022-02-08)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * add typed_dom to base_director ([22ee75d](https://github.com/klueless-io/k_director/commit/22ee75da20cd00fe1f48f7027775b59dcf1c17a5))
21
+ * move add, oadd, tadd, fadd from blueprint_director to base_director ([82f6aa0](https://github.com/klueless-io/k_director/commit/82f6aa02311ec04b9cb716846630274700deefb5))
22
+
23
+ ## [0.11.1](https://github.com/klueless-io/k_director/compare/v0.11.0...v0.11.1) (2022-02-07)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * move add, oadd, tadd, fadd from blueprint_director to base_director ([caab926](https://github.com/klueless-io/k_director/commit/caab92618406a072c3e326a3a640f7c6a4b71f03))
29
+
1
30
  # [0.11.0](https://github.com/klueless-io/k_director/compare/v0.10.4...v0.11.0) (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
- puts JSON.pretty_generate(dom)
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
@@ -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 = KDirector::Builders::ActionsBuilder.new
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
@@ -51,6 +61,10 @@ module KDirector
51
61
  builder.dom
52
62
  end
53
63
 
64
+ def typed_dom
65
+ builder.build
66
+ end
67
+
54
68
  # Used by child directors to inherit options from parent
55
69
  def inherited_opts(**opts)
56
70
  {
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDirector
4
+ module Dsls
5
+ # BasicDsl is a DSL for generating basic projects.
6
+ class BasicDsl < KDirector::Directors::BaseDirector
7
+ def default_template_base_folder
8
+ 'basic'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDirector
4
- VERSION = '0.11.1'
4
+ VERSION = '0.12.1'
5
5
  end
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.11.1",
3
+ "version": "0.12.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_director",
9
- "version": "0.11.1",
9
+ "version": "0.12.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.11.1",
3
+ "version": "0.12.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.11.1
4
+ version: 0.12.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-02-07 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -90,7 +90,6 @@ extra_rdoc_files: []
90
90
  files:
91
91
  - ".builders/_.rb"
92
92
  - ".builders/boot.rb"
93
- - ".builders/dsl/ruby_gem_dsl.rb"
94
93
  - ".builders/generators/01-bootstrap.rb"
95
94
  - ".builders/run.rb"
96
95
  - ".githooks/commit-msg"
@@ -113,6 +112,7 @@ files:
113
112
  - k_director.gemspec
114
113
  - lib/k_director.rb
115
114
  - lib/k_director/builders/actions_builder.rb
115
+ - lib/k_director/builders/dom_builder.rb
116
116
  - lib/k_director/directors/base_director.rb
117
117
  - lib/k_director/directors/child_director.rb
118
118
  - lib/k_director/directors/data.rb
@@ -122,6 +122,7 @@ files:
122
122
  - lib/k_director/dsls/children/package_json_configuration.rb
123
123
  - lib/k_director/dsls/nuxt3_dsl.rb
124
124
  - lib/k_director/dsls/ruby_gem_dsl.rb
125
+ - lib/k_director/dsls/simple_dsl.rb
125
126
  - lib/k_director/version.rb
126
127
  - package-lock.json
127
128
  - package.json
@@ -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