blob: 0c66c93027cf6fc48bf1e0f93ed2eae71f4690a7 [file] [log] [blame]
Jon Skeet8f8186a2009-01-16 10:57:40 +00001using System;
2using System.IO;
3using System.Reflection;
4using Google.ProtocolBuffers;
5
6namespace ProtoDump {
7 /// <summary>
8 /// Small utility to load a binary message and dump it in text form
9 /// </summary>
10 class Program {
11 static int Main(string[] args) {
12 if (args.Length != 2) {
13 Console.Error.WriteLine("Usage: ProtoDump <descriptor type name> <input data>");
14 Console.Error.WriteLine("The descriptor type name is the fully-qualified message name,");
15 Console.Error.WriteLine("including assembly e.g. ProjectNamespace.Message,Company.Project");
16 return 1;
17 }
18 IMessage defaultMessage;
19 try {
20 defaultMessage = MessageUtil.GetDefaultMessage(args[0]);
21 } catch (ArgumentException e) {
22 Console.Error.WriteLine(e.Message);
23 return 1;
24 }
25 try {
26 IBuilder builder = defaultMessage.WeakCreateBuilderForType();
27 if (builder == null) {
28 Console.Error.WriteLine("Unable to create builder");
29 return 1;
30 }
31 byte[] inputData = File.ReadAllBytes(args[1]);
32 builder.WeakMergeFrom(ByteString.CopyFrom(inputData));
33 Console.WriteLine(TextFormat.PrintToString(builder.WeakBuild()));
34 return 0;
35 } catch (Exception e) {
36 Console.Error.WriteLine("Error: {0}", e.Message);
37 Console.Error.WriteLine();
38 Console.Error.WriteLine("Detailed exception information: {0}", e);
39 return 1;
40 }
41 }
42 }
43}