k_builder 0.0.68 → 0.0.73

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: 7bd3ddd77fda6cfa2a887a20fb924aa5a5181244a91d910540a32a7383074191
4
- data.tar.gz: e942f11959736361d19c0b09f39a4ed6500b89373dcfa3e7e8763d79ff803559
3
+ metadata.gz: 71d70294c1dc49e1fc67dd77f71414019a3814f44057831273bc79d815146f05
4
+ data.tar.gz: 5d18531c4d7f4ddb2c1cafb8297bf7d2e0c3f708526464d2d700ea7750eb048f
5
5
  SHA512:
6
- metadata.gz: 8ad7eec17221b5e64b59cea284bbfd7dc20af852c113462a90ae17637307f36945e4c7535c35d3a75a138a8fb662da86c8254dc2a244e2e5f3bc2c781ca2dff7
7
- data.tar.gz: a8ca584e3c0ff1feae5d8cbf4b8c32fc0bea751cec6d23980092de814fea9f10c7f1dec936852a698edf6fdc70bfe913c26b86a6d5014f5a81ee0fe930c89a8f
6
+ metadata.gz: 7f5059460b2ab02d3708de1019a7ca2a9b4974c13e7f6da9b0c1d0aa720cdbdaabd29e3d9cb1451ce3b3db11211bd3fc9fd76edf4d284f12e48d0287ee328289
7
+ data.tar.gz: b02df37b1b11213b71e364d2c881de6df3e09ce355ada72807d30d6a37cca4a3fa263c8539e05cd582a64e3456c10b0ef74fed0a64de711c20bcf4c217fe546d
data/a.txt ADDED
File without changes
data/hooks/pre-commit CHANGED
@@ -8,8 +8,8 @@ require 'English'
8
8
 
9
9
  exit 0 if ARGV.include?('--no-verify')
10
10
 
11
- warning_keywords = %w[console.log]
12
- keywords = %w[binding.pry console.dir byebug debugger]
11
+ warning_keywords = %w[]
12
+ keywords = %w[binding.pry console.dir byebug]
13
13
  files_changed = `git diff-index --name-only HEAD --`.split
14
14
 
15
15
  # puts '----------------------------------------------------------------------'
data/hooks/update-version CHANGED
@@ -30,4 +30,4 @@ end
30
30
  output.push('')
31
31
 
32
32
  printf "%-25<label>s : %<version>s\n", label: 'GEM VERSION', version: version
33
- File.open('lib/k_builder/version.rb', 'w+') { |f| f.write(output.join("\n")) }
33
+ File.write('lib/k_builder/version.rb', output.join("\n"))
data/k_builder.gemspec CHANGED
@@ -38,11 +38,11 @@ Gem::Specification.new do |spec|
38
38
  spec.require_paths = ['lib']
39
39
  # spec.extensions = ['ext/k_builder/extconf.rb']
40
40
  spec.add_dependency 'handlebars-helpers', '~> 0'
41
+ spec.add_dependency 'k_config', '~> 0'
41
42
  spec.add_dependency 'k_log', '~> 0'
42
43
  spec.add_dependency 'k_type', '~> 0'
43
44
  spec.add_dependency 'k_util', '~> 0'
44
45
  spec.add_dependency 'rubocop', '~> 1.8'
45
46
 
46
- # spec.add_dependency "anyway_config" , ">= 2.0.0"
47
- # spec.add_dependency "config" , ">= 3.0.0"
47
+ spec.metadata['rubygems_mfa_required'] = 'true'
48
48
  end
@@ -54,7 +54,7 @@ module KBuilder
54
54
 
55
55
  # assigns a builder hash and defines builder methods
56
56
  def initialize(configuration = nil)
57
- configuration = KBuilder.configuration if configuration.nil?
57
+ configuration = KConfig.configuration if configuration.nil?
58
58
 
59
59
  @configuration = configuration
60
60
 
@@ -121,15 +121,16 @@ module KBuilder
121
121
  # Extra options will be used as data for templates, e.g
122
122
  # @option opts [String] :to Recipient email
123
123
  # @option opts [String] :body The email's body
124
- def add_file_command(file, **opts)
124
+ def add_file_action(file, **opts)
125
125
  {
126
126
  action: :add_file,
127
+ played: false,
127
128
  file: file,
128
129
  opts: opts
129
130
  }
