makit 0.0.5 → 0.0.6

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/makit/apache.rb +32 -32
  3. data/lib/makit/cli/clean.rb +14 -14
  4. data/lib/makit/cli/clone.rb +59 -59
  5. data/lib/makit/cli/init.rb +38 -38
  6. data/lib/makit/cli/main.rb +33 -33
  7. data/lib/makit/cli/make.rb +54 -54
  8. data/lib/makit/cli/new.rb +37 -37
  9. data/lib/makit/cli/nuget_cache.rb +38 -38
  10. data/lib/makit/cli/pull.rb +31 -31
  11. data/lib/makit/cli/setup.rb +71 -71
  12. data/lib/makit/cli/work.rb +21 -21
  13. data/lib/makit/command_runner.rb +321 -318
  14. data/lib/makit/commands.rb +21 -21
  15. data/lib/makit/content/default_gitignore.rb +5 -5
  16. data/lib/makit/content/default_rakefile.rb +11 -11
  17. data/lib/makit/content/gem_rakefile.rb +14 -14
  18. data/lib/makit/data.rb +50 -50
  19. data/lib/makit/directories.rb +140 -140
  20. data/lib/makit/directory.rb +153 -153
  21. data/lib/makit/dotnet.rb +83 -83
  22. data/lib/makit/environment.rb +123 -123
  23. data/lib/makit/files.rb +47 -47
  24. data/lib/makit/git.rb +66 -66
  25. data/lib/makit/gitlab_runner.rb +60 -60
  26. data/lib/makit/humanize.rb +89 -89
  27. data/lib/makit/logging.rb +96 -96
  28. data/lib/makit/markdown.rb +75 -75
  29. data/lib/makit/mp/basic_object_mp.rb +16 -16
  30. data/lib/makit/mp/project_mp.rb +160 -156
  31. data/lib/makit/mp/string_mp.rb +107 -107
  32. data/lib/makit/nuget.rb +57 -57
  33. data/lib/makit/protoc.rb +61 -61
  34. data/lib/makit/serializer.rb +115 -115
  35. data/lib/makit/storage.rb +131 -131
  36. data/lib/makit/symbols.rb +149 -149
  37. data/lib/makit/tasks.rb +67 -67
  38. data/lib/makit/tree.rb +37 -37
  39. data/lib/makit/v1/makit.v1_pb.rb +4 -3
  40. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  41. data/lib/makit/version.rb +12 -12
  42. data/lib/makit/wix.rb +95 -95
  43. data/lib/makit/zip.rb +17 -17
  44. data/lib/makit.rb +243 -243
  45. metadata +3 -3
