k_director 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|