makit 0.0.67 → 0.0.69

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: 968649af8412fb6d4e65306accb168dc77d14f9bf7b765e0bf0ef28c4e6948bb
4
- data.tar.gz: 70b4f89e25dbb84a08e05d3e3614bc9b9bf50feadfe673eb61919a5ad5b03d48
3
+ metadata.gz: c6c6864a86d4526b8ffbc461acff55477662565522af1ddfdad8143d031a8e7a
4
+ data.tar.gz: f9da493abc7aecb89b87a7206ec908671e4df834955eb2dda452bf8ecaa5de42
5
5
  SHA512:
6
- metadata.gz: 8219b999ee6e04be3f7f13d66bbd98896b44fa0665f743b56eb0bb9a0df1f6a13662938bb183690ad8ac994317e9532073862f40313764591bd0afd989df4e8a
7
- data.tar.gz: 7ea88775dd342a2f52d383f1f88643c51ffc4b1ec080d030d0b14b4e0d18332cc3f0c2b8bc60b963033be3b3bc7551b05054f4b0d2b35946a471b5052204d7a1
6
+ metadata.gz: 3b0facfcfbfedf1d4532403a115d834b154ded15df76361bfb686c24858918e3627c41bf776da7c462b8a3d39bc3850c9b2038a972312e56c8f29ce178a63c40
7
+ data.tar.gz: 53781a13bc755b632e0ba6ef2207637625385e0f1782e347e23a45c99eaa4bebc2b04123a2ce390fddf55f3e668bdf32f155c2e58d7e90ef83868a362afd7d80
@@ -24,30 +24,29 @@ module Makit
24
24
 
25
25
  def self.show_largest_files(dir, limit)
26
26
  puts " directory " + "#{dir}".colorize(:green) + " #{limit} largest files"
27
- files = Dir.glob(File.join(dir, '**', '*'), File::FNM_DOTMATCH)
27
+ files = Dir.glob(File.join(dir, "**", "*"), File::FNM_DOTMATCH)
28
28
  .select { |f| File.file?(f) }
29
-
29
+
30
30
  sorted = files.map { |f| [f, File.size(f)] }
31
31
  .sort_by { |_, size| -size }
32
32
  .first(limit)
33
-
33
+
34
34
  sorted.each do |path, size|
35
35
  # right justify human_size to be at least 10 characters wide
36
36
  padded_size = human_size(size).rjust(10)
37
- puts " #{padded_size}" + " rake#{path}".colorize(:green)
37
+ puts " #{padded_size}" + " #{path}".colorize(:green)
38
38
  end
39
39
  end
40
-
40
+
41
41
  def human_size(bytes)
42
- units = ['B', 'KB', 'MB', 'GB', 'TB']
42
+ units = ["B", "KB", "MB", "GB", "TB"]
43
43
  return "0 B" if bytes == 0
44
-
44
+
45
45
  exp = (Math.log(bytes) / Math.log(1024)).to_i
46
46
  exp = units.size - 1 if exp >= units.size
47
-
48
- "%.2f %s" % [bytes.to_f / 1024**exp, units[exp]]
47
+
48
+ "%.2f %s" % [bytes.to_f / 1024 ** exp, units[exp]]
49
49
  end
50
-
51
50
 
52
51
  def self.human_size(bytes)
