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