k_manager 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
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: []