k_builder-watch 0.0.16 → 0.0.19
Sign up to get free protection for your applications and to get access to all the features.
- 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
|