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 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