retag
[mcs.git] / tools / prj2make / PrjHelper.cs
blobc7c7dfb611fc1ea1558ce9c35422c63dff39b998
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;
14 namespace Mfconsulting.General.Prj2Make
16 public class Utils {
17 public static string Escape (string s)
19 if (s.IndexOf (' ') == -1)
20 return s;
22 StringBuilder sb = new StringBuilder ();
23 foreach (char c in s){
24 if (c == ' ')
25 sb.Append ('\\');
26 sb.Append (c);
28 return sb.ToString ();
34 public class Maker
36 public enum TypeOfFile {
37 unknown,
38 sln,
39 csproj,
40 cmbx,
41 prjx
44 // Helper function to determine the type of
45 // file being parsed based on its extension
46 protected TypeOfFile DetermineFileType(string inFileName)
48 string ExtentionString = System.IO.Path.GetExtension (inFileName);
50 switch(ExtentionString)
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;
62 return TypeOfFile.unknown;
65 public bool CreateCombineFromSln(string slnFileName)
67 SlnMaker slnMkObj = new SlnMaker();
69 // Load the sln and parse it
70 slnMkObj.MsSlnToCmbxHelper(slnFileName);
72 return false;
75 public bool CreatePrjxFromCsproj(string csprojFileName)
77 SlnMaker slnMkObj = new SlnMaker();
79 // Load the csproj and parse it
80 slnMkObj.CreatePrjxFromCsproj(csprojFileName);
82 return false;
85 // Main entry point for Makefile generation
86 public string MakerMain(bool isUnixMode, bool isMcsMode, string slnFile)
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))
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);
107 return "Error: unknown file type.";