53
52
  units = ["B", "KB", "MB", "GB", "TB"]
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "find"
4
+ require "pathname"
5
+ #require "gitignore"
6
+
7
+ # This module provides classes for the Makit gem.
8
+ module Makit
9
+ module Docs
10
+ # This class provide methods for generating documentation
11
+ # about source files and artifacts.
12
+ #
13
+ # docs/Files.md
14
+ #
15
+ # Example:
16
+ #
17
+ # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
18
+ #
19
+ class Files
20
+ def self.generate
21
+ filename = "docs/Files.md"
22
+ if !Dir.exist?("docs")
23
+ Dir.mkdir("docs")
24
+ end
25
+ # overwrite the file if it exists
26
+ if File.exist?(filename)
27
+ File.delete(filename)
28
+ end
29
+ File.open(filename, "w") do |file|
30
+ file.write("# Files\n\n")
31
+ file.write("A file summary for the project #{Makit::Git::get_remote_url}.\n\n")
32
+
33
+ #
34
+ # Tracked Files
35
+ #
36
+ # report on the file tracked by git.
37
+ tracked_file_infos = Makit::Git::get_file_infos
38
+ # first display the count and total size of the files tracked by git.
39
+ file.write("## Tracked Files\n\n")
40
+ file.write("#{tracked_file_infos.count} files with a total size of #{Makit::Humanize.get_humanized_size(tracked_file_infos.sum(&:size))}.\n\n")
41
+ # next display a table or the largest 10 files tracked by git.
42
+ # ordered by latest size first, display the size, name, and last modified date.
43
+ # leverage the humanize class to display the size in a human readable format.
44
+ # leverage the humanize class to display the last modified date in a human readable format.
45
+ file.write("The 10 largest files tracked by git are:\n\n")
46
+ file.write("| Size | Name | Last Modified Date |\n")
47
+ file.write("|------|------|------------------|\n")
48
+ tracked_file_infos.sort_by(&:size).reverse.first(10).each do |file_info|
49
+ file.write("| #{Makit::Humanize.get_humanized_size(file_info.size)} | #{file_info.name} | #{Makit::Humanize.get_humanized_timestamp(file_info.mtime)} |\n")
50
+ end
51
+ file.write("\n")
52
+
53
+ #
54
+ # Untracked Files
55
+ #
56
+ # report on the files that are not tracked by git.
57
+ untracked_file_infos = Makit::Git::get_untracked_file_infos
58
+ # display the count and total size of the files that are not tracked by git.
59
+ file.write("## Untracked Files\n\n")
60
+ file.write("#{untracked_file_infos.count} files with a total size of #{Makit::Humanize.get_humanized_size(untracked_file_infos.sum(&:size))}.\n\n")
61
+ # next display a table or the largest 10 files not tracked by git.
62
+ # ordered by latest size first, display the size, name, and last modified date.
63
+ # leverage the humanize class to display the size in a human readable format.
64
+ # leverage the humanize class to display the last modified date in a human readable format.
65
+ file.write("The 10 largest files not tracked by git are:\n\n")
66
+ file.write("| Size | Name | Last Modified Date |\n")
67
+ file.write("|------|------|------------------|\n")
68
+ untracked_file_infos.sort_by(&:size).reverse.first(10).each do |file_info|
69
+ file.write("| #{Makit::Humanize.get_humanized_size(file_info.size)} | #{file_info.name} | #{Makit::Humanize.get_humanized_timestamp(file_info.mtime)} |\n")
70
+ end
71
+ file.write("\n")
72
+
73
+ #
74
+ # Git Repository Size
75
+ #
76
+ ## report on the git repository size
77
+ file.write(Makit::RUNNER.execute("git count-objects -vH").to_markdown)
78
+ file.write("\n\n")
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -12,5 +12,15 @@ module Makit
12
12
  @mtime = mtime
13
13
  @size = size
14
14
  end
15
+
16
+ def self.get_file_infos(filenames)
17
+ filenames.map do |filename|
18
+ begin
19
+ FileInfo.new(name: filename, mtime: File.mtime(filename), size: File.size(filename))
20
+ rescue
21
+ next
22
+ end
23
+ end
24
+ end
15
25
  end
16
26
  end
data/lib/makit/git.rb CHANGED
@@ -46,12 +46,13 @@ module Makit
46
46
  "git archive --format zip --output #{zipfilename} HEAD".run
47
47
  end
48
48
 
49
- def self.get_file_infos()
49
+ def self.get_file_infos
50
50
  file_infos = []
51
- command = `git ls-files`
52
- command.split("\n").map do |path|
51
+ file_list = `git ls-files`.split("\n")
52
+ # iterate over the filelist and get the file infos
53
+ file_list.each do |file|
53
54
  begin
54
- file_infos << FileInfo.new(name: path, mtime: File.mtime(path), size: File.size(path))
55
+ file_infos << FileInfo.new(name: file, mtime: File.mtime(file), size: File.size(file))
55
56
  rescue
56
57
  next
57
58
  end
@@ -60,6 +61,28 @@ module Makit
60
61
  file_infos
61
62
  end
62
63
 
64
+ def self.get_untracked_file_infos
65
+ #Makit::FileInfo::get_file_infos(`git ls-files --others --exclude=standard`.split("\n")).sort_by! { |info| info.mtime }.reverse!
66
+ file_infos = []
67
+ file_list = `git ls-files --others --exclude=standard`.split("\n")
68
+ file_list.each do |file|
69
+ begin
70
+ file_infos << FileInfo.new(name: file, mtime: File.mtime(file), size: File.size(file))
71
+ rescue
72
+ next
73
+ end
74
+ end
75
+ file_infos.sort_by! { |info| info.mtime }.reverse!
76
+ file_infos
77
+ # file_infos << FileInfo.new(name: path, mtime: File.mtime(path), size: File.size(path))
78
+ # rescue
79
+ # next
80
+ #ß end
81
+ #end
82
+ #file_infos.sort_by! { |info| info.mtime }.reverse!
83
+ #file_infos
84
+ end
85
+
63
86
  def self.branch
