mirror of
https://onedev.site.tesses.net/crosslang/crosslangextras
synced 2026-02-08 17:15:45 +00:00
61 lines
1.5 KiB
Plaintext
61 lines
1.5 KiB
Plaintext
func Tesses.CrossLang.Shell.WebApp(dd)
|
|
{
|
|
var dir = Env.CrossLangConfig / "WebApps";
|
|
if(dd.Arguments.Length == 1)
|
|
{
|
|
Console.WriteLine("List of web applications:");
|
|
Console.WriteLine("Use --port=PORT to set port");
|
|
|
|
if(FS.Local.DirectoryExists(dir))
|
|
each(var item : FS.Local.EnumeratePaths(dir))
|
|
{
|
|
Console.WriteLine(Tesses.CrossLang.GetNameAndDescription(item / item.GetFileName() + ".crvm"));
|
|
}
|
|
return 0;
|
|
}
|
|
else if(dd.Arguments.Length >= 2)
|
|
{
|
|
var webappname = dd.Arguments[1];
|
|
var webapppath = dir / webappname / webappname + ".crvm";
|
|
var port = 4206;
|
|
each(var item : dd.Options)
|
|
{
|
|
if(item.Key == "port")
|
|
{
|
|
var thePort = ParseLong(item.Value);
|
|
if(TypeOf(thePort) == "Long") port = thePort;
|
|
}
|
|
}
|
|
|
|
|
|
if(FS.Local.FileExists(webapppath))
|
|
{
|
|
const _dict = {};
|
|
const env = VM.CreateEnvironment(_dict);
|
|
env.RegisterEverything();
|
|
env.LockRegister();
|
|
|
|
_dict.Net ?? = {};
|
|
_dict.Net.WebServerPort = port;
|
|
|
|
|
|
env.LoadFileWithDependencies(FS.Local,webapppath);
|
|
var myArgs = [webapppath.ToString()];
|
|
for(var i = 2; i < dd.Arguments.Count; i++)
|
|
{
|
|
myArgs.Add(dd.Arguments[i]);
|
|
}
|
|
var res = env.GetDictionary().WebAppMain(myArgs);
|
|
|
|
|
|
Net.Http.ListenSimpleWithLoop(res, port);
|
|
res.Close();
|
|
return 0;
|
|
}
|
|
else {
|
|
Console.WriteLine($"Could not find web application with name {toolname}.");
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
} |