added plugin compiling
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40858
This commit is contained in:
		
							parent
							
								
									942c3acd8e
								
							
						
					
					
						commit
						150cb6ec1f
					
				| @ -16,6 +16,62 @@ namespace builder | |||||||
| 
 | 
 | ||||||
| 		public abstract bool BuildLibrary(Package pkg, Library lib, ref string _binName, ref string _binPath); | 		public abstract bool BuildLibrary(Package pkg, Library lib, ref string _binName, ref string _binPath); | ||||||
| 
 | 
 | ||||||
|  | 		public abstract string GetPawnCompilerName(); | ||||||
|  | 
 | ||||||
|  | 		public bool CompilePlugin(Package pkg, Plugin pl) | ||||||
|  | 		{ | ||||||
|  | 			string local_dir = Config.PathFormat("{0}/{1}/scripting", cfg.OutputBase, pkg.GetBaseFolder()); | ||||||
|  | 
 | ||||||
|  | 			string filepath = null; | ||||||
|  | 			if (pl.Folder != null) | ||||||
|  | 			{ | ||||||
|  | 				filepath = Config.PathFormat("{0}/{1}", pl.Folder, pl.Source); | ||||||
|  | 			}  | ||||||
|  | 			else  | ||||||
|  | 			{ | ||||||
|  | 				filepath = pl.Source; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			ProcessStartInfo info = new ProcessStartInfo(); | ||||||
|  | 			info.WorkingDirectory = local_dir; | ||||||
|  | 			info.FileName = Config.PathFormat("{0}/{1}", local_dir, GetPawnCompilerName()); | ||||||
|  | 			info.Arguments = filepath + ".sp"; | ||||||
|  | 			info.UseShellExecute = false; | ||||||
|  | 			info.RedirectStandardOutput = true; | ||||||
|  | 			info.RedirectStandardError = true; | ||||||
|  | 
 | ||||||
|  | 			Process p = Process.Start(info); | ||||||
|  | 			string output = p.StandardOutput.ReadToEnd() + "\n"; | ||||||
|  | 			output += p.StandardError.ReadToEnd(); | ||||||
|  | 			p.WaitForExit(); | ||||||
|  | 			p.Close(); | ||||||
|  | 
 | ||||||
|  | 			Console.WriteLine(output); | ||||||
|  | 
 | ||||||
|  | 			string binary = Config.PathFormat("{0}/{1}/scripting/{2}.smx", cfg.OutputBase, pkg.GetBaseFolder(), pl.Source); | ||||||
|  | 			if (!File.Exists(binary)) | ||||||
|  | 			{ | ||||||
|  | 				return false; | ||||||
|  | 			} | ||||||
|  | 			string new_loc = Config.PathFormat("{0}/{1}/plugins/{2}.smx", cfg.OutputBase, pkg.GetBaseFolder(), pl.Source); | ||||||
|  | 
 | ||||||
|  | 			try | ||||||
|  | 			{ | ||||||
|  | 				if (File.Exists(new_loc)) | ||||||
|  | 				{ | ||||||
|  | 					File.Delete(new_loc); | ||||||
|  | 				} | ||||||
|  | 				File.Move(binary, new_loc); | ||||||
|  | 			} | ||||||
|  | 			catch (System.Exception e) | ||||||
|  | 			{ | ||||||
|  | 				Console.WriteLine(e.Message); | ||||||
|  | 				return false; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return true; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		public string GetRevsionOfPath(string path) | 		public string GetRevsionOfPath(string path) | ||||||
| 		{ | 		{ | ||||||
| 			ProcessStartInfo info = new ProcessStartInfo(); | 			ProcessStartInfo info = new ProcessStartInfo(); | ||||||
| @ -172,6 +228,19 @@ namespace builder | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | 			/* Do plugins */ | ||||||
|  | 			Plugin [] plugins = pkg.GetPlugins(); | ||||||
|  | 			if (plugins != null) | ||||||
|  | 			{ | ||||||
|  | 				for (int i=0; i<plugins.Length; i++) | ||||||
|  | 				{ | ||||||
|  | 					if (!CompilePlugin(pkg, plugins[i])) | ||||||
|  | 					{ | ||||||
|  | 						throw new System.Exception("Failed to compile plugin: " + plugins[i].Source); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			string pkg_file = null; | 			string pkg_file = null; | ||||||
| 			if (cfg.Compressor != null) | 			if (cfg.Compressor != null) | ||||||
| 			{ | 			{ | ||||||
|  | |||||||
| @ -11,6 +11,11 @@ namespace builder | |||||||
| 			cfg = _cfg; | 			cfg = _cfg; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		public override string GetPawnCompilerName() | ||||||
|  | 		{ | ||||||
|  | 			return "spcomp"; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		public override string CompressPackage(Package pkg) | 		public override string CompressPackage(Package pkg) | ||||||
| 		{ | 		{ | ||||||
| 			string lpath = null, ltarget = null; | 			string lpath = null, ltarget = null; | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ namespace builder | |||||||
| 		public Library() | 		public Library() | ||||||
| 		{ | 		{ | ||||||
| 			PlatformExt = false; | 			PlatformExt = false; | ||||||
| 			ProjectFile = null; |  | ||||||
| 			IsExecutable = false; | 			IsExecutable = false; | ||||||
| 			ReleaseBuild = "Release"; | 			ReleaseBuild = "Release"; | ||||||
| 		} | 		} | ||||||
| @ -21,6 +20,21 @@ namespace builder | |||||||
| 		//string DebugBuild;		/* Debug build name */ | 		//string DebugBuild;		/* Debug build name */ | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  | 	public class Plugin | ||||||
|  | 	{ | ||||||
|  | 		public Plugin(string file) | ||||||
|  | 		{ | ||||||
|  | 			Source = file; | ||||||
|  | 		} | ||||||
|  | 		public Plugin (string file, string folder) | ||||||
|  | 		{ | ||||||
|  | 			Source = file; | ||||||
|  | 			Folder = folder; | ||||||
|  | 		} | ||||||
|  | 		public string Folder;		/* Source folder relative to scripting (null for default) */ | ||||||
|  | 		public string Source;		/* Source file name */ | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
| 	public abstract class Package | 	public abstract class Package | ||||||
| 	{ | 	{ | ||||||
| 		/** | 		/** | ||||||
| @ -57,5 +71,10 @@ namespace builder | |||||||
| 		 * Called to get package name | 		 * Called to get package name | ||||||
| 		 */ | 		 */ | ||||||
| 		public abstract string GetPackageName(); | 		public abstract string GetPackageName(); | ||||||
|  | 
 | ||||||
|  | 		/** | ||||||
|  | 		 * Called to get a plugin list | ||||||
|  | 		 */ | ||||||
|  | 		public abstract Plugin [] GetPlugins(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -115,6 +115,19 @@ namespace builder | |||||||
| 
 | 
 | ||||||
| 			return libs; | 			return libs; | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
|  | 		/** | ||||||
|  | 		 * Called to build plugins | ||||||
|  | 		 */ | ||||||
|  | 		public override Plugin [] GetPlugins() | ||||||
|  | 		{ | ||||||
|  | 			Plugin [] plugins = new Plugin[2]; | ||||||
|  | 
 | ||||||
|  | 			plugins[0] = new Plugin("admin-auth"); | ||||||
|  | 			plugins[1] = new Plugin("admin-flatfile", "admin-flatfile"); | ||||||
|  | 
 | ||||||
|  | 			return plugins; | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,6 +11,11 @@ namespace builder | |||||||
| 			cfg = _cfg; | 			cfg = _cfg; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		public override string GetPawnCompilerName() | ||||||
|  | 		{ | ||||||
|  | 			return "spcomp.exe"; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		public override string CompressPackage(Package pkg) | 		public override string CompressPackage(Package pkg) | ||||||
| 		{ | 		{ | ||||||
| 			string lpath = null, ltarget = null; | 			string lpath = null, ltarget = null; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user