k_builder-watch 0.0.16 → 0.0.19
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/Gemfile +14 -12
- data/ToDo.md +67 -0
- data/bin/run +11 -7
- data/exe/k_builder-watch +11 -7
- data/k_builder-watch.gemspec +9 -6
- data/lib/k_builder/watch.rb +15 -2
- data/lib/k_builder/watch/action_display_debug.rb +18 -0
- data/lib/k_builder/watch/action_display_help.rb +33 -0
- data/lib/k_builder/watch/action_new_builder.rb +25 -0
- data/lib/k_builder/watch/{watcher.rb → action_watcher.rb} +5 -7
- data/lib/k_builder/watch/base_action.rb +18 -0
- data/lib/k_builder/watch/cli.rb +63 -134
- data/lib/k_builder/watch/cli_options.rb +83 -0
- data/lib/k_builder/watch/execute.rb +58 -0
- data/lib/k_builder/watch/new_builder.rb +20 -0
- data/lib/k_builder/watch/version.rb +1 -1
- metadata +11 -87
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3a7de38baf2fb6e2dc1f58929dadecda1ac13514c8f6c54332162d69b92c780
|
4
|
+
data.tar.gz: 51e43285707bbfeeb5b6e6ce77adeec64189f6159741748a022beb208f43a90c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ae83a327a996d4f3c5441adaff2f5317d59be9be72e86d0035d80b4a88118b73aaa2f10bb71d6952993bbb4dee9fa3d5f69a4693db7806d9cf4bebf0e9c3101
|
7
|
+
data.tar.gz: a99b08bb6a0a21021b8ae3083c7049faa56541d0be4863d0622fb26c4da9fe448f808f382bef3aab0417d40da312c7210c8dfcdf7c94038110553c4f25fea7f7
|
data/Gemfile
CHANGED
@@ -24,15 +24,17 @@ group :development, :test do
|
|
24
24
|
gem 'rubocop-rspec', require: false
|
25
25
|
end
|
26
26
|
|
27
|
-
#
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
27
|
+
# If local dependency
|
28
|
+
if ENV['KLUE_LOCAL_GEMS']&.to_s&.downcase == 'true'
|
29
|
+
group :development, :test do
|
30
|
+
puts 'Using Local GEMs'
|
31
|
+
gem 'handlebars-helpers' , path: '../handlebars-helpers'
|
32
|
+
gem 'k_builder' , path: '../k_builder'
|
33
|
+
gem 'k_builder-dotnet' , path: '../k_builder-dotnet'
|
34
|
+
gem 'k_builder-package_json' , path: '../k_builder-package_json'
|
35
|
+
gem 'k_builder-webpack5' , path: '../k_builder-webpack5'
|
36
|
+
gem 'k_doc' , path: '../k_doc'
|
37
|
+
gem 'k_log' , path: '../k_log'
|
38
|
+
gem 'k_util' , path: '../k_util'
|
39
|
+
end
|
40
|
+
end
|
data/ToDo.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# ToDo today
|
2
|
+
|
3
|
+
- Watch
|
4
|
+
- CLI - Unit Test
|
5
|
+
- Add create new builder
|
6
|
+
- Touch and code for now
|
7
|
+
- Later on it can create from template
|
8
|
+
|
9
|
+
- domains: KafeOwner.com (KafeManager.com)
|
10
|
+
- New csharp solution
|
11
|
+
- KafeOwner
|
12
|
+
- kw -t csharp -n KafeOwner
|
13
|
+
- Creates a folder called KafeOwner and then a folder called .builders
|
14
|
+
- kw -n csharp
|
15
|
+
- Creates a folder called .builders and touches setup.rb
|
16
|
+
|
17
|
+
- 11:30 Go see Ken (Move Car)
|
18
|
+
- 2pm Go See Angus
|
19
|
+
- Take some receipts
|
20
|
+
- 12pm Go to Council and get a new permit
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
Tonight:
|
25
|
+
|
26
|
+
- GPT3 Experiments across the cafe segmentation's
|
27
|
+
- CLI - Unit Test
|
28
|
+
|
29
|
+
- Call Chris
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
I figured out the issue was environmental and that got me looking up a line of code that was generated automatically in the `bin/console` file in my GEM.
|
40
|
+
|
41
|
+
The line of code was `require 'bundler/setup'` which I had often seen but never understood it's purpose [Bundler Setup](https://bundler.io/guides/bundler_setup.html).
|
42
|
+
|
43
|
+
I added that line of code to my `exe/k_builder-watch` file and now the local GEM dependencies are being loaded via the Gemfile.
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
#!/usr/bin/env ruby
|
47
|
+
|
48
|
+
# frozen_string_literal: true
|
49
|
+
|
50
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../lib'))
|
51
|
+
|
52
|
+
# LINE to ADD
|
53
|
+
require 'bundler/setup' # <-- ADD THIS LINE
|
54
|
+
|
55
|
+
require 'k_builder/watch'
|
56
|
+
|
57
|
+
cli = KBuilder::Watch::Cli.new
|
58
|
+
cli.execute
|
59
|
+
|
60
|
+
watcher = KBuilder::Watch::Watcher.new(cli.watch_path)
|
61
|
+
watcher.start
|
62
|
+
```
|
63
|
+
|
64
|
+
[![Local Dependencies][1]][1]
|
65
|
+
|
66
|
+
|
67
|
+
[1]: https://i.stack.imgur.com/KQeAb.png
|
data/bin/run
CHANGED
@@ -2,14 +2,18 @@
|
|
2
2
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
|
5
|
-
|
5
|
+
require 'pry'
|
6
6
|
|
7
|
-
|
7
|
+
lib_path = File.expand_path(File.join(File.dirname(__FILE__), '../lib'))
|
8
|
+
gem_path = File.expand_path(File.join(File.dirname(__FILE__), '../Gemfile'))
|
9
|
+
|
10
|
+
$LOAD_PATH.unshift(lib_path)
|
8
11
|
|
9
|
-
|
12
|
+
ENV['BUNDLE_GEMFILE'] = gem_path
|
13
|
+
|
14
|
+
require 'bundler/setup'
|
15
|
+
require 'k_builder/watch'
|
10
16
|
|
11
|
-
|
12
|
-
cli.execute
|
17
|
+
options = KBuilder::Watch::Cli.parse_options
|
13
18
|
|
14
|
-
|
15
|
-
watcher.start
|
19
|
+
KBuilder::Watch::Execute.new(options).run
|
data/exe/k_builder-watch
CHANGED
@@ -2,14 +2,18 @@
|
|
2
2
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
|
5
|
-
|
5
|
+
require 'pry'
|
6
6
|
|
7
|
+
lib_path = File.expand_path(File.join(File.dirname(__FILE__), '../lib'))
|
8
|
+
gem_path = File.expand_path(File.join(File.dirname(__FILE__), '../Gemfile'))
|
9
|
+
|
10
|
+
$LOAD_PATH.unshift(lib_path)
|
11
|
+
|
12
|
+
ENV['BUNDLE_GEMFILE'] = gem_path
|
13
|
+
|
14
|
+
require 'bundler/setup'
|
7
15
|
require 'k_builder/watch'
|
8
|
-
puts 'yyyyyyyyyyy'
|
9
|
-
# directory = '/Users/davidcruwys/dev/c#/P04DomainMonopolyV1'
|
10
16
|
|
11
|
-
|
12
|
-
cli.execute
|
17
|
+
options = KBuilder::Watch::Cli.parse_options
|
13
18
|
|
14
|
-
|
15
|
-
watcher.start
|
19
|
+
KBuilder::Watch::Execute.new(options).run
|
data/k_builder-watch.gemspec
CHANGED
@@ -39,10 +39,13 @@ Gem::Specification.new do |spec|
|
|
39
39
|
# spec.extensions = ['ext/k_builder/watch/extconf.rb']
|
40
40
|
|
41
41
|
spec.add_dependency 'filewatcher', '~> 2.0.0.beta3'
|
42
|
-
|
43
|
-
spec.add_dependency '
|
44
|
-
spec.add_dependency 'k_builder
|
45
|
-
spec.add_dependency '
|
46
|
-
spec.add_dependency '
|
47
|
-
spec.add_dependency '
|
42
|
+
|
43
|
+
# spec.add_dependency 'handlebars-helpers', '~> 0.0'
|
44
|
+
# spec.add_dependency 'k_builder', '~> 0.0'
|
45
|
+
# spec.add_dependency 'k_builder-dotnet', '~> 0.0'
|
46
|
+
# spec.add_dependency 'k_builder-package_json', '~> 0.0'
|
47
|
+
# spec.add_dependency 'k_builder-webpack5', '~> 0.0'
|
48
|
+
# spec.add_dependency 'k_doc', '~> 0.0'
|
49
|
+
# spec.add_dependency 'k_log', '~> 0.0'
|
50
|
+
# spec.add_dependency 'k_util', '~> 0.0'
|
48
51
|
end
|
data/lib/k_builder/watch.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'handlebars/helpers'
|
4
|
+
|
3
5
|
require 'k_doc'
|
4
6
|
require 'k_util'
|
5
7
|
require 'k_log'
|
@@ -10,7 +12,13 @@ require 'k_builder/webpack5'
|
|
10
12
|
|
11
13
|
require 'k_builder/watch/version'
|
12
14
|
require 'k_builder/watch/cli'
|
13
|
-
require 'k_builder/watch/
|
15
|
+
require 'k_builder/watch/cli_options'
|
16
|
+
require 'k_builder/watch/base_action'
|
17
|
+
require 'k_builder/watch/action_display_help'
|
18
|
+
require 'k_builder/watch/action_display_debug'
|
19
|
+
require 'k_builder/watch/action_new_builder'
|
20
|
+
require 'k_builder/watch/action_watcher'
|
21
|
+
require 'k_builder/watch/execute'
|
14
22
|
|
15
23
|
module KBuilder
|
16
24
|
module Watch
|
@@ -19,4 +27,9 @@ module KBuilder
|
|
19
27
|
end
|
20
28
|
end
|
21
29
|
|
22
|
-
|
30
|
+
if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
|
31
|
+
namespace = 'KBuilder::Watch::Version'
|
32
|
+
file_path = $LOADED_FEATURES.find { |f| f.include?('k_builder/watch/version') }
|
33
|
+
version = KBuilder::Watch::VERSION.ljust(9)
|
34
|
+
puts "#{namespace.ljust(40)} : #{version.ljust(9)} : #{file_path}"
|
35
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
require 'k_builder'
|
5
|
+
require 'json'
|
6
|
+
require 'getoptlong'
|
7
|
+
require 'forwardable'
|
8
|
+
|
9
|
+
module KBuilder
|
10
|
+
module Watch
|
11
|
+
# Action for displaying CLI debug options
|
12
|
+
class ActionDisplayDebug < KBuilder::Watch::BaseAction
|
13
|
+
def run
|
14
|
+
puts JSON.pretty_generate(@options.to_h)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
require 'k_builder'
|
5
|
+
require 'json'
|
6
|
+
require 'getoptlong'
|
7
|
+
require 'forwardable'
|
8
|
+
|
9
|
+
module KBuilder
|
10
|
+
module Watch
|
11
|
+
# Action for displaying CLI help
|
12
|
+
class ActionDisplayHelp < KBuilder::Watch::BaseAction
|
13
|
+
def run
|
14
|
+
puts 'HELP: k_watcher [OPTION] ... DIR'
|
15
|
+
puts ''
|
16
|
+
puts ' -h, --help: - show help'
|
17
|
+
puts ' --debug - display debug options'
|
18
|
+
puts ' -n, --new [folder_name] - create a new .builders folder with setup file, optionally create it under the [FolderName]'
|
19
|
+
puts ''
|
20
|
+
puts ' DIR: - The directory to watch, will default to current directory "."'
|
21
|
+
puts ''
|
22
|
+
puts 'examples'
|
23
|
+
puts ''
|
24
|
+
puts 'Get Help - k_watcher -h'
|
25
|
+
puts 'Debug - k_watcher --debug'
|
26
|
+
puts 'New builder project (./.builders) - k_watcher -n'
|
27
|
+
puts 'New builder project (./HelloWorld/.builders) - k_watcher -n HelloWorld'
|
28
|
+
puts 'Watch current folder (.) - k_watcher'
|
29
|
+
puts 'Watch the subfolder (.builders) - k_watcher .builders'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
require 'k_builder'
|
5
|
+
require 'json'
|
6
|
+
require 'getoptlong'
|
7
|
+
require 'forwardable'
|
8
|
+
|
9
|
+
module KBuilder
|
10
|
+
module Watch
|
11
|
+
# Action for creating a new app with .builders
|
12
|
+
class ActionNewBuilder < KBuilder::Watch::BaseAction
|
13
|
+
def run
|
14
|
+
setup_file = File.join(options.new_watch_path, 'setup.rb')
|
15
|
+
config_file = File.join(options.new_watch_path, 'config', '_.rb')
|
16
|
+
|
17
|
+
FileUtils.mkdir_p(File.dirname(config_file))
|
18
|
+
File.write(setup_file, "require 'config/_'") unless File.exist?(setup_file)
|
19
|
+
File.write(config_file, "puts '_'\n\n#require 'config/_initialize'") unless File.exist?(config_file)
|
20
|
+
|
21
|
+
system("code #{File.join(options.new_app_path, '.')}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -10,18 +10,16 @@ module KBuilder
|
|
10
10
|
# Watch supports any watch and execute processes for builders
|
11
11
|
module Watch
|
12
12
|
# Watcher does the actual file watching and run the processor
|
13
|
-
class
|
13
|
+
class ActionWatcher < KBuilder::Watch::BaseAction
|
14
14
|
attr_accessor :directory
|
15
15
|
|
16
|
-
def
|
17
|
-
@directory =
|
16
|
+
def run
|
17
|
+
@directory = options.watch_path
|
18
|
+
start
|
18
19
|
end
|
19
20
|
|
20
|
-
# May need some sort of pattern filters
|
21
|
-
# watch_file = File.join(directory, 'DOMAIN_INSTRUCTIONS.MD')
|
22
|
-
|
23
21
|
def start
|
24
|
-
clear_screen
|
22
|
+
# clear_screen
|
25
23
|
puts "KBuilder-Watch: v#{KBuilder::Watch::VERSION} is watching for file changes"
|
26
24
|
puts "Directory: #{directory}"
|
27
25
|
# puts "Watch File: #{watch_file}"
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KBuilder
|
4
|
+
module Watch
|
5
|
+
# Base Action
|
6
|
+
class BaseAction
|
7
|
+
attr_accessor :options
|
8
|
+
|
9
|
+
def initialize(options)
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
raise KBuilder::Watch::Error, 'Descendants of BaseAction must implement the run method'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/k_builder/watch/cli.rb
CHANGED
@@ -4,176 +4,105 @@ require 'pry'
|
|
4
4
|
require 'k_builder'
|
5
5
|
require 'json'
|
6
6
|
require 'getoptlong'
|
7
|
+
require 'forwardable'
|
7
8
|
|
8
9
|
module KBuilder
|
9
10
|
module Watch
|
10
11
|
# Command line interface for starting the watcher
|
11
12
|
class Cli
|
12
|
-
|
13
|
-
|
14
|
-
attr_accessor :
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
attr_accessor :help
|
13
|
+
extend Forwardable
|
14
|
+
|
15
|
+
attr_accessor :opts
|
16
|
+
|
17
|
+
def_delegators :opts, :base_path, :debug?, :help?, :new?
|
18
|
+
# :base_path,
|
19
|
+
# :watch_path_arg,
|
20
|
+
# :new_watch_path,
|
21
|
+
# :new_arg,
|
22
|
+
# :new_app_path,
|
23
|
+
# :watch_path
|
24
24
|
|
25
25
|
def initialize
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
@watch_path = nil
|
31
|
-
@base_path = Dir.pwd
|
32
|
-
@path_relative = nil # '.'
|
33
|
-
@path = nil
|
34
|
-
@app_path = nil
|
35
|
-
@new_path = nil
|
36
|
-
@new_path_relative = nil
|
37
|
-
@new = nil
|
26
|
+
@opts = KBuilder::Watch::CliOptions.new
|
27
|
+
|
28
|
+
process_arguments
|
29
|
+
end
|
38
30
|
|
31
|
+
def self.parse_options
|
32
|
+
new.opts
|
33
|
+
end
|
34
|
+
|
35
|
+
def process_arguments
|
39
36
|
parse_arguments
|
40
|
-
|
37
|
+
|
38
|
+
set_watch_path_arg
|
39
|
+
set_watch_path
|
41
40
|
end
|
42
41
|
|
43
42
|
def options
|
44
|
-
# ['--repeat' , '-r', GetoptLong::REQUIRED_ARGUMENT],
|
45
43
|
GetoptLong.new(
|
46
|
-
['--help'
|
47
|
-
['--debug'
|
48
|
-
['--new'
|
44
|
+
['--help' , '-h', GetoptLong::NO_ARGUMENT],
|
45
|
+
['--debug' , GetoptLong::NO_ARGUMENT],
|
46
|
+
['--new' , '-n', GetoptLong::OPTIONAL_ARGUMENT]
|
49
47
|
)
|
50
48
|
end
|
51
49
|
|
52
|
-
def post_process_arguments
|
53
|
-
set_watch_path
|
54
|
-
end
|
55
|
-
|
56
50
|
def parse_arguments
|
57
|
-
# bin/run -l -r 2 --name -- spec/samples
|
58
51
|
options.each do |opt, arg|
|
59
|
-
|
52
|
+
# Arguments like -nKafeOwner and -n KafeOwner should both become 'KafeOwner'
|
53
|
+
parse_option(opt, arg.strip)
|
60
54
|
end
|
61
|
-
|
62
|
-
parse_final_argument
|
63
55
|
end
|
64
56
|
|
65
|
-
def
|
66
|
-
|
67
|
-
# puts 'Missing dir argument (try --help)'
|
68
|
-
# exit 0
|
69
|
-
# end
|
70
|
-
|
71
|
-
@path_relative = if ARGV.length == 1
|
72
|
-
ARGV.shift
|
73
|
-
else
|
74
|
-
'.'
|
75
|
-
end
|
76
|
-
|
77
|
-
return unless @path.nil?
|
78
|
-
|
79
|
-
@path = File.join(base_path, path_relative)
|
57
|
+
def to_h
|
58
|
+
@opts.to_h
|
80
59
|
end
|
81
60
|
|
61
|
+
private
|
62
|
+
|
63
|
+
# rubocop:disable Metrics/AbcSize
|
82
64
|
def parse_option(opt, arg)
|
83
65
|
case opt
|
84
66
|
when '--help'
|
85
|
-
@help = true
|
67
|
+
@opts.help = true
|
86
68
|
when '--debug'
|
87
|
-
@debug = true
|
88
|
-
# when '--repeat'
|
89
|
-
# @repetitions = arg.to_i
|
69
|
+
@opts.debug = true
|
90
70
|
when '--new'
|
91
|
-
|
92
|
-
@new = arg
|
93
|
-
@app_path = File.join(base_path, arg)
|
94
|
-
@new_path_relative = arg == '' ? '.builders' : File.join(arg.to_s, '.builders')
|
95
|
-
@new_path = File.join(base_path, @new_path_relative)
|
96
|
-
@path = @new_path_relative
|
71
|
+
parse_new_option(arg)
|
97
72
|
end
|
98
73
|
end
|
99
74
|
|
100
|
-
def
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
# print ", #{name}"
|
110
|
-
# end
|
111
|
-
# puts
|
112
|
-
# end
|
113
|
-
end
|
114
|
-
|
115
|
-
def new_builder
|
116
|
-
setup_file = File.join(new_path, 'setup.rb')
|
117
|
-
config_file = File.join(new_path, 'config', '_.rb')
|
118
|
-
|
119
|
-
FileUtils.mkdir_p(File.dirname(config_file))
|
120
|
-
File.write(setup_file, "require 'config/_'") unless File.exist?(setup_file)
|
121
|
-
File.write(config_file, "puts '_'\n\n#require 'config/_initialize'") unless File.exist?(config_file)
|
122
|
-
|
123
|
-
system("code #{File.join(app_path, '.')}")
|
124
|
-
end
|
125
|
-
|
126
|
-
def display_help
|
127
|
-
puts 'HELP: k_watcher [OPTION] ... DIR'
|
128
|
-
puts ''
|
129
|
-
puts ' -h, --help: - show help'
|
130
|
-
puts ' --debug - display debug options'
|
131
|
-
puts ' -n, --new [folder_name] - create a new .builders folder with setup file, optionally create it under the [FolderName]'
|
132
|
-
puts ''
|
133
|
-
puts ' DIR: - The directory to watch, will default to current directory "."'
|
134
|
-
puts ''
|
135
|
-
puts 'examples'
|
136
|
-
puts ''
|
137
|
-
puts 'Get Help - k_watcher -h'
|
138
|
-
puts 'Debug - k_watcher --debug'
|
139
|
-
puts 'New builder project (./.builders) - k_watcher -n'
|
140
|
-
puts 'New builder project (./HelloWorld/.builders) - k_watcher -n HelloWorld'
|
141
|
-
puts 'Watch current folder (.) - k_watcher'
|
142
|
-
puts 'Watch the subfolder (.builders) - k_watcher .builders'
|
143
|
-
|
144
|
-
exit
|
75
|
+
def parse_new_option(arg)
|
76
|
+
@opts.new_arg = arg.to_s
|
77
|
+
if @opts.new_arg == ''
|
78
|
+
@opts.new_app_path = @opts.base_path
|
79
|
+
@opts.new_watch_path = File.join(@opts.base_path, '.builders')
|
80
|
+
else
|
81
|
+
@opts.new_app_path = File.join(@opts.base_path, @opts.new_arg)
|
82
|
+
@opts.new_watch_path = File.join(@opts.base_path, @opts.new_arg, '.builders')
|
83
|
+
end
|
145
84
|
end
|
85
|
+
# rubocop:enable Metrics/AbcSize
|
146
86
|
|
147
|
-
def
|
148
|
-
|
149
|
-
|
150
|
-
|
87
|
+
def set_watch_path
|
88
|
+
if new?
|
89
|
+
@opts.watch_path = @opts.new_watch_path
|
90
|
+
return
|
91
|
+
end
|
151
92
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
app_path: app_path,
|
158
|
-
base_path: base_path,
|
159
|
-
path_relative: path_relative,
|
160
|
-
watch_path: watch_path,
|
161
|
-
new_path: new_path,
|
162
|
-
new_path_relative: new_path_relative,
|
163
|
-
new: new
|
164
|
-
}
|
93
|
+
@opts.watch_path = if KUtil.file.home_or_absolute?(@opts.watch_path_arg)
|
94
|
+
File.expand_path(@opts.watch_path_arg)
|
95
|
+
else
|
96
|
+
File.absolute_path(@opts.watch_path_arg, @opts.base_path)
|
97
|
+
end
|
165
98
|
end
|
166
99
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
File.expand_path(path)
|
174
|
-
else
|
175
|
-
File.absolute_path(path, base_path)
|
176
|
-
end
|
100
|
+
def set_watch_path_arg
|
101
|
+
@opts.watch_path_arg = if ARGV.length == 1
|
102
|
+
ARGV.shift
|
103
|
+
else
|
104
|
+
'.'
|
105
|
+
end
|
177
106
|
end
|
178
107
|
end
|
179
108
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
require 'k_builder'
|
5
|
+
require 'json'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
module KBuilder
|
9
|
+
module Watch
|
10
|
+
# List of and options paths that are relevant to the KBuilder::Watch::Cli
|
11
|
+
class CliOptions
|
12
|
+
# This is the path that the watcher was started from.
|
13
|
+
# It is the default base path that other paths are relative to.
|
14
|
+
#
|
15
|
+
# Note: it is not used when paths are supplied in absolute form
|
16
|
+
attr_accessor :base_path
|
17
|
+
# attr_accessor :path
|
18
|
+
|
19
|
+
# What watch_path argument is passed in for watching
|
20
|
+
#
|
21
|
+
# This attribute will be help to build :watch_path
|
22
|
+
#
|
23
|
+
# A relative path will be relative to base_path
|
24
|
+
# An absolute path is used as is
|
25
|
+
# A home path is used as is
|
26
|
+
attr_accessor :watch_path_arg
|
27
|
+
attr_accessor :watch_path
|
28
|
+
|
29
|
+
# What :new_arg is passed in for creating a new application with
|
30
|
+
# with .builder watch capability
|
31
|
+
attr_accessor :new_arg
|
32
|
+
|
33
|
+
# Path to where the application will reside
|
34
|
+
attr_accessor :new_app_path
|
35
|
+
|
36
|
+
# Path to where the .builder files will reside
|
37
|
+
attr_accessor :new_watch_path
|
38
|
+
|
39
|
+
attr_accessor :debug
|
40
|
+
attr_accessor :help
|
41
|
+
|
42
|
+
def initialize
|
43
|
+
@base_path = Dir.pwd
|
44
|
+
|
45
|
+
@watch_path_arg = nil
|
46
|
+
@watch_path = nil
|
47
|
+
|
48
|
+
@new_arg = nil
|
49
|
+
@new_app_path = nil
|
50
|
+
@new_watch_path = nil
|
51
|
+
|
52
|
+
@debug = false
|
53
|
+
@help = false
|
54
|
+
end
|
55
|
+
|
56
|
+
def help?
|
57
|
+
!!@help
|
58
|
+
end
|
59
|
+
|
60
|
+
def debug?
|
61
|
+
!!@debug
|
62
|
+
end
|
63
|
+
|
64
|
+
def new?
|
65
|
+
!!@new_arg
|
66
|
+
end
|
67
|
+
|
68
|
+
def to_h
|
69
|
+
{
|
70
|
+
debug: debug?,
|
71
|
+
help: help?,
|
72
|
+
new: new?,
|
73
|
+
base_path: base_path,
|
74
|
+
watch_path_arg: watch_path_arg,
|
75
|
+
watch_path: watch_path,
|
76
|
+
new_arg: new_arg,
|
77
|
+
new_app_path: new_app_path,
|
78
|
+
new_watch_path: new_watch_path
|
79
|
+
}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
require 'k_builder'
|
5
|
+
require 'json'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
module KBuilder
|
9
|
+
module Watch
|
10
|
+
# Execute based on CLI options
|
11
|
+
class Execute
|
12
|
+
DEFAULT_ACTIONS = {
|
13
|
+
help: KBuilder::Watch::ActionDisplayHelp,
|
14
|
+
debug: KBuilder::Watch::ActionDisplayDebug,
|
15
|
+
new_builder: KBuilder::Watch::ActionNewBuilder,
|
16
|
+
watcher: KBuilder::Watch::ActionWatcher
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
# watcher = KBuilder::Watch::Watcher.new(cli.watch_path)
|
20
|
+
# watcher.start
|
21
|
+
|
22
|
+
attr_accessor :actions
|
23
|
+
attr_accessor :options
|
24
|
+
|
25
|
+
# Execute one or more actions based on supplied options
|
26
|
+
#
|
27
|
+
# You can use dependency injection to provide your actions
|
28
|
+
def initialize(options, actions: DEFAULT_ACTIONS)
|
29
|
+
@actions = actions
|
30
|
+
@options = options
|
31
|
+
end
|
32
|
+
|
33
|
+
def run_action(action_key)
|
34
|
+
raise KBuilder::Watch::Error, "Unknown action: #{action_key}" unless @actions.key?(action_key)
|
35
|
+
|
36
|
+
action = actions[action_key].new(options)
|
37
|
+
action.run
|
38
|
+
end
|
39
|
+
|
40
|
+
def run
|
41
|
+
if options.help?
|
42
|
+
run_action(:help)
|
43
|
+
|
44
|
+
exit
|
45
|
+
end
|
46
|
+
|
47
|
+
if options.debug?
|
48
|
+
run_action(:debug)
|
49
|
+
|
50
|
+
exit
|
51
|
+
end
|
52
|
+
|
53
|
+
run_action(:new_builder) if options.new?
|
54
|
+
run_action(:watcher)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KBuilder
|
4
|
+
# Watch supports any watch and execute processes for builders
|
5
|
+
module Watch
|
6
|
+
# Create a new folder for application with builders
|
7
|
+
class NewBuilder
|
8
|
+
def execute(_paths)
|
9
|
+
setup_file = File.join(new_watch_path, 'setup.rb')
|
10
|
+
config_file = File.join(new_watch_path, 'config', '_.rb')
|
11
|
+
|
12
|
+
FileUtils.mkdir_p(File.dirname(config_file))
|
13
|
+
File.write(setup_file, "require 'config/_'") unless File.exist?(setup_file)
|
14
|
+
File.write(config_file, "puts '_'\n\n#require 'config/_initialize'") unless File.exist?(config_file)
|
15
|
+
|
16
|
+
system("code #{File.join(new_app_path, '.')}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k_builder-watch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: filewatcher
|
@@ -24,90 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.0.0.beta3
|
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'
|
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'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: k_builder-package_json
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: k_builder-webpack5
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: k_doc
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: k_log
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0.0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0.0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: k_util
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.0'
|
111
27
|
description: " K-Builder-Watch will watch k_builder files and when they change,
|
112
28
|
execute them\n"
|
113
29
|
email:
|
@@ -131,6 +47,7 @@ files:
|
|
131
47
|
- README.md
|
132
48
|
- Rakefile
|
133
49
|
- STORIES.md
|
50
|
+
- ToDo.md
|
134
51
|
- USAGE.md
|
135
52
|
- bin/console
|
136
53
|
- bin/k
|
@@ -143,9 +60,16 @@ files:
|
|
143
60
|
- hooks/update-version
|
144
61
|
- k_builder-watch.gemspec
|
145
62
|
- lib/k_builder/watch.rb
|
63
|
+
- lib/k_builder/watch/action_display_debug.rb
|
64
|
+
- lib/k_builder/watch/action_display_help.rb
|
65
|
+
- lib/k_builder/watch/action_new_builder.rb
|
66
|
+
- lib/k_builder/watch/action_watcher.rb
|
67
|
+
- lib/k_builder/watch/base_action.rb
|
146
68
|
- lib/k_builder/watch/cli.rb
|
69
|
+
- lib/k_builder/watch/cli_options.rb
|
70
|
+
- lib/k_builder/watch/execute.rb
|
71
|
+
- lib/k_builder/watch/new_builder.rb
|
147
72
|
- lib/k_builder/watch/version.rb
|
148
|
-
- lib/k_builder/watch/watcher.rb
|
149
73
|
homepage: http://appydave.com/gems/k-builder-watch
|
150
74
|
licenses:
|
151
75
|
- MIT
|