k_director 0.1.2 → 0.2.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/.rubocop.yml +3 -0
- data/docs/CHANGELOG.md +13 -0
- data/k_director.gemspec +1 -0
- data/lib/k_director/directors/base_director.rb +157 -0
- data/lib/k_director/directors/child_director.rb +18 -0
- data/lib/k_director/version.rb +1 -1
- data/lib/k_director.rb +4 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0c8985292cf5c11bd7bd5e7887be4c29bf72e13095a4c7f1b7195595188a39a
|
4
|
+
data.tar.gz: aa90b26840c62e1c8e60edc0b4aeda07b62a76fa106de2618eb2571a48791680
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0458d1254d8ca4e459d3aa2a6bf23de2b3437d8df7cf0ded66376f6618f5f55f3ae4016506cde7381a81c095140200835950161b47041e6aaa6d086197547aaf'
|
7
|
+
data.tar.gz: 5f8d84e42051822825f82310c3a6ac1afb6fb87beeb10acb68137583b351fa6c92fe7d09356bbc4f03df4c0922cce9a9dd0a5ac4747174ca1f33d4a7c853b9e4
|
data/.rubocop.yml
CHANGED
data/docs/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
## [0.1.2](https://github.com/klueless-io/k_director/compare/v0.1.1...v0.1.2) (2022-01-26)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add semver change log ([2069bd2](https://github.com/klueless-io/k_director/commit/2069bd24b9d32649c666480da76781514beeecf3))
|
7
|
+
|
8
|
+
|
9
|
+
## [0.1.1](https://github.com/klueless-io/k_director/compare/v0.1.0...v0.1.1) (2022-01-26)
|
10
|
+
|
11
|
+
### Feature
|
12
|
+
|
13
|
+
* add dom and action builder ([a61e841](https://github.com/klueless-io/k_director/commit/a61e841a40f544f4751e4aaa012d60a447d2dfab))
|
data/k_director.gemspec
CHANGED
@@ -0,0 +1,157 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KDirector
|
4
|
+
module Directors
|
5
|
+
# Base Director is paired with the ActionsBuilder and provides a base
|
6
|
+
# on which to build code generation directors.
|
7
|
+
class BaseDirector
|
8
|
+
include KLog::Logging
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def init(k_builder, builder = nil, **opts)
|
12
|
+
if builder.nil?
|
13
|
+
builder = KDirector::Builders::ActionsBuilder.new
|
14
|
+
else
|
15
|
+
builder.reset
|
16
|
+
end
|
17
|
+
|
18
|
+
new(k_builder, builder, **opts)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :builder
|
23
|
+
attr_reader :k_builder
|
24
|
+
attr_reader :options
|
25
|
+
attr_accessor :dom
|
26
|
+
|
27
|
+
def initialize(k_builder, builder, **opts)
|
28
|
+
@k_builder = k_builder
|
29
|
+
@builder = builder
|
30
|
+
@options = OpenStruct.new(**opts)
|
31
|
+
|
32
|
+
@options.director_name ||= default_director_name
|
33
|
+
@options.template_base_folder ||= default_template_base_folder
|
34
|
+
@options.on_exist ||= :skip # %i[skip write compare]
|
35
|
+
@options.on_action ||= :queue # %i[queue execute]
|
36
|
+
end
|
37
|
+
|
38
|
+
# Used by child directors to inherit options from parent
|
39
|
+
def inherited_opts(**opts)
|
40
|
+
{
|
41
|
+
on_exist: @options.on_exist,
|
42
|
+
on_action: @options.on_action,
|
43
|
+
template_base_folder: @options.template_base_folder
|
44
|
+
}.merge(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
def director_name
|
48
|
+
@options.director_name
|
49
|
+
end
|
50
|
+
|
51
|
+
def template_base_folder
|
52
|
+
@options.template_base_folder
|
53
|
+
end
|
54
|
+
|
55
|
+
def on_exist
|
56
|
+
@options.on_exist
|
57
|
+
end
|
58
|
+
|
59
|
+
def on_action
|
60
|
+
@options.on_action
|
61
|
+
end
|
62
|
+
|
63
|
+
# Add a file to target folder
|
64
|
+
def add_file(file, **opts)
|
65
|
+
opts = {
|
66
|
+
on_exist: on_exist
|
67
|
+
}.merge(opts)
|
68
|
+
|
69
|
+
# WHAT IS THIS FOR?
|
70
|
+
opts[:dom] = dom if dom
|
71
|
+
|
72
|
+
handle_action(k_builder.add_file_action(file, **opts))
|
73
|
+
|
74
|
+
self
|
75
|
+
end
|
76
|
+
|
77
|
+
# Set current target folder
|
78
|
+
# rubocop:disable Naming/AccessorMethodName
|
79
|
+
def set_current_folder_action(folder_key)
|
80
|
+
# RUN (not handle), current folder effects subsequent actions and so it needs to be executed straight away.
|
81
|
+
run_action(k_builder.set_current_folder_action(folder_key))
|
82
|
+
|
83
|
+
self
|
84
|
+
end
|
85
|
+
# rubocop:enable Naming/AccessorMethodName
|
86
|
+
alias cd set_current_folder_action
|
87
|
+
|
88
|
+
# Run a command using shell, this is useful with command line tools
|
89
|
+
def run_command(command)
|
90
|
+
handle_action(k_builder.run_command_action(command))
|
91
|
+
|
92
|
+
self
|
93
|
+
end
|
94
|
+
|
95
|
+
# Run a command using Open3.capture2, can be used in place of run_command
|
96
|
+
# but is also useful with multiline scripts
|
97
|
+
def run_script(script)
|
98
|
+
handle_action(k_builder.run_script_action(script))
|
99
|
+
|
100
|
+
self
|
101
|
+
end
|
102
|
+
|
103
|
+
# play any un-played actions
|
104
|
+
def play_actions
|
105
|
+
k_builder.play_actions(builder.actions)
|
106
|
+
end
|
107
|
+
|
108
|
+
def debug
|
109
|
+
log.section_heading director_name
|
110
|
+
|
111
|
+
h = options.to_h.sort.to_h
|
112
|
+
h.each_key do |key|
|
113
|
+
# requires k_funky
|
114
|
+
log.kv(titleize.parse(key.to_s), h[key])
|
115
|
+
end
|
116
|
+
nil
|
117
|
+
end
|
118
|
+
|
119
|
+
# def debug_info
|
120
|
+
# log.kv 'Template Root Folder' , k_builder.template_folders.folder_paths
|
121
|
+
# log.kv 'Template Base Folder' , template_base_folder
|
122
|
+
# log.kv 'on_exist' , on_exist
|
123
|
+
# log.kv 'on_action' , on_action
|
124
|
+
# end
|
125
|
+
|
126
|
+
private
|
127
|
+
|
128
|
+
def default_template_base_folder
|
129
|
+
''
|
130
|
+
end
|
131
|
+
|
132
|
+
def default_director_name
|
133
|
+
titleize.parse(self.class.name.split('::').last)
|
134
|
+
end
|
135
|
+
|
136
|
+
def folder_parts(*parts)
|
137
|
+
parts.reject(&:blank?).map(&:to_s)
|
138
|
+
end
|
139
|
+
|
140
|
+
def handle_action(action)
|
141
|
+
builder.queue_action(action)
|
142
|
+
k_builder.play_action(action) if on_action == :execute
|
143
|
+
end
|
144
|
+
|
145
|
+
# run action will queue an action just like handle_action, but it will also run it immediately
|
146
|
+
def run_action(action)
|
147
|
+
builder.queue_action(action)
|
148
|
+
k_builder.run_action(action)
|
149
|
+
end
|
150
|
+
|
151
|
+
def titleize
|
152
|
+
require 'handlebars/helpers/string_formatting/titleize'
|
153
|
+
Handlebars::Helpers::StringFormatting::Titleize.new
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
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
|
data/lib/k_director/version.rb
CHANGED
data/lib/k_director.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
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
8
|
require_relative 'k_director/builders/dom_builder'
|
7
9
|
require_relative 'k_director/builders/actions_builder'
|
10
|
+
require_relative 'k_director/directors/base_director'
|
11
|
+
require_relative 'k_director/directors/child_director'
|
8
12
|
|
9
13
|
module KDirector
|
10
14
|
# 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.2.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.2.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.2.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-01-
|
11
|
+
date: 2022-01-27 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
|
@@ -70,12 +84,15 @@ files:
|
|
70
84
|
- Rakefile
|
71
85
|
- bin/console
|
72
86
|
- bin/setup
|
87
|
+
- docs/CHANGELOG.md
|
73
88
|
- docs/CODE_OF_CONDUCT.md
|
74
89
|
- docs/LICENSE.txt
|
75
90
|
- k_director.gemspec
|
76
91
|
- lib/k_director.rb
|
77
92
|
- lib/k_director/builders/actions_builder.rb
|
78
93
|
- lib/k_director/builders/dom_builder.rb
|
94
|
+
- lib/k_director/directors/base_director.rb
|
95
|
+
- lib/k_director/directors/child_director.rb
|
79
96
|
- lib/k_director/version.rb
|
80
97
|
- package-lock.json
|
81
98
|
- package.json
|