k_manager 0.0.22 → 0.0.23

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: 2024c747b3ae20e56a669bda4c2940274007a63545759cf1fc93adc0a9ae5b40
4
- data.tar.gz: 12030613016449e807b986cc368330bf6d4667cd89833051511c48ff7dd21c0b
3
+ metadata.gz: 29518b2bd651ed4742111e2a9e3a08ab30cd8fc8fc417f3b628958645f662fed
4
+ data.tar.gz: f5e88ae2f11dea060f598d06be1e207332d87dfdce86d4a9915ebb8d197b9c7c
5
5
  SHA512:
6
- metadata.gz: f8746ca5b44f389938b92f8a17ca9c7947e560fc65046c5b780cbca3bcbfc0180e9035002cb0a9cc00c9b0f0e70277f7b631523e5b9976bdeff9adac19389eab
7
- data.tar.gz: dba116da1e201cd22c39a2fdc68805dd9e8d019bfbdb7b5eb6a0d7bd283fb99a07dded3762b8c7b484a3015e62fd98ed29b16ee05ac0d8b7192049b4dde17a25
6
+ metadata.gz: 739a4b224ab25f1a0e8ef7bf19c3fa0569141a28ff817b323c167e6a38a9b5c6bc5e4c4532abc20f2444cb1c68c2ffc13579188be9d033e1e219ffba683f6731
7
+ data.tar.gz: 64aa8b8771591fbd494982211c0e00275daa05019e9577ca173ef2e4b51c75f357d1e2a81e5f49e15fe26be0ac12cb00659b63e45804e55dee4976b97cea308e
data/exe/k_manager CHANGED
@@ -13,8 +13,6 @@ ENV['BUNDLE_GEMFILE'] = gem_path
13
13
 
14
14
  require 'bundler/setup'
15
15
  require 'k_manager'
16
+ require 'k_manager/cli/commands'
16
17
 
17
- puts 'david'
18
- # options = KBuilder::Watch::Cli.parse_options
19
-
20
- # KBuilder::Watch::Execute.new(options).run
18
+ Dry::CLI.new(KManager::Cli::Commands).call
data/k_manager.gemspec CHANGED
@@ -47,6 +47,7 @@ Gem::Specification.new do |spec|
47
47
  spec.add_dependency 'k_log', '~> 0.0.0'
48
48
  # spec.add_dependency 'k_type' , '~> 0.0.0'
49
49
  # spec.add_dependency 'k_util' , '~> 0.0.0'
50
+ spec.add_dependency 'dry-cli', '~> 0.7.0'
50
51
  spec.metadata = {
51
52
  'rubygems_mfa_required' => 'true'
52
53
  }
@@ -5,12 +5,14 @@ module KManager
5
5
  include KLog::Logging
6
6
  extend Forwardable
7
7
 
8
+ attr_reader :manager
8
9
  # TODO: I have not got a use for area name yet, it may be able to drive default config, but not sure.
9
10
  attr_reader :name
10
11
  attr_reader :namespace
11
12
  attr_reader :config
12
13
 
13
14
  def initialize(**opts)
15
+ @manager = opts[:manager]
14
16
  @name = opts[:name]
15
17
 
16
18
  raise 'Area name is required' unless @name
@@ -23,7 +25,7 @@ module KManager
23
25
  @resource_manager ||= KManager::Resources::ResourceManager.new(self)
24
26
  end
25
27
 
26
- def_delegators :resource_manager, :resource_changed
28
+ def_delegators :resource_manager, :resource_changed, :resources, :find_by_uri
27
29
 
28
30
  def debug(*sections)
