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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8280e2a147c617e2f8df524f01947fd2e175259af09b2304c4fbde5185179087
4
- data.tar.gz: 59f3378f2d2cfdd4122dcd8d0f0cf8175a4bd46cdcc06ab545d3d0a8000796ef
3
+ metadata.gz: d3a7de38baf2fb6e2dc1f58929dadecda1ac13514c8f6c54332162d69b92c780
4
+ data.tar.gz: 51e43285707bbfeeb5b6e6ce77adeec64189f6159741748a022beb208f43a90c
5
5
  SHA512:
6
- metadata.gz: 27041d6351f0e453d84ad439990bb80a6177c198d6137e57037e47a41773c59ffe48d7843ec00b7bed6497cbb8cb82250d84e2734abd7e7b7895ca82a879f229
7
- data.tar.gz: 5d610cc2d6f3aaa37ed2f59a0c0ab0995594a648c814bb09b083aebd0b188fe606cbc46a7dd4837c6fca202450a40444dca108dcb2a94c409c05d57b3976f66b
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
- # # If local dependency
28
- # if true
29
- # group :development, :test do
30
- # # /Users/davidcruwys/dev/kgems/k_builder/lib/k_builder
31
- # gem 'k_builder', path: '../k_builder'
32
- # gem 'k_builder-package_json', path: '../k_builder-package_json'
33
- # gem 'k_builder-webpack5', path: '../k_builder-webpack5'
34
- # gem 'k_doc', path: '../k_doc'
35
- # gem 'k_log', path: '../k_log'
36
- # gem 'k_util', path: '../k_util'
37
- # end
38
- # end
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
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../lib'))
5
+ require 'pry'
6
6
 
7
- require 'k_builder/watch'
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
- # directory = '/Users/davidcruwys/dev/c#/P04DomainMonopolyV1'
12
+ ENV['BUNDLE_GEMFILE'] = gem_path
13
+
14
+ require 'bundler/setup'
15
+ require 'k_builder/watch'
10
16
 
11
- cli = KBuilder::Watch::Cli.new
12
- cli.execute
17
+ options = KBuilder::Watch::Cli.parse_options
13
18
 
14
- watcher = KBuilder::Watch::Watcher.new(cli.watch_path)
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
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../lib'))
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
- cli = KBuilder::Watch::Cli.new
12
- cli.execute
17
+ options = KBuilder::Watch::Cli.parse_options
13
18
 
14
- watcher = KBuilder::Watch::Watcher.new(cli.watch_path)
15
- watcher.start
19
+ KBuilder::Watch::Execute.new(options).run
@@ -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
- spec.add_dependency 'k_builder', '~> 0.0'
43
- spec.add_dependency 'k_builder-package_json', '~> 0.0'
44
- spec.add_dependency 'k_builder-webpack5', '~> 0.0'
45
- spec.add_dependency 'k_doc', '~> 0.0'
46
- spec.add_dependency 'k_log', '~> 0.0'
47
- spec.add_dependency 'k_util', '~> 0.0'
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
@@ -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/watcher'
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
- puts "KBuilder::Watch::Version: #{KBuilder::Watch::VERSION}" if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
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 Watcher
13
+ class ActionWatcher < KBuilder::Watch::BaseAction
14
14
  attr_accessor :directory
15
15
 
16
- def initialize(directory)
17
- @directory = 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
@@ -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
- # attr_accessor :repetitions
13
- # attr_accessor :name
14
- attr_accessor :debug
15
- attr_accessor :base_path
16
- attr_accessor :path
17
- attr_accessor :path_relative
18
- attr_accessor :new_path
19
- attr_accessor :new_path_relative
20
- attr_accessor :new
21
- attr_accessor :app_path
22
- attr_accessor :watch_path
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
- # puts "Watch: #{KBuilder::Watch::VERSION}"
27
- # @repetitions = 1
28
- # @name = nil
29
- @debug = false
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
- post_process_arguments
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' , '-h', GetoptLong::NO_ARGUMENT],
47
- ['--debug' , GetoptLong::NO_ARGUMENT],
48
- ['--new' , '-n', GetoptLong::OPTIONAL_ARGUMENT]
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
- parse_option(opt, arg)
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 parse_final_argument
66
- # if ARGV.length != 1
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
- # Maybe better to call @new, @app_name
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 execute
101
- display_help if help
102
- display_debug if debug
103
- new_builder unless @new.nil?
104
-
105
- # Dir.chdir(dir)
106
- # for i in (1..repetitions)
107
- # print "Hello"
108
- # if name
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 display_debug
148
- puts JSON.pretty_generate(to_h)
149
- exit
150
- end
87
+ def set_watch_path
88
+ if new?
89
+ @opts.watch_path = @opts.new_watch_path
90
+ return
91
+ end
151
92
 
152
- def to_h
153
- # repetitions: repetitions,
154
- # name: name,
155
- {
156
- debug: debug,
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
- private
168
-
169
- # Refactor to use KUtil.file.expand_path(path, base_path)
170
- # Need tests
171
- def set_watch_path
172
- @watch_path = if path.start_with?('~')
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module KBuilder
4
4
  module Watch
5
- VERSION = '0.0.16'
5
+ VERSION = '0.0.19'
6
6
  end
7
7
  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.16
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-01 00:00:00.000000000 Z
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