blob: c13accbf9945dca396bac8db7401273d623fa0f1 [file] [log] [blame]
Jon Skeetad748532009-06-25 16:55:58 +01001// Protocol Buffers - Google's data interchange format
2// Copyright 2008 Google Inc. All rights reserved.
3// http://github.com/jskeet/dotnet-protobufs/
4// Original C++/Java/Python code:
5// http://code.google.com/p/protobuf/
6//
7// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions are
9// met:
10//
11// * Redistributions of source code must retain the above copyright
12// notice, this list of conditions and the following disclaimer.
13// * Redistributions in binary form must reproduce the above
14// copyright notice, this list of conditions and the following disclaimer
15// in the documentation and/or other materials provided with the
16// distribution.
17// * Neither the name of Google Inc. nor the names of its
18// contributors may be used to endorse or promote products derived from
19// this software without specific prior written permission.
20//
21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Jon Skeet60c059b2008-10-23 21:17:56 +010032using System;
Jon Skeet68036862008-10-22 13:30:34 +010033using System.Collections.Generic;
34using Google.ProtocolBuffers.DescriptorProtos;
35
36namespace Google.ProtocolBuffers.ProtoGen {
37 /// <summary>
38 /// Entry point for the Protocol Buffers generator.
39 /// </summary>
40 class Program {
41 static int Main(string[] args) {
42 try {
43 // Hack to make sure everything's initialized
44 DescriptorProtoFile.Descriptor.ToString();
45 GeneratorOptions options = ParseCommandLineArguments(args);
46
47 IList<string> validationFailures;
48 if (!options.TryValidate(out validationFailures)) {
49 // We've already got the message-building logic in the exception...
50 InvalidOptionsException exception = new InvalidOptionsException(validationFailures);
51 Console.WriteLine(exception.Message);
52 return 1;
53 }
54
55 Generator generator = Generator.CreateGenerator(options);
56 generator.Generate();
Jon Skeet68036862008-10-22 13:30:34 +010057 return 0;
58 } catch (Exception e) {
59 Console.Error.WriteLine("Error: {0}", e.Message);
60 Console.Error.WriteLine();
61 Console.Error.WriteLine("Detailed exception information: {0}", e);
62 return 1;
63 }
64 }
65
66 private static GeneratorOptions ParseCommandLineArguments(string[] args) {
67 GeneratorOptions options = new GeneratorOptions();
68 //string baseDir = "c:\\Users\\Jon\\Documents\\Visual Studio 2008\\Projects\\ProtocolBuffers";
69 //options.OutputDirectory = baseDir + "\\tmp";
70 //options.InputFiles = new[] { baseDir + "\\protos\\nwind-solo.protobin" };
71 options.OutputDirectory = ".";
72 options.InputFiles = args;
73 return options;
74 }
75 }
76}