k_manager 0.0.22 → 0.0.23

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