29
31
  log.kv 'Area' , name
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KManager
4
+ module Cli
5
+ module Commands
6
+ class BaseCommand < Dry::CLI::Command
7
+ include KLog::Logging
8
+
9
+ option :log_level,
10
+ default: 'none',
11
+ aliases: ['-l'],
12
+ desc: 'Log level (:none, :debug)'
13
+
14
+ private
15
+
16
+ def absolute_path(path, base_path)
17
+ pathname = Pathname.new(path)
18
+ pathname.absolute? ? path : File.expand_path(path, base_path)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dry/cli'
4
+ require_relative 'base_command'
5
+ require_relative 'version'
6
+ require_relative 'watch'
7
+ require_relative 'new'
8
+ require_relative 'info'
9
+
10
+ module KManager
11
+ module Cli
12
+ module Commands
13
+ extend Dry::CLI::Registry
14
+
15
+ register 'version' , Version , aliases: %w[v -v --version]
16
+ register 'watch' , Watch , aliases: %w[w]
17
+ register 'new' , New , aliases: %w[n]
18
+ register 'info' , Info , aliases: %w[i]
19
+
20
+ # register 'generate', aliases: ['g'] do |prefix|
21
+ # prefix.register 'config', Generate::Configuration
22
+ # end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KManager
4
+ module Cli
5
+ module Commands
6
+ class Info < KManager::Cli::Commands::BaseCommand
7
+ desc 'Print information about builder, project, and watcher folders'
8
+
9
+ argument :project_folder,
10
+ default: '.',
11
+ desc: 'Info project folder (defaults to current directory .)'
12
+
13
+ option :builder_folder,
14
+ default: '.builders',
15
+ desc: 'The builder folder, defaults to (.builders)'
16
+
17
+ def call(project_folder:, builder_folder:, **)
18
+ project_folder = absolute_path(project_folder, Dir.pwd)
19
+ # name must be after project_folder
20
+ name = File.basename(project_folder)
21
+ builder_folder = absolute_path(builder_folder, project_folder)
22
+
23
+ log_params(name, project_folder, builder_folder)
24
+ end
25
+
26
+ private
27
+
28
+ def log_params(name, project_folder, builder_folder)
29
+ log.section_heading('Information')
30
+ log.kv 'Project Name' , name
31
+ log.kv 'Project Folder' , project_folder
32
+ log.kv 'Builder Folder' , builder_folder
33
+ log.kv 'Project File Count' , project_file_count(project_folder, builder_folder)
34
+ log.kv 'Builder File Count' , builder_file_count(builder_folder)
35
+
36
+ # log_files(project_folder, project_file_list(project_folder, builder_folder), 'Project Files List')
37
+ log_files(builder_folder, builder_file_list(builder_folder), 'Builder Files')
38
+ end
39
+
40
+ def log_files(root_folder, files, title)
41
+ log.section_heading(title)
42
+ files.each do |file|
43
+ pathname = Pathname.new(file)
44
+ puts pathname.relative_path_from(root_folder).to_s
45
+ end
46
+ end
47
+
48
+ def project_file_count(project_folder, builder_folder)
49
+ project_file_list(project_folder, builder_folder).length
50
+ end
51
+
52
+ def project_file_list(project_folder, builder_folder)
53
+ return @project_file_list if defined? @project_file_list
54
+
55
+ @project_file_list = begin
56
+ pattern = '{.[^\.]*,*,**}/**/*'
57
+
58
+ result = Dir.chdir(project_folder) do
59
+ Dir.glob(pattern).map { |f| File.realpath(f) }
60
+ end
61
+
62
+ result - builder_file_list(builder_folder)
63
+ end
64
+ end
65
+
66
+ def builder_file_count(builder_folder)
67
+ builder_file_list(builder_folder).length
68
+ end
69
+
70
+ # Dir.glob(".").map(&File.method(:realpath))
71
+ def builder_file_list(builder_folder)
72
+ return @builder_file_list if defined? @builder_file_list
73
+
74
+ @builder_file_list = Dir.chdir(builder_folder) do
75
+ Dir.glob('**/*').map { |f| File.realpath(f) }
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KManager
4
+ module Cli
5
+ module Commands
6
+ class New < KManager::Cli::Commands::BaseCommand
7
+ desc 'Create a new KManager project'
8
+
9
+ argument :project_folder,
10
+ default: '.',
11
+ desc: 'New project folder (defaults to current directory .)'
12
+
13
+ option :builder_folder,
14
+ default: '.builders',
15
+ desc: 'The builder folder, defaults to (.builders)'
16
+
17
+ option :boot_file,
18
+ default: 'boot.rb',
19
+ aliases: ['-b'],
20
+ desc: 'The name of the boot file to create'
21
+
22
+ option :force,
23
+ default: false,
24
+ aliases: ['-f'],
25
+ desc: 'Force even if guard fails'
26
+
27
+ example [
28
+ ' # Project in current directory - will create a .builders folder and boot file at ./builders/boot.rb',
29
+ '-b ../config/boot.rb # Project in current directory - will create a .builders folder and boot file at ./config/boot.rb',
30
+ 'my_project # will watch .xmen folder'
31
+ ]
32
+
33
+ def call(project_folder:, builder_folder:, boot_file:, log_level:, force:, **)
34
+ project_folder = absolute_path(project_folder, Dir.pwd)
35
+ name = File.basename(project_folder)
36
+ builder_folder = absolute_path(builder_folder, project_folder)
37
+ boot_file = absolute_path(boot_file, builder_folder)
38
+
39
+ log_params(name, project_folder, builder_folder, boot_file, force) if log_level == 'debug'
40
+
41
+ create_project(project_folder, builder_folder, boot_file) if can_create?(force, builder_folder)
42
+ end
43
+
44
+ private
45
+
46
+ def create_project(project_folder, builder_folder, boot_file)
47
+ FileUtils.mkdir_p(project_folder)
48
+ FileUtils.mkdir_p(builder_folder)
49
+ File.write(boot_file, '# Boot Sequence')
50
+ # Use a boot_file_template if needed
51
+
52
+ log.info 'Project created'
53
+ end
54
+
55
+ def can_create?(force, builder_folder)
56
+ return true if force
57
+ return true unless File.directory?(builder_folder)
58
+
59
+ log.error "Project builder folder already exists: #{builder_folder}"
60
+
61
+ false
62
+ end
63
+
64
+ def log_params(name, project_folder, builder_folder, boot_file, force)
65
+ log.section_heading('Create new project')
66
+ log.kv 'name' , name
67
+ log.kv 'project_folder' , project_folder
68
+ log.kv 'builder_folder' , builder_folder
69
+ log.kv 'boot_file' , boot_file
70
+ log.kv 'force' , force
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KManager
4
+ module Cli
5
+ module Commands
6
+ class Version < Dry::CLI::Command
7
+ desc 'Print version'
8
+
9
+ def call(*)
10
+ puts KManager::VERSION
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KManager
4
+ module Cli
5
+ module Commands
6
+ class Watch < KManager::Cli::Commands::BaseCommand
7
+ desc 'Watch folder'
8
+
9
+ argument :builder_folder,
10
+ default: '.builders',
11
+ desc: 'Folder to watch (aka builder folder), defaults to (.builders)'
12
+
13
+ option :boot_file,
14
+ default: 'boot.rb',
15
+ aliases: ['-b'],
16
+ desc: 'The boot file used for k_manager configuration'
17
+
18
+ example [
19
+ ' # will watch .builders folder and boot from ./builders/boot.rb',
20
+ '-b ../config/boot.rb # will watch .builders folder and boot from ./config/boot.rb',
21
+ '.xmen # will watch .xmen folder'
22
+ ]
23
+
24
+ def call(builder_folder:, boot_file:, log_level: , **)
25
+ builder_folder = absolute_path(builder_folder, Dir.pwd)
26
+ boot_file = absolute_path(boot_file, builder_folder)
27
+
28
+ log_params(builder_folder, boot_file) if log_level == 'debug'
29
+
30
+ # puts builder_folder
31
+ # puts boot_file
32
+
33
+ Dir.chdir(builder_folder) do
34
+ watcher = KManager::Watcher.new(builder_folder, boot_file)
35
+ watcher.start
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def log_params(builder_folder, boot_file)
42
+ log.section_heading('Watch project')
43
+ log.kv 'builder_folder' , builder_folder
44
+ log.kv 'boot_file' , boot_file
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -11,6 +11,13 @@ module KManager
11
11
  class DocumentFactory