130
131
  end
131
132
 
132
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
133
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
133
134
  def add_file(file, **opts)
134
135
  # move to command
135
136
  full_file = target_file(file, **opts) # opts.key?(:folder_key) || opts.key?(:folder) ? target_file(file, folder: opts[:folder], folder_key: opts[:folder_key]) : target_file(file)
@@ -145,6 +146,8 @@ module KBuilder
145
146
  run_prettier file if opts.key?(:pretty)
146
147
  # TODO: Add test
147
148
  run_cop(full_file, fix_safe: true) if opts.key?(:cop) || opts.key?(:ruby_cop)
149
+ # TODO: Add test
150
+ run_command(file) if opts.key?(:run)
148
151
 
149
152
  # Need support for rubocop -a
150
153
  open_file(last_output_file) if opts.key?(:open)
@@ -154,26 +157,49 @@ module KBuilder
154
157
 
155
158
  self
156
159
  end
157
- # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
160
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
158
161
 
159
- def replay_commands(commands)
160
- commands.each do |command|
161
- case command[:action]
162
- when :add_file
163
- add_file(command[:file], command[:opts])
164
- when :delete_file
165
- delete_file(command[:file], command[:opts])
166
- else
167
- log.error "Unknown command: #{command[:action]}"
168
- end
162
+ def play_actions(actions)
163
+ actions.reject { |action| action[:played] }.each do |action|
164
+ play_action(action)
165
+ end
166
+ end
167
+
168
+ def play_action(action)
169
+ run_action(action)
170
+ action[:played] = true
171
+ end
172
+
173
+ # certain actions (e.g. set_current_folder) will run independently to play
174
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
175
+ def run_action(action)
176
+ case action[:action]
177
+ when :add_file
178
+ add_file(action[:file], action[:opts])
179
+ when :delete_file
180
+ delete_file(action[:file], action[:opts])
181
+ when :vscode
182
+ vscode(action[:file_parts], action[:opts])
183
+ when :browse
184
+ browse(action[:file_parts], action[:opts])
185
+ when :set_current_folder
186
+ set_current_folder(action[:folder_key])
187
+ when :run_command
188
+ run_command(action[:command])
189
+ when :run_script
190
+ run_script(action[:script])
191
+ else
192
+ log.error "Unknown action: #{action[:action]}"
169
193
  end
170
194
  end
195
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
171
196
 
172
197
  alias touch add_file # it is expected that you would not supply any options, just a file name
173
198
 
174
- def delete_file_command(file, **opts)
199
+ def delete_file_action(file, **opts)
175
200
  {
176
201
  action: :delete_file,
202
+ played: false,
177
203
  file: file,
178
204
  opts: opts
179
205
  }
@@ -241,9 +267,10 @@ module KBuilder
241
267
  end
242
268
  alias clipboard_copy add_clipboard
243
269
 
244
- def vscode_command(*file_parts, folder_key: current_folder_key, file: nil)
270
+ def vscode_action(*file_parts, folder_key: current_folder_key, file: nil)
245
271
  {
246
272
  action: :vscode,
273
+ played: false,
247
274
  file_parts: file_parts,
248
275
  opts: { folder_key: folder_key, file: file }
249
276
  }
@@ -258,9 +285,10 @@ module KBuilder
258
285
  self
259
286
  end
260
287
 
261
- def browse_command(*file_parts, folder_key: current_folder_key, file: nil)
288
+ def browse_action(*file_parts, folder_key: current_folder_key, file: nil)
262
289
  {
263
290
  action: :browse,
291
+ played: false,
264
292
  file_parts: file_parts,
265
293
  opts: { folder_key: folder_key, file: file }
266
294
  }
@@ -330,6 +358,14 @@ module KBuilder
330
358
  # Target folders and files
331
359
  # ----------------------------------------------------------------------
332
360
 
361
+ def set_current_folder_action(folder_key)
362
+ {
363
+ action: :set_current_folder,
364
+ played: false,
365
+ folder_key: folder_key
366
+ }
367
+ end
368
+
333
369
  def set_current_folder(folder_key)
334
370
  target_folders.current = folder_key
335
371
 
