proto-convert 0.3.0 → 0.4.0
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/bin/proto-convert +74 -74
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 50391f8c109fde552acc487acc6eac0683753ab4151d69bbc34acbe88368edd5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: cf799c6473fbd87e3ae97f6381fa64742864ac3a1b14291e828ae9b5e3d4602a
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 6d129c25316819ae34f2238267bf92113967f144bfbc9e80c74182a1b851cf92188766cabdadb19805db141e287df4a81355989457be15247d7f6b2b36a3d034
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9836ade35781300dc5b3b42d88b8e88a22e8dc1ec162edff70cde18618b58bd7cc74585f65d9531391d81804976074f8b329e2ca8e2b162bdd6f54d572f778e0
         
     | 
    
        data/bin/proto-convert
    CHANGED
    
    | 
         @@ -32,24 +32,24 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
            require 'optparse'
         
     | 
| 
       33 
33 
     | 
    
         
             
            require 'English'
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
            VERSION = '0. 
     | 
| 
      
 35 
     | 
    
         
            +
            VERSION = '0.4.0'
         
     | 
| 
       36 
36 
     | 
    
         
             
            AUTHOR_NAME = 'Azeem Sajid'
         
     | 
| 
       37 
37 
     | 
    
         
             
            AUTHOR_EMAIL = '<azeem.sajid@gmail.com>'
         
     | 
| 
       38 
38 
     | 
    
         
             
            AUTHOR_INFO = "Author: #{AUTHOR_NAME} #{AUTHOR_EMAIL}"
         
     | 
| 
       39 
39 
     | 
    
         
             
            AUTHOR_GITHUB = 'GitHub: https://github.com/iamAzeem/proto-convert'
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
            $ 
     | 
| 
      
 41 
     | 
    
         
            +
            $verbose = false
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
43 
     | 
    
         
             
            def compile_proto(filename)
         
     | 
| 
       44 
     | 
    
         
            -
              puts "\n>>  
     | 
| 
      
 44 
     | 
    
         
            +
              puts "\n>> Compile .proto file" if $verbose
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
              file_path = File.expand_path(filename)
         
     | 
| 
       47 
47 
     | 
    
         
             
              file_dir = File.dirname(file_path)
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
              if $ 
     | 
| 
       50 
     | 
    
         
            -
                puts "   File path: #{file_path}"
         
     | 
| 
      
 49 
     | 
    
         
            +
              if $verbose
         
     | 
| 
       51 
50 
     | 
    
         
             
                protoc_version = `protoc --version`.chomp.split(' ')[1]
         
     | 
| 
       52 
     | 
    
         
            -
                puts "    
     | 
| 
      
 51 
     | 
    
         
            +
                puts "   protoc version  : #{protoc_version}"
         
     | 
| 
      
 52 
     | 
    
         
            +
                puts "   proto file path : #{file_path}"
         
     | 
| 
       53 
53 
     | 
    
         
             
              end
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
              protoc_cmd =
         
     | 
| 
         @@ -58,27 +58,25 @@ def compile_proto(filename) 
     | 
|
| 
       58 
58 
     | 
    
         
             
                "       --proto_path=#{file_dir} \\\n" \
         
     | 
| 
       59 
59 
     | 
    
         
             
                "       #{file_path}"
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
              puts "\n#{protoc_cmd}" if $ 
     | 
| 
      
 61 
     | 
    
         
            +
              puts "\n#{protoc_cmd}" if $verbose
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
63 
     | 
    
         
             
              `#{protoc_cmd}`
         
     | 
| 
       64 
     | 
    
         
            -
               
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
              puts "\n   Compiled [#{file_path}] " if $debug
         
     | 
| 
      
 64 
     | 
    
         
            +
              abort "ERROR: Invalid schema! [#{filename}] Resolve error(s)." unless $CHILD_STATUS.success?
         
     | 
| 
       67 
65 
     | 
    
         | 
| 
       68 