12
12
  include KLog::Logging
13
13
 
14
+ # Create a KDoc::Model instance
15
+ def action(key = nil, **opts, &block)
16
+ document = new_document(KDoc::Action, key, **opts, &block)
17
+
18
+ attach_to_current_resource(document, change_content_type: :ruby)
19
+ end
20
+
14
21
  # Create a KDoc::Model instance
15
22
  def model(key = nil, **opts, &block)
16
23
  document = new_document(KDoc::Model, key, **opts, &block)
@@ -5,6 +5,29 @@ module KManager
5
5
  #
6
6
  # TODO: Write Tests
7
7
  class Manager
8
+ attr_accessor :active_uri
9
+
10
+ # NOTE: rename current_resource to active_resource, focused_resource?
11
+ attr_reader :current_resource
12
+
13
+ def resource_mutex
14
+ @resource_mutex ||= Mutex.new
15
+ end
16
+
17
+ def for_resource(resource = nil)
18
+ resource_mutex.synchronize do
19
+ @current_resource = resource
20
+ yield(current_resource)
21
+ @current_resource = nil
22
+ end
23
+ end
24
+
25
+ def for_current_resource
26
+ raise KManager::Error, 'Attempting to yield current_resource, when a different thread has the lock?' unless resource_mutex.owned?
27
+
28
+ yield(@current_resource)
29
+ end
30
+
8
31
  def areas
