using System.ServiceModel;
namespace TGS.Interface.Components
{
///
/// For managing the Game A/B/Live folders, compiling, and hotswapping them
///
[ServiceContract]
public interface ITGCompiler
{
///
/// Sets up the symlinks for hotswapping game code. This will reset everything in the Game folder. Requires the repository to be set up and locks it once the compilation stage starts. Runs asyncronously from this call
///
/// if the operation began, if it could not start
[OperationContract]
bool Initialize();
///
/// Does all the necessary actions to take the revision currently in the repository and compile it to be run on the next server reboot. Requires BYOND to be set up and the to return . Runs asyncronously
///
/// If no message for compilation start will be printed
/// if the operation began, if it could not start
[OperationContract]
bool Compile(bool silent = false);
///
/// Cancels the current compilation
///
/// on success, error message on failure
[OperationContract]
string Cancel();
///
/// Returns the current compiler status
///
/// The current compiler status
[OperationContract]
CompilerStatus GetStatus();
///
/// Returns the error message of the last operation. Reading this will clear the stored value
///
/// the error message of the last operation if it failed or if it succeeded
[OperationContract]
string CompileError();
///
/// Returns the relative path of the dme the compiler will look for without the .dme part
///
/// The relative path of the dme the compiler will look for without the .dme part
[OperationContract]
string ProjectName();
///
/// Sets the relative path of the dme the compiler will look for without the .dme part
///
/// The relative path of the dme the compiler will look for without the .dme part
[OperationContract]
void SetProjectName(string projectName);
}
}