64
87
  `git branch --show-current`.strip
65
88
  end
@@ -84,6 +107,10 @@ module Makit
84
107
  `git log -1 --pretty=%ae`.strip
85
108
  end
86
109
 
110
+ def self.get_remote_url
111
+ `git remote get-url origin`.strip
112
+ end
113
+
87
114
  def self.tag(version)
88
115
  # check if a tag for the current version already exists
89
116
  if (`git tag -l v#{version}`.strip.length > 0)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ module V1
5
+ class Command
6
+ def to_markdown
7
+ md = '## ' + self.name + " " + self.arguments.join(" ") + "\n\n"
8
+ md += "```\n" + self.output + "\n```\n"
9
+ md
10
+ end
11
+ end # class Command
12
+ end # module V1
13
+ end # module Makit
@@ -0,0 +1,49 @@
1
+ # lib/task_guard.rb
2
+ module Makit
3
+ class TaskInfo
4
+ @completed_tasks = {} # Class-level hash
5
+
6
+ class << self
7
+ attr_reader :completed_tasks
8
+ end
9
+
10
+ attr_reader :task_name, :start_time, :end_time, :artifacts_dir
11
+
12
+ def initialize(task_name)
13
+ @task_name = task_name
14
+ @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
15
+ @start_time = Time.now
16
+ at_exit { report_and_store_time_taken }
17
+ end
18
+
19
+ private
20
+
21
+ def report_and_store_time_taken
22
+ @end_time = Time.now
23
+ duration = @end_time - @start_time
24
+
25
+ puts "[TaskGuard] Task '#{@task_name}' completed in #{format_duration(duration)}."
26
+
27
+ # Save to class-level storage
28
+ self.class.completed_tasks[@task_name] = {
29
+ start_time: @start_time,
30
+ end_time: @end_time,
31
+ duration: duration,
32
+ }
33
+ end
34
+
35
+ def format_duration(seconds)
36
+ if seconds >= 60
37
+ mins = (seconds / 60).to_i
38
+ secs = (seconds % 60).round(2)
39
+ "#{mins}m #{secs}s"
40
+ else
41
+ "#{seconds.round(2)}s"
42
+ end
43
+ end
44
+
45
+ def self.infer_task_name
46
+ Rake.application.current_scope.join(":") rescue "unknown"
47
+ end
48
+ end
49
+ end
data/lib/makit/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Makit
4
- VERSION = "0.0.67"
4
+ VERSION = "0.0.69"
5
5
 
6
6
  class Version
7
7
  # given an array of version strings, return the highest version
data/lib/makit.rb CHANGED
@@ -18,7 +18,7 @@ else
18
18
  end
19
19
 
20
20
  #%w[makit makit/v1 makit/cli makit/content makit/mp].each do |dir|
21
- %w[makit makit/cli makit/content makit/mp].each do |dir|
21
+ %w[makit makit/cli makit/content makit/mp makit/docs].each do |dir|
22
22
  Dir[File.join(__dir__, dir, "*.rb")].each do |file|
23
23
  require_relative file
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.67
4
+ version: 0.0.69
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lou Parslow
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-03-29 00:00:00.000000000 Z
11
+ date: 2025-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -180,6 +180,7 @@ files:
180
180
  - lib/makit/data.rb
181
181
  - lib/makit/directories.rb
182
182
  - lib/makit/directory.rb
183
+ - lib/makit/docs/files.rb
183
184
  - lib/makit/dotnet.rb
184
185
  - lib/makit/environment.rb
185
186
  - lib/makit/fileinfo.rb
@@ -191,6 +192,7 @@ files:
191
192
  - lib/makit/logging.rb
192
193
  - lib/makit/markdown.rb
193
194
  - lib/makit/mp/basic_object_mp.rb
195
+ - lib/makit/mp/command_mp.rb
194
196
  - lib/makit/mp/command_request.mp.rb
195
197
  - lib/makit/mp/project_mp.rb
196
198
  - lib/makit/mp/string_mp.rb
@@ -202,6 +204,7 @@ files:
202
204
  - lib/makit/show.rb
203
205
  - lib/makit/storage.rb
204
206
  - lib/makit/symbols.rb
207
+ - lib/makit/task_info.rb
205
208
  - lib/makit/tasks.rb
206
209
  - lib/makit/tree.rb
207
210
  - lib/makit/v1/makit.v1_pb.rb
@@ -232,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
235
  - !ruby/object:Gem::Version
233
236
  version: '0'
234
237
  requirements: []
235
- rubygems_version: 3.5.23
238
+ rubygems_version: 3.5.16
236
239
  signing_key:
237
240
  specification_version: 4
238
241
  summary: CI/CD tools for Ruby developers.