@@ -503,9 +539,49 @@ module KBuilder
503
539
  # need to support the fork process options as I was not able to run
504
540
  # k_builder_watch -n because it hid all the following output
505
541
  system(build_command)
542
+
543
+ # FROM k_dsl
544
+ # system "/usr/local/bin/zsh #{output_file}" if execution_context == :system
545
+ # fork { exec("/usr/local/bin/zsh #{output_file}") } if execution_context == :fork
506
546
  end
507
547
  alias rc run_command
508
548
 
549
+ def run_command_action(command)
550
+ {
551
+ action: :run_command,
552
+ played: false,
553
+ command: command
554
+ }
555
+ end
556
+
557
+ # NOT TESTED, and not working with opts, this code needs rewrite
558
+ def run_script(script)
559
+ # Deep path create if needed
560
+ tf = target_folder
561
+
562
+ mkdir_p(tf)
563
+
564
+ Dir.chdir(tf) do
565
+ output, status = Open3.capture2(script) # , **opts)
566
+
567
+ unless status.success?
568
+ log.error('Script failed')
569
+ puts script
570
+ return nil
571
+ end
572
+
573
+ return output
574
+ end
575
+ end
576
+
577
+ def run_script_action(script)
578
+ {
579
+ action: :run_script,
580
+ played: false,
581
+ script: script
582
+ }
583
+ end
584
+
509
585
  def file_write(file, content, on_exist: :skip)
510
586
  self.last_output_file = file # if file not found, we still want to record this as the last_output_file
511
587
 
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Attach configuration to the KBuilder module
4
+ module KBuilder
5
+ module ConfigurationExtension
6
+ # Target folders provide a set of named folders that can be written to
7
+ def target_folders=(value)
8
+ @target_folders = value
9
+ end
10
+
11
+ def target_folders
12
+ @target_folders ||= KType::NamedFolders.new
13
+ end
14
+
15
+ # Template folders provides layered folders that templates can exist within
16
+ def template_folders=(value)
17
+ @template_folders = value
18
+ end
19
+
20
+ def template_folders
21
+ @template_folders ||= KType::LayeredFolders.new
22
+ end
23
+
24
+ # Custom debug method for k_builder
25
+ #
26
+ # usage:
27
+ # config.debug(:k_builder_debug)
28
+ def k_builder_debug
29
+ target_folders.debug(title: 'target_folders')
30
+
31
+ template_folders.debug(title: 'template folders (search order)')
32
+ ''
33
+ end
34
+
35
+ # Custom initialize_copy method for k_builder. This is called during clone
36
+ def k_builder_initialize_copy(orig)
37
+ @target_folders = orig.target_folders.clone
38
+ @template_folders = orig.template_folders.clone
39
+ end
40
+ end
41
+ end
42
+
43
+ puts 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
44
+ KConfig::Configuration.register(:k_builder, KBuilder::ConfigurationExtension)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KBuilder
4
- VERSION = '0.0.68'
4
+ VERSION = '0.0.73'
5
5
  end
data/lib/k_builder.rb CHANGED
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rubocop'
4
+ require 'open3'
4
5
 
6
+ require 'k_config'
5
7
  require 'k_log'
6
8
  require 'k_util'
7
9
  require 'k_type'
8
10
  require 'k_builder/version'
9
11
  require 'k_builder/base_builder'
10
- require 'k_builder/base_configuration'
11
- require 'k_builder/configuration'
12
+ require 'k_builder/configuration_extension'
12
13
  require 'k_builder/file_segments'
13
14
 
14
15
  # should commands be in their own gem?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.68
4
+ version: 0.0.73
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-06 00:00:00.000000000 Z
11
+ date: 2022-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: handlebars-helpers
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: k_config
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: k_log
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -103,6 +117,7 @@ files:
103
117
  - Sample.drawio
104
118
  - Sample.xml
105
119
  - USAGE.md
120
+ - a.txt
106
121
  - bin/console
107
122
  - bin/k
108
123
  - bin/kgitsync
@@ -112,17 +127,11 @@ files:
112
127
  - hooks/update-version
113
128
  - k_builder.gemspec
114
129
  - lib/k_builder.rb
