makit 0.0.83 → 0.0.85
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/generated/makit/v1/makit.v1_pb.rb +35 -0
- data/lib/generated/makit/v1/web/link_pb.rb +20 -0
- data/lib/makit/apache.rb +32 -32
- data/lib/makit/cli/clean.rb +14 -14
- data/lib/makit/cli/clone.rb +59 -59
- data/lib/makit/cli/init.rb +38 -38
- data/lib/makit/cli/main.rb +33 -33
- data/lib/makit/cli/make.rb +54 -54
- data/lib/makit/cli/new.rb +37 -37
- data/lib/makit/cli/nuget_cache.rb +38 -38
- data/lib/makit/cli/pull.rb +31 -31
- data/lib/makit/cli/setup.rb +71 -71
- data/lib/makit/cli/work.rb +21 -21
- data/lib/makit/command_runner.rb +404 -404
- data/lib/makit/commands.rb +21 -21
- data/lib/makit/content/default_gitignore.rb +5 -5
- data/lib/makit/content/default_gitignore.txt +222 -222
- data/lib/makit/content/default_rakefile.rb +11 -11
- data/lib/makit/content/gem_rakefile.rb +14 -14
- data/lib/makit/data.rb +50 -50
- data/lib/makit/directories.rb +144 -144
- data/lib/makit/directory.rb +264 -264
- data/lib/makit/docs/files.rb +94 -94
- data/lib/makit/docs/rake.rb +106 -106
- data/lib/makit/dotnet.rb +219 -219
- data/lib/makit/email.rb +61 -61
- data/lib/makit/environment.rb +131 -131
- data/lib/makit/fileinfo.rb +26 -26
- data/lib/makit/files.rb +47 -47
- data/lib/makit/git.rb +145 -145
- data/lib/makit/gitlab_runner.rb +60 -60
- data/lib/makit/humanize.rb +129 -129
- data/lib/makit/indexer.rb +56 -56
- data/lib/makit/logging.rb +106 -106
- data/lib/makit/markdown.rb +75 -75
- data/lib/makit/mp/basic_object_mp.rb +16 -16
- data/lib/makit/mp/command_mp.rb +13 -13
- data/lib/makit/mp/command_request.mp.rb +16 -16
- data/lib/makit/mp/project_mp.rb +210 -210
- data/lib/makit/mp/string_mp.rb +137 -137
- data/lib/makit/nuget.rb +72 -72
- data/lib/makit/process.rb +26 -26
- data/lib/makit/protoc.rb +104 -104
- data/lib/makit/rake.rb +25 -25
- data/lib/makit/secrets.rb +51 -51
- data/lib/makit/serializer.rb +115 -115
- data/lib/makit/show.rb +110 -110
- data/lib/makit/storage.rb +131 -131
- data/lib/makit/symbols.rb +149 -149
- data/lib/makit/task_info.rb +86 -86
- data/lib/makit/tasks.rb +158 -144
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
- data/lib/makit/version.rb +64 -65
- data/lib/makit/wix.rb +95 -95
- data/lib/makit/yaml.rb +17 -17
- data/lib/makit/zip.rb +17 -17
- data/lib/makit.rb +267 -267
- metadata +5 -3
data/lib/makit/show.rb
CHANGED
@@ -1,110 +1,110 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "find"
|
4
|
-
require "pathname"
|
5
|
-
|
6
|
-
# This module provides classes for the Makit gem.
|
7
|
-
module Makit
|
8
|
-
class Show
|
9
|
-
def modified(path)
|
10
|
-
if File.file?(path)
|
11
|
-
puts "#{path} modified ".colorize(:grey) + "#{Makit::Humanize.get_humanized_timestamp(File.mtime(path))}".colorize(:cyan)
|
12
|
-
elsif File.directory?(path)
|
13
|
-
puts "#{path} modified ".colorize(:grey) + "#{Makit::Humanize.get_humanized_timestamp(Makit::Directory.modified(path))}".colorize(:cyan)
|
14
|
-
else
|
15
|
-
puts "#{path} does not exist"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def age(path)
|
20
|
-
if File.file?(path)
|
21
|
-
modified = File.mtime(path)
|
22
|
-
age = (Time.now - modified).to_f
|
23
|
-
puts "#{path} age is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_duration(age)}".colorize(:cyan)
|
24
|
-
elsif File.directory?(path)
|
25
|
-
modified = Makit::Directory.modified(path)
|
26
|
-
age = (Time.now -modified).to_f
|
27
|
-
puts "#{path} age is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_duration(age)}".colorize(:cyan)
|
28
|
-
else
|
29
|
-
puts "#{path} does not exist"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def file(path)
|
34
|
-
if File.file?(path)
|
35
|
-
modified = File.mtime(path)
|
36
|
-
age = (Time.now - modified).to_f
|
37
|
-
humanized_size = Makit::Humanize.get_humanized_size(File.size(path))
|
38
|
-
#puts "#{file_symbol} ".colorize(:grey) + "#{humanized_size.rjust(10)} ".colorize(:cyan) + " #{path} ".colorize(:grey)
|
39
|
-
puts "#{file_symbol} ".colorize(:grey) + "#{File.basename(path)} ".colorize(:green) + "#{humanized_size.rjust(10)} ".colorize(:cyan) + " #{path} ".colorize(:grey) # + "modified #{Makit::Humanize.get_humanized_timestamp(modified)}".colorize(:grey) + " age #{Makit::Humanize.get_humanized_duration(age)}".colorize(:grey)
|
40
|
-
else
|
41
|
-
puts "#{path} does not exist"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def files(path_array)
|
46
|
-
path_array.each do |path|
|
47
|
-
file(path)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def file_symbol
|
52
|
-
#📄 (U+1F4C4) – "Page with Curl"
|
53
|
-
#"\u{1F4C4}"
|
54
|
-
"@"
|
55
|
-
end
|
56
|
-
|
57
|
-
def directory_symbol
|
58
|
-
# 📁 (U+1F4C1) – "File Folder"
|
59
|
-
"\u{1F4C1}"
|
60
|
-
end
|
61
|
-
|
62
|
-
def task_symbol
|
63
|
-
# 🛠️ (U+1F6E0) Hammer and Wrench – Represents tools, suitable for tasks and automation.
|
64
|
-
"\u{1F6E0}"
|
65
|
-
end
|
66
|
-
|
67
|
-
def git_branch_symbol
|
68
|
-
# 🌱 (U+1F331) – "Seedling"
|
69
|
-
"\u{1F331}"
|
70
|
-
end
|
71
|
-
|
72
|
-
def size(path)
|
73
|
-
if File.file?(path)
|
74
|
-
puts "#{path} size is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_size(File.size(path))}".colorize(:cyan)
|
75
|
-
elsif File.directory?(path)
|
76
|
-
puts "#{path} size is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_size(Makit::Directory.get_size(path))}".colorize(:cyan)
|
77
|
-
else
|
78
|
-
puts "#{path} does not exist"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def task(task)
|
83
|
-
puts ("=" * 80).colorize(:grey)
|
84
|
-
puts " ".colorize(:grey) + "#{task}".colorize(:green)
|
85
|
-
#puts ("=" * 100).colorize(:grey)
|
86
|
-
end
|
87
|
-
|
88
|
-
def info(text)
|
89
|
-
puts " ".colorize(:grey) + "#{text}".colorize(:cyan)
|
90
|
-
end
|
91
|
-
|
92
|
-
def success(text)
|
93
|
-
puts " ".colorize(:grey) + "#{text}".colorize(:green)
|
94
|
-
end
|
95
|
-
|
96
|
-
def version(path)
|
97
|
-
puts " #{Makit::Version.get_version_from_file(path)}".colorize(:green) + " found in #{path}".colorize(:grey)
|
98
|
-
end
|
99
|
-
|
100
|
-
def versions(glob_pattern)
|
101
|
-
Dir.glob(glob_pattern).each do |filename|
|
102
|
-
puts " #{Makit::Version.get_version_from_file(filename)}".colorize(:green) + " found in #{filename}".colorize(:grey)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def git_branch
|
107
|
-
puts "#{git_branch_symbol} ".colorize(:grey) + "#{Makit::Git.branch}".colorize(:green) + " branch".colorize(:grey)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "find"
|
4
|
+
require "pathname"
|
5
|
+
|
6
|
+
# This module provides classes for the Makit gem.
|
7
|
+
module Makit
|
8
|
+
class Show
|
9
|
+
def modified(path)
|
10
|
+
if File.file?(path)
|
11
|
+
puts "#{path} modified ".colorize(:grey) + "#{Makit::Humanize.get_humanized_timestamp(File.mtime(path))}".colorize(:cyan)
|
12
|
+
elsif File.directory?(path)
|
13
|
+
puts "#{path} modified ".colorize(:grey) + "#{Makit::Humanize.get_humanized_timestamp(Makit::Directory.modified(path))}".colorize(:cyan)
|
14
|
+
else
|
15
|
+
puts "#{path} does not exist"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def age(path)
|
20
|
+
if File.file?(path)
|
21
|
+
modified = File.mtime(path)
|
22
|
+
age = (Time.now - modified).to_f
|
23
|
+
puts "#{path} age is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_duration(age)}".colorize(:cyan)
|
24
|
+
elsif File.directory?(path)
|
25
|
+
modified = Makit::Directory.modified(path)
|
26
|
+
age = (Time.now -modified).to_f
|
27
|
+
puts "#{path} age is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_duration(age)}".colorize(:cyan)
|
28
|
+
else
|
29
|
+
puts "#{path} does not exist"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def file(path)
|
34
|
+
if File.file?(path)
|
35
|
+
modified = File.mtime(path)
|
36
|
+
age = (Time.now - modified).to_f
|
37
|
+
humanized_size = Makit::Humanize.get_humanized_size(File.size(path))
|
38
|
+
#puts "#{file_symbol} ".colorize(:grey) + "#{humanized_size.rjust(10)} ".colorize(:cyan) + " #{path} ".colorize(:grey)
|
39
|
+
puts "#{file_symbol} ".colorize(:grey) + "#{File.basename(path)} ".colorize(:green) + "#{humanized_size.rjust(10)} ".colorize(:cyan) + " #{path} ".colorize(:grey) # + "modified #{Makit::Humanize.get_humanized_timestamp(modified)}".colorize(:grey) + " age #{Makit::Humanize.get_humanized_duration(age)}".colorize(:grey)
|
40
|
+
else
|
41
|
+
puts "#{path} does not exist"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def files(path_array)
|
46
|
+
path_array.each do |path|
|
47
|
+
file(path)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def file_symbol
|
52
|
+
#📄 (U+1F4C4) – "Page with Curl"
|
53
|
+
#"\u{1F4C4}"
|
54
|
+
"@"
|
55
|
+
end
|
56
|
+
|
57
|
+
def directory_symbol
|
58
|
+
# 📁 (U+1F4C1) – "File Folder"
|
59
|
+
"\u{1F4C1}"
|
60
|
+
end
|
61
|
+
|
62
|
+
def task_symbol
|
63
|
+
# 🛠️ (U+1F6E0) Hammer and Wrench – Represents tools, suitable for tasks and automation.
|
64
|
+
"\u{1F6E0}"
|
65
|
+
end
|
66
|
+
|
67
|
+
def git_branch_symbol
|
68
|
+
# 🌱 (U+1F331) – "Seedling"
|
69
|
+
"\u{1F331}"
|
70
|
+
end
|
71
|
+
|
72
|
+
def size(path)
|
73
|
+
if File.file?(path)
|
74
|
+
puts "#{path} size is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_size(File.size(path))}".colorize(:cyan)
|
75
|
+
elsif File.directory?(path)
|
76
|
+
puts "#{path} size is ".colorize(:grey) + "#{Makit::Humanize.get_humanized_size(Makit::Directory.get_size(path))}".colorize(:cyan)
|
77
|
+
else
|
78
|
+
puts "#{path} does not exist"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def task(task)
|
83
|
+
puts ("=" * 80).colorize(:grey)
|
84
|
+
puts " ".colorize(:grey) + "#{task}".colorize(:green)
|
85
|
+
#puts ("=" * 100).colorize(:grey)
|
86
|
+
end
|
87
|
+
|
88
|
+
def info(text)
|
89
|
+
puts " ".colorize(:grey) + "#{text}".colorize(:cyan)
|
90
|
+
end
|
91
|
+
|
92
|
+
def success(text)
|
93
|
+
puts " ".colorize(:grey) + "#{text}".colorize(:green)
|
94
|
+
end
|
95
|
+
|
96
|
+
def version(path)
|
97
|
+
puts " #{Makit::Version.get_version_from_file(path)}".colorize(:green) + " found in #{path}".colorize(:grey)
|
98
|
+
end
|
99
|
+
|
100
|
+
def versions(glob_pattern)
|
101
|
+
Dir.glob(glob_pattern).each do |filename|
|
102
|
+
puts " #{Makit::Version.get_version_from_file(filename)}".colorize(:green) + " found in #{filename}".colorize(:grey)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def git_branch
|
107
|
+
puts "#{git_branch_symbol} ".colorize(:grey) + "#{Makit::Git.branch}".colorize(:green) + " branch".colorize(:grey)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/lib/makit/storage.rb
CHANGED
@@ -1,131 +1,131 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# This module provides classes for the Makit gem.
|
4
|
-
module Makit
|
5
|
-
# This class provide methods for serializing and deserializing objects.
|
6
|
-
#
|
7
|
-
class Storage
|
8
|
-
# declare a private class variable, connection_string
|
9
|
-
attr_accessor :directory #= nil
|
10
|
-
attr_accessor :protoc_json_serializer # = Makit::Serializer::new()
|
11
|
-
attr_accessor :protoc_binary_serializer # = Makit::Serializer::new()
|
12
|
-
|
13
|
-
def initialize(directory)
|
14
|
-
@directory = directory
|
15
|
-
@protoc_json_serializer = Makit::Serializer::new(Makit::Proto3Formats::JSON)
|
16
|
-
@protoc_binary_serializer = Makit::Serializer::new(Makit::Proto3Formats::BINARY)
|
17
|
-
end
|
18
|
-
|
19
|
-
def save(object, key)
|
20
|
-
#puts "=" * 80
|
21
|
-
#puts "Saving object to storage"
|
22
|
-
# puts "=" * 80
|
23
|
-
raise "directory is nil" if @directory.nil?
|
24
|
-
raise "Object is nil" if object.nil?
|
25
|
-
raise "Key is nil" if key.nil?
|
26
|
-
|
27
|
-
# get the fully qualfied type name of the object
|
28
|
-
type_name = object.class.to_s
|
29
|
-
#puts "Type name: #{type_name}"
|
30
|
-
|
31
|
-
type_rel_dir = type_name.downcase.gsub("::", "/")
|
32
|
-
#puts "Type relative directory: #{type_rel_dir}"
|
33
|
-
|
34
|
-
# extract the file extension from the key
|
35
|
-
file_extension = File.extname(key)
|
36
|
-
#puts "File extension: #{file_extension}"
|
37
|
-
|
38
|
-
serializer = nil
|
39
|
-
if file_extension == ".json"
|
40
|
-
serializer = @protoc_json_serializer
|
41
|
-
elsif file_extension == ".pb"
|
42
|
-
serializer = @protoc_binary_serializer
|
43
|
-
else
|
44
|
-
raise "Unknown file extension: #{file_extension}"
|
45
|
-
end
|
46
|
-
bytes = serializer.serialize(object)
|
47
|
-
#puts "Serialized object size: #{bytes.size} bytes"
|
48
|
-
|
49
|
-
rel_filename = File.join(type_rel_dir, "#{key}")
|
50
|
-
#puts "Relative filename: #{rel_filename}"
|
51
|
-
|
52
|
-
filename = File.join(@directory, rel_filename)
|
53
|
-
#puts "Saving object to file: #{filename}"
|
54
|
-
|
55
|
-
# make sure the file directory has been created
|
56
|
-
FileUtils.mkdir_p(File.dirname(filename)) unless File.directory?(File.dirname(filename))
|
57
|
-
# write the bytes to the file
|
58
|
-
File.open(filename, "wb") do |file|
|
59
|
-
file.write(bytes)
|
60
|
-
end
|
61
|
-
|
62
|
-
#puts "=" * 80
|
63
|
-
end
|
64
|
-
|
65
|
-
def load(type, key)
|
66
|
-
raise "directory is nil" if @directory.nil?
|
67
|
-
raise "Key is nil" if key.nil?
|
68
|
-
|
69
|
-
# get the fully qualfied type name of the object
|
70
|
-
type_name = type.to_s # object.class.to_s
|
71
|
-
#puts "Type name: #{type_name}"
|
72
|
-
|
73
|
-
type_rel_dir = type_name.downcase.gsub("::", "/")
|
74
|
-
#puts "Type relative directory: #{type_rel_dir}"
|
75
|
-
|
76
|
-
# extract the file extension from the key
|
77
|
-
file_extension = File.extname(key)
|
78
|
-
#puts "File extension: #{file_extension}"
|
79
|
-
|
80
|
-
rel_filename = File.join(type_rel_dir, "#{key}")
|
81
|
-
#puts "Relative filename: #{rel_filename}"
|
82
|
-
|
83
|
-
filename = File.join(@directory, rel_filename)
|
84
|
-
#puts "Loading object from file: #{filename}"
|
85
|
-
|
86
|
-
# make sure the file exists
|
87
|
-
raise "File does not exist: #{filename}" unless File.exist?(filename)
|
88
|
-
|
89
|
-
# read the bytes from the file
|
90
|
-
bytes = File.read(filename, mode: "rb")
|
91
|
-
#puts "Read object from file: #{filename}"
|
92
|
-
|
93
|
-
# extract the file extension from the key
|
94
|
-
file_extension = File.extname(key)
|
95
|
-
#puts "File extension: #{file_extension}"
|
96
|
-
|
97
|
-
serializer = nil
|
98
|
-
if file_extension == ".json"
|
99
|
-
serializer = @protoc_json_serializer
|
100
|
-
elsif file_extension == ".pb"
|
101
|
-
serializer = @protoc_binary_serializer
|
102
|
-
else
|
103
|
-
raise "Unknown file extension: #{file_extension}"
|
104
|
-
end
|
105
|
-
|
106
|
-
# deserialize the object
|
107
|
-
object = serializer.deserialize(type, bytes)
|
108
|
-
#puts "Deserialized object size: #{bytes.size} bytes"
|
109
|
-
|
110
|
-
# if the object type inherits from Google::Protobuf::AbstractMessage,
|
111
|
-
# then serialize to protobuf json format
|
112
|
-
#if object.is_a? Google::Protobuf::MessageExts
|
113
|
-
# puts "Serializing to protobuf json format"
|
114
|
-
# serialized_object = object.to_json
|
115
|
-
# pretty_json = JSON.pretty_generate(JSON.parse(serialized_object))
|
116
|
-
# puts pretty_json
|
117
|
-
#else
|
118
|
-
# puts "Serializing to Marshal format"
|
119
|
-
# serialized_object = Marshal.dump(object)
|
120
|
-
#end
|
121
|
-
# serialize the object
|
122
|
-
#serialized_object = Marshal.dump(object)
|
123
|
-
|
124
|
-
# save the object to the storage
|
125
|
-
# ...
|
126
|
-
#puts "=" * 80
|
127
|
-
|
128
|
-
object
|
129
|
-
end
|
130
|
-
end # class Storage
|
131
|
-
end # module Makit
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module provides classes for the Makit gem.
|
4
|
+
module Makit
|
5
|
+
# This class provide methods for serializing and deserializing objects.
|
6
|
+
#
|
7
|
+
class Storage
|
8
|
+
# declare a private class variable, connection_string
|
9
|
+
attr_accessor :directory #= nil
|
10
|
+
attr_accessor :protoc_json_serializer # = Makit::Serializer::new()
|
11
|
+
attr_accessor :protoc_binary_serializer # = Makit::Serializer::new()
|
12
|
+
|
13
|
+
def initialize(directory)
|
14
|
+
@directory = directory
|
15
|
+
@protoc_json_serializer = Makit::Serializer::new(Makit::Proto3Formats::JSON)
|
16
|
+
@protoc_binary_serializer = Makit::Serializer::new(Makit::Proto3Formats::BINARY)
|
17
|
+
end
|
18
|
+
|
19
|
+
def save(object, key)
|
20
|
+
#puts "=" * 80
|
21
|
+
#puts "Saving object to storage"
|
22
|
+
# puts "=" * 80
|
23
|
+
raise "directory is nil" if @directory.nil?
|
24
|
+
raise "Object is nil" if object.nil?
|
25
|
+
raise "Key is nil" if key.nil?
|
26
|
+
|
27
|
+
# get the fully qualfied type name of the object
|
28
|
+
type_name = object.class.to_s
|
29
|
+
#puts "Type name: #{type_name}"
|
30
|
+
|
31
|
+
type_rel_dir = type_name.downcase.gsub("::", "/")
|
32
|
+
#puts "Type relative directory: #{type_rel_dir}"
|
33
|
+
|
34
|
+
# extract the file extension from the key
|
35
|
+
file_extension = File.extname(key)
|
36
|
+
#puts "File extension: #{file_extension}"
|
37
|
+
|
38
|
+
serializer = nil
|
39
|
+
if file_extension == ".json"
|
40
|
+
serializer = @protoc_json_serializer
|
41
|
+
elsif file_extension == ".pb"
|
42
|
+
serializer = @protoc_binary_serializer
|
43
|
+
else
|
44
|
+
raise "Unknown file extension: #{file_extension}"
|
45
|
+
end
|
46
|
+
bytes = serializer.serialize(object)
|
47
|
+
#puts "Serialized object size: #{bytes.size} bytes"
|
48
|
+
|
49
|
+
rel_filename = File.join(type_rel_dir, "#{key}")
|
50
|
+
#puts "Relative filename: #{rel_filename}"
|
51
|
+
|
52
|
+
filename = File.join(@directory, rel_filename)
|
53
|
+
#puts "Saving object to file: #{filename}"
|
54
|
+
|
55
|
+
# make sure the file directory has been created
|
56
|
+
FileUtils.mkdir_p(File.dirname(filename)) unless File.directory?(File.dirname(filename))
|
57
|
+
# write the bytes to the file
|
58
|
+
File.open(filename, "wb") do |file|
|
59
|
+
file.write(bytes)
|
60
|
+
end
|
61
|
+
|
62
|
+
#puts "=" * 80
|
63
|
+
end
|
64
|
+
|
65
|
+
def load(type, key)
|
66
|
+
raise "directory is nil" if @directory.nil?
|
67
|
+
raise "Key is nil" if key.nil?
|
68
|
+
|
69
|
+
# get the fully qualfied type name of the object
|
70
|
+
type_name = type.to_s # object.class.to_s
|
71
|
+
#puts "Type name: #{type_name}"
|
72
|
+
|
73
|
+
type_rel_dir = type_name.downcase.gsub("::", "/")
|
74
|
+
#puts "Type relative directory: #{type_rel_dir}"
|
75
|
+
|
76
|
+
# extract the file extension from the key
|
77
|
+
file_extension = File.extname(key)
|
78
|
+
#puts "File extension: #{file_extension}"
|
79
|
+
|
80
|
+
rel_filename = File.join(type_rel_dir, "#{key}")
|
81
|
+
#puts "Relative filename: #{rel_filename}"
|
82
|
+
|
83
|
+
filename = File.join(@directory, rel_filename)
|
84
|
+
#puts "Loading object from file: #{filename}"
|
85
|
+
|
86
|
+
# make sure the file exists
|
87
|
+
raise "File does not exist: #{filename}" unless File.exist?(filename)
|
88
|
+
|
89
|
+
# read the bytes from the file
|
90
|
+
bytes = File.read(filename, mode: "rb")
|
91
|
+
#puts "Read object from file: #{filename}"
|
92
|
+
|
93
|
+
# extract the file extension from the key
|
94
|
+
file_extension = File.extname(key)
|
95
|
+
#puts "File extension: #{file_extension}"
|
96
|
+
|
97
|
+
serializer = nil
|
98
|
+
if file_extension == ".json"
|
99
|
+
serializer = @protoc_json_serializer
|
100
|
+
elsif file_extension == ".pb"
|
101
|
+
serializer = @protoc_binary_serializer
|
102
|
+
else
|
103
|
+
raise "Unknown file extension: #{file_extension}"
|
104
|
+
end
|
105
|
+
|
106
|
+
# deserialize the object
|
107
|
+
object = serializer.deserialize(type, bytes)
|
108
|
+
#puts "Deserialized object size: #{bytes.size} bytes"
|
109
|
+
|
110
|
+
# if the object type inherits from Google::Protobuf::AbstractMessage,
|
111
|
+
# then serialize to protobuf json format
|
112
|
+
#if object.is_a? Google::Protobuf::MessageExts
|
113
|
+
# puts "Serializing to protobuf json format"
|
114
|
+
# serialized_object = object.to_json
|
115
|
+
# pretty_json = JSON.pretty_generate(JSON.parse(serialized_object))
|
116
|
+
# puts pretty_json
|
117
|
+
#else
|
118
|
+
# puts "Serializing to Marshal format"
|
119
|
+
# serialized_object = Marshal.dump(object)
|
120
|
+
#end
|
121
|
+
# serialize the object
|
122
|
+
#serialized_object = Marshal.dump(object)
|
123
|
+
|
124
|
+
# save the object to the storage
|
125
|
+
# ...
|
126
|
+
#puts "=" * 80
|
127
|
+
|
128
|
+
object
|
129
|
+
end
|
130
|
+
end # class Storage
|
131
|
+
end # module Makit
|