66 
     | 
    
         
             
              compiled_proto = "#{file_dir}/#{File.basename(file_path, '.proto')}_pb.rb"
         
     | 
| 
       69 
     | 
    
         
            -
               
     | 
| 
       70 
     | 
    
         
            -
              raise StandardError, "Compiled schema not found! [#{compiled_proto}]" unless File.file?(compiled_proto)
         
     | 
| 
      
 67 
     | 
    
         
            +
              abort "ERROR: Compiled schema not found! [#{compiled_proto}]" unless File.file?(compiled_proto)
         
     | 
| 
       71 
68 
     | 
    
         | 
| 
       72 
     | 
    
         
            -
              if $ 
     | 
| 
       73 
     | 
    
         
            -
                puts "   Validatd [#{compiled_proto}]"
         
     | 
| 
       74 
     | 
    
         
            -
                puts "<< Compilion and validation complete! [#{file_path} => #{compiled_proto}]"
         
     | 
| 
       75 
     | 
    
         
            -
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
              puts "\n   generated file  : #{compiled_proto}" if $verbose
         
     | 
| 
       76 
70 
     | 
    
         | 
| 
       77 
71 
     | 
    
         
             
              compiled_proto
         
     | 
| 
       78 
72 
     | 
    
         
             
            end
         
     | 
| 
       79 
73 
     | 
    
         | 
| 
       80 
74 
     | 
    
         
             
            def valid_msgtype?(compiled_proto, msg_type)
         
     | 
| 
       81 
     | 
    
         
            -
               
     | 
| 
      
 75 
     | 
    
         
            +
              if $verbose
         
     | 
| 
      
 76 
     | 
    
         
            +
                puts "\n>> Validate msgtype"
         
     | 
| 
      
 77 
     | 
    
         
            +
                puts "   msgtype : #{msg_type}"
         
     | 
| 
      
 78 
     | 
    
         
            +
                puts "   pb file : #{compiled_proto}"
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
       82 
80 
     | 
    
         | 
| 
       83 
81 
     | 
    
         
             
              msg_types = []
         
     | 
| 
       84 
82 
     | 
    
         
             
              File.foreach(compiled_proto) do |line|
         
     | 
| 
         @@ -89,17 +87,11 @@ def valid_msgtype?(compiled_proto, msg_type) 
     | 
|
| 
       89 
87 
     | 
    
         
             
              end
         
     | 
| 
       90 
88 
     | 
    
         | 
| 
       91 
89 
     | 
    
         
             
              is_valid = msg_types.include?(msg_type)
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                puts " 
     | 
| 
       95 
     | 
    
         
            -
                puts '   Available types:'
         
     | 
| 
       96 
     | 
    
         
            -
                msg_types.each do |t|
         
     | 
| 
       97 
     | 
    
         
            -
                  puts "   - #{t}"
         
     | 
| 
       98 
     | 
    
         
            -
                end
         
     | 
| 
      
 90 
     | 
    
         
            +
              unless is_valid
         
     | 
| 
      
 91 
     | 
    
         
            +
                puts "ERROR: Invalid msgtype! [#{msg_type}]"
         
     | 
| 
      
 92 
     | 
    
         
            +
                puts "       Available types: #{msg_types}"
         
     | 
| 
       99 
93 
     | 
    
         
             
              end
         
     | 
| 
       100 
94 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
              puts "<< Validation of msgtype [#{msg_type}] complete!" if $debug
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
95 
     | 
    
         
             
              is_valid
         
     | 
| 
       104 
96 
     | 
    
         
             
            end
         
     | 
| 
       105 
97 
     | 
    
         | 
| 
         @@ -109,11 +101,20 @@ def msg_class(compiled_proto, msg_type) 
     | 
|
| 
       109 
101 
     | 
    
         
             
              msg.msgclass
         
     | 
| 
       110 
102 
     | 
    
         
             
            end
         
     | 
| 
       111 
