makit 0.0.35 → 0.0.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) 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 +391 -353
  14. data/lib/makit/commands.rb +21 -21
  15. data/lib/makit/content/default_gitignore.rb +5 -5
  16. data/lib/makit/content/default_gitignore.txt +222 -222
  17. data/lib/makit/content/default_rakefile.rb +11 -11
  18. data/lib/makit/content/gem_rakefile.rb +14 -14
  19. data/lib/makit/data.rb +50 -50
  20. data/lib/makit/directories.rb +140 -140
  21. data/lib/makit/directory.rb +184 -184
  22. data/lib/makit/dotnet.rb +156 -156
  23. data/lib/makit/environment.rb +127 -127
  24. data/lib/makit/fileinfo.rb +16 -16
  25. data/lib/makit/files.rb +47 -47
  26. data/lib/makit/git.rb +86 -86
  27. data/lib/makit/gitlab_runner.rb +60 -60
  28. data/lib/makit/humanize.rb +112 -112
  29. data/lib/makit/indexer.rb +56 -0
  30. data/lib/makit/logging.rb +96 -96
  31. data/lib/makit/markdown.rb +75 -75
  32. data/lib/makit/mp/basic_object_mp.rb +16 -16
  33. data/lib/makit/mp/command_request.mp.rb +16 -16
  34. data/lib/makit/mp/project_mp.rb +210 -210
  35. data/lib/makit/mp/string_mp.rb +122 -122
  36. data/lib/makit/nuget.rb +57 -57
  37. data/lib/makit/protoc.rb +104 -104
  38. data/lib/makit/serializer.rb +115 -115
  39. data/lib/makit/show.rb +76 -77
  40. data/lib/makit/storage.rb +131 -131
  41. data/lib/makit/symbols.rb +149 -149
  42. data/lib/makit/tasks.rb +60 -60
  43. data/lib/makit/tree.rb +37 -37
  44. data/lib/makit/v1/makit.v1_pb.rb +4 -3
  45. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  46. data/lib/makit/version.rb +12 -12
  47. data/lib/makit/wix.rb +95 -95
  48. data/lib/makit/zip.rb +17 -17
  49. data/lib/makit.rb +267 -267
  50. metadata +4 -5
  51. data/lib/generated/makit/v1/makit.v1_pb.rb +0 -34
  52. data/lib/generated/makit/v1/web/link_pb.rb +0 -20