115
- - lib/k_builder/assets/a.html
116
- - lib/k_builder/assets/b.html
117
- - lib/k_builder/assets/highlight.min.js
118
- - lib/k_builder/assets/highlight_css
119
- - lib/k_builder/assets/ruby.min.js
120
130
  - lib/k_builder/base_builder.rb
121
- - lib/k_builder/base_configuration.rb
122
131
  - lib/k_builder/commands/base_command.rb
123
132
  - lib/k_builder/commands/code_syntax_highlighter_command.rb
124
133
  - lib/k_builder/commands/rubo_cop_command.rb
125
- - lib/k_builder/configuration.rb
134
+ - lib/k_builder/configuration_extension.rb
126
135
  - lib/k_builder/file_segments.rb
127
136
  - lib/k_builder/version.rb
128
137
  - usage/_out1.png
@@ -139,6 +148,7 @@ metadata:
139
148
  homepage_uri: http://appydave.com
140
149
  source_code_uri: https://github.com/klueless-io/k_builder
141
150
  changelog_uri: https://github.com/klueless-io/k_builder/commits/master
151
+ rubygems_mfa_required: 'true'
142
152
  post_install_message:
143
153
  rdoc_options: []
144
154
  require_paths:
@@ -1,235 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>David</title>
8
- <script src="highlight.min.js"></script>
9
- <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.0.1/styles/default.min.css"> -->
10
- <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js"></script>
11
- <script src="//cdn.jsdelivr.net/gh/TRSasasusu/highlightjs-highlight-lines.js@1.1.6/highlightjs-highlight-lines.min.js"></script>
12
- <script src="//cdn.jsdelivr.net/npm/highlightjs-line-numbers.js@2.8.0/dist/highlightjs-line-numbers.min.js"></script>
13
-
14
- <link rel="stylesheet" href="highlight_css/a11y-light.css">
15
-
16
- <style>
17
- pre > code {
18
- font-family: "Sans Mono", "Consolas", "Courier", monospace;
19
- }
20
-
21
-
22
- /*
23
- color: white; */
24
-
25
- .animated-box {
26
- font-family: 'Lato';
27
- color: #ffffff;
28
- padding: 30px;
29
- text-align: center;
30
- border-radius: 4px;
31
- }
32
-
33
- .animated-box {
34
- position: relative;
35
- }
36
-
37
- .animated-box:after {
38
- content: '';
39
- position: absolute;
40
- top: 0;
41
- left: 0;
42
- right: 0;
43
- bottom: 0;
44
- border-radius: 4px;
45
- background: linear-gradient(120deg, #00F260, #0575E6, #00F260);
46
- background-size: 300% 300%;
47
- clip-path: polygon(0% 100%, 3px 100%, 3px 3px, calc(100% - 3px) 3px, calc(100% - 3px) calc(100% - 3px), 3px calc(100% - 3px), 3px 100%, 100% 100%, 100% 0%, 0% 0%);
48
- }
49
-
50
- .animated-box.in:after {
51
- animation: frame-enter 1s forwards ease-in-out reverse, gradient-animation 4s ease-in-out infinite;
52
- }
53
-
54
- #box {
55
- position: absolute;
56
- top: 170px;
57
- left: 70px;
58
- width: 600px;
59
- height: 465px;
60
- display: flex;
61
- align-items: center;
62
- justify-content: center;
63
- color: white;
64
- font-family: 'Raleway';
65
- font-size: 2.5rem;
66
- /* background-color: rgba(255,255,225,0); */
67
- }
68
-
69
- .with-linear-gradient {
70
- --borderWidth: 13px;
71
- background: transparent;
72
- position: relative;
73
- border-radius: var(--borderWidth);
74
- }
75
- .with-linear-gradient:after {
76
- content: '';
77
- position: absolute;
78
- top: calc(-1 * var(--borderWidth));
79
- left: calc(-1 * var(--borderWidth));
80
- height: calc(100% + var(--borderWidth) * 2);
81
- width: calc(100% + var(--borderWidth) * 2);
82
- border-radius: calc(2 * var(--borderWidth));
83
- background: linear-gradient(60deg, #f79533, #f37055, #ef4e7b, #a166ab, #5073b8);
84
- z-index: -1;
85
- animation: animatedgradient 3s ease alternate infinite;
86
- background-size: 300% 300%;
87
- }
88
- .animated-box {
89
- position: relative;
90
- }
91
-
92
- .animated-box:after {
93
- content: '';
94
- position: absolute;
95
- top: 0;
96
- left: 0;
97
- right: 0;
98
- bottom: 0;
99
- border-radius: 4px;
100
- background: linear-gradient(120deg, #00F260, #0575E6, #00F260);
101
- background-size: 300% 300%;
102
- clip-path: polygon(0% 100%, 3px 100%, 3px 3px, calc(100% - 3px) 3px, calc(100% - 3px) calc(100% - 3px), 3px calc(100% - 3px), 3px 100%, 100% 100%, 100% 0%, 0% 0%);
103
- }
104
-
105
- .animated-box.in:after {
106
- animation: frame-enter 1s forwards ease-in-out reverse, gradient-animation 4s ease-in-out infinite;
107
- }
108
-
109
-
110
- @keyframes animatedgradient {
111
- 0% {
112
- background-position: 0% 50%;
113
- }
114
- 50% {
115
- background-position: 100% 50%;
116
- }
117
- 100% {
118
- background-position: 0% 50%;
119
- }
120
- }
121
-
122
- */
123
- /* for block of numbers */
124
- .hljs-ln-numbers {
125
- -webkit-touch-callout: none;
126
- -webkit-user-select: none;
127
- -khtml-user-select: none;
128
- -moz-user-select: none;
129
- -ms-user-select: none;
130
- user-select: none;
131
-
132
- text-align: center;
133
- color: #ccc;
134
- border-right: 1px solid #CCC;
135
- vertical-align: top;
136
- padding-right: 5px;
137
-
138
- /* your custom style here */
139
- }
140
-
141
- /* for block of code */
142
- .hljs-ln-code {
143
- padding-left: 100px;
144
- }
145
-
146
- .borderexample {
147
- border-style:solid;
148
- border-color:#287EC7;
149
- }
150
- </style>
151
- </head>
152
- <body>
153
-
154
-
155
-
156
- <div id="myBlock">
157
- <pre><code class="ruby">
158
- # frozen_string_literal: true
159
-
160
- module KBuilder
161
- module Commands
162
- # Base command for single responsibility actions that can be fired
163
- # from methods in the builder.
164
- #
165
- # Uses the command pattern
166
- class BaseCommand
167
- include KLog::Logging
168
-
169
- attr_accessor :builder
170
- attr_accessor :valid
171
-
172
- def initialize(**opts)
173
- @builder = opts[:builder]
174
- @valid = true
175
- end
176
-
177
- def guard(message)
178
- # THIS SHOULD ONLY LOG IF DEBUGGING IS TURNED ON
179
- log.error(message)
180
- @valid = false
181
- end
182
-
183
- def valid?
184
- @valid
185
- end
186
-
187
- def debug(title: nil)
188
- log.section_heading(title) if title
189
- debug_values if respond_to?(:debug_values)
190
- end
191
- end
192
- end
193
- end
194
- </code></pre>
195
- are go
196
- <a id='x' href="" download="name.jpg"></a>
197
-
198
- <div id='box' class='animated-box in' xclass="with-linear-gradient">
199
-
200
- </div>
201
- </body>
202
- <script>hljs.highlightAll();</script>
203
-
204
- <button onclick="takeshot()">
205
- Take Screenshot
206
- </button>
207
-
208
- <div id="output"></div>
209
-
210
- <script>
211
-
212
- const screenshotTarget = document.getElementById('myBlock');
213
-
214
- let div = document.getElementById('myBlock');
215
-
216
- setTimeout(function(){
217
-
218
- html2canvas(div).then(
219
- function (canvas) {
220
- document
221
- .getElementById('output')
222
- .appendChild(canvas);
223
- });
224
-
225
- }, 1000);
226
-
227
- hljs.initHighlightingOnLoad();
228
- hljs.initLineNumbersOnLoad();
229
- hljs.initHighlightLinesOnLoad([
230
- [{start: 1, end: 3, color: '#555'}, {start: 6, end: 6, color: 'yellow'},], // Highlight some lines in the first code block.
231
- [{start: 2, end: 3, color: 'rgba(255, 255, 255, 0.2)'},], // Highlight some lines in the second code block.
232
- ]);
233
-
234
- </script>
235
- </html>