103 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
            def convert(compiled_proto,  
     | 
| 
       113 
     | 
    
         
            -
               
     | 
| 
      
 104 
     | 
    
         
            +
            def convert(compiled_proto, args)
         
     | 
| 
      
 105 
     | 
    
         
            +
              msg_type = args[:msgtype]
         
     | 
| 
      
 106 
     | 
    
         
            +
              conversion_mode = args[:mode]
         
     | 
| 
      
 107 
     | 
    
         
            +
              input_file = args[:input]
         
     | 
| 
      
 108 
     | 
    
         
            +
              output_file = args[:output]
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              if $verbose
         
     | 
| 
      
 111 
     | 
    
         
            +
                puts "\n>> Convert"
         
     | 
| 
      
 112 
     | 
    
         
            +
                puts "   file : #{input_file}"
         
     | 
| 
      
 113 
     | 
    
         
            +
                puts "   mode : #{conversion_mode}"
         
     | 
| 
      
 114 
     | 
    
         
            +
              end
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
116 
     | 
    
         
             
              pb_msg_class = msg_class(compiled_proto, msg_type)
         
     | 
| 
       116 
     | 
    
         
            -
               
     | 
| 
      
 117 
     | 
    
         
            +
              abort "ERROR: Message type ['#{msg_type}'] not registered!'" if pb_msg_class.nil?
         
     | 
| 
       117 
118 
     | 
    
         | 
| 
       118 
119 
     | 
    
         
             
              begin
         
     | 
| 
       119 
120 
     | 
    
         
             
                case conversion_mode
         
     | 
| 
         @@ -137,27 +138,30 @@ def convert(compiled_proto, msg_type, conversion_mode, input_file, output_file) 
     | 
|
| 
       137 
138 
     | 
    
         
             
                  puts "<< [B] #{output_file} (#{output_msg.length} bytes)"
         
     | 
| 
       138 
139 
     | 
    
         
             
                end
         
     | 
| 
       139 
140 
     | 
    
         
             
              rescue Google::Protobuf::ParseError
         
     | 
| 
       140 
     | 
    
         
            -
                 
     | 
| 
      
 141 
     | 
    
         
            +
                abort "ERROR: Incompatible input message! [msgtype: #{msg_type}] #{$ERROR_INFO}"
         
     | 
| 
       141 
142 
     | 
    
         
             
              rescue StandardError
         
     | 
| 
       142 
     | 
    
         
            -
                 
     | 
| 
      
 143 
     | 
    
         
            +
                abort "ERROR: Conversion failed! #{$ERROR_INFO}"
         
     | 
| 
       143 
144 
     | 
    
         
             
              end
         
     | 
| 
       144 
145 
     | 
    
         | 
| 
       145 
     | 
    
         
            -
              puts ">>  
     | 
| 
      
 146 
     | 
    
         
            +
              puts ">> Converted! [#{input_file}] => [#{output_file}]" if $verbose
         
     | 
| 
       146 
147 
     | 
    
         
             
            end
         
     | 
| 
       147 
148 
     | 
    
         | 
| 
       148 
149 
     | 
    
         
             
            def start
         
     | 
| 
       149 
150 
     | 
    
         
             
              mandatory_args = %i[mode proto msgtype input output].freeze
         
     | 
| 
       150 
151 
     | 
    
         | 
| 
       151 
     | 
    
         
            -
               
     | 
| 
       152 
     | 
    
         
            -
              mandatory_args.each { |arg|  
     | 
| 
      
 152 
     | 
    
         
            +
              args = {}
         
     | 
| 
      
 153 
     | 
    
         
            +
              mandatory_args.each { |arg| args[arg] = nil }
         
     | 
| 
       153 
154 
     | 
    
         | 
| 
       154 
155 
     | 
    
         
             
              parser = OptionParser.new do |opts|
         
     | 
| 
       155 
156 
     | 
    
         
             
                opts.banner = "Usage: #{$PROGRAM_NAME} -m [mode] -p [proto] -t [msgtype] -i [input] -o [output]"
         
     | 
| 
       156 
     | 
    
         
            -
                opts.separator  
     | 
| 
      
 157 
     | 
    
         
            +
                opts.separator "\nOPTIONS:\n\n"
         
     | 
| 
       157 
158 
     | 
    
         | 
| 
       158 
159 
     | 
    
         
             
                modes = %i[binary2json b2j json2binary j2b].freeze
         
     | 
| 
       159 
     | 
    
         
            -
                opts.on('-m', '--mode [MODE]',  
     | 
| 
       160 
     | 
    
         
            -
                   
     | 
| 
      
 160 
     | 
    
         
            +
                opts.on('-m', '--mode [MODE]', String, "conversion mode #{modes.map(&:to_s)}") do |mode|
         
     | 
| 
      
 161 
     | 
    
         
            +
                  abort 'ERROR: Missing mode!' if mode.nil?
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                  mode = mode.to_sym
         
     | 
| 
      
 164 
     | 
    
         
            +
                  abort "ERROR: Invalid mode! [#{mode}]" unless modes.include?(mode)
         
     | 
| 
       161 
165 
     | 
    
         | 
| 
       162 
166 
     | 
    
         
             
                  case mode
         
     | 
| 
       163 
167 
     | 
    
         
             
                  when :b2j
         
     | 
| 
         @@ -166,35 +170,40 @@ def start 
     | 
|
| 
       166 
170 
     | 
    
         
             
                    mode = :json2binary
         
     | 
| 
       167 
171 
     | 
    
         
             
                  end
         
     | 
| 
       168 
172 
     | 
    
         | 
| 
       169 
     | 
    
         
            -
                   
     | 
| 
      
 173 
     | 
    
         
            +
                  args[:mode] = mode
         
     | 
| 
       170 
174 
     | 
    
         
             
                end
         
     | 
| 
       171 
175 
     | 
    
         | 
| 
       172 
     | 
    
         
            -
                opts.on('-p', '--proto [FILENAME]', 'protobuf schema (.proto)') do |filename|
         
     | 
| 
       173 
     | 
    
         
            -
                   
     | 
| 
      
 176 
     | 
    
         
            +
                opts.on('-p', '--proto [FILENAME]', String, 'protobuf schema (.proto)') do |filename|
         
     | 
| 
      
 177 
     | 
    
         
            +
                  abort 'ERROR: Missing schema filename!' if filename.nil?
         
     | 
| 
      
 178 
     | 
    
         
            +
                  abort "ERROR: Protobuf schema not found! [#{filename}]" unless File.file?(filename)
         
     | 
| 
       174 
179 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
                   
     | 
| 
      
 180 
     | 
    
         
            +
                  args[:proto] = filename
         
     | 
| 
       176 
181 
     | 
    
         
             
                end
         
     | 
| 
       177 
182 
     | 
    
         | 
| 
       178 
     | 
    
         
            -
                opts.on('-t', '--msgtype [TYPE]', 'fully-qualified message type') do |msgtype|
         
     | 
| 
       179 
     | 
    
         
            -
                   
     | 
| 
      
 183 
     | 
    
         
            +
                opts.on('-t', '--msgtype [TYPE]', String, 'fully-qualified message type') do |msgtype|
         
     | 
| 
      
 184 
     | 
    
         
            +
                  abort 'ERROR: Missing msgtype!' if msgtype.nil?
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
                  args[:msgtype] = msgtype
         
     | 
| 
       180 
187 
     | 
    
         
             
                end
         
     | 
| 
       181 
188 
     | 
    
         | 
| 
       182 
     | 
    
         
            -
                opts.on('-i', '--input [FILENAME]', 'source file (JSON/binary)') do |filename|
         
     | 
| 
       183 
     | 
    
         
            -
                   
     | 
| 
      
 189 
     | 
    
         
            +
                opts.on('-i', '--input [FILENAME]', String, 'source file (JSON/binary)') do |filename|
         
     | 
| 
      
 190 
     | 
    
         
            +
                  abort 'ERROR: Missing input filename!' if filename.nil?
         
     | 
| 
      
 191 
     | 
    
         
            +
                  abort "ERROR: Input file not found! [#{filename}]" unless File.file?(filename)
         
     | 
| 
       184 
192 
     | 
    
         | 
| 
       185 
     | 
    
         
            -
                   
     | 
| 
      
 193 
     | 
    
         
            +
                  args[:input] = filename
         
     | 
| 
       186 
194 
     | 
    
         
             
                end
         
     | 
| 
       187 
195 
     | 
    
         | 
| 
       188 
     | 
    
         
            -
                opts.on('-o', '--output [FILENAME]', 'destination file (binary/JSON)') do |filename|
         
     | 
| 
       189 
     | 
    
         
            -
                   
     | 
| 
      
 196 
     | 
    
         
            +
                opts.on('-o', '--output [FILENAME]', String, 'destination file (binary/JSON)') do |filename|
         
     | 
| 
      
 197 
     | 
    
         
            +
                  abort 'ERROR: Missing output filename!' if filename.nil?
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
      
 199 
     | 
    
         
            +
                  args[:output] = filename
         
     | 
| 
       190 
200 
     | 
    
         
             
                end
         
     | 
| 
       191 
201 
     | 
    
         | 
| 
       192 
     | 
    
         
            -
                opts.on('- 
     | 
| 
       193 
     | 
    
         
            -
                   
     | 
| 
       194 
     | 
    
         
            -
                  $debug = true
         
     | 
| 
      
 202 
     | 
    
         
            +
                opts.on('-v', '--verbose', 'print verbose information') do
         
     | 
| 
      
 203 
     | 
    
         
            +
                  $verbose = true
         
     | 
| 
       195 
204 
     | 
    
         
             
                end
         
     | 
| 
       196 
205 
     | 
    
         | 
| 
       197 
     | 
    
         
            -
                opts.on('-h', '--help', ' 
     | 
| 
      
 206 
     | 
    
         
            +
                opts.on('-h', '--help', 'print help') do
         
     | 
| 
       198 
207 
     | 
    
         
             
                  puts "#{$PROGRAM_NAME} #{VERSION}\n\n#{opts}\n#{AUTHOR_INFO}\n#{AUTHOR_GITHUB}"
         
     | 
| 
       199 
208 
     | 
    
         
             
                  exit
         
     | 
| 
       200 
209 
     | 
    
         
             
                end
         
     | 
| 
         @@ -203,40 +212,31 @@ def start 
     | 
|
| 
       203 
212 
     | 
    
         
             
              begin
         
     | 
| 
       204 
213 
     | 
    
         
             
                parser.parse!
         
     | 
| 
       205 
214 
     | 
    
         | 
| 
       206 
     | 
    
         
            -
                puts ">> #{$PROGRAM_NAME} #{VERSION} [ 
     | 
| 
      
 215 
     | 
    
         
            +
                puts ">> #{$PROGRAM_NAME} #{VERSION} [verbose mode]" if $verbose
         
     | 
| 
       207 
216 
     | 
    
         | 
| 
       208 
217 
     | 
    
         
             
                # Validate missing mandatory arguments
         
     | 
| 
       209 
     | 
    
         
            -
                missing_args = mandatory_args.select { |arg|  
     | 
| 
       210 
     | 
    
         
            -
                 
     | 
| 
       211 
     | 
    
         
            -
                raise OptionParser::MissingArgument, "--#{missing_args.join(', --')}" unless missing_args.empty?
         
     | 
| 
      
 218 
     | 
    
         
            +
                missing_args = mandatory_args.select { |arg| args[arg].nil? }
         
     | 
| 
      
 219 
     | 
    
         
            +
                abort "ERROR: Missing required arguments! --#{missing_args.join(', --')}" unless missing_args.empty?
         
     | 
| 
       212 
220 
     | 
    
         | 
| 
       213 
     | 
    
         
            -
                if $ 
     | 
| 
       214 
     | 
    
         
            -
                  puts "\n>> Arguments 
     | 
| 
       215 
     | 
    
         
            -
                   
     | 
| 
      
 221 
     | 
    
         
            +
                if $verbose
         
     | 
| 
      
 222 
     | 
    
         
            +
                  puts "\n>> Arguments"
         
     | 
| 
      
 223 
     | 
    
         
            +
                  args.each do |arg, val|
         
     | 
| 
       216 
224 
     | 
    
         
             
                    puts format('   %<arg>8s : %<val>s', arg: arg, val: val)
         
     | 
| 
       217 
225 
     | 
    
         
             
                  end
         
     | 
| 
       218 
226 
     | 
    
         
             
                end
         
     | 
| 
       219 
227 
     | 
    
         | 
| 
       220 
228 
     | 
    
         
             
                # Compile and validate proto and msgtype
         
     | 
| 
       221 
     | 
    
         
            -
                compiled_proto = compile_proto( 
     | 
| 
       222 
     | 
    
         
            -
                 
     | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
       224 
     | 
    
         
            -
             
     | 
| 
       225 
     | 
    
         
            -
                # Convert and write to output file
         
     | 
| 
       226 
     | 
    
         
            -
                conversion_mode = options[:mode]
         
     | 
| 
       227 
     | 
    
         
            -
                input_file = options[:input]
         
     | 
| 
       228 
     | 
    
         
            -
                output_file = options[:output]
         
     | 
| 
       229 
     | 
    
         
            -
                convert(compiled_proto, msg_type, conversion_mode, input_file, output_file)
         
     | 
| 
      
 229 
     | 
    
         
            +
                compiled_proto = compile_proto(args[:proto])
         
     | 
| 
      
 230 
     | 
    
         
            +
                abort unless valid_msgtype?(compiled_proto, args[:msgtype])
         
     | 
| 
      
 231 
     | 
    
         
            +
             
     | 
| 
      
 232 
     | 
    
         
            +
                convert(compiled_proto, args)
         
     | 
| 
       230 
233 
     | 
    
         
             
              rescue OptionParser::InvalidOption, OptionParser::InvalidArgument, OptionParser::MissingArgument
         
     | 
| 
       231 
234 
     | 
    
         
             
                puts $ERROR_INFO
         
     | 
| 
       232 
     | 
    
         
            -
                 
     | 
| 
       233 
     | 
    
         
            -
                exit 1
         
     | 
| 
      
 235 
     | 
    
         
            +
                abort "\n#{$PROGRAM_NAME} #{VERSION}\n\n#{parser}\n#{AUTHOR_INFO}\n#{AUTHOR_GITHUB}"
         
     | 
| 
       234 
236 
     | 
    
         
             
              rescue LoadError
         
     | 
| 
       235 
     | 
    
         
            -
                 
     | 
| 
       236 
     | 
    
         
            -
                exit 1
         
     | 
| 
      
 237 
     | 
    
         
            +
                abort "ERROR: Possible 'import' issue! #{$ERROR_INFO}"
         
     | 
| 
       237 
238 
     | 
    
         
             
              rescue StandardError
         
     | 
| 
       238 
     | 
    
         
            -
                 
     | 
| 
       239 
     | 
    
         
            -
                exit 1
         
     | 
| 
      
 239 
     | 
    
         
            +
                abort "ERROR: #{$ERROR_INFO}"
         
     | 
| 
       240 
240 
     | 
    
         
             
              ensure
         
     | 
| 
       241 
241 
     | 
    
         
             
                File.delete(compiled_proto) if !compiled_proto.nil? && File.file?(compiled_proto)
         
     | 
| 
       242 
242 
     | 
    
         
             
              end
         
     |