data/lib/makit/nuget.rb CHANGED
@@ -1,57 +1,57 @@
1
- require "tmpdir"
2
- # This module provides classes for the Makit gem.
3
- module Makit
4
- # This class provide methods for working with the Nuget package cache
5
- #
6
- # Example:
7
- #
8
- # Makit::Directory.cache("Google.Protobuf", "3.27.2")
9
- #
10
- # dotnet nuget locals all --list
11
- # dotnet nuget locals all --clear
12
- #
13
- class NuGet
14
- def self.get_cache_dir(package, version)
15
- File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
16
- end
17
-
18
- def self.cache(package, version)
19
- # if the package is already cached, there is nothing to do
20
- if (!Dir.exist?(get_cache_dir(package, version)))
21
- Dir.mktmpdir do |dir|
22
- # Use the temp directory here
23
- Dir.chdir(dir) do
24
- system("dotnet new classlib -n ClassLib")
25
- Dir.chdir("ClassLib") do
26
-
27
- # display a list of directories in the current directory
28
- puts Dir.entries(Dir.pwd)
29
- # display a list of files in the current directory
30
- puts Dir.entries(Dir.pwd)
31
- puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
32
- system("dotnet add ClassLib.csproj package #{package} --version #{version}")
33
- end
34
- end
35
- # The directory and its contents will be removed automatically after the block
36
- end
37
- end
38
- end
39
-
40
- def self.clear_cache(package, version)
41
- if (Dir.exist?(get_cache_dir(package, version)))
42
- FileUtils.rm_rf(get_cache_dir(package, version))
43
- end
44
- end
45
-
46
- # get the latest version of the package
47
- def self.get_latest_version(package)
48
- dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
49
- if (Dir.exist?(dir))
50
- versions = Dir.entries(dir).select { |entry| File.directory?(File.join(dir, entry)) && !(entry == "." || entry == "..") }
51
- highest_version = Makit::Version::get_highest_version(versions)
52
- return highest_version
53
- end
54
- nil
55
- end
56
- end
57
- end
1
+ require "tmpdir"
2
+ # This module provides classes for the Makit gem.
3
+ module Makit
4
+ # This class provide methods for working with the Nuget package cache
5
+ #
6
+ # Example:
7
+ #
8
+ # Makit::Directory.cache("Google.Protobuf", "3.27.2")
9
+ #
10
+ # dotnet nuget locals all --list
11
+ # dotnet nuget locals all --clear
12
+ #
13
+ class NuGet
14
+ def self.get_cache_dir(package, version)
15
+ File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
16
+ end
17
+
18
+ def self.cache(package, version)
19
+ # if the package is already cached, there is nothing to do
20
+ if (!Dir.exist?(get_cache_dir(package, version)))
21
+ Dir.mktmpdir do |dir|
22
+ # Use the temp directory here
23
+ Dir.chdir(dir) do
24
+ system("dotnet new classlib -n ClassLib")
25
+ Dir.chdir("ClassLib") do
26
+
27
+ # display a list of directories in the current directory
28
+ puts Dir.entries(Dir.pwd)
29
+ # display a list of files in the current directory
30
+ puts Dir.entries(Dir.pwd)
31
+ puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
32
+ system("dotnet add ClassLib.csproj package #{package} --version #{version}")
33
+ end
34
+ end
35
+ # The directory and its contents will be removed automatically after the block
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.clear_cache(package, version)
41
+ if (Dir.exist?(get_cache_dir(package, version)))
42
+ FileUtils.rm_rf(get_cache_dir(package, version))
43
+ end
44
+ end
45
+
46
+ # get the latest version of the package
47
+ def self.get_latest_version(package)
48
+ dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
49
+ if (Dir.exist?(dir))
50
+ versions = Dir.entries(dir).select { |entry| File.directory?(File.join(dir, entry)) && !(entry == "." || entry == "..") }
51
+ highest_version = Makit::Version::get_highest_version(versions)
52
+ return highest_version
53
+ end
54
+ nil
55
+ end
56
+ end
57
+ end
data/lib/makit/protoc.rb CHANGED
@@ -1,104 +1,104 @@
1
- # frozen_string_literal: true
2
- require "pathname"
3
-
4
- # This module provides classes for the Makit gem.
5
- module Makit
6
- # This class provide methods for working with the system Environment.
7
- #
8
- class Protoc
9
- def self.grpc_tools_path
10
- File.join(Makit::Directories::NUGET_PACKAGE_CACHE, "grpc.tools", Makit::Protoc::get_latest_grpc_tools_version)
11
- end
12
-
13
- def self.grpc_csharp_plugin_path
14
- Makit::Protoc::find_plugin_path("grpc_csharp_plugin")
15
- end
16
- def self.setup
17
- if (!Dir.exist?(Makit::Directories::NUGET_PACKAGE_CACHE))
18
- puts " warning: Nuget package cache directory #{Makit::Directories::NUGET_PACKAGE_CACHE} not found".colorize(:red)
19
- puts " warning: Unable to proceed with protoc setup".colorize(:red)
20
- else
21
- Makit::NuGet::cache("Grpc.Tools", "2.66.0")
22
- raise "Nuget package path #{Makit::Directories::NUGET_PACKAGE_CACHE} not found" if !Dir.exist?(Makit::Directories::NUGET_PACKAGE_CACHE)
23
-
24
- # test if protoc is installed by running >protoc --version
25
- which_protoc = Makit::Environment.which("protoc")
26
- if (Makit::Environment.which("protoc").nil?)
27
- puts " protoc not found, installing...".colorize(:red)
28
- "go version".run
29
- "go install google.golang.org/protobuf/cmd/protoc-gen-go@latest".run
30
- "go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest".run
31
- "go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest".run
32
- else
33
- puts " protoc found at #{which_protoc}".colorize(:green)
34
- end
35
- raise "protoc not found" if !Makit::Environment.which("protoc")
36
-
37
- #"git clone https://github.com/googleapis/googleapis.git third_party".run unless File.directory?("third_party/google")
38
- puts " grpc_tools_path " + "#{Makit::Protoc::grpc_tools_path}".colorize(:green)
39
- puts " grpc_csharp_plugin_path " + "#{Makit::Protoc::grpc_csharp_plugin_path}".colorize(:green)
40
- end
41
- end
42
-
43
- # get the latest version of the grpc.tools package
44
- def self.get_latest_grpc_tools_version
45
- Makit::NuGet::get_latest_version("Grpc.Tools")
46
- end
47
-
48
- #GRPC_CSHARP_PLUGIN_PATH = Makit::Protoc::find_plugin_path("grpc_csharp_plugin")
49
- def self.find_plugin_path(plugin_name)
50
- # search for a file matching the pattern *grpc_csharp_plugin* in the grpc.tools directory
51
- # should match on Windows and Linux
52
- if (Makit::Environment.is_windows?)
53
- plugin_name = plugin_name + ".exe"
54
- end
55
-
56
- plugin_path = Dir.glob("#{Makit::Directories::GRPC_TOOLS_PATH}/**/#{plugin_name}").first
57
-
58
- raise "Plugin path #{plugin_path} not found" if !File.exist?(plugin_path)
59
- plugin_path
60
- end
61
-
62
- def self.get_proto_files_from_path(proto_source_dir)
63
- proto_files = Array.new()
64
- Dir.chdir(proto_source_dir) do
65
- Dir.glob("**/*.proto").each do |proto|
66
- proto_files << proto
67
- end
68
- end
69
- proto_files
70
- end
71
-
72
- def self.generate_source_file(proto_filename, language, csharp_output_dir)
73
- FileUtils.mkdir_p(csharp_output_dir) unless Dir.exist?(csharp_output_dir)
74
- "protoc --#{language}_out=#{csharp_output_dir} #{proto_filename}".run
75
- end
76
-
77
- # language: charp, ruby, go, etc.
78
- def self.generate_source_files(proto_source_dir, language, output_dir)
79
- debug = false
80
- puts "Generating source files for #{language} in #{proto_source_dir} to #{output_dir}" if debug
81
- FileUtils.mkdir_p(output_dir) unless Dir.exist?(output_dir)
82
-
83
- path_a = Pathname.new(proto_source_dir)
84
- path_b = Pathname.new(output_dir)
85
- output_relative_path = path_b.relative_path_from(path_a)
86
- puts "output_relative_path: #{output_relative_path}" if debug
87
-
88
- Dir.chdir(proto_source_dir) do
89
- Dir.glob("**/*.proto").each do |proto|
90
- puts "Generating #{proto}" if debug
91
- if (language == "csharp")
92
- namespace_dir = File.dirname(proto)
93
- output_dir = "#{output_relative_path}/#{namespace_dir}"
94
- puts "Generating #{proto} in #{output_dir}" if debug
95
- FileUtils.mkdir_p("#{output_dir}") unless Dir.exist?("#{output_dir}")
96
- "protoc --csharp_out=#{output_dir} #{proto}".run
97
- else
98
- "protoc --#{language}_out=#{output_relative_path} #{proto}".run
99
- end
100
- end
101
- end
102
- end
103
- end
104
- end
1
+ # frozen_string_literal: true
2
+ require "pathname"
3
+
4
+ # This module provides classes for the Makit gem.
5
+ module Makit
6
+ # This class provide methods for working with the system Environment.
7
+ #
8
+ class Protoc
9
+ def self.grpc_tools_path
10
+ File.join(Makit::Directories::NUGET_PACKAGE_CACHE, "grpc.tools", Makit::Protoc::get_latest_grpc_tools_version)
11
+ end
12
+
13
+ def self.grpc_csharp_plugin_path
14
+ Makit::Protoc::find_plugin_path("grpc_csharp_plugin")
15
+ end
16
+ def self.setup
17
+ if (!Dir.exist?(Makit::Directories::NUGET_PACKAGE_CACHE))
18
+ puts " warning: Nuget package cache directory #{Makit::Directories::NUGET_PACKAGE_CACHE} not found".colorize(:red)
19
+ puts " warning: Unable to proceed with protoc setup".colorize(:red)
20
+ else
21
+ Makit::NuGet::cache("Grpc.Tools", "2.66.0")
22
+ raise "Nuget package path #{Makit::Directories::NUGET_PACKAGE_CACHE} not found" if !Dir.exist?(Makit::Directories::NUGET_PACKAGE_CACHE)
23
+
24
+ # test if protoc is installed by running >protoc --version
25
+ which_protoc = Makit::Environment.which("protoc")
26
+ if (Makit::Environment.which("protoc").nil?)
27
+ puts " protoc not found, installing...".colorize(:red)
28
+ "go version".run
29
+ "go install google.golang.org/protobuf/cmd/protoc-gen-go@latest".run
30
+ "go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest".run
31
+ "go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest".run
32
+ else
33
+ puts " protoc found at #{which_protoc}".colorize(:green)
34
+ end
35
+ raise "protoc not found" if !Makit::Environment.which("protoc")
36
+
37
+ #"git clone https://github.com/googleapis/googleapis.git third_party".run unless File.directory?("third_party/google")
38
+ puts " grpc_tools_path " + "#{Makit::Protoc::grpc_tools_path}".colorize(:green)
39
+ puts " grpc_csharp_plugin_path " + "#{Makit::Protoc::grpc_csharp_plugin_path}".colorize(:green)
40
+ end
41
+ end
42
+
43
+ # get the latest version of the grpc.tools package
44
+ def self.get_latest_grpc_tools_version
45
+ Makit::NuGet::get_latest_version("Grpc.Tools")
46
+ end
47
+
48
+ #GRPC_CSHARP_PLUGIN_PATH = Makit::Protoc::find_plugin_path("grpc_csharp_plugin")
49
+ def self.find_plugin_path(plugin_name)
50
+ # search for a file matching the pattern *grpc_csharp_plugin* in the grpc.tools directory
51
+ # should match on Windows and Linux
52
+ if (Makit::Environment.is_windows?)
53
+ plugin_name = plugin_name + ".exe"
54
+ end
55
+
56
+ plugin_path = Dir.glob("#{Makit::Directories::GRPC_TOOLS_PATH}/**/#{plugin_name}").first
57
+
58
+ raise "Plugin path #{plugin_path} not found" if !File.exist?(plugin_path)
59
+ plugin_path
60
+ end
61
+
62
+ def self.get_proto_files_from_path(proto_source_dir)
63
+ proto_files = Array.new()
64
+ Dir.chdir(proto_source_dir) do
65
+ Dir.glob("**/*.proto").each do |proto|
66
+ proto_files << proto
67
+ end
68
+ end
69
+ proto_files
70
+ end
71
+
72
+ def self.generate_source_file(proto_filename, language, csharp_output_dir)
73
+ FileUtils.mkdir_p(csharp_output_dir) unless Dir.exist?(csharp_output_dir)
74
+ "protoc --#{language}_out=#{csharp_output_dir} #{proto_filename}".run
75
+ end
76
+
77
+ # language: charp, ruby, go, etc.
78
+ def self.generate_source_files(proto_source_dir, language, output_dir)
79
+ debug = false
80
+ puts "Generating source files for #{language} in #{proto_source_dir} to #{output_dir}" if debug
81
+ FileUtils.mkdir_p(output_dir) unless Dir.exist?(output_dir)
82
+
83
+ path_a = Pathname.new(proto_source_dir)
84
+ path_b = Pathname.new(output_dir)
85
+ output_relative_path = path_b.relative_path_from(path_a)
86
+ puts "output_relative_path: #{output_relative_path}" if debug
87
+
88
+ Dir.chdir(proto_source_dir) do
89
+ Dir.glob("**/*.proto").each do |proto|
90
+ puts "Generating #{proto}" if debug
91
+ if (language == "csharp")
92
+ namespace_dir = File.dirname(proto)
93
+ output_dir = "#{output_relative_path}/#{namespace_dir}"
94
+ puts "Generating #{proto} in #{output_dir}" if debug
95
+ FileUtils.mkdir_p("#{output_dir}") unless Dir.exist?("#{output_dir}")
96
+ "protoc --csharp_out=#{output_dir} #{proto}".run
97
+ else
98
+ "protoc --#{language}_out=#{output_relative_path} #{proto}".run
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -1,115 +1,115 @@
1
- # frozen_string_literal: true
2
- require "google/protobuf"
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- module Proto3Formats
6
- JSON = 0,
7
- PRETTY_JSON = 1,
8
- YAML = 2,
9
- BINARY = 3
10
- end
11
-
12
- # This class provide methods for serializing and deserializing objects.
13
- #
14
- class Serializer
15
- attr_accessor :format_map
16
-
17
- def self.save_as(filename, object)
18
- extension = File.extname(filename)
19
- case extension
20
- when ".json"
21
- File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).serialize(object))
22
- when ".yml"
23
- File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::YAML).serialize(object))
24
- when ".pb"
25
- File.open(filename, "wb") do |file|
26
- file.write(Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
27
- end
28
-
29
- #File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
30
- else
31
- raise "unsupported file extension: #{extension}"
32
- end
33
- end
34
-
35
- def self.open(filename, type)
36
- extension = File.extname(filename)
37
- case extension
38
- when ".json"
39
- Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).deserialize(type, File.read(filename))
40
- when ".yml"
41
- Makit::Serializer.new(Makit::Proto3Formats::YAML).deserialize(type, File.read(filename))
42
- when ".pb"
43
- data = File.open(filename, "rb") { |file| file.read }
44
- Makit::Serializer.new(Makit::Proto3Formats::BINARY).deserialize(type, data)
45
- else
46
- raise "unsupported file extension: #{extension}"
47
- end
48
- end
49
-
50
- def initialize(proto3_format = Proto3Formats::PRETTY_JSON)
51
- @format_maps = {
52
- ::Google::Protobuf::MessageExts => proto3_format,
53
- }
54
- end
55
-
56
- # Serialize an object to a byte[] or a string
57
- def serialize(object)
58
- raise "Object is nil" if object.nil?
59
- raise "object is not of type ::Google::Protobuf::MessageExts" if !object.is_a? ::Google::Protobuf::MessageExts
60
-
61
- case @format_maps[::Google::Protobuf::MessageExts]
62
- when Proto3Formats::JSON
63
- #puts "Serializing to protobuf json format"
64
- object.to_json
65
- when Proto3Formats::PRETTY_JSON
66
- #puts "Serializing to protobuf pretty json format"
67
- json = object.to_json
68
- pretty_json = JSON.pretty_generate(JSON.parse(json))
69
- pretty_json
70
- when Proto3Formats::YAML
71
- #puts "Serializing to protobuf yaml format"
72
- data = JSON.parse(object.to_json)
73
- data.to_yaml.sub(/^---\n/, "")
74
- when Proto3Formats::BINARY
75
- #puts "Serializing to protobuf binary format"
76
- serialized_object = object.to_proto
77
- else
78
- raise "Unknown serialization format"
79
- end
80
- end
81
-
82
- # Deserialize a byte[] or a string to an object
83
- def deserialize(type, data)
84
- raise "data is nil" if data.nil?
85
- case @format_maps[::Google::Protobuf::MessageExts]
86
- when Proto3Formats::JSON
87
- raise "data is not of type string" if !data.is_a? String
88
- json = data
89
- #puts "Deserializing from protobuf json format into type #{type}"
90
- # use the from_json method to deserialize the object
91
- type.decode_json(json)
92
- when Proto3Formats::PRETTY_JSON
93
- raise "data is not of type string" if !data.is_a? String
94
- json = data
95
- #puts "Deserializing from protobuf pretty json format into type #{type}"
96
- # use the from_json method to deserialize the object
97
- type.decode_json(json)
98
- when Proto3Formats::YAML
99
- raise "data is not of type string" if !data.is_a? String
100
- yaml = data
101
- # convert yaml to json
102
- json = JSON.pretty_generate(YAML.safe_load(yaml))
103
- #puts "Deserializing from protobuf yaml format into type #{type}"
104
- type.decode_json(json)
105
- when Proto3Formats::BINARY
106
- #raise "data is not of type byte[]" if !data.is_a? Array
107
- bytes = data
108
- #puts "Deserializing from protobuf binary format into type #{type}"
109
- type.decode(bytes)
110
- else
111
- raise "Unknown serialization format"
112
- end
113
- end
114
- end # class Storage
115
- end # module Makit
1
+ # frozen_string_literal: true
2
+ require "google/protobuf"
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ module Proto3Formats
6
+ JSON = 0,
7
+ PRETTY_JSON = 1,
8
+ YAML = 2,
9
+ BINARY = 3
10
+ end
11
+
12
+ # This class provide methods for serializing and deserializing objects.
13
+ #
14
+ class Serializer
15
+ attr_accessor :format_map
16
+
17
+ def self.save_as(filename, object)
18
+ extension = File.extname(filename)
19
+ case extension
20
+ when ".json"
21
+ File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).serialize(object))
22
+ when ".yml"
23
+ File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::YAML).serialize(object))
24
+ when ".pb"
25
+ File.open(filename, "wb") do |file|
26
+ file.write(Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
27
+ end
28
+
29
+ #File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
30
+ else
31
+ raise "unsupported file extension: #{extension}"
32
+ end
33
+ end
34
+
35
+ def self.open(filename, type)
36
+ extension = File.extname(filename)
37
+ case extension
38
+ when ".json"
39
+ Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).deserialize(type, File.read(filename))
40
+ when ".yml"
41
+ Makit::Serializer.new(Makit::Proto3Formats::YAML).deserialize(type, File.read(filename))
42
+ when ".pb"
43
+ data = File.open(filename, "rb") { |file| file.read }
44
+ Makit::Serializer.new(Makit::Proto3Formats::BINARY).deserialize(type, data)
45
+ else
46
+ raise "unsupported file extension: #{extension}"
47
+ end
48
+ end
49
+
50
+ def initialize(proto3_format = Proto3Formats::PRETTY_JSON)
51
+ @format_maps = {
52
+ ::Google::Protobuf::MessageExts => proto3_format,
53
+ }
54
+ end
55
+
56
+ # Serialize an object to a byte[] or a string
57
+ def serialize(object)
58
+ raise "Object is nil" if object.nil?
59
+ raise "object is not of type ::Google::Protobuf::MessageExts" if !object.is_a? ::Google::Protobuf::MessageExts
60
+
61
+ case @format_maps[::Google::Protobuf::MessageExts]
62
+ when Proto3Formats::JSON
63
+ #puts "Serializing to protobuf json format"
64
+ object.to_json
65
+ when Proto3Formats::PRETTY_JSON
66
+ #puts "Serializing to protobuf pretty json format"
67
+ json = object.to_json
68
+ pretty_json = JSON.pretty_generate(JSON.parse(json))
69
+ pretty_json
70
+ when Proto3Formats::YAML
71
+ #puts "Serializing to protobuf yaml format"
72
+ data = JSON.parse(object.to_json)
73
+ data.to_yaml.sub(/^---\n/, "")
74
+ when Proto3Formats::BINARY
75
+ #puts "Serializing to protobuf binary format"
76
+ serialized_object = object.to_proto
77
+ else
78
+ raise "Unknown serialization format"
79
+ end
80
+ end
81
+
82
+ # Deserialize a byte[] or a string to an object
83
+ def deserialize(type, data)
84
+ raise "data is nil" if data.nil?
85
+ case @format_maps[::Google::Protobuf::MessageExts]
86
+ when Proto3Formats::JSON
87
+ raise "data is not of type string" if !data.is_a? String
88
+ json = data
89
+ #puts "Deserializing from protobuf json format into type #{type}"
90
+ # use the from_json method to deserialize the object
91
+ type.decode_json(json)
92
+ when Proto3Formats::PRETTY_JSON
93
+ raise "data is not of type string" if !data.is_a? String
94
+ json = data
95
+ #puts "Deserializing from protobuf pretty json format into type #{type}"
96
+ # use the from_json method to deserialize the object
97
+ type.decode_json(json)
98
+ when Proto3Formats::YAML
99
+ raise "data is not of type string" if !data.is_a? String
100
+ yaml = data
101
+ # convert yaml to json
102
+ json = JSON.pretty_generate(YAML.safe_load(yaml))
103
+ #puts "Deserializing from protobuf yaml format into type #{type}"
104
+ type.decode_json(json)
105
+ when Proto3Formats::BINARY
106
+ #raise "data is not of type byte[]" if !data.is_a? Array
107
+ bytes = data
108
+ #puts "Deserializing from protobuf binary format into type #{type}"
109
+ type.decode(bytes)
110
+ else
111
+ raise "Unknown serialization format"
112
+ end
113
+ end
114
+ end # class Storage
115
+ end # module Makit