makit 0.0.74 → 0.0.76

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generated/makit/v1/makit.v1_pb.rb +35 -0
  3. data/lib/generated/makit/v1/web/link_pb.rb +20 -0
  4. data/lib/makit/apache.rb +32 -32
  5. data/lib/makit/cli/clean.rb +14 -14
  6. data/lib/makit/cli/clone.rb +59 -59
  7. data/lib/makit/cli/init.rb +38 -38
  8. data/lib/makit/cli/main.rb +33 -33
  9. data/lib/makit/cli/make.rb +54 -54
  10. data/lib/makit/cli/new.rb +37 -37
  11. data/lib/makit/cli/nuget_cache.rb +38 -38
  12. data/lib/makit/cli/pull.rb +31 -31
  13. data/lib/makit/cli/setup.rb +71 -71
  14. data/lib/makit/cli/work.rb +21 -21
  15. data/lib/makit/command_runner.rb +404 -404
  16. data/lib/makit/commands.rb +21 -21
  17. data/lib/makit/content/default_gitignore.rb +5 -5
  18. data/lib/makit/content/default_gitignore.txt +222 -222
  19. data/lib/makit/content/default_rakefile.rb +11 -11
  20. data/lib/makit/content/gem_rakefile.rb +14 -14
  21. data/lib/makit/data.rb +50 -50
  22. data/lib/makit/directories.rb +143 -143
  23. data/lib/makit/directory.rb +264 -264
  24. data/lib/makit/docs/files.rb +94 -94
  25. data/lib/makit/docs/rake.rb +106 -106
  26. data/lib/makit/dotnet.rb +212 -182
  27. data/lib/makit/environment.rb +131 -131
  28. data/lib/makit/fileinfo.rb +26 -26
  29. data/lib/makit/files.rb +47 -47
  30. data/lib/makit/git.rb +145 -145
  31. data/lib/makit/gitlab_runner.rb +60 -60
  32. data/lib/makit/humanize.rb +129 -129
  33. data/lib/makit/indexer.rb +56 -56
  34. data/lib/makit/logging.rb +106 -106
  35. data/lib/makit/markdown.rb +75 -75
  36. data/lib/makit/mp/basic_object_mp.rb +16 -16
  37. data/lib/makit/mp/command_mp.rb +13 -13
  38. data/lib/makit/mp/command_request.mp.rb +16 -16
  39. data/lib/makit/mp/project_mp.rb +210 -210
  40. data/lib/makit/mp/string_mp.rb +137 -137
  41. data/lib/makit/nuget.rb +62 -62
  42. data/lib/makit/process.rb +26 -26
  43. data/lib/makit/protoc.rb +104 -104
  44. data/lib/makit/secrets.rb +51 -51
  45. data/lib/makit/serializer.rb +115 -115
  46. data/lib/makit/show.rb +110 -110
  47. data/lib/makit/storage.rb +131 -131
  48. data/lib/makit/symbols.rb +149 -149
  49. data/lib/makit/task_info.rb +86 -86
  50. data/lib/makit/tasks.rb +137 -137
  51. data/lib/makit/tree.rb +37 -37
  52. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  53. data/lib/makit/version.rb +65 -65
  54. data/lib/makit/wix.rb +95 -95
  55. data/lib/makit/yaml.rb +17 -17
  56. data/lib/makit/zip.rb +17 -17
  57. data/lib/makit.rb +267 -267
  58. metadata +4 -2