9
32
  @areas ||= []
10
33
  end
@@ -14,11 +37,24 @@ module KManager
14
37
 
15
38
  return area if area
16
39
 
17
- area = KManager::Area.new(name: name, namespace: namespace)
40
+ area = KManager::Area.new(manager: self, name: name, namespace: namespace)
18
41
  areas << area
19
42
  area
20
43
  end
21
44
 
45
+ def find_document(tag, area: nil)
46
+ area = resolve_area(area)
47
+
48
+ log.error 'Could not resolve area' if area.nil?
49
+
50
+ log.line
51
+ log.error(tag)
52
+ log.line
53
+
54
+ documents = area.resources.flat_map(&:documents)
55
+ documents.find { |d| d.tag == tag }
56
+ end
57
+
22
58
  def fire_actions(*actions)
23
59
  areas.each do |area|
24
60
  # delegate
@@ -30,10 +66,31 @@ module KManager
30
66
  areas.find { |a| a.name == name }
31
67
  end
32
68
 
69
+ def resolve_area(area)
70
+ if area.nil?
71
+ return KManager.current_resource.area if KManager.current_resource
72
+
73
+ return KManager.areas.first
74
+ end
75
+
76
+ return area if area.is_a?(Area)
77
+
78
+ find_area(name)
79
+ end
80
+
81
+ # Return a list of resources for a URI.
82
+ #
83
+ # Generally only one resource is returned, unless the URI exists in more than one area
84
+ def resources_by_uri(uri)
85
+ areas.map { |area| area.resources_by_uri(uri) }.compact
86
+ end
87
+
33
88
  def resource_changed(uri, state)
89
+ @active_uri = uri
34
90
  areas.each do |area|
35
91
  area.resource_changed(uri, state)
36
92
  end
93
+ @active_uri = nil
37
94
  end
38
95
 
39
96
  def debug(*sections)
@@ -42,6 +99,8 @@ module KManager
42
99
  end
43
100
  end
44
101
 
102
+ # def cons
103
+
45
104
  # # May replace config with default channel name
