mirror of
https://onedev.site.tesses.net/crosslang/crosslangextras
synced 2026-02-08 09:05:46 +00:00
Add docs, turn args and buildessentials non classes into classes
This commit is contained in:
@@ -20,7 +20,7 @@ func Tesses.CrossLang.Shell.AddDependency(dd)
|
||||
|
||||
if(version == null)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
version = pm.GetLatest(name);
|
||||
}
|
||||
if(version == null)
|
||||
|
||||
@@ -38,9 +38,9 @@ func Tesses.CrossLang.Shell.Build(dd)
|
||||
conf = option.Value;
|
||||
}
|
||||
}
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
bt.AllowFullCompTime = allowFullCompTime;
|
||||
bt.BuildProject(buildPath);
|
||||
|
||||
@@ -38,9 +38,9 @@ func Tesses.CrossLang.Shell.Debug(dd)
|
||||
}
|
||||
if(nobuild)
|
||||
{
|
||||
if(FS.Local.FileExists("config.json"))
|
||||
if(FS.Local.FileExists("cross.json"))
|
||||
{
|
||||
var proj = Json.Decode(FS.ReadAllText(FS.Local, "config.json"));
|
||||
var proj = Json.Decode(FS.ReadAllText(FS.Local, "cross.json"));
|
||||
var nameVer = $"{proj.name}-{proj.version}.crvm";
|
||||
var buildDir = TypeOf(proj.bin_directory) == "String" ? proj.bin_directory : "bin";
|
||||
|
||||
@@ -58,9 +58,9 @@ func Tesses.CrossLang.Shell.Debug(dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
output = bt.BuildProject(buildPath).Output;
|
||||
}
|
||||
|
||||
@@ -34,5 +34,6 @@ func Tesses.CrossLang.Shell.Default(dd)
|
||||
Console.WriteLine("logout: logout from cpkg");
|
||||
Console.WriteLine("configdir: print the config directory");
|
||||
Console.WriteLine("update-shell: update the shell"); //this command is handled by runtime so we don't have to implement it here
|
||||
Console.WriteLine("docs: view docs for project, crvm or reference");
|
||||
return 0;
|
||||
}
|
||||
256
Tesses.CrossLang.Shell/src/docs.tcross
Normal file
256
Tesses.CrossLang.Shell/src/docs.tcross
Normal file
@@ -0,0 +1,256 @@
|
||||
|
||||
|
||||
|
||||
func Tesses.CrossLang.Shell.Docs(dd)
|
||||
{
|
||||
func download_reference()
|
||||
{
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
var latest = pm.GetLatest("Tesses.CrossLang.Reference");
|
||||
if(latest != null)
|
||||
{
|
||||
var pkg = pm.GetPackage("Tesses.CrossLang.Reference", latest);
|
||||
if(TypeOf(pkg) == "ByteArray")
|
||||
{
|
||||
FS.WriteAllBytes(FS.Local,referencePath, pkg);
|
||||
}
|
||||
}
|
||||
}
|
||||
//Console.WriteLine(dd);
|
||||
var override_default=false;
|
||||
|
||||
var funcs=false;
|
||||
var classes=false;
|
||||
|
||||
var funcs_list=[];
|
||||
var classes_list=[];
|
||||
|
||||
var referencePath = Env.CrossLangConfig / "Reference.crvm";
|
||||
|
||||
func printClasses()
|
||||
{
|
||||
Console.WriteLine("Classes:");
|
||||
each(var cls : classes_list)
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"\e[38;5;34m/^{cls.Docs}^/");
|
||||
Console.Write($"\e[38;5;39mclass \e[38;5;42m{cls.Name} ");
|
||||
if(cls.Inherits == "ClassObject")
|
||||
{
|
||||
Console.WriteLine("\e[38;5;15m{");
|
||||
}
|
||||
else {
|
||||
Console.WriteLine($"\e[38;5;15m: \e[38;5;42m{cls.Inherits} \e[38;5;15m{{");
|
||||
}
|
||||
each(var ent : cls.Entries)
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"\t\e[38;5;34m/^{ent.Docs}^/");
|
||||
Console.Write($"\t\e[38;5;39m{ent.Modifiers} ");
|
||||
if(ent.IsFunction)
|
||||
{
|
||||
Console.WriteLine($"\e[38;5;229m{ent.Name}\e[38;5;63m(\e[38;5;15m{ent.Args}\e[38;5;63m)\e[0m");
|
||||
}
|
||||
else {
|
||||
Console.WriteLine($"\e[38;5;159m{ent.Name}\e[0m;");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Console.WriteLine("\e[38;5;15m}\e[0m");
|
||||
}
|
||||
}
|
||||
func printFunctions()
|
||||
{
|
||||
Console.WriteLine("Functions:");
|
||||
each(var fn : funcs_list)
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"\e[38;5;34m/^{fn.Docs}^/");
|
||||
Console.WriteLine($"\e[38;5;39mfunc \e[38;5;229m{fn.Name}\e[38;5;63m(\e[38;5;15m{fn.Args}\e[38;5;63m)\e[0m");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func load_crvm(crvm_path)
|
||||
{
|
||||
if(!FS.Local.RegularFileExists(crvm_path)) return;
|
||||
var strm = FS.Local.OpenFile(crvm_path,"rb");
|
||||
var res = VM.LoadExecutable(strm);
|
||||
strm.Close();
|
||||
var classes = res.Classes;
|
||||
var functions = res.Functions;
|
||||
var chunks = res.Chunks;
|
||||
each(var item : functions)
|
||||
{
|
||||
item.Arguments = chunks[item.ChunkId].Arguments;
|
||||
|
||||
var name = "";
|
||||
for(var i = 0; i < item.NameParts.Length; i++)
|
||||
{
|
||||
if(i > 0) name += ".";
|
||||
name += item.NameParts[i];
|
||||
}
|
||||
|
||||
var args = "";
|
||||
for(var i = 0; i < item.Arguments.Length; i++)
|
||||
{
|
||||
if(i > 0) args += ", ";
|
||||
args += item.Arguments[i];
|
||||
}
|
||||
|
||||
funcs_list.Add({
|
||||
Name = name,
|
||||
Args = args,
|
||||
Docs = item.Documentation
|
||||
});
|
||||
}
|
||||
each(var item : classes)
|
||||
{
|
||||
var co = {
|
||||
Name = item.Name,
|
||||
Inherits = item.Inherits,
|
||||
Entries = [],
|
||||
Docs = item.Documentation
|
||||
};
|
||||
each(var ent : item.Entries)
|
||||
{
|
||||
if(ent.Modifier != "private")
|
||||
{
|
||||
var modifiers = $"{ent.Modifier}";
|
||||
if(ent.IsAbstract && ent.IsFunction)
|
||||
{
|
||||
modifiers += " abstract";
|
||||
}
|
||||
var args = "";
|
||||
for(var i = 0; i < ent.Arguments.Length; i++)
|
||||
{
|
||||
if(i > 0) args += ", ";
|
||||
args += ent.Arguments[i];
|
||||
}
|
||||
|
||||
|
||||
co.Entries.Add({
|
||||
Modifiers = modifiers,
|
||||
Docs = ent.Documentation,
|
||||
Name = ent.Name,
|
||||
IsFunction = ent.IsFunction,
|
||||
Args = args
|
||||
});
|
||||
}
|
||||
}
|
||||
classes_list.Add(co);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
each(var item : dd.Flags)
|
||||
{
|
||||
switch(item)
|
||||
{
|
||||
case "help":
|
||||
Console.WriteLine("USAGE: crosslang docs [flags]");
|
||||
Console.WriteLine("USAGE: crosslang docs [flags] CRVM1 CRVM2 ...");
|
||||
Console.WriteLine("If no CRVM files are provided it defaults to current directory's project");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("FLAGS:");
|
||||
Console.WriteLine("help: print this help");
|
||||
Console.WriteLine("functions: only list functions");
|
||||
Console.WriteLine("classes: only list classes");
|
||||
Console.WriteLine("reference: print runtime reference");
|
||||
Console.WriteLine("reference-path: print runtime reference file path");
|
||||
Console.WriteLine("update-reference: update runtime reference");
|
||||
Console.WriteLine("example: print an example");
|
||||
return 0;
|
||||
case "functions":
|
||||
funcs=true;
|
||||
break;
|
||||
case "classes":
|
||||
classes=true;
|
||||
break;
|
||||
case "reference":
|
||||
override_default=true;
|
||||
if(!FS.Local.RegularFileExists(referencePath))
|
||||
{
|
||||
download_reference();
|
||||
}
|
||||
if(FS.Local.RegularFileExists(referencePath))
|
||||
{
|
||||
load_crvm(referencePath);
|
||||
}
|
||||
break;
|
||||
case "reference-path":
|
||||
Console.WriteLine(referencePath);
|
||||
return 0;
|
||||
case "update-reference":
|
||||
download_reference();
|
||||
return 0;
|
||||
case "example":
|
||||
override_default=true;
|
||||
funcs_list.Add({
|
||||
Docs="\nAdds two numbers\n",
|
||||
Name="Add",
|
||||
Args="addend1, addend2"
|
||||
});
|
||||
classes_list.Add({
|
||||
Docs = "\nMy Sample Class\n",
|
||||
Name = "Class1",
|
||||
Inherits = "ClassObject",
|
||||
Entries = [
|
||||
{
|
||||
Docs = "My field",
|
||||
Modifiers = "protected",
|
||||
IsFunction = false,
|
||||
Name = "MyField"
|
||||
},
|
||||
{
|
||||
Docs = "Abstract method",
|
||||
IsFunction =true,
|
||||
Modifiers = "protected abstract",
|
||||
Name = "MyAbstractMethod",
|
||||
Args = "a, b"
|
||||
}
|
||||
]
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!override_default)
|
||||
{
|
||||
if(dd.Arguments.Length == 1)
|
||||
{
|
||||
if(FS.Local.FileExists("cross.json"))
|
||||
{
|
||||
var proj = Json.Decode(FS.ReadAllText(FS.Local, "cross.json"));
|
||||
var buildDir = TypeOf(proj.bin_directory) == "String" ? proj.bin_directory : "bin";
|
||||
|
||||
each(var file : FS.Local.EnumeratePaths(FS.MakeFull(buildDir)))
|
||||
{
|
||||
if(file.GetExtension()==".crvm")
|
||||
{
|
||||
load_crvm(file);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("ERROR: could not find project.");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for(var i = 1; i < dd.Arguments.Length; i++)
|
||||
{
|
||||
load_crvm(dd.Arguments[i]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if((!classes && !funcs) || funcs)
|
||||
printFunctions();
|
||||
if((!classes && !funcs) || classes)
|
||||
printClasses();
|
||||
}
|
||||
@@ -37,7 +37,7 @@ func Tesses.CrossLang.Shell.InstallConsole(dd)
|
||||
}
|
||||
if(dd.Arguments.Length == 2)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var name = dd.Arguments[1];
|
||||
var version = null;
|
||||
@@ -48,7 +48,7 @@ func Tesses.CrossLang.Shell.InstallConsole(dd)
|
||||
}
|
||||
if(version == null)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
version = pm.GetLatest(name);
|
||||
}
|
||||
if(version == null)
|
||||
@@ -158,9 +158,9 @@ func Tesses.CrossLang.Shell.InstallConsole(dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
output = bt.BuildProject(buildPath).Output;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ func Tesses.CrossLang.Shell.InstallTemplate(dd)
|
||||
}
|
||||
if(dd.Arguments.Length == 2)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var name = dd.Arguments[1];
|
||||
var version = null;
|
||||
@@ -48,7 +48,7 @@ func Tesses.CrossLang.Shell.InstallTemplate(dd)
|
||||
}
|
||||
if(version == null)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
version = pm.GetLatest(name);
|
||||
}
|
||||
if(version == null)
|
||||
@@ -126,9 +126,9 @@ func Tesses.CrossLang.Shell.InstallTemplate(dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
output = bt.BuildProject(buildPath).Output;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ func Tesses.CrossLang.Shell.InstallTool(dd)
|
||||
}
|
||||
if(dd.Arguments.Length == 2)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var name = dd.Arguments[1];
|
||||
var version = null;
|
||||
@@ -48,7 +48,7 @@ func Tesses.CrossLang.Shell.InstallTool(dd)
|
||||
}
|
||||
if(version == null)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
version = pm.GetLatest(name);
|
||||
}
|
||||
if(version == null)
|
||||
@@ -158,9 +158,9 @@ func Tesses.CrossLang.Shell.InstallTool(dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
output = bt.BuildProject(buildPath).Output;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ func Tesses.CrossLang.Shell.InstallWebApp(dd)
|
||||
}
|
||||
if(dd.Arguments.Length == 2)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var name = dd.Arguments[1];
|
||||
var version = null;
|
||||
@@ -48,7 +48,7 @@ func Tesses.CrossLang.Shell.InstallWebApp(dd)
|
||||
}
|
||||
if(version == null)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
version = pm.GetLatest(name);
|
||||
}
|
||||
if(version == null)
|
||||
@@ -158,9 +158,9 @@ func Tesses.CrossLang.Shell.InstallWebApp(dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
output = bt.BuildProject(buildPath).Output;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
func main(args)
|
||||
{
|
||||
var dd = Tesses.CrossLang.Args(args);
|
||||
var dd = new Tesses.CrossLang.Args(args);
|
||||
if(dd.Arguments.Count > 0)
|
||||
{
|
||||
|
||||
@@ -74,6 +74,9 @@ func main(args)
|
||||
case "configdir":
|
||||
return Tesses.CrossLang.Shell.ConfigDir(dd);
|
||||
break;
|
||||
case "docs":
|
||||
return Tesses.CrossLang.Shell.Docs(dd);
|
||||
break;
|
||||
default:
|
||||
return Tesses.CrossLang.Shell.Default(dd);
|
||||
}
|
||||
|
||||
@@ -44,9 +44,9 @@ func Tesses.CrossLang.Shell.Run(dd)
|
||||
}
|
||||
if(nobuild)
|
||||
{
|
||||
if(FS.Local.FileExists("config.json"))
|
||||
if(FS.Local.FileExists("cross.json"))
|
||||
{
|
||||
var proj = Json.Decode(FS.ReadAllText(FS.Local, "config.json"));
|
||||
var proj = Json.Decode(FS.ReadAllText(FS.Local, "cross.json"));
|
||||
var nameVer = $"{proj.name}-{proj.version}.crvm";
|
||||
var buildDir = TypeOf(proj.bin_directory) == "String" ? proj.bin_directory : "bin";
|
||||
|
||||
@@ -64,9 +64,9 @@ func Tesses.CrossLang.Shell.Run(dd)
|
||||
}
|
||||
else
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = offline;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = conf;
|
||||
bt.AllowFullCompTime = allowFullCompTime;
|
||||
output = bt.BuildProject(buildPath).Output;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
func Tesses.CrossLang.Shell.ToolTest(dd)
|
||||
{
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = false;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
|
||||
var proj=bt.BuildProject(".");
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@ func Tesses.CrossLang.Shell.UploadPackage(dd)
|
||||
}
|
||||
else {
|
||||
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = false;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
bt.Config = "";
|
||||
bt.AllowFullCompTime = false;
|
||||
package = bt.BuildProject(".").Output;
|
||||
|
||||
@@ -12,9 +12,9 @@ func Tesses.CrossLang.Shell.WebAppTest(dd)
|
||||
}
|
||||
|
||||
|
||||
var pm = Tesses.CrossLang.PackageManager();
|
||||
var pm = new Tesses.CrossLang.PackageManager();
|
||||
pm.Offline = false;
|
||||
var bt = Tesses.CrossLang.BuildTool(pm);
|
||||
var bt = new Tesses.CrossLang.BuildTool(pm);
|
||||
|
||||
|
||||
var proj=bt.BuildProject(".");
|
||||
|
||||
Reference in New Issue
Block a user