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 +4 -4
- data/lib/makit/directory.rb +9 -10
- data/lib/makit/docs/files.rb +83 -0
- data/lib/makit/fileinfo.rb +10 -0
- data/lib/makit/git.rb +31 -4
- data/lib/makit/mp/command_mp.rb +13 -0
- data/lib/makit/task_info.rb +49 -0
- data/lib/makit/version.rb +1 -1
- data/lib/makit.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6c6864a86d4526b8ffbc461acff55477662565522af1ddfdad8143d031a8e7a
|
4
|
+
data.tar.gz: f9da493abc7aecb89b87a7206ec908671e4df834955eb2dda452bf8ecaa5de42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b0facfcfbfedf1d4532403a115d834b154ded15df76361bfb686c24858918e3627c41bf776da7c462b8a3d39bc3850c9b2038a972312e56c8f29ce178a63c40
|
7
|
+
data.tar.gz: 53781a13bc755b632e0ba6ef2207637625385e0f1782e347e23a45c99eaa4bebc2b04123a2ce390fddf55f3e668bdf32f155c2e58d7e90ef83868a362afd7d80
|
data/lib/makit/directory.rb
CHANGED
@@ -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,
|
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}" + "
|
37
|
+
puts " #{padded_size}" + " #{path}".colorize(:green)
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def human_size(bytes)
|
42
|
-
units = [
|
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
|
data/lib/makit/fileinfo.rb
CHANGED
@@ -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
|
-
|
52
|
-
|
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:
|
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
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.
|
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-
|
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.
|
238
|
+
rubygems_version: 3.5.16
|
236
239
|
signing_key:
|
237
240
|
specification_version: 4
|
238
241
|
summary: CI/CD tools for Ruby developers.
|