46
105
  # # Channels represent configurations that are independent of project or builder,
47
106
  # # but a project may want to have a default channel that it supplies
@@ -52,7 +52,8 @@ module KManager
52
52
  { scheme: { display_method: ->(row) { row.scheme } } },
53
53
  { root: { display_method: ->(row) { row.scheme == :file ? '' : row.host } } },
54
54
  { relative_path: { display_method: ->(row) { right(50, row.relative_path) }, width: 50 } },
55
- { exist: { display_method: ->(row) { row.exist } } }
55
+ { exist: { display_method: ->(row) { row.exist } } } # ,
56
+ # { resource_path: { display_method: ->(row) { row.path }, width: 100 } }
56
57
  ]
57
58
  }
58
59
  }
@@ -87,6 +87,7 @@ module KManager
87
87
  self.uri = uri
88
88
 
89
89
  @status = :alive
90
+ @area = value_remove(opts, :area)
90
91
  @namespace = value_remove(opts, :namespace)
91
92
  @content_type = @content_type || value_remove(opts, :content_type) || infer_content_type || default_content_type
92
93
  @content = value_remove(opts, :content)
@@ -100,10 +101,20 @@ module KManager
100
101
  uri.to_s
101
102
  end
102
103
 
104
+ # TODO: Is this really needed?
103
105
  def document
104
106
  @document ||= documents&.first
105
107
  end
106
108
 
109
+ def activated?
110
+ # log.section_heading("Am I activated?")
111
+ # log.kv 'URI', uri
112
+ # log.kv 'ACTIVE URI', self.area.manager.active_uri
113
+ return false if area.nil?
114
+
115
+ uri.to_s == area.manager.active_uri.to_s
116
+ end
117
+
107
118
  # Fire actions and keep track of status as they fire
108
119
  #
109
120
  # @param [Symbol] action what action is to be fired
@@ -158,7 +169,9 @@ module KManager
158
169
  # rubocop:disable Lint/RescueException
159
170
  def load_document
160
171
  # log.warn 'you need to implement register_document'
161
- documents.each(&:execute_block)
172
+ documents.each do |document|
173
+ document.execute_block(run_actions: activated?)
174
+ end
162
175
  rescue Exception => e
163
176
  guard(e.message)
164
177
  debug
@@ -68,6 +68,7 @@ module KManager
68
68
  # area: resource.area,
69
69
  # content_type: resource.content_type,
70
70
  opts = {
71
+ area: resource.area,
71
72
  namespace: resource.namespace
72
73
  }
73
74
 
@@ -81,6 +81,8 @@ module KManager
81
81
  # KManager::Manager.current_resource
82
82
  # KDsl.target_resource = self
83
83
 
84
+ log.error "#{resource.activated?} - #{resource.resource_path}"
85
+
84
86
  Object.class_eval resource.content, resource.resource_path
85
87
 
86
88
  # # Only DSL's will add new resource_documents
@@ -3,25 +3,6 @@
3
3
  module KManager
4
4
  # TODO: Write tests
5
5
 
6
- # Usage1:
7
- # manager = ResourceManager.new
8
- # manager.add_resource('file:///david.csv')
9
- # manager.add_resource('file:///david.txt', content_type: :json)
10
- # manager.add_resource('https://gist.github.com/12345/david.csv', content_type: :csv)
11
- # manager.load_resource_content
12
- #
13
- # Usage2:
14
- # manager = ResourceManager.new
15
- # manager.fileset.add('**/*.csv').add('**/*.json').add('lib/*.rb')
16
- # manager.add_resources
17
- # manager.load_resource_content
18
- #
19
- #
20
- # Usage KWatcher
21
- # WatchingDirctory('abc') do |path|
22
- # manager.update_resource(path)
23
- # end
24
-
25
6
  # Example Director
26
7
  # KDoc.diagram(:k_resource) do
27
8
 
