k_manager 0.0.13

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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/main.yml +31 -0
  3. data/.gitignore +50 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +85 -0
  6. data/Assessment1.md +127 -0
  7. data/Assessment2.md +88 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +25 -0
  10. data/Guardfile +30 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +82 -0
  13. data/Rakefile +33 -0
  14. data/STORIES.md +42 -0
  15. data/ToDo.md +8 -0
  16. data/USAGE.md +19 -0
  17. data/bin/console +16 -0
  18. data/bin/k +36 -0
  19. data/bin/kgitsync +76 -0
  20. data/bin/khotfix +244 -0
  21. data/bin/setup +11 -0
  22. data/hooks/pre-commit +87 -0
  23. data/hooks/update-version +33 -0
  24. data/k_manager.gemspec +47 -0
  25. data/lib/k_manager.rb +50 -0
  26. data/lib/k_manager/configuration/project_config.rb +14 -0
  27. data/lib/k_manager/create_document.rb +31 -0
  28. data/lib/k_manager/documents/basic_document.rb +21 -0
  29. data/lib/k_manager/documents/builder_document.rb +18 -0
  30. data/lib/k_manager/documents/document_taggable.rb +94 -0
  31. data/lib/k_manager/documents/model_document.rb +19 -0
  32. data/lib/k_manager/project.rb +50 -0
  33. data/lib/k_manager/resources/base_resource.rb +182 -0
  34. data/lib/k_manager/resources/csv_file_resource.rb +27 -0
  35. data/lib/k_manager/resources/factories/document_factory.rb +52 -0
  36. data/lib/k_manager/resources/factories/ruby_document_factory.rb +57 -0
  37. data/lib/k_manager/resources/file_resource.rb +93 -0
  38. data/lib/k_manager/resources/json_file_resource.rb +22 -0
  39. data/lib/k_manager/resources/ruby_file_resource.rb +32 -0
  40. data/lib/k_manager/resources/unknown_file_resource.rb +22 -0
  41. data/lib/k_manager/resources/x_resource.rb +243 -0
  42. data/lib/k_manager/resources/yaml_file_resource.rb +21 -0
  43. data/lib/k_manager/version.rb +5 -0
  44. data/lib/k_manager/x_project.rb +698 -0
  45. data/lib/k_manager/x_project_manager.rb +133 -0
  46. data/lib/k_manager/x_register.rb +199 -0
  47. data/lib/k_manager/x_resource_documents/resource_document.rb +51 -0
  48. metadata +150 -0