@@ -1,89 +1,89 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- class Humanize
6
- def self.get_humanized_size(bytes, precision = 2)
7
- units = ["B", "KB", "MB", "GB", "TB", "PB"]
8
- return "0 B" if bytes == 0
9
-
10
- exp = (Math.log(bytes) / Math.log(1024)).to_i
11
- exp = units.size - 1 if exp >= units.size
12
-
13
- size = bytes.to_f / (1024 ** exp)
14
- format("%.#{precision}f %s", size, units[exp])
15
- end
16
-
17
- def self.get_make_result_summary(make_result)
18
- summary = "Make Result\n"
19
- summary += " Repository: #{make_result.repository}\n"
20
- summary += " Commit: #{make_result.commit}\n"
21
- summary += " Branch: #{make_result.branch}\n"
22
- summary += " Tag: #{make_result.tag}\n"
23
- summary += " Device: #{make_result.device}\n"
24
- summary += " Runtime Identifier: #{make_result.runtime_identifier}\n"
25
- summary += " Initial Size: #{get_humanized_size(make_result.initial_size)}\n"
26
- summary += " Final Size: #{get_humanized_size(make_result.final_size)}\n"
27
- summary += " Delta Size: #{get_humanized_size(make_result.final_size - make_result.initial_size)}\n"
28
- summary += " Commands: (#{make_result.commands.length})\n"
29
- make_result.commands.each do |command|
30
- details = get_command_details(command)
31
- summary += "\n"
32
- summary += indent_string(details, 4)
33
- summary += "\n"
34
- end
35
-
36
- summary
37
- end
38
-
39
- def self.get_commands(commands)
40
- message = ""
41
- commands.each do |command|
42
- message += Makit::Humanize::get_command_details(command)
43
- end
44
- message
45
- end
46
-
47
- def self.get_command_summary(command)
48
- symbol = Makit::Symbols.warning
49
- symbol = Makit::Symbols.checkmark if !command.exit_code.nil? && command.exit_code.zero?
50
- symbol = Makit::Symbols.error if command.exit_code != 0
51
- "#{symbol} #{command.name} #{command.arguments.join(" ")}"
52
- end
53
-
54
- def self.get_command_details(command)
55
- summary = "#{get_command_summary(command)}\n"
56
- summary += " Name: #{command.name}\n"
57
- summary += " Arguments: #{command.arguments.join(" ")}\n"
58
- summary += " Directory: #{command.directory}\n"
59
- summary += " Exit Code: #{command.exit_code}\n"
60
- if command.output.length > 0
61
- summary += " Output:\n"
62
- summary += indent_string(command.output, 4)
63
- summary += "\n"
64
- end
65
- if command.error.length > 0
66
- summary += " Error:\n"
67
- summary += indent_string(command.error, 4)
68
- summary += "\n"
69
- end
70
- summary
71
- end
72
-
73
- def self.indent_string(string, spaces)
74
- string.split("\n").map { |line| " " * spaces + line }.join("\n")
75
- end
76
-
77
- def self.get_protobuf_timestamp(timestamp)
78
- Time.at(timestamp.seconds, timestamp.nanos / 1000.0).strftime("%Y-%m-%d %H:%M:%S")
79
- end
80
-
81
- def self.get_protobuf_duration(duration)
82
- total_seconds = duration.seconds + (duration.nanos / 1_000_000_000.0)
83
- hours = (total_seconds / 3600).to_i
84
- minutes = ((total_seconds % 3600) / 60).to_i
85
- seconds = (total_seconds % 60).round(2)
86
- "#{hours}h #{minutes}m #{seconds}s"
87
- end
88
- end
89
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ class Humanize
6
+ def self.get_humanized_size(bytes, precision = 2)
7
+ units = ["B", "KB", "MB", "GB", "TB", "PB"]
8
+ return "0 B" if bytes == 0
9
+
10
+ exp = (Math.log(bytes) / Math.log(1024)).to_i
11
+ exp = units.size - 1 if exp >= units.size
12
+
13
+ size = bytes.to_f / (1024 ** exp)
14
+ format("%.#{precision}f %s", size, units[exp])
15
+ end
16
+
17
+ def self.get_make_result_summary(make_result)
18
+ summary = "Make Result\n"
19
+ summary += " Repository: #{make_result.repository}\n"
20
+ summary += " Commit: #{make_result.commit}\n"
21
+ summary += " Branch: #{make_result.branch}\n"
22
+ summary += " Tag: #{make_result.tag}\n"
23
+ summary += " Device: #{make_result.device}\n"
24
+ summary += " Runtime Identifier: #{make_result.runtime_identifier}\n"
25
+ summary += " Initial Size: #{get_humanized_size(make_result.initial_size)}\n"
26
+ summary += " Final Size: #{get_humanized_size(make_result.final_size)}\n"
27
+ summary += " Delta Size: #{get_humanized_size(make_result.final_size - make_result.initial_size)}\n"
28
+ summary += " Commands: (#{make_result.commands.length})\n"
29
+ make_result.commands.each do |command|
30
+ details = get_command_details(command)
31
+ summary += "\n"
32
+ summary += indent_string(details, 4)
33
+ summary += "\n"
34
+ end
35
+
36
+ summary
37
+ end
38
+
39
+ def self.get_commands(commands)
40
+ message = ""
41
+ commands.each do |command|
42
+ message += Makit::Humanize::get_command_details(command)
43
+ end
44
+ message
45
+ end
46
+
47
+ def self.get_command_summary(command)
48
+ symbol = Makit::Symbols.warning
49
+ symbol = Makit::Symbols.checkmark if !command.exit_code.nil? && command.exit_code.zero?
50
+ symbol = Makit::Symbols.error if command.exit_code != 0
51
+ "#{symbol} #{command.name} #{command.arguments.join(" ")}"
52
+ end
53
+
54
+ def self.get_command_details(command)
55
+ summary = "#{get_command_summary(command)}\n"
56
+ summary += " Name: #{command.name}\n"
57
+ summary += " Arguments: #{command.arguments.join(" ")}\n"
58
+ summary += " Directory: #{command.directory}\n"
59
+ summary += " Exit Code: #{command.exit_code}\n"
60
+ if command.output.length > 0
61
+ summary += " Output:\n"
62
+ summary += indent_string(command.output, 4)
63
+ summary += "\n"
64
+ end
65
+ if command.error.length > 0
66
+ summary += " Error:\n"
67
+ summary += indent_string(command.error, 4)
68
+ summary += "\n"
69
+ end
70
+ summary
71
+ end
72
+
73
+ def self.indent_string(string, spaces)
74
+ string.split("\n").map { |line| " " * spaces + line }.join("\n")
75
+ end
76
+
77
+ def self.get_protobuf_timestamp(timestamp)
78
+ Time.at(timestamp.seconds, timestamp.nanos / 1000.0).strftime("%Y-%m-%d %H:%M:%S")
79
+ end
80
+
81
+ def self.get_protobuf_duration(duration)
82
+ total_seconds = duration.seconds + (duration.nanos / 1_000_000_000.0)
83
+ hours = (total_seconds / 3600).to_i
84
+ minutes = ((total_seconds % 3600) / 60).to_i
85
+ seconds = (total_seconds % 60).round(2)
86
+ "#{hours}h #{minutes}m #{seconds}s"
87
+ end
88
+ end
89
+ end
data/lib/makit/logging.rb CHANGED
@@ -1,96 +1,96 @@
1
- # frozen_string_literal: true
2
-
3
- require "logger"
4
- require "colorize"
5
- require_relative "symbols"
6
-
7
- # This module provides classes for the Makit gem.
8
- module Makit
9
- module Logging
10
- ANSI_COLOR_REGEX = /\e\[[0-9;]*m/
11
-
12
- class PlainFormatter < Logger::Formatter
13
- def call(_severity, _time, _progname, msg)
14
- stripped_msg = msg.gsub(ANSI_COLOR_REGEX, "") # Remove ANSI color codes
15
- "#{stripped_msg}\n"
16
- end
17
- end
18
-
19
- class ColorFormatter < Logger::Formatter
20
- def call(_severity, _time, _progname, msg)
21
- "#{msg}\n"
22
- end
23
- end
24
-
25
- # This class provide methods for working with Directories/
26
- #
27
- # Example:
28
- #
29
- # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
30
- #
31
- class MultiLogger
32
- def initialize(*targets)
33
- @targets = targets
34
- end
35
-
36
- def add(severity, message = nil, progname = nil, &block)
37
- @targets.each do |logger|
38
- logger.add(severity, message, progname, &block)
39
- logger.flush if logger.respond_to?(:flush)
40
- end
41
- end
42
-
43
- def <<(message)
44
- @targets.each do |logger|
45
- logger << message
46
- logger.flush if logger.respond_to?(:flush)
47
- end
48
- end
49
-
50
- def close
51
- @targets.each(&:close)
52
- end
53
-
54
- def method_missing(method, *args, &block)
55
- @targets.each { |logger| logger.send(method, *args, &block) }
56
- end
57
-
58
- def respond_to_missing?(method, include_private = false)
59
- @targets.all? { |logger| logger.respond_to?(method, include_private) }
60
- end
61
-
62
- def self.create_logger
63
- stdout_logger = Logger.new($stdout) # ColoredLogger.new(STDOUT)
64
- stdout_logger.level = Logger::DEBUG
65
- # Assign the custom formatter to the file_logger
66
- stdout_logger.formatter = ColorFormatter.new
67
-
68
- # if clean or clobber commands are used, then log ONLY to stdout
69
- if ARGV.include?("clean") || ARGV.include?("clobber")
70
- return stdout_logger
71
- end
72
- if Makit::Environment.project_root_directory.nil?
73
- logger = stdout_logger
74
- else
75
- #log_filename = if ARGV.empty?
76
- # "#{Makit::Environment.project_root_directory}/artifacts/rake.log"
77
- # else
78
- # "#{Makit::Environment.project_root_directory}/artifacts/rake_#{ARGV.join("_").gsub(":",
79
- # "_")}.log"
80
- # end
81
- # FileUtils.remove_file(log_file) if File.exist?(log_file)
82
- #FileUtils.mkdir_p(File.dirname(log_filename)) unless Dir.exist?(File.dirname(log_filename))
83
- #File.open(log_filename, "w")
84
- #file_logger = Logger.new(log_filename)
85
- #file_logger.level = Logger::DEBUG
86
- # Assign the custom formatter to the file_logger
87
- #file_logger.formatter = PlainFormatter.new
88
- #logger = MultiLogger.new(file_logger, stdout_logger)
89
- logger = stdout_logger
90
- end
91
-
92
- logger
93
- end
94
- end
95
- end
96
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "logger"
4
+ require "colorize"
5
+ require_relative "symbols"
6
+
7
+ # This module provides classes for the Makit gem.
8
+ module Makit
9
+ module Logging
10
+ ANSI_COLOR_REGEX = /\e\[[0-9;]*m/
11
+
12
+ class PlainFormatter < Logger::Formatter
13
+ def call(_severity, _time, _progname, msg)
14
+ stripped_msg = msg.gsub(ANSI_COLOR_REGEX, "") # Remove ANSI color codes
15
+ "#{stripped_msg}\n"
16
+ end
17
+ end
18
+
19
+ class ColorFormatter < Logger::Formatter
20
+ def call(_severity, _time, _progname, msg)
21
+ "#{msg}\n"
22
+ end
23
+ end
24
+
25
+ # This class provide methods for working with Directories/
26
+ #
27
+ # Example:
28
+ #
29
+ # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
30
+ #
31
+ class MultiLogger
32
+ def initialize(*targets)
33
+ @targets = targets
34
+ end
35
+
36
+ def add(severity, message = nil, progname = nil, &block)
37
+ @targets.each do |logger|
38
+ logger.add(severity, message, progname, &block)
39
+ logger.flush if logger.respond_to?(:flush)
40
+ end
41
+ end
42
+
43
+ def <<(message)
44
+ @targets.each do |logger|
45
+ logger << message
46
+ logger.flush if logger.respond_to?(:flush)
47
+ end
48
+ end
49
+
50
+ def close
51
+ @targets.each(&:close)
52
+ end
53
+
54
+ def method_missing(method, *args, &block)
55
+ @targets.each { |logger| logger.send(method, *args, &block) }
56
+ end
57
+
58
+ def respond_to_missing?(method, include_private = false)
59
+ @targets.all? { |logger| logger.respond_to?(method, include_private) }
60
+ end
61
+
62
+ def self.create_logger
63
+ stdout_logger = Logger.new($stdout) # ColoredLogger.new(STDOUT)
64
+ stdout_logger.level = Logger::DEBUG
65
+ # Assign the custom formatter to the file_logger
66
+ stdout_logger.formatter = ColorFormatter.new
67
+
68
+ # if clean or clobber commands are used, then log ONLY to stdout
69
+ if ARGV.include?("clean") || ARGV.include?("clobber")
70
+ return stdout_logger
71
+ end
72
+ if Makit::Environment.project_root_directory.nil?
73
+ logger = stdout_logger
74
+ else
75
+ #log_filename = if ARGV.empty?
76
+ # "#{Makit::Environment.project_root_directory}/artifacts/rake.log"
77
+ # else
78
+ # "#{Makit::Environment.project_root_directory}/artifacts/rake_#{ARGV.join("_").gsub(":",
79
+ # "_")}.log"
80
+ # end
81
+ # FileUtils.remove_file(log_file) if File.exist?(log_file)
82
+ #FileUtils.mkdir_p(File.dirname(log_filename)) unless Dir.exist?(File.dirname(log_filename))
83
+ #File.open(log_filename, "w")
84
+ #file_logger = Logger.new(log_filename)
85
+ #file_logger.level = Logger::DEBUG
86
+ # Assign the custom formatter to the file_logger
87
+ #file_logger.formatter = PlainFormatter.new
88
+ #logger = MultiLogger.new(file_logger, stdout_logger)
89
+ logger = stdout_logger
90
+ end
91
+
92
+ logger
93
+ end
94
+ end
95
+ end
96
+ end
@@ -1,75 +1,75 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "humanize"
4
-
5
- # This module provides classes for the Makit gem.
6
- module Makit
7
- class Markdown
8
- def self.get_commands_markdown(commands)
9
- summary = ""
10
- commands.each do |command|
11
- md = Makit::Markdown.get_command_markdown(command)
12
- summary += md
13
- end
14
- summary
15
- end
16
-
17
- def self.get_command_markdown(command)
18
- md = "<details>\n"
19
- md += "<summary>#{Makit::Humanize::get_command_summary(command)}</summary>\n\n"
20
-
21
- if command.output.length > 0
22
- md += "<table><tr><th>output</th></tr><tr><td>\n\n" #<pre>\n"
23
- md += "```shell\n"
24
- md += "#{command.output}\n"
25
- md += "```\n\n"
26
- md += "</td></tr></table>\n\n"
27
- #md += "output:\n"
28
- #md += "```shell\n"
29
- #md += "#{command.output}\n"
30
- #md += "```\n\n"
31
- end
32
- if command.error.length > 0
33
- md += "error:\n"
34
- md += "```shell\n"
35
- md += "#{command.error}\n"
36
- md += "```\n\n"
37
- end
38
- md += "| exit code | started at | duration | user | device | os | directory |\n"
39
- md += "| --- | --- | --- | --- | --- | --- | --- |\n"
40
- md += "| #{command.exit_code} | #{Makit::Humanize::get_protobuf_timestamp(command.started_at)} | #{Makit::Humanize::get_protobuf_duration(command.duration)} | #{command.user} | #{command.device} | #{command.os} | #{command.directory} |\n"
41
-
42
- #md += "| Name | Value |\n"
43
- #md += "| --- | --- |\n"
44
- #md += "| exit code | #{command.exit_code} |\n"
45
- #md += "| started at | #{Makit::Humanize::get_protobuf_timestamp(command.started_at)} |\n"
46
- #md += "| duration | #{Makit::Humanize::get_protobuf_duration(command.duration)} |\n"
47
- #md += "| user | #{command.user} |\n"
48
- #md += "| device | #{command.device} |\n"
49
- #md += "| os | #{command.os} |\n"
50
- #md += "| directory | #{command.directory} |\n"
51
- md += "</details>\n"
52
- md
53
- end
54
-
55
- def self.get_make_result_markdown(make_result)
56
- md = "# Make Result\n"
57
- # display allow of the fields of the MakeResult message
58
- md += "| Name | Value |\n"
59
- md += "| --- | --- |\n"
60
- md += "| repository | #{make_result.repository} |\n"
61
- md += "| commit | #{make_result.commit} |\n"
62
- md += "| branch | #{make_result.branch} |\n"
63
- md += "| tag | #{make_result.tag} |\n"
64
- md += "| device | #{make_result.device} |\n"
65
- md += "| runtime identifier | #{make_result.runtime_identifier} |\n"
66
- md += "| initial size | #{make_result.initial_size} |\n"
67
- md += "| final size | #{make_result.final_size} |\n"
68
- md += "\n"
69
- md += "## Commands\n"
70
- make_result.commands.each do |command|
71
- md += Makit::Markdown.get_command_markdown(command)
72
- end
73
- end
74
- end
75
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "humanize"
4
+
5
+ # This module provides classes for the Makit gem.
6
+ module Makit
7
+ class Markdown
8
+ def self.get_commands_markdown(commands)
9
+ summary = ""
10
+ commands.each do |command|
11
+ md = Makit::Markdown.get_command_markdown(command)
12
+ summary += md
13
+ end
14
+ summary
15
+ end
16
+
17
+ def self.get_command_markdown(command)
18
+ md = "<details>\n"
19
+ md += "<summary>#{Makit::Humanize::get_command_summary(command)}</summary>\n\n"
20
+
21
+ if command.output.length > 0
22
+ md += "<table><tr><th>output</th></tr><tr><td>\n\n" #<pre>\n"
23
+ md += "```shell\n"
24
+ md += "#{command.output}\n"
25
+ md += "```\n\n"
26
+ md += "</td></tr></table>\n\n"
27
+ #md += "output:\n"
28
+ #md += "```shell\n"
29
+ #md += "#{command.output}\n"
30
+ #md += "```\n\n"
31
+ end
32
+ if command.error.length > 0
33
+ md += "error:\n"
34
+ md += "```shell\n"
35
+ md += "#{command.error}\n"
36
+ md += "```\n\n"
37
+ end
38
+ md += "| exit code | started at | duration | user | device | os | directory |\n"
39
+ md += "| --- | --- | --- | --- | --- | --- | --- |\n"
40
+ md += "| #{command.exit_code} | #{Makit::Humanize::get_protobuf_timestamp(command.started_at)} | #{Makit::Humanize::get_protobuf_duration(command.duration)} | #{command.user} | #{command.device} | #{command.os} | #{command.directory} |\n"
41
+
42
+ #md += "| Name | Value |\n"
43
+ #md += "| --- | --- |\n"
44
+ #md += "| exit code | #{command.exit_code} |\n"
45
+ #md += "| started at | #{Makit::Humanize::get_protobuf_timestamp(command.started_at)} |\n"
46
+ #md += "| duration | #{Makit::Humanize::get_protobuf_duration(command.duration)} |\n"
47
+ #md += "| user | #{command.user} |\n"
48
+ #md += "| device | #{command.device} |\n"
49
+ #md += "| os | #{command.os} |\n"
50
+ #md += "| directory | #{command.directory} |\n"
51
+ md += "</details>\n"
52
+ md
53
+ end
54
+
55
+ def self.get_make_result_markdown(make_result)
56
+ md = "# Make Result\n"
57
+ # display allow of the fields of the MakeResult message
58
+ md += "| Name | Value |\n"
59
+ md += "| --- | --- |\n"
60
+ md += "| repository | #{make_result.repository} |\n"
61
+ md += "| commit | #{make_result.commit} |\n"
62
+ md += "| branch | #{make_result.branch} |\n"
63
+ md += "| tag | #{make_result.tag} |\n"
64
+ md += "| device | #{make_result.device} |\n"
65
+ md += "| runtime identifier | #{make_result.runtime_identifier} |\n"
66
+ md += "| initial size | #{make_result.initial_size} |\n"
67
+ md += "| final size | #{make_result.final_size} |\n"
68
+ md += "\n"
69
+ md += "## Commands\n"
70
+ make_result.commands.each do |command|
71
+ md += Makit::Markdown.get_command_markdown(command)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,16 +1,16 @@
1
- # frozen_string_literal: true
2
- require "json"
3
- require "yaml"
4
-
5
- # monkey patch String class with a run method
6
-
7
- class BasicObject
8
- def to_json
9
- self.to_json
10
- end
11
-
12
- def to_pretty_json
13
- json = self.to_json
14
- ::JSON.pretty_generate(::JSON.parse(json))
15
- end
16
- end # class BasicObject
1
+ # frozen_string_literal: true
2
+ require "json"
3
+ require "yaml"
4
+
5
+ # monkey patch String class with a run method
6
+
7
+ class BasicObject
8
+ def to_json
9
+ self.to_json
10
+ end
11
+
12
+ def to_pretty_json
13
+ json = self.to_json
14
+ ::JSON.pretty_generate(::JSON.parse(json))
15
+ end
16
+ end # class BasicObject