@@ -86,7 +67,10 @@ module KManager
86
67
  update_resource(resource_uri) if state == :updated
87
68
  delete_resource(resource_uri) if state == :deleted
88
69
 
89
- log_any_messages unless valid?
70
+ return if valid?
71
+
72
+ log_any_messages
73
+ clear_errors
90
74
  end
91
75
 
92
76
  def create_resource(resource_uri)
@@ -105,6 +89,7 @@ module KManager
105
89
 
106
90
  return warn("Resource not in Resource Set - Skipping: #{resource_uri.path}") unless resource
107
91
 
92
+ # TODO: Do I need to recreate, can I just reset instead?
108
93
  replace_resource = resource.recreate(resource)
109
94
  replace_resource.fire_action(:load_content)
110
95
  replace_resource.fire_action(:register_document)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KManager
4
- VERSION = '0.0.22'
4
+ VERSION = '0.0.23'
5
5
  end
@@ -7,10 +7,10 @@ module KManager
7
7
  # NOTE: Does Watcher belong in this GEM?
8
8
  class Watcher
9
9
  include KLog::Logging
10
-
10
+
11
11
  attr_reader :watch_folder
12
12
  attr_reader :boot_file
13
-
13
+
14
14
  def initialize(watch_folder, boot_file)
15
15
  @watch_folder = watch_folder
16
16
  @boot_file = boot_file
@@ -22,7 +22,7 @@ module KManager
22
22
 
23
23
  # rubocop:disable Lint/RescueException
24
24
  def start
25
- bootup
25
+ boot_up
26
26
 
27
27
  update_dashboard
28
28
 
@@ -31,11 +31,12 @@ module KManager
31
31
  clear_screen
32
32
 
33
33
  puts "File #{event}: #{filename}"
34
-
34
+
35
35
  uri = URI::File.build(host: nil, path: filename)
36
36
  KManager.resource_changed(uri, event)
37
-
37
+
38
38
  update_dashboard
39
+ puts "File #{event}: #{filename}"
39
40
  end
40
41
  end
41
42
  rescue Exception => e
@@ -43,30 +44,35 @@ module KManager
43
44
  log.exception(e, style: :short)
44
45
  end
45
46
  # rubocop:enable Lint/RescueException
46
-
47
+
47
48
  private
48
-
49
- def bootup
49
+
50
+ def boot_up
50
51
  clear_screen
51
-
52
- content = File.read(boot_file)
53
- Object.class_eval(content, boot_file)
52
+
53
+ if File.exist?(boot_file)
54
+ content = File.read(boot_file)
55
+ Object.class_eval(content, boot_file)
56
+ return
57
+ end
58
+
59
+ log.error("Boot file not found: #{boot_file}")
54
60
  end
55
-
61
+
56
62
  def update_dashboard
57
63
  dashboard = KManager::Overview::Dashboard.new(KManager.manager)
58
64
  # dashboard.areas
59
65
  dashboard.resources
60
66
  dashboard.documents
61
67
  end
62
-
68
+
63
69
  def update_load_path(filename)
64
70
  dirname = File.dirname(filename)
65
-
71
+
66
72
  # This needs to be in detailed logging
67
73
  $LOAD_PATH.unshift(dirname) unless $LOAD_PATH.find { |path| path.start_with?(dirname) }
68
74
  end
69
-
75
+
70
76
  def clear_screen
71
77
  puts "\n" * 70
72
78
  $stdout.clear_screen
data/lib/k_manager.rb CHANGED
@@ -30,6 +30,7 @@ require 'k_manager/resources/resource_manager'
30
30
  require 'k_manager/document_factory'
31
31
  require 'k_manager/manager'
32
32
  require 'k_manager/area'
33
+ require 'k_manager/watcher'
33
34
 
34
35
  module KManager
35
36
  # raise KManager::Error, 'Sample message'
@@ -42,6 +43,7 @@ module KManager
42
43
  # Concurrency management for currently focused resource
