New test.
[mono.git] / mcs / tools / prj2make / PrjHelper.cs
1 // Copyright (c) 2004 Francisco T. Martinez <paco@mfcon.com>
2 // All rights reserved.
3 //
4 using System;
5 using System.Xml;
6 using System.Xml.Serialization;
7 using System.Collections;
8 using System.IO;
9 using System.Text;
10 using System.Text.RegularExpressions;
11 using Mfconsulting.General.Prj2Make.Schema.Prjx;
12 using Mfconsulting.General.Prj2Make.Schema.Csproj;
13
14 namespace Mfconsulting.General.Prj2Make
15 {
16         public class Utils {
17             public static string Escape (string s)
18             {
19                     if (s.IndexOf (' ') == -1)
20                             return s;
21
22                     StringBuilder sb = new StringBuilder ();
23                     foreach (char c in s){
24                             if (c == ' ')
25                                     sb.Append ('\\');
26                             sb.Append (c);
27                     }
28                     return sb.ToString ();
29             }
30             
31                 
32         }
33         
34     public class Maker
35     {
36         public enum TypeOfFile {
37                 unknown,
38                         sln,
39                         csproj,
40                         cmbx,
41                         prjx                     
42                 }
43                 
44                 // Helper function to determine the type of
45                 // file being parsed based on its extension
46                 protected TypeOfFile DetermineFileType(string inFileName)
47                 {
48                         string ExtentionString = System.IO.Path.GetExtension (inFileName);
49                         
50                         switch(ExtentionString)
51                         {
52                         case ".sln":
53                                 return TypeOfFile.sln;
54                         case ".csproj":
55                                 return TypeOfFile.csproj;
56                         case ".cmbx":
57                                 return TypeOfFile.cmbx;
58                         case ".prjx":
59                                 return TypeOfFile.prjx;
60                         }               
61                         
62                         return TypeOfFile.unknown;
63                 }
64
65                 public bool CreateCombineFromSln(string slnFileName)
66                 {
67                         SlnMaker slnMkObj = new SlnMaker();
68
69                         // Load the sln and parse it
70                         slnMkObj.MsSlnToCmbxHelper(slnFileName);
71
72                         return false;
73                 }
74      
75                 public bool CreatePrjxFromCsproj(string csprojFileName)
76                 {
77                         SlnMaker slnMkObj = new SlnMaker();
78
79                         // Load the csproj and parse it
80                         slnMkObj.CreatePrjxFromCsproj(csprojFileName);
81
82                         return false;
83                 }
84      
85         // Main entry point for Makefile generation
86                 public string MakerMain(bool isUnixMode, bool isMcsMode, string slnFile)
87         {
88                 SlnMaker mk1Obj = null;
89                 CmbxMaker mk2Obj = null;
90             // Test to see what kind if file we got
91             // sln, csproj, cmbx, prjx
92             switch(DetermineFileType(slnFile))
93             {
94             case TypeOfFile.sln:
95                 mk1Obj = new SlnMaker();
96                 return mk1Obj.MsSlnHelper (isUnixMode, isMcsMode, true, slnFile);
97             case TypeOfFile.csproj:
98                 mk1Obj = new SlnMaker();
99                 return mk1Obj.MsSlnHelper (isUnixMode, isMcsMode, false, slnFile);
100             case TypeOfFile.cmbx:
101                 mk2Obj = new CmbxMaker();
102                 return mk2Obj.MdCmbxHelper (isUnixMode, isMcsMode, true, slnFile);
103             case TypeOfFile.prjx:
104                 mk2Obj = new CmbxMaker();
105                 return mk2Obj.MdCmbxHelper (isUnixMode, isMcsMode, false, slnFile);
106             }
107                 return "Error: unknown file type.";
108                 }
109     }    
110 }