@@ -0,0 +1,133 @@
1
+ # frozen_string_literal: true
2
+ # # frozen_string_literal: true
3
+
4
+ # # Provide access to the DSL Manager
5
+ # module KDsl
6
+ # module Manage
7
+ # # Manager is used to manage active projects and memory management
8
+ # class ProjectManager
9
+ # attr_accessor :projects
10
+ # attr_accessor :active_project
11
+
12
+ # def initialize
13
+ # @projects = []
14
+ # @active_project = nil
15
+ # end
16
+
17
+ # def add_project(project)
18
+ # raise KDsl::Error, 'Project is required' if project.nil?
19
+ # raise KDsl::Error, 'Project class is ivalid' unless project.is_a?(KDsl::Manage::Project)
20
+
21
+ # project.manager = self
22
+ # # project.register_resources
23
+
24
+ # @projects |= [project]
25
+ # end
26
+
27
+ # def add_projects(*projects)
28
+ # projects.each { |project| self.add_project(project) }
29
+ # end
30
+
31
+ # def register_all_resource_documents
32
+ # projects.each(&:register_resources)
33
+ # end
34
+
35
+ # def load_all_documents
36
+ # projects.each(&:load_resources)
37
+ # end
38
+
39
+ # def activate_project(project)
40
+ # add_project(project)
41
+
42
+ # @active_project = project
43
+ # end
44
+
45
+ # def deactivate_project
46
+ # @active_project = nil
47
+ # end
48
+
49
+ # def watch
50
+ # L.block "Project manager is watching resources for #{'project'.pluralize(projects.length)}"
51
+
52
+ # projects.each do |project|
53
+ # project.watch
54
+ # end
55
+
56
+ # wait_key
57
+
58
+ # L.block 'Stopping'
59
+
60
+ # projects.each do |project|
61
+ # project.listener.stop
62
+ # end
63
+
64
+ # L.block 'Stopping'
65
+
66
+ # end
67
+
68
+ # # require 'io/console'
69
+ # def wait_key
70
+ # sleep
71
+ # # print "press any key to stop\r"
72
+ # # STDIN.getch
73
+ # # print "xxxxxxxxxxxx\r" # extra space to overwrite in case next sentence is short
74
+ # end
75
+
76
+ # # Register document with a project
77
+ # #
78
+ # # There is a tight coupling between new document instances and the active project
79
+ # # If I can find a way to decouple then I will, but for now, a new document will
80
+ # # call through to register_with_project and if there is no project then it will just
81
+ # # keep going
82
+ # # def register_with_project(document)
83
+ # # return :no_project if active_project.nil?
84
+
85
+ # # # return :register
86
+ # # # return :existing
87
+ # # end
88
+
89
+ # def debug(format: :tabular, project_formats: [:resource])
90
+ # # tp projects
91
+
92
+ # case format
93
+ # when :tabular
94
+ # tp projects,
95
+ # :name,
96
+ # :managed?,
97
+ # { 'config.base_path' => { width: 60, display_name: 'Base Path' } },
98
+ # { 'config.base_resource_path' => { width: 60, display_name: 'Resource Path' } },
99
+ # { 'config.base_cache_path' => { width: 60, display_name: 'Cache Path' } },
100
+ # { 'config.base_definition_path' => { width: 60, display_name: 'Definition Path' } },
101
+ # { 'config.base_template_path' => { width: 60, display_name: 'Template Path' } },
102
+ # { 'config.base_app_template_path' => { width: 60, display_name: 'AppTemplate Path' } }
103
+ # when :simple
104
+ # projects.each do |project|
105
+ # L.subheading("Project #{project.name}")
106
+ # project_formats.each do |project_format|
107
+ # project.debug(format: project_format)
108
+ # end
109
+ # end
110
+ # when :detail
111
+ # L.kv '# of Projects', projects.length
112
+
113
+ # projects.each do |project|
114
+ # L.subheading("Project #{project.name}")
115
+ # L.kv "Resource Path (DSL's, Data)", project.config.base_resource_path
116
+ # L.kv 'Base Path', project.config.base_path
117
+ # L.kv 'Cache Data Path', project.config.base_cache_path
118
+ # L.kv 'Definition Path', project.config.base_definition_path
119
+ # L.kv 'Template Path (Global)', project.config.base_template_path
120
+ # L.kv 'Template Path (Application)', project.config.base_app_template_path
121
+ # puts
122
+
123
+ # project.debug(formats: project_formats)
124
+ # # project_formats.each do |project_format|
125
+ # # project.debug(format: project_format)
126
+ # # end
127
+ # end
128
+ # end
129
+
130
+ # end
131
+ # end
132
+ # end
133
+ # end
@@ -0,0 +1,199 @@
1
+ # frozen_string_literal: true
2
+ # # frozen_string_literal: true
3
+
4
+ # module KDsl
5
+ # module Manage
6
+ # class Register
7
+ # # private_class_method :new
8
+ # # def load_dynamic(content)
9
+ # # @current_state = :dynamic
10
+ # # @current_register_file = nil
11
+
12
+ # # process_code(:dynamic, content)
13
+
14
+ # # @current_register_file = nil
15
+ # # @current_state = :dynamic
16
+ # # end
17
+
18
+ # # def save(dsl)
19
+ # # unique_key = build_unique_key(dsl.k_key, dsl.namespace, dsl.type)
20
+ # # # L.kv 'action', 'save(dsl)'
21
+ # # # L.kv '@current_state', current_state
22
+ # # # L.kv '@unique_key', unique_key
23
+
24
+ # # case @current_state
25
+ # # when :register_file
26
+ # # save_register_file(unique_key, dsl.k_key, dsl.namespace, dsl.type)
27
+ # # when :load_file
28
+ # # save_load_file(unique_key, dsl.k_key, dsl.namespace, dsl.type, dsl)
29
+ # # when :dynamic
30
+ # # save_dynamic(unique_key, dsl.k_key, dsl.namespace, dsl.type, dsl)
31
+ # # else
32
+ # # raise 'unknown state'
33
+ # # end
34
+
35
+ # # dsl
36
+ # # end
37
+
38
+ # # def is_pathname_absolute(pathname)
39
+ # # Pathname.new(pathname).absolute?
40
+ # # end
41
+
42
+ # # def expand_path(filename)
43
+ # # if is_pathname_absolute(filename)
44
+ # # filename
45
+ # # elsif filename.start_with?('~/')
46
+ # # File.expand_path(filename)
47
+ # # else
48
+ # # File.expand_path(filename, base_resource_path)
49
+ # # end
50
+ # # end
51
+
52
+ # # def get_relative_folder(fullpath)
53
+ # # absolute_path = Pathname.new(fullpath)
54
+ # # project_root = Pathname.new(base_resource_path)
55
+ # # relative = absolute_path.relative_path_from(project_root)
56
+ # # rel_dir, file = relative.split
57
+
58
+ # # rel_dir.to_s
59
+ # # end
60
+
61
+ # # def debug(include_header = false)
62
+ # # if include_header
63
+ # # L.heading 'Register DSL'
64
+ # # print_main_properties
65
+ # # L.line
66
+ # # end
67
+
68
+ # # print_dsls
69
+ # # end
70
+
71
+ # # def print_main_properties
72
+ # # # L.kv 'base_resource_path' , base_resource_path
73
+ # # # L.kv 'base_cache_path' , base_cache_path
74
+ # # # L.kv 'base_definition_path' , base_definition_path
75
+ # # # L.kv 'current_state' , current_state
76
+ # # # L.kv 'current_register_file' , current_register_file
77
+ # # # L.kv 'current_processing_file' , current_processing_file
78
+ # # end
79
+
80
+ # # def print_dsls
81
+ # # # tp dsls.values, :k_key, :k_type, :state, :save_at, :last_at, :data, :last_data, :source, { :file => { :width => 150 } }, { :rel_folder => { :width => 80 } }
82
+ # # tp dsls.values, :namespace, :k_key, :k_type, :state, :save_at, :data, :source, { :file => { :width => 50 } }, { :rel_folder => { :width => 80 } }
83
+ # # end
84
+
85
+ # # private
86
+
87
+ # # def default_dsl_data(**data)
88
+ # # {
89
+ # # namespace: nil,
90
+ # # k_key: nil,
91
+ # # k_type: nil,
92
+ # # state: nil,
93
+ # # save_at: nil,
94
+ # # last_at: nil,
95
+ # # data: nil,
96
+ # # last_data: nil,
97
+ # # source: nil,
98
+ # # file: nil,
99
+ # # rel_folder: nil
100
+ # # }.merge(data)
101
+ # # end
102
+
103
+ # # def save_register_file(unique_key, key, type, namespace)
104
+ # # k = @dsls[unique_key]
105
+
106
+ # # if k.present? && k[:file].present? && k[:file] != @current_register_file
107
+ # # print_dsls
108
+
109
+ # # L.line
110
+ # # L.kv 'Error', 'Duplicate DSL key found'
111
+ # # L.kv 'Unique Key', unique_key
112
+ # # L.kv 'Namespace', namespace
113
+ # # L.kv 'Key', key
114
+ # # L.kv 'Type', type
115
+ # # L.kv 'File', @current_register_file
116
+ # # L.line
117
+ # # print
118
+ # # L.line
119
+
120
+ # # raise Klue::Dsl::DslError, "Duplicate DSL key found #{unique_key} in different files"
121
+ # # end
122
+
123
+ # # if k.present?
124
+ # # L.line
125
+ # # L.kv 'Warning', 'DSL already registered'
126
+ # # L.kv 'Unique Key', unique_key
127
+ # # L.kv 'Namespace', namespace
128
+ # # L.kv 'Key', key
129
+ # # L.kv 'Type', type
130
+ # # L.kv 'Previous File Name', k[:file]
131
+ # # L.kv 'Register File Name', @current_register_file
132
+ # # L.line
133
+ # # print
134
+ # # L.line
135
+ # # else
136
+ # # @dsls[unique_key] = default_dsl_data(
137
+ # # namespace: namespace,
138
+ # # k_key: key,
139
+ # # k_type: type,
140
+ # # state: :registered,
141
+ # # source: :file,
142
+ # # file: @current_register_file,
143
+ # # rel_folder: get_relative_folder(@current_register_file)
144
+ # # )
145
+ # # end
146
+ # # end
147
+
148
+ # # def save_load_file(unique_key, key, type, namespace, dsl)
149
+ # # k = @dsls[unique_key]
150
+
151
+ # # if k.nil?
152
+ # # # New Record
153
+ # # @dsls[unique_key] = default_dsl_data(
154
+ # # namespace: namespace,
155
+ # # k_key: key,
156
+ # # k_type: type,
157
+ # # state: :loaded,
158
+ # # save_at: Time.now.utc,
159
+ # # data: dsl.get_data(),
160
+ # # source: :file,
161
+ # # file: @current_register_file,
162
+ # # rel_folder: get_relative_folder(@current_register_file)
163
+ # # )
164
+ # # else
165
+ # # # Update Record
166
+ # # k[:state] = :loaded
167
+ # # k[:last_at] = k[:save_at]
168
+ # # k[:save_at] = Time.now.utc
169
+ # # k[:last_data] = k[:data]
170
+ # # k[:data] = dsl.get_data()
171
+ # # end
172
+ # # end
173
+
174
+ # # def save_dynamic(unique_key, key, type, namespace, dsl)
175
+ # # k = @dsls[unique_key]
176
+
177
+ # # if k.nil?
178
+ # # # New Record
179
+ # # @dsls[unique_key] = default_dsl_data(
180
+ # # namespace: namespace,
181
+ # # k_key: key,
182
+ # # k_type: type,
183
+ # # state: :loaded,
184
+ # # save_at: Time.now.utc,
185
+ # # data: dsl.get_data(),
186
+ # # source: :dynamic
187
+ # # )
188
+ # # else
189
+ # # # Update Record
190
+ # # k[:state] = :loaded
191
+ # # k[:last_at] = k[:save_at]
192
+ # # k[:save_at] = Time.now.utc
193
+ # # k[:last_data] = k[:data]
194
+ # # k[:data] = dsl.get_data()
195
+ # # end
196
+ # # end
197
+ # end
198
+ # end
199
+ # end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+ # # frozen_string_literal: true
3
+
4
+ # module KDsl
5
+ # module ResourceDocuments
6
+ # # ResourceDocument represents the (1-M) link between a resource and a document
7
+ # class ResourceDocument
8
+ # extend Forwardable
9
+
10
+ # attr_reader :resource
11
+ # attr_reader :document
12
+
13
+ # def_delegator :resource, :status
14
+ # def_delegator :resource, :project
15
+ # def_delegator :resource, :source
16
+ # def_delegator :resource, :resource_type
17
+ # def_delegator :resource, :file
18
+ # def_delegator :resource, :watch_path
19
+ # def_delegator :resource, :content
20
+ # def_delegator :resource, :relative_watch_path
21
+ # def_delegator :resource, :filename
22
+ # def_delegator :resource, :base_resource_path
23
+ # def_delegator :resource, :base_resource_path_expanded
24
+
25
+ # # I HAVE an issue between resource.error and document.error that needs to be dealt with
26
+ # def_delegator :document, :error
27
+ # def_delegator :document, :unique_key
28
+ # def_delegator :document, :key
29
+ # def_delegator :document, :type
30
+ # def_delegator :document, :namespace
31
+ # def_delegator :document, :options
32
+ # def_delegator :document, :executed?
33
+ # def_delegator :document, :initialized?
34
+
35
+ # def_delegator :document, :data
36
+
37
+ # def initialize(resource, document)
38
+ # @resource = resource
39
+ # @document = document
40
+ # end
41
+
42
+ # def debug(format: :detail)
43
+ # L.line
44
+ # L.kv 'Status', status
45
+ # resource.debug
46
+ # document.debug(include_header: true)
47
+ # end
48
+
49
+ # end
50
+ # end
51
+ # end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: k_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.13
5
+ platform: ruby
6
+ authors:
7
+ - David Cruwys
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-04-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: k_builder
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: k_doc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.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.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: k_ext-github
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.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.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: k_log
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.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.0
69
+ description: " K Manager provides a managed host for documents, resources and code
70
+ generator execution\n"
71
+ email:
72
+ - david@ideasmen.com.au
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".github/workflows/main.yml"
78
+ - ".gitignore"
79
+ - ".rspec"
80
+ - ".rubocop.yml"
81
+ - Assessment1.md
82
+ - Assessment2.md
83
+ - CODE_OF_CONDUCT.md
84
+ - Gemfile
85
+ - Guardfile
86
+ - LICENSE.txt
87
+ - README.md
88
+ - Rakefile
89
+ - STORIES.md
90
+ - ToDo.md
91
+ - USAGE.md
92
+ - bin/console
93
+ - bin/k
94
+ - bin/kgitsync
95
+ - bin/khotfix
96
+ - bin/setup
97
+ - hooks/pre-commit
98
+ - hooks/update-version
99
+ - k_manager.gemspec
100
+ - lib/k_manager.rb
101
+ - lib/k_manager/configuration/project_config.rb
102
+ - lib/k_manager/create_document.rb
103
+ - lib/k_manager/documents/basic_document.rb
104
+ - lib/k_manager/documents/builder_document.rb
105
+ - lib/k_manager/documents/document_taggable.rb
106
+ - lib/k_manager/documents/model_document.rb
107
+ - lib/k_manager/project.rb
108
+ - lib/k_manager/resources/base_resource.rb
109
+ - lib/k_manager/resources/csv_file_resource.rb
110
+ - lib/k_manager/resources/factories/document_factory.rb
111
+ - lib/k_manager/resources/factories/ruby_document_factory.rb
112
+ - lib/k_manager/resources/file_resource.rb
113
+ - lib/k_manager/resources/json_file_resource.rb
114
+ - lib/k_manager/resources/ruby_file_resource.rb
115
+ - lib/k_manager/resources/unknown_file_resource.rb
116
+ - lib/k_manager/resources/x_resource.rb
117
+ - lib/k_manager/resources/yaml_file_resource.rb
118
+ - lib/k_manager/version.rb
119
+ - lib/k_manager/x_project.rb
120
+ - lib/k_manager/x_project_manager.rb
121
+ - lib/k_manager/x_register.rb
122
+ - lib/k_manager/x_resource_documents/resource_document.rb
123
+ homepage: http://appydave.com/gems/k-manager
124
+ licenses:
125
+ - MIT
126
+ metadata:
127
+ homepage_uri: http://appydave.com/gems/k-manager
128
+ source_code_uri: https://github.com/klueless-io/k_manager
129
+ changelog_uri: https://github.com/klueless-io/k_manager/commits/master
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '2.5'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubygems_version: 3.2.7
146
+ signing_key:
147
+ specification_version: 4
148
+ summary: K Manager provides a managed host for documents, resources and code generator
149
+ execution
150
+ test_files: []