43
44
  # ----------------------------------------------------------------------
44
45
 
46
+ # NOTE: Can mutex be moved into manager?
45
47
  attr_reader :current_resource
46
48
 
47
49
  def resource_mutex
@@ -94,7 +96,7 @@ module KManager
94
96
  @manager = Manager.new
95
97
  end
96
98
 
97
- def_delegators :manager, :areas, :add_area, :fire_actions, :resource_changed
99
+ def_delegators :manager, :areas, :add_area, :find_document, :fire_actions, :resource_changed
98
100
 
99
101
  # ----------------------------------------------------------------------
100
102
  # Document factory facade methods
@@ -112,6 +114,15 @@ module KManager
112
114
  block.call(config) if block_given?
113
115
  config
114
116
  end
117
+
118
+ # ----------------------------------------------------------------------
119
+ # Utilities
120
+ # ----------------------------------------------------------------------
121
+
122
+ def clear_screen
123
+ puts "\n" * 70
124
+ $stdout.clear_screen
125
+ end
115
126
  end
116
127
  end
117
128
 
data/tasks/watch.rake CHANGED
@@ -6,7 +6,7 @@ require 'k_manager'
6
6
  # require 'io/console'
7
7
 
8
8
  namespace :k_manager do
9
- desc 'Create CSV Files for Models'
9
+ desc 'Watch '
10
10
  task :watch do
11
11
  target_folder = 'spec/k_manager/scenarios'
12
12
  watch_folder = File.join(Dir.pwd, target_folder)
@@ -33,7 +33,7 @@ end
33
33
  # @boot_file = boot_file
34
34
  # end
35
35
 
36
- # # rubocop:disable Lint/RescueException
36
+ #
37
37
  # def start
38
38
  # boot(boot_file)
39
39
  # update_dashboard
@@ -56,9 +56,7 @@ end
56
56
  # # TODO: Make style a setting: :message, :short, (whatever the last one is)
57
57
  # log.exception(e, style: :short)
58
58
  # end
59
- # # rubocop:enable Lint/RescueException
60
-
61
- # private
59
+ # # private
62
60
 
63
61
  # def boot(boot_file)
64
62
  # clear_screen
@@ -67,7 +65,7 @@ end
67
65
  # Object.class_eval(content, boot_file)
68
66
  # end
69
67
 
70
- # # rubocop:disable Lint/RescueException
68
+ #
71
69
  # def process_updated_file(filename)
72
70
  # clear_screen
73
71
  # update_load_path(filename)
@@ -90,9 +88,7 @@ end
90
88
  # # TODO: Make style a setting: :message, :short, (whatever the last one is)
91
89
  # log.exception(e, style: :short)
92
90
  # end
93
- # # rubocop:enable Lint/RescueException
94
-
95
- # def update_dashboard
91
+ # # def update_dashboard
96
92
  # dashboard = KManager::Overview::Dashboard.new(KManager.manager)
97
93
  # dashboard.areas
98
94
  # dashboard.resources
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.23
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-12-16 00:00:00.000000000 Z
11
+ date: 2021-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: dry-cli
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.7.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.7.0
111
125
  description: " K Manager provides a managed host for documents, resources and code
112
126
  generator execution\n"
113
127
  email:
@@ -142,6 +156,12 @@ files:
142
156
  - k_manager.gemspec
143
157
  - lib/k_manager.rb
144
158
  - lib/k_manager/area.rb
159
+ - lib/k_manager/cli/base_command.rb
160
+ - lib/k_manager/cli/commands.rb
161
+ - lib/k_manager/cli/info.rb
162
+ - lib/k_manager/cli/new.rb
163
+ - lib/k_manager/cli/version.rb
164
+ - lib/k_manager/cli/watch.rb
145
165
  - lib/k_manager/configuration/project_config.rb
146
166
  - lib/k_manager/document_factory.rb
147
167
  - lib/k_manager/manager.rb