@@ -1,86 +1,86 @@
1
- # lib/task_guard.rb
2
- module Makit
3
- class TaskInfo
4
-
5
- #
6
- # completed_tasks is a class variable that is used to store the completed tasks
7
- #
8
- class << self
9
- attr_accessor :completed_tasks
10
- end
11
- @completed_tasks = {}
12
-
13
- attr_reader :task_name, :start_time, :end_time, :artifacts_dir
14
-
15
- def self.slowest_task_name
16
- if @completed_tasks.empty?
17
- return "unknown"
18
- end
19
- @completed_tasks.max_by { |task_name, task_info| task_info[:duration] }[0]
20
- end
21
-
22
- #
23
- # block-yielding initializer
24
- #
25
- # usage:
26
- #
27
- # Makit::TaskInfo.track(:generate) do
28
- # # generate code
29
- # end
30
- #
31
- def self.track(task_name)
32
- task = new(task_name)
33
- Makit::SHOW.task(task_name)
34
- yield(task)
35
- ensure
36
- task.report_and_store_time_taken if task
37
- end
38
-
39
- #
40
- # Block-yielding initializer with inferred task name
41
- #
42
- def self.track_inferred
43
- task_name = infer_task_name
44
- Makit::SHOW.task(task_name)
45
- track(task_name) { |task| yield(task) }
46
- end
47
-
48
- def initialize(task_name)
49
- @task_name = task_name
50
- @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
51
- @start_time = Time.now
52
- #at_exit { report_and_store_time_taken }
53
- end
54
-
55
- def report_and_store_time_taken
56
- @end_time = Time.now
57
- duration = @end_time - @start_time
58
-
59
- # leverate the Makit::Humanize.get_humanized_duration method
60
- humanized_duration = Makit::Humanize.get_humanized_duration(duration)
61
- puts " #{@task_name} completed in #{humanized_duration}".colorize(:grey)
62
- #puts "[TaskGuard] Task '#{@task_name}' completed in #{duration}."
63
-
64
- # Add to class-level storage
65
- self.class.completed_tasks[@task_name] = {
66
- start_time: @start_time,
67
- end_time: @end_time,
68
- duration: duration,
69
- }
70
- end
71
-
72
- #def format_duration(seconds)
73
- # if seconds >= 60
74
- # mins = (seconds / 60).to_i
75
- # secs = (seconds % 60).round(2)
76
- # "#{mins}m #{secs}s"
77
- # else
78
- # "#{seconds.round(2)}s"
79
- # end
80
- # end
81
-
82
- def self.infer_task_name
83
- #Rake.application.current_scope.join(":") rescue "unknown"
84
- end
85
- end
86
- end
1
+ # lib/task_guard.rb
2
+ module Makit
3
+ class TaskInfo
4
+
5
+ #
6
+ # completed_tasks is a class variable that is used to store the completed tasks
7
+ #
8
+ class << self
9
+ attr_accessor :completed_tasks
10
+ end
11
+ @completed_tasks = {}
12
+
13
+ attr_reader :task_name, :start_time, :end_time, :artifacts_dir
14
+
15
+ def self.slowest_task_name
16
+ if @completed_tasks.empty?
17
+ return "unknown"
18
+ end
19
+ @completed_tasks.max_by { |task_name, task_info| task_info[:duration] }[0]
20
+ end
21
+
22
+ #
23
+ # block-yielding initializer
24
+ #
25
+ # usage:
26
+ #
27
+ # Makit::TaskInfo.track(:generate) do
28
+ # # generate code
29
+ # end
30
+ #
31
+ def self.track(task_name)
32
+ task = new(task_name)
33
+ Makit::SHOW.task(task_name)
34
+ yield(task)
35
+ ensure
36
+ task.report_and_store_time_taken if task
37
+ end
38
+
39
+ #
40
+ # Block-yielding initializer with inferred task name
41
+ #
42
+ def self.track_inferred
43
+ task_name = infer_task_name
44
+ Makit::SHOW.task(task_name)
45
+ track(task_name) { |task| yield(task) }
46
+ end
47
+
48
+ def initialize(task_name)
49
+ @task_name = task_name
50
+ @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
51
+ @start_time = Time.now
52
+ #at_exit { report_and_store_time_taken }
53
+ end
54
+
55
+ def report_and_store_time_taken
56
+ @end_time = Time.now
57
+ duration = @end_time - @start_time
58
+
59
+ # leverate the Makit::Humanize.get_humanized_duration method
60
+ humanized_duration = Makit::Humanize.get_humanized_duration(duration)
61
+ puts " #{@task_name} completed in #{humanized_duration}".colorize(:grey)
62
+ #puts "[TaskGuard] Task '#{@task_name}' completed in #{duration}."
63
+
64
+ # Add to class-level storage
65
+ self.class.completed_tasks[@task_name] = {
66
+ start_time: @start_time,
67
+ end_time: @end_time,
68
+ duration: duration,
69
+ }
70
+ end
71
+
72
+ #def format_duration(seconds)
73
+ # if seconds >= 60
74
+ # mins = (seconds / 60).to_i
75
+ # secs = (seconds % 60).round(2)
76
+ # "#{mins}m #{secs}s"
77
+ # else
78
+ # "#{seconds.round(2)}s"
79
+ # end
80
+ # end
81
+
82
+ def self.infer_task_name
83
+ #Rake.application.current_scope.join(":") rescue "unknown"
84
+ end
85
+ end
86
+ end
data/lib/makit/tasks.rb CHANGED
@@ -1,137 +1,137 @@
1
- # frozen_string_literal: true
2
- require "digest"
3
- require "rake/clean"
4
- #require "sqlite3"
5
-
6
- # This module provides classes for the Makit gem.
7
- module Makit
8
- # This class provide methods for managing persistent data for the makit gem
9
- class Tasks
10
- def self.run_default_commands(task_name)
11
- Makit::LOGGER.debug("Running default commands for task: #{task_name}")
12
- end
13
- end
14
- end
15
-
16
- desc "Remove any temporary products."
17
- task :clean do
18
- Makit::SHOW.task(:clean)
19
- Makit::RUNNER.run(Makit::RUNNER.parse_command_request("git clean -dXf"))
20
- end
21
-
22
- desc "Integrate changes into the git repository."
23
- task :integrate do
24
- Makit::TaskInfo.track(:integrate) do
25
- unstaged_files = Makit::Git.unstaged_files
26
- untracked_files = Makit::Git.untracked_files
27
- if unstaged_files.length > 0 || untracked_files.length > 0
28
- Makit::Git.integrate
29
- else
30
- puts " No unstaged or untracked files found".colorize(:grey)
31
- end
32
- end
33
- end
34
-
35
- #
36
- # Tag task
37
- #
38
- desc "tag the current version"
39
- task :tag do
40
- Makit::TaskInfo.track(:tag) do
41
- Makit::Git.tag(Makit::VERSION)
42
- end
43
- end
44
-
45
- desc "Sync changes with the git repository."
46
- task :sync => [:integrate,:pull_incoming]do
47
- Makit::TaskInfo.track(:sync) do
48
- #Makit::SHOW.task(:sync)
49
- Makit::Git.sync
50
- end
51
- end
52
-
53
- task :pull do
54
- Makit::SHOW.task(:pull)
55
- Makit::Git.pull
56
- end
57
-
58
- desc "pull changes from the remote branch, preferring incoming changes for conflicts"
59
- task :pull_incoming do
60
- Makit::TaskInfo.track(:pull_incoming) do
61
- #Makit::SHOW.task(:pull_incoming)
62
- puts " git branch is ".colorize(:grey) + "#{Makit::Git.branch}".colorize(:green)
63
- "git pull origin #{Makit::Git.branch} -X theirs".try
64
- end
65
- end
66
-
67
- desc "Format source code."
68
- task :format do
69
- Makit::SHOW.task(:format)
70
- Makit::RUNNER.try("rufo .") if File.exist?("Gemfile") || File.exist?("Rakefile")
71
- end
72
-
73
- #
74
- # Update docs task
75
- #
76
- desc "update the docs for the project"
77
- task :update_docs do
78
- Makit::TaskInfo.track(:update_docs) do
79
- mod_time = Makit::GIT_FILE_INFOS.select {
80
- |file|
81
- file.name.include?("src/" || file.name.include?("test/") || file.name.include?("artifacts/"))
82
- }.first.mtime
83
- if (Makit::Git.untracked_files.length > 0 ||
84
- Makit::Git.unstaged_files.length > 0)
85
- File.delete("docs/Rake.md") if File.exist?("docs/Rake.md")
86
- File.delete("docs/Files.md") if File.exist?("docs/Files.md")
87
- end
88
-
89
- Makit::Docs::Rake.generate if File.exist?("docs/Rake.md")
90
- Makit::Docs::Files.generate if File.exist?("docs/Files.md")
91
- end
92
- end
93
-
94
- desc "Update dependencies."
95
- task :update do
96
- Makit::SHOW.task(:update)
97
- yesterday = Time.now - 24 * 60 * 60
98
- system("bundle update") if File.exist?("Gemfile")
99
- # glob all *.csproj files
100
- Dir.glob("**/*.csproj").each do |file|
101
- "dotnet format #{file}".cache_try(yesterday)
102
- end
103
- end
104
-
105
- # Register the at_exit hook for cleanup
106
- at_exit do
107
- #puts "at_exit in tasks.rb...."
108
-
109
- puts " "
110
-
111
- if (Makit::Docs::Rake.get_top_task_name == "default")
112
- # let define some properties
113
- properties = {
114
- "version" => (defined?(Makit::VERSION) ? Makit::VERSION : ""),
115
- "branch" => Makit::Git.branch,
116
- "user" => ENV["USER"],
117
- "machine" => ENV["COMPUTERNAME"],
118
- "os" => ENV["OS"],
119
- "largest src" => Makit::Git.get_file_infos.max_by(&:size).name,
120
- "largest src size" => Makit::Humanize.get_humanized_size(Makit::Git.get_file_infos.max_by(&:size).size),
121
- "largest artifact" => Makit::Git.get_untracked_file_infos.max_by(&:size).name,
122
- "largest artifact size" => Makit::Humanize.get_humanized_size(Makit::Git.get_untracked_file_infos.max_by(&:size).size),
123
- "slowest task" => Makit::TaskInfo.slowest_task_name,
124
- }
125
-
126
- # display the properties as a table, right justify the key to 20 characters
127
- properties.each do |key, value|
128
- puts " #{key.ljust(25)} ".colorize(:grey) + "#{value}".colorize(:green)
129
- end
130
- puts " "
131
- end
132
-
133
- # display the duration
134
-
135
- duration = Time.now - Makit::STARTTIME
136
- puts " rake #{Makit::Docs::Rake.get_top_task_name}".colorize(:green) + " on branch ".colorize(:grey) + "#{Makit::Git.branch}".colorize(:green) + " completed in ".colorize(:grey) + Makit::Humanize.get_humanized_duration(duration).colorize(:green)
137
- end
1
+ # frozen_string_literal: true
2
+ require "digest"
3
+ require "rake/clean"
4
+ #require "sqlite3"
5
+
6
+ # This module provides classes for the Makit gem.
7
+ module Makit
8
+ # This class provide methods for managing persistent data for the makit gem
9
+ class Tasks
10
+ def self.run_default_commands(task_name)
11
+ Makit::LOGGER.debug("Running default commands for task: #{task_name}")
12
+ end
13
+ end
14
+ end
15
+
16
+ desc "Remove any temporary products."
17
+ task :clean do
18
+ Makit::SHOW.task(:clean)
19
+ Makit::RUNNER.run(Makit::RUNNER.parse_command_request("git clean -dXf"))
20
+ end
21
+
22
+ desc "Integrate changes into the git repository."
23
+ task :integrate do
24
+ Makit::TaskInfo.track(:integrate) do
25
+ unstaged_files = Makit::Git.unstaged_files
26
+ untracked_files = Makit::Git.untracked_files
27
+ if unstaged_files.length > 0 || untracked_files.length > 0
28
+ Makit::Git.integrate
29
+ else
30
+ puts " No unstaged or untracked files found".colorize(:grey)
31
+ end
32
+ end
33
+ end
34
+
35
+ #
36
+ # Tag task
37
+ #
38
+ desc "tag the current version"
39
+ task :tag do
40
+ Makit::TaskInfo.track(:tag) do
41
+ Makit::Git.tag(Makit::VERSION)
42
+ end
43
+ end
44
+
45
+ desc "Sync changes with the git repository."
46
+ task :sync => [:integrate,:pull_incoming]do
47
+ Makit::TaskInfo.track(:sync) do
48
+ #Makit::SHOW.task(:sync)
49
+ Makit::Git.sync
50
+ end
51
+ end
52
+
53
+ task :pull do
54
+ Makit::SHOW.task(:pull)
55
+ Makit::Git.pull
56
+ end
57
+
58
+ desc "pull changes from the remote branch, preferring incoming changes for conflicts"
59
+ task :pull_incoming do
60
+ Makit::TaskInfo.track(:pull_incoming) do
61
+ #Makit::SHOW.task(:pull_incoming)
62
+ puts " git branch is ".colorize(:grey) + "#{Makit::Git.branch}".colorize(:green)
63
+ "git pull origin #{Makit::Git.branch} -X theirs".try
64
+ end
65
+ end
66
+
67
+ desc "Format source code."
68
+ task :format do
69
+ Makit::SHOW.task(:format)
70
+ Makit::RUNNER.try("rufo .") if File.exist?("Gemfile") || File.exist?("Rakefile")
71
+ end
72
+
73
+ #
74
+ # Update docs task
75
+ #
76
+ desc "update the docs for the project"
77
+ task :update_docs do
78
+ Makit::TaskInfo.track(:update_docs) do
79
+ mod_time = Makit::GIT_FILE_INFOS.select {
80
+ |file|
81
+ file.name.include?("src/" || file.name.include?("test/") || file.name.include?("artifacts/"))
82
+ }.first.mtime
83
+ if (Makit::Git.untracked_files.length > 0 ||
84
+ Makit::Git.unstaged_files.length > 0)
85
+ File.delete("docs/Rake.md") if File.exist?("docs/Rake.md")
86
+ File.delete("docs/Files.md") if File.exist?("docs/Files.md")
87
+ end
88
+
89
+ Makit::Docs::Rake.generate if File.exist?("docs/Rake.md")
90
+ Makit::Docs::Files.generate if File.exist?("docs/Files.md")
91
+ end
92
+ end
93
+
94
+ desc "Update dependencies."
95
+ task :update do
96
+ Makit::SHOW.task(:update)
97
+ yesterday = Time.now - 24 * 60 * 60
98
+ system("bundle update") if File.exist?("Gemfile")
99
+ # glob all *.csproj files
100
+ Dir.glob("**/*.csproj").each do |file|
101
+ "dotnet format #{file}".cache_try(yesterday)
102
+ end
103
+ end
104
+
105
+ # Register the at_exit hook for cleanup
106
+ at_exit do
107
+ #puts "at_exit in tasks.rb...."
108
+
109
+ puts " "
110
+
111
+ if (Makit::Docs::Rake.get_top_task_name == "default")
112
+ # let define some properties
113
+ properties = {
114
+ "version" => (defined?(Makit::VERSION) ? Makit::VERSION : ""),
115
+ "branch" => Makit::Git.branch,
116
+ "user" => ENV["USER"],
117
+ "machine" => ENV["COMPUTERNAME"],
118
+ "os" => ENV["OS"],
119
+ "largest src" => Makit::Git.get_file_infos.max_by(&:size).name,
120
+ "largest src size" => Makit::Humanize.get_humanized_size(Makit::Git.get_file_infos.max_by(&:size).size),
121
+ "largest artifact" => Makit::Git.get_untracked_file_infos.max_by(&:size).name,
122
+ "largest artifact size" => Makit::Humanize.get_humanized_size(Makit::Git.get_untracked_file_infos.max_by(&:size).size),
123
+ "slowest task" => Makit::TaskInfo.slowest_task_name,
124
+ }
125
+
126
+ # display the properties as a table, right justify the key to 20 characters
127
+ properties.each do |key, value|
128
+ puts " #{key.ljust(25)} ".colorize(:grey) + "#{value}".colorize(:green)
129
+ end
130
+ puts " "
131
+ end
132
+
133
+ # display the duration
134
+
135
+ duration = Time.now - Makit::STARTTIME
136
+ puts " rake #{Makit::Docs::Rake.get_top_task_name}".colorize(:green) + " on branch ".colorize(:grey) + "#{Makit::Git.branch}".colorize(:green) + " completed in ".colorize(:grey) + Makit::Humanize.get_humanized_duration(duration).colorize(:green)
137
+ end
data/lib/makit/tree.rb CHANGED
@@ -1,37 +1,37 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- class Tree
6
- def get_source_tree
7
- files = `git ls-files`.split("\n")
8
- tree = {}
9
-
10
- # Build a nested hash representing the file structure
11
- files.each do |file|
12
- parts = file.split("/")
13
- current = tree
14
-
15
- parts.each_with_index do |part, index|
16
- current[part] ||= (index == parts.length - 1 ? nil : {})
17
- current = current[part] unless current[part].nil?
18
- end
19
- end
20
-
21
- generate_tree_string(tree)
22
- end
23
-
24
- def generate_tree_string(tree, indent = "")
25
- result = ""
26
- tree.each do |key, value|
27
- if value.is_a?(Hash)
28
- result << "#{indent}#{key}/\n"
29
- result << generate_tree_string(value, "#{indent} ")
30
- else
31
- result << "#{indent}#{key}\n"
32
- end
33
- end
34
- result
35
- end
36
- end
37
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ class Tree
6
+ def get_source_tree
7
+ files = `git ls-files`.split("\n")
8
+ tree = {}
9
+
10
+ # Build a nested hash representing the file structure
11
+ files.each do |file|
12
+ parts = file.split("/")
13
+ current = tree
14
+
15
+ parts.each_with_index do |part, index|
16
+ current[part] ||= (index == parts.length - 1 ? nil : {})
17
+ current = current[part] unless current[part].nil?
18
+ end
19
+ end
20
+
21
+ generate_tree_string(tree)
22
+ end
23
+
24
+ def generate_tree_string(tree, indent = "")
25
+ result = ""
26
+ tree.each do |key, value|
27
+ if value.is_a?(Hash)
28
+ result << "#{indent}#{key}/\n"
29
+ result << generate_tree_string(value, "#{indent} ")
30
+ else
31
+ result << "#{indent}#{key}\n"
32
+ end
33
+ end
34
+ result
35
+ end
36
+ end
37
+ end
@@ -1,25 +1,25 @@
1
- # Generated by the protocol buffer compiler. DO NOT EDIT!
2
- # Source: lib/makit/v1/makit.v1.proto for package 'makit.v1'
3
-
4
- require "grpc"
5
- require_relative "makit.v1_pb"
6
-
7
- module Makit
8
- module V1
9
- module CommandService
10
- # Service to execute commands on devices.
11
- class Service
12
- include ::GRPC::GenericService
13
-
14
- self.marshal_class_method = :encode
15
- self.unmarshal_class_method = :decode
16
- self.service_name = "makit.v1.CommandService"
17
-
18
- # Execute a command on a device.
19
- rpc :Execute, ::Makit::V1::CommandRequest, ::Makit::V1::Command
20
- end
21
-
22
- Stub = Service.rpc_stub_class
23
- end
24
- end
25
- end
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: lib/makit/v1/makit.v1.proto for package 'makit.v1'
3
+
4
+ require "grpc"
5
+ require_relative "makit.v1_pb"
6
+
7
+ module Makit
8
+ module V1
9
+ module CommandService
10
+ # Service to execute commands on devices.
11
+ class Service
12
+ include ::GRPC::GenericService
13
+
14
+ self.marshal_class_method = :encode
15
+ self.unmarshal_class_method = :decode
16
+ self.service_name = "makit.v1.CommandService"
17
+
18
+ # Execute a command on a device.
19
+ rpc :Execute, ::Makit::V1::CommandRequest, ::Makit::V1::Command
20
+ end
21
+
22
+ Stub = Service.rpc_stub_class
23
+ end
24
+ end
25
+ end