From 53c027ef63341dd1b6bf5eabc3e87915d6621af6 Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Tue, 29 Apr 2025 04:57:05 -0500 Subject: [PATCH] Get far on package manager --- .onedev-buildspec.yml | 2 +- README.md | 9 +- .../src/PackageManager.tcross | 5 +- .../src/buildtool.tcross | 13 +- .../components/counter.tcrml | 3 - .../components/shell.tcrml | 36 -- Tesses.CrossLang.PackageServer/cross.json | 2 +- .../pages/about.tcrml | 28 -- .../pages/counter.tcrml | 29 -- .../pages/index.tcrml | 28 -- .../res/simple.min.css | 1 - .../src/program.tcross | 309 +++++++++++++++++- Tesses.CrossLang.Shell/src/main.tcross | 36 ++ Tesses.CrossLang.Std/cross.json | 7 - Tesses.CrossLang.Std/src/time.tcross | 21 -- crosslang_shell_archive_maker/src/main.tcross | 1 + .../Tesses.CrossLang.Args/1.0.0.0-prod | Bin 1459 -> 1444 bytes .../1.0.0.0-prod | Bin 13184 -> 12934 bytes .../Tesses.CrossLang.Markup/1.0.0.0-prod | Bin 16779 -> 16404 bytes install.sh | 3 - pack.sh | 3 - script.sh | 13 - 22 files changed, 360 insertions(+), 189 deletions(-) delete mode 100644 Tesses.CrossLang.PackageServer/components/counter.tcrml delete mode 100644 Tesses.CrossLang.PackageServer/components/shell.tcrml delete mode 100644 Tesses.CrossLang.PackageServer/pages/about.tcrml delete mode 100644 Tesses.CrossLang.PackageServer/pages/counter.tcrml delete mode 100644 Tesses.CrossLang.PackageServer/pages/index.tcrml delete mode 100644 Tesses.CrossLang.PackageServer/res/simple.min.css delete mode 100644 Tesses.CrossLang.Std/cross.json delete mode 100644 Tesses.CrossLang.Std/src/time.tcross delete mode 100755 install.sh delete mode 100644 pack.sh delete mode 100755 script.sh diff --git a/.onedev-buildspec.yml b/.onedev-buildspec.yml index 2a0a187..2a4f5b9 100644 --- a/.onedev-buildspec.yml +++ b/.onedev-buildspec.yml @@ -14,7 +14,7 @@ jobs: image: onedev.site.tesses.net/crosslang/crosslang:latest interpreter: !DefaultInterpreter commands: | - bash ./pack.sh + crossint ./build.tcross pack useTTY: true condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - !PublishArtifactStep diff --git a/README.md b/README.md index 23630ca..c395c65 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,15 @@ # To Build ```bash -./script.sh +crossint ./build.tcross ``` # To Install ```bash -./install.sh +crossint ./build.tcross install +``` + +# To Pack +```bash +crossint ./build.tcross pack ``` \ No newline at end of file diff --git a/Tesses.CrossLang.BuildEssentials/src/PackageManager.tcross b/Tesses.CrossLang.BuildEssentials/src/PackageManager.tcross index d6512a2..4b4e50b 100644 --- a/Tesses.CrossLang.BuildEssentials/src/PackageManager.tcross +++ b/Tesses.CrossLang.BuildEssentials/src/PackageManager.tcross @@ -50,14 +50,16 @@ func Tesses.CrossLang.PackageManager() ParseFileName, GetPackageServers = ()=>{ var packageConfigFile = configRoot / "package_servers.json"; + if(FS.Local.RegularFileExists(packageConfigFile)) { - return Json.Decode(FileReadString(FS.Local, packageConfigFile)); + return Json.Decode(FS.ReadAllText(FS.Local, packageConfigFile)); } return ["https://cpkg.tesseslanguage.com/"]; }, GetPackage = (this,name, version) => { + var v = Version.Parse(version); var useCache = v.Stage != "dev"; var pkgFile = packageCache / name / v.ToString(); @@ -71,6 +73,7 @@ func Tesses.CrossLang.PackageManager() { //https://cpkg.tesseslanguage.com/api/v1/download?name=MyPackage&version=1.0.0.0-prod var uri = $"{item.TrimEnd('/')}/api/v1/download?name={Net.Http.UrlEncode(name)}&version={Net.Http.UrlEncode(version)}"; + Console.WriteLine($"Downloading: {name} {version} from {item}"); var req = Net.Http.MakeRequest(uri); if(req.StatusCode == 200) { diff --git a/Tesses.CrossLang.BuildEssentials/src/buildtool.tcross b/Tesses.CrossLang.BuildEssentials/src/buildtool.tcross index 998967e..c123e01 100644 --- a/Tesses.CrossLang.BuildEssentials/src/buildtool.tcross +++ b/Tesses.CrossLang.BuildEssentials/src/buildtool.tcross @@ -11,15 +11,6 @@ func Tesses.CrossLang.BuildTool(pm) return { DirectoriesCompiled = [], - FileReadString = (fs,path) =>{ - var f = fs.OpenFile(path,"rb"); - var ms = FS.MemoryStream(true); - f.CopyTo(ms); - var text = ms.GetBytes().ToString(); - f.Close(); - ms.Close(); - return text; - }, GetPackageDependencies = (this,name,version,dir)=>{ var dep = pm.GetPackage(name,version); if(TypeOf(dep) == "Null") throw $"Package {name} with version {version} does not exist"; @@ -68,7 +59,7 @@ func Tesses.CrossLang.BuildTool(pm) var crossConf = dir / "cross.json"; if(FS.Local.FileExists(crossConf)) { - var configData = Json.Decode(this.FileReadString(FS.Local,crossConf)); + var configData = Json.Decode(FS.ReadAllText(FS.Local,crossConf)); var info = {type = "console"}; var name = "out"; var version = "1.0.0.0-prod"; @@ -221,7 +212,7 @@ func Tesses.CrossLang.BuildTool(pm) { var src = { FileName = file.ToString(), - Source = this.FileReadString(FS.Local, file) + Source = FS.ReadAllText(FS.Local, file) }; sources.Add(src); } diff --git a/Tesses.CrossLang.PackageServer/components/counter.tcrml b/Tesses.CrossLang.PackageServer/components/counter.tcrml deleted file mode 100644 index 1b4fca4..0000000 --- a/Tesses.CrossLang.PackageServer/components/counter.tcrml +++ /dev/null @@ -1,3 +0,0 @@ - -

Count is

- \ No newline at end of file diff --git a/Tesses.CrossLang.PackageServer/components/shell.tcrml b/Tesses.CrossLang.PackageServer/components/shell.tcrml deleted file mode 100644 index 06d0afc..0000000 --- a/Tesses.CrossLang.PackageServer/components/shell.tcrml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - Tesses.CrossLang.PackageServer - <?expr Net.Http.HtmlEncode(title) ?> - - - -
-

Tesses.CrossLang.PackageServer

- -
-

- - - - - - \ No newline at end of file diff --git a/Tesses.CrossLang.PackageServer/cross.json b/Tesses.CrossLang.PackageServer/cross.json index ac58642..85b0592 100644 --- a/Tesses.CrossLang.PackageServer/cross.json +++ b/Tesses.CrossLang.PackageServer/cross.json @@ -1,5 +1,5 @@ { - "project_dependencies": ["../Tesses.CrossLang.Markup"], + "info": { "type": "console" }, diff --git a/Tesses.CrossLang.PackageServer/pages/about.tcrml b/Tesses.CrossLang.PackageServer/pages/about.tcrml deleted file mode 100644 index a80bec2..0000000 --- a/Tesses.CrossLang.PackageServer/pages/about.tcrml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam possimus nisi ab nobis magni, error minus vero neque iusto beatae, quasi nostrum. Ut repudiandae expedita reprehenderit tenetur. Sunt, adipisci cumque!

- - - diff --git a/Tesses.CrossLang.PackageServer/pages/counter.tcrml b/Tesses.CrossLang.PackageServer/pages/counter.tcrml deleted file mode 100644 index 3db6f57..0000000 --- a/Tesses.CrossLang.PackageServer/pages/counter.tcrml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - diff --git a/Tesses.CrossLang.PackageServer/pages/index.tcrml b/Tesses.CrossLang.PackageServer/pages/index.tcrml deleted file mode 100644 index 64a70c2..0000000 --- a/Tesses.CrossLang.PackageServer/pages/index.tcrml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -

1 John 4:4: You, dear children, are from God and have overcome them, because the one who is in you is greater than the one who is in the world.

- - - diff --git a/Tesses.CrossLang.PackageServer/res/simple.min.css b/Tesses.CrossLang.PackageServer/res/simple.min.css deleted file mode 100644 index 0e54419..0000000 --- a/Tesses.CrossLang.PackageServer/res/simple.min.css +++ /dev/null @@ -1 +0,0 @@ -:root{--sans-font:-apple-system,BlinkMacSystemFont,"Avenir Next",Avenir,"Nimbus Sans L",Roboto,"Noto Sans","Segoe UI",Arial,Helvetica,"Helvetica Neue",sans-serif;--mono-font:Consolas,Menlo,Monaco,"Andale Mono","Ubuntu Mono",monospace;--standard-border-radius:5px;--bg:#fff;--accent-bg:#f5f7ff;--text:#212121;--text-light:#585858;--border:#898ea4;--accent:#0d47a1;--accent-hover:#1266e2;--accent-text:var(--bg);--code:#d81b60;--preformatted:#444;--marked:#fd3;--disabled:#efefef}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#212121;--accent-bg:#2b2b2b;--text:#dcdcdc;--text-light:#ababab;--accent:#ffb300;--accent-hover:#ffe099;--accent-text:var(--bg);--code:#f06292;--preformatted:#ccc;--disabled:#111}img,video{opacity:.8}}*,:before,:after{box-sizing:border-box}textarea,select,input,progress{-webkit-appearance:none;-moz-appearance:none;appearance:none}html{font-family:var(--sans-font);scroll-behavior:smooth}body{color:var(--text);background-color:var(--bg);grid-template-columns:1fr min(45rem,90%) 1fr;margin:0;font-size:1.15rem;line-height:1.5;display:grid}body>*{grid-column:2}body>header{background-color:var(--accent-bg);border-bottom:1px solid var(--border);text-align:center;grid-column:1/-1;padding:0 .5rem 2rem}body>header>:only-child{margin-block-start:2rem}body>header h1{max-width:1200px;margin:1rem auto}body>header p{max-width:40rem;margin:1rem auto}main{padding-top:1.5rem}body>footer{color:var(--text-light);text-align:center;border-top:1px solid var(--border);margin-top:4rem;padding:2rem 1rem 1.5rem;font-size:.9rem}h1{font-size:3rem}h2{margin-top:3rem;font-size:2.6rem}h3{margin-top:3rem;font-size:2rem}h4{font-size:1.44rem}h5{font-size:1.15rem}h6{font-size:.96rem}p{margin:1.5rem 0}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,h2,h3{line-height:1.1}@media only screen and (width<=720px){h1{font-size:2.5rem}h2{font-size:2.1rem}h3{font-size:1.75rem}h4{font-size:1.25rem}}a,a:visited{color:var(--accent)}a:hover{text-decoration:none}button,.button,a.button,input[type=submit],input[type=reset],input[type=button]{border:1px solid var(--accent);background-color:var(--accent);color:var(--accent-text);padding:.5rem .9rem;line-height:normal;text-decoration:none}.button[aria-disabled=true],input:disabled,textarea:disabled,select:disabled,button[disabled]{cursor:not-allowed;background-color:var(--disabled);border-color:var(--disabled);color:var(--text-light)}input[type=range]{padding:0}abbr[title]{cursor:help;text-decoration-line:underline;text-decoration-style:dotted}button:enabled:hover,.button:not([aria-disabled=true]):hover,input[type=submit]:enabled:hover,input[type=reset]:enabled:hover,input[type=button]:enabled:hover{background-color:var(--accent-hover);border-color:var(--accent-hover);cursor:pointer}.button:focus-visible,button:focus-visible:where(:enabled),input:enabled:focus-visible:where([type=submit],[type=reset],[type=button]){outline:2px solid var(--accent);outline-offset:1px}header>nav{padding:1rem 0 0;font-size:1rem;line-height:2}header>nav ul,header>nav ol{flex-flow:wrap;place-content:space-around center;align-items:center;margin:0;padding:0;list-style-type:none;display:flex}header>nav ul li,header>nav ol li{display:inline-block}header>nav a,header>nav a:visited{border:1px solid var(--border);border-radius:var(--standard-border-radius);color:var(--text);margin:0 .5rem 1rem;padding:.1rem 1rem;text-decoration:none;display:inline-block}header>nav a:hover,header>nav a.current,header>nav a[aria-current=page],header>nav a[aria-current=true]{border-color:var(--accent);color:var(--accent);cursor:pointer}@media only screen and (width<=720px){header>nav a{border:none;padding:0;line-height:1;text-decoration:underline}}aside,details,pre,progress{background-color:var(--accent-bg);border:1px solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem}aside{float:right;width:30%;margin-inline-start:15px;padding:0 15px;font-size:1rem}[dir=rtl] aside{float:left}@media only screen and (width<=720px){aside{float:none;width:100%;margin-inline-start:0}}article,fieldset,dialog{border:1px solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem;padding:1rem}article h2:first-child,section h2:first-child,article h3:first-child,section h3:first-child{margin-top:1rem}section{border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:3rem 0;padding:2rem 1rem}section+section,section:first-child{border-top:0;padding-top:0}section+section{margin-top:0}section:last-child{border-bottom:0;padding-bottom:0}details{padding:.7rem 1rem}summary{cursor:pointer;word-break:break-all;margin:-.7rem -1rem;padding:.7rem 1rem;font-weight:700}details[open]>summary+*{margin-top:0}details[open]>summary{margin-bottom:.5rem}details[open]>:last-child{margin-bottom:0}table{border-collapse:collapse;margin:1.5rem 0}figure>table{width:max-content;margin:0}td,th{border:1px solid var(--border);text-align:start;padding:.5rem}th{background-color:var(--accent-bg);font-weight:700}tr:nth-child(2n){background-color:var(--accent-bg)}table caption{margin-bottom:.5rem;font-weight:700}textarea,select,input,button,.button{font-size:inherit;border-radius:var(--standard-border-radius);box-shadow:none;max-width:100%;margin-bottom:.5rem;padding:.5rem;font-family:inherit;display:inline-block}textarea,select,input{color:var(--text);background-color:var(--bg);border:1px solid var(--border)}label{display:block}textarea:not([cols]){width:100%}select:not([multiple]){background-image:linear-gradient(45deg,transparent 49%,var(--text)51%),linear-gradient(135deg,var(--text)51%,transparent 49%);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-inline-end:25px}[dir=rtl] select:not([multiple]){background-position:10px,15px}input[type=checkbox],input[type=radio]{vertical-align:middle;width:min-content;position:relative}input[type=checkbox]+label,input[type=radio]+label{display:inline-block}input[type=radio]{border-radius:100%}input[type=checkbox]:checked,input[type=radio]:checked{background-color:var(--accent)}input[type=checkbox]:checked:after{content:" ";border-right:solid var(--bg).08em;border-bottom:solid var(--bg).08em;background-color:#0000;border-radius:0;width:.18em;height:.32em;font-size:1.8em;position:absolute;top:.05em;left:.17em;transform:rotate(45deg)}input[type=radio]:checked:after{content:" ";background-color:var(--bg);border-radius:100%;width:.25em;height:.25em;font-size:32px;position:absolute;top:.125em;left:.125em}@media only screen and (width<=720px){textarea,select,input{width:100%}}input[type=color]{height:2.5rem;padding:.2rem}input[type=file]{border:0}hr{background:var(--border);border:none;height:1px;margin:1rem auto}mark{border-radius:var(--standard-border-radius);background-color:var(--marked);color:#000;padding:2px 5px}mark a{color:#0d47a1}img,video{border-radius:var(--standard-border-radius);max-width:100%;height:auto}figure{margin:0;display:block;overflow-x:auto}figure>img,figure>picture>img{margin-inline:auto;display:block}figcaption{text-align:center;color:var(--text-light);margin-block:1rem;font-size:.9rem}blockquote{border-inline-start:.35rem solid var(--accent);color:var(--text-light);margin-block:2rem;margin-inline:2rem 0;padding:.4rem .8rem;font-style:italic}cite{color:var(--text-light);font-size:.9rem;font-style:normal}dt{color:var(--text-light)}code,pre,pre span,kbd,samp{font-family:var(--mono-font);color:var(--code)}kbd{color:var(--preformatted);border:1px solid var(--preformatted);border-bottom:3px solid var(--preformatted);border-radius:var(--standard-border-radius);padding:.1rem .4rem}pre{max-width:100%;color:var(--preformatted);padding:1rem 1.4rem;overflow:auto}pre code{color:var(--preformatted);background:0 0;margin:0;padding:0}progress{width:100%}progress:indeterminate{background-color:var(--accent-bg)}progress::-webkit-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent-bg)}progress::-webkit-progress-value{border-radius:var(--standard-border-radius);background-color:var(--accent)}progress::-moz-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent);transition-property:width;transition-duration:.3s}progress:indeterminate::-moz-progress-bar{background-color:var(--accent-bg)}dialog{background-color:var(--bg);max-width:40rem;margin:auto}dialog::backdrop{background-color:var(--bg);opacity:.8}@media only screen and (width<=720px){dialog{max-width:100%;margin:auto 1em}}sup,sub{vertical-align:baseline;position:relative}sup{top:-.4em}sub{top:.3em}.notice{background:var(--accent-bg);border:2px solid var(--border);border-radius:var(--standard-border-radius);margin:2rem 0;padding:1.5rem}@media print{@page{margin:1cm}body{display:block}body>header{background-color:unset}body>header nav,body>footer{display:none}article{border:none;padding:0}a[href^=http]:after{content:" <" attr(href)">"}abbr[title]:after{content:" (" attr(title)")"}a{text-decoration:none}p{widows:3;orphans:3}hr{border-top:1px solid var(--border)}mark{border:1px solid var(--border)}pre,table,figure,img,svg{break-inside:avoid}pre code{white-space:pre-wrap}} \ No newline at end of file diff --git a/Tesses.CrossLang.PackageServer/src/program.tcross b/Tesses.CrossLang.PackageServer/src/program.tcross index 0669b7d..c7d8b49 100644 --- a/Tesses.CrossLang.PackageServer/src/program.tcross +++ b/Tesses.CrossLang.PackageServer/src/program.tcross @@ -1,5 +1,312 @@ var count = 0; func main(args) { - Net.Http.ListenSimpleWithLoop(Router,4206); + Console.WriteLine("In main"); + var dir = "."; + if(args.Length > 1) + { + + dir = args[1]; + } + DB.Init(dir); + + + //should be a route but its crosslang so we can use mountable + + + mountable.Mount("/package_icon.png", (ctx)=>{ + ctx.ResponseHeaders.SetValue("Content-Type", "image/png"); + ctx.SendBytes(embed("crosslang.png")); + return true; + }); + + /* + PUT /api/v1/upload Authorization Bearer + POST /api/v1/login Json object with username and password returns json object with either 200 for success {"token": "TOKEN_VAL"} or non 2XX if fails {"reason": "SOME ERROR"} + POST /api/v1/logout use Authorization Bearer + GET /api/v1/latest?name=PackageName returns 200 OK with json {"version": "1.0.0.0-prod"} if it succeeds if it fails returns a failing status code with {"reason": "SOME ERROR"} + GET /api/v1/download?name=PackageName&version=1.0.0.0-prod returns 200 OK with package bytes or 404 if doesn't exist + GET /api/v1/search?q=SomeQuery&offset=&limit= returns 200 OK with json of packages {"packages": [{"name": "pkgName","version": "latestVersion", ...}]} or non success status code + + */ + + + Net.Http.ListenSimpleWithLoop((ctx)=>{ + if(ctx.Path == "/package") + { + var name = ctx.QueryParams.TryGetFirst("name"); + if(TypeOf(name) != "String") name = ""; + ctx.WithMimeType("text/html").SendText(Pages.Package(name)); + return true; + } + if(ctx.Path == "/packages") + { + ctx.WithMimeType("text/html").SendText(Pages.Packages(ctx)); + return true; + } + if(ctx.Path == "/api/v1/latest") + { + var name = ctx.QueryParams.TryGetFirst("name"); + if(TypeOf(name) != "String") name = ""; + var version = DB.GetLatestVersion(name); + if(version != null) + { + ctx.WithMimeType("application/json").SendText(Json.Encode({version})); + return true; + } + } + if(ctx.Path == "/api/v1/search") + { + var q = ctx.QueryParams.TryGetFirst("q"); + if(TypeOf(q) != "String") q = ""; + var offset = ParseLong(ctx.QueryParams.TryGetFirst("offset")); + if(TypeOf(offset) != "Long") offset=0; + var limit = ParseLong(ctx.QueryParams.TryGetFirst("limit")); + if(TypeOf(limit) != "Long") limit = 20; + if(limit <= 0) limit = 20; + + var res = DB.QueryPackages(q, offset*limit, limit); + if(TypeOf(res) != "List") + { + ctx.StatusCode=500; + ctx.SendText("Packages not a list"); + return true; + } + else + { + ctx.WithMimeType("application/json").SendText(Json.Encode({packages=res})); + return true; + } + } + if(ctx.Path == "/upload") + { + if(ctx.Method == "GET") + { + ctx.WithMimeType("text/html").SendText(Pages.Upload(ctx)); + return true; + } + else if(ctx.Method == "POST") + { + if(ctx.NeedToParseFormData) + { + var filePath = DB.working / "Temp" / $"{DB.GetUniqueNumber()}.crvm"; + var hasFile=false; + var strm = FS.Local.OpenFile(filePath,"wb"); + ctx.ParseFormData((mime,filename,name)=>{ + + if(name == "package") + { + if(hasFile) return FS.MemoryStream(true); + hasFile=true; + + return strm; + } + else + return FS.MemoryStream(true); + }); + + strm.Close(); + + var session = DB.GetSession(ctx); + if(session == null) + { + ctx.StatusCode = 401; + ctx.SendText("

You are not logged in

"); + return true; + } + + var csrf = ctx.QueryParams.TryGetFirst("csrf"); + var result = { Success=false, Reason = "Invalid CSRF"}; + + if(DB.VerifyCSRF(session,csrf)) + { + var userId = DB.GetUserIdFromSession(session); + result = DB.UploadPackage(userId, filePath); + } + + if(FS.Local.FileExists(filePath)) + FS.Local.DeleteFile(filePath); + + if(result.Success) + { + ctx.StatusCode = 302; + ctx.ResponseHeaders.SetValue("Location", "/"); + ctx.WriteHeaders(); + } + else + { + ctx.StatusCode = 400; + ctx.SendText(result.Reason); + } + + return true; + } + } + + } + if(ctx.Path == "/api/v1/package_icon.png") + { + var name = ctx.QueryParams.TryGetFirst("name"); + var version = ctx.QueryParams.TryGetFirst("version"); + ctx.ResponseHeaders.SetValue("Content-Type", "image/png"); + ctx.SendBytes(DB.GetPackageIcon(name,version)); + return true; + } + if(ctx.Path == "/api/v1/download") + { + var name = ctx.QueryParams.TryGetFirst("name"); + var version = ctx.QueryParams.TryGetFirst("version"); + if(TypeOf(name) != "String") name = ""; + if(TypeOf(version) != "String") version = ""; + + var file = DB.working / "Packages" / name / $"{name}-{version}.crvm"; + + + if(FS.Local.FileExists(file) && name.Length > 0 && version.Length > 0) + { + var strm = FS.Local.OpenFile(file,"rb"); + if(strm != null) + { + ctx.WithMimeType("application/crvm").WithContentDisposition($"{name}-{version}.crvm",false).SendStream(strm); + strm.Close(); + return true; + } + + } + return false; + } + if(ctx.Path == "/login") + { + if(ctx.Method == "GET") + { + ctx.WithMimeType("text/html").SendText(Pages.Login()); + return true; + } + else if(ctx.Method == "POST") + { + + var email = ctx.QueryParams.TryGetFirst("email"); + if(TypeOf(email) != "String") + { + ctx.StatusCode = 400; + ctx.SendText("

You forgot the email buddy

"); + return true; + } + var password = ctx.QueryParams.TryGetFirst("password"); + if(TypeOf(password) != "String") + { + ctx.StatusCode = 400; + ctx.SendText("

You forgot the password buddy

"); + return true; + } + + var accountId = DB.GetAccountId(email, password); + if(accountId == -1) + { + ctx.StatusCode = 400; + ctx.SendText("

Invalid credentials

"); + return true; + } + + ctx.StatusCode = 302; + ctx.ResponseHeaders.SetValue("Location", "/"); + ctx.ResponseHeaders.SetValue("Set-Cookie", $"Session={DB.CreateSession(accountId)}; SameSite=Strict"); + ctx.WriteHeaders(); + return true; + } + } + if(ctx.Path == "/signup") + { + if(ctx.Method == "GET") + { + ctx.WithMimeType("text/html").SendText(Pages.Signup()); + return true; + } + else if(ctx.Method == "POST") + { + var email = ctx.QueryParams.TryGetFirst("email"); + if(TypeOf(email) != "String") + { + ctx.StatusCode = 400; + ctx.SendText("

You forgot the email buddy

"); + return true; + } + var displayName = ctx.QueryParams.TryGetFirst("displayName"); + if(TypeOf(displayName) != "String") + { + ctx.StatusCode = 400; + ctx.SendText("

You forgot the displayName buddy

"); + return true; + } + var password = ctx.QueryParams.TryGetFirst("password"); + if(TypeOf(password) != "String") + { + ctx.StatusCode = 400; + ctx.SendText("

You forgot the password buddy

"); + return true; + } + var passwordconfirm = ctx.QueryParams.TryGetFirst("passwordconfirm"); + if(TypeOf(passwordconfirm) != "String") + { + ctx.StatusCode = 400; + ctx.SendText("

You forgot the passwordconfirm buddy

"); + return true; + } + + if(password != passwordconfirm) + { + ctx.StatusCode = 400; + ctx.SendText("

The passwords do not match

"); + return true; + } + + var res = DB.CreateUser(email, displayName, password); + if(!res.Success) + { + ctx.StatusCode = 400; + ctx.SendText(%"

Error: {Net.Http.HtmlEncode(res.Reason)}

"); + return true; + } + + + ctx.StatusCode = 302; + ctx.ResponseHeaders.SetValue("Location", res.Redirect); + ctx.WriteHeaders(); + return true; + } + } + if(ctx.Path == "/css/bootstrap.min.css") + { + ctx.WithMimeType("text/css").SendBytes(embed("css/bootstrap.min.css")); + return true; + } + if(ctx.Path == "/css/bootstrap.min.css.map") + { + ctx.WithMimeType("application/json").SendBytes(embed("css/bootstrap.min.css.map")); + return true; + } + + if(ctx.Path == "/js/bootstrap.min.js") + { + ctx.WithMimeType("text/javascript").SendBytes(embed("js/bootstrap.min.js")); + return true; + } + + if(ctx.Path == "/js/bootstrap.min.js.map") + { + ctx.WithMimeType("application/json").SendBytes(embed("js/bootstrap.min.js.map")); + return true; + } + if(ctx.Path == "/favicon.ico") + { + ctx.WithMimeType("image/x-icon").SendBytes(embed("favicon.ico")); + return true; + } + if(ctx.Path == "/") + { + ctx.WithMimeType("text/html").SendText(Pages.Index()); + return true; + } + return false; + },4206); } \ No newline at end of file diff --git a/Tesses.CrossLang.Shell/src/main.tcross b/Tesses.CrossLang.Shell/src/main.tcross index cf33f4e..2a20434 100644 --- a/Tesses.CrossLang.Shell/src/main.tcross +++ b/Tesses.CrossLang.Shell/src/main.tcross @@ -494,6 +494,42 @@ func main(args) else if(commandName == "add-dependency") { //crosslang add-dependency Tesses.CrossLang.Markup --version=1.0.0.0-prod + + if(dd.Arguments.Length > 1) + { + + var name = dd.Arguments[1]; + var version = null; + each(var opt : dd.Options) + { + if(opt.Key == "version") + version = opt.Value; + } + if(!FS.Local.FileExists("cross.json")) + { + Console.WriteLine("The current directory does not have a project"); + return 1; + } + + if(version == null) + { + var pm = Tesses.CrossLang.PackageManager(); + version = pm.GetLatest(name); + } + if(version == null) + { + Console.WriteLine("Could not get version"); + return 1; + } + else + { + var data = Json.Decode(FS.ReadAllText(FS.Local,"cross.json")); + if(TypeOf(data.dependencies) != "List") data.dependencies=[]; + data.dependencies.Add({name,version}); + FS.WriteAllText(FS.Local,"cross.json",Json.Encode(data,true)); + } + } + } else if(commandName == "upload-package") { diff --git a/Tesses.CrossLang.Std/cross.json b/Tesses.CrossLang.Std/cross.json deleted file mode 100644 index 256df31..0000000 --- a/Tesses.CrossLang.Std/cross.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "info": { - "type": "lib" - }, - "version": "1.0.0.0-prod", - "name": "Tesses.CrossLang.Std" -} \ No newline at end of file diff --git a/Tesses.CrossLang.Std/src/time.tcross b/Tesses.CrossLang.Std/src/time.tcross deleted file mode 100644 index dedeff1..0000000 --- a/Tesses.CrossLang.Std/src/time.tcross +++ /dev/null @@ -1,21 +0,0 @@ -func Time.Date.Create(year,month,day,hour,minute,second,timezone,hasDST) -{ - -} - -func Time.Date.FromUnix(timeStamp) -{ - var seconds = (timeStamp % 60).Abs(); - var min = ((timeStamp / 60) % 60).Abs(); - var hour = ((timeStamp / 3600) % 24).Abs(); - var year = ((timeStamp / 31557600)); - var daysSince1970 = (timeStamp / 86400); - - - - return Time.Date.Create(,second); -} -func Time.Date.getNow() -{ - return Time.Date.FromUnix(Time.Now); -} \ No newline at end of file diff --git a/crosslang_shell_archive_maker/src/main.tcross b/crosslang_shell_archive_maker/src/main.tcross index 793f07f..6cd34d3 100644 --- a/crosslang_shell_archive_maker/src/main.tcross +++ b/crosslang_shell_archive_maker/src/main.tcross @@ -52,6 +52,7 @@ func create_archive() copyFile("Templates/lib/bin/Tesses.CrossLang.Template.Library-1.0.0.0-prod.crvm", templates / "lib.crvm"); copyFile("Templates/template/bin/Tesses.CrossLang.Template.Template-1.0.0.0-prod.crvm", templates / "template.crvm"); copyFile("Templates/web/bin/Tesses.CrossLang.Template.Website-1.0.0.0-prod.crvm", templates / "web.crvm"); + copyFile("Templates/emptyweb/bin/Tesses.CrossLang.Template.EmptyWebsite-1.0.0.0-prod.crvm", templates / "emptyweb.crvm"); copyFile("Templates/tool/bin/Tesses.CrossLang.Template.Tool-1.0.0.0-prod.crvm", templates / "tool.crvm"); var packageCache = r / "PackageCache"; diff --git a/crosslang_shell_archive_maker/tmp/PackageCache/Tesses.CrossLang.Args/1.0.0.0-prod b/crosslang_shell_archive_maker/tmp/PackageCache/Tesses.CrossLang.Args/1.0.0.0-prod index b7c1523bf0d411c2b5d068ccf74cdc3bba46eb96..7e68b17dc48d5f19c185c48970c397fe877d7e11 100644 GIT binary patch delta 434 zcmdnYy@Y#$EaSF`a{t7)S1V=Y=cX1Url%@dDP@$D6ck&<=*LWUXOyjv(O1$@%E?Sl z%_{~;`nU)9lo~FE6zuM&G$8zqr^ZF)tm7=~_`zlvoTjrKGX|WFK=*X42#6HthmTN$K_TSGt}NS#*&3Nf-xmS&Nktja7P%nISF0p%D4!R%nLTspI~a1ewK zmWunO!IVbb6nlLFVPxfFnWvrcC&uYY|3;^)UVcGxy delta 447 zcmXv|F-yZh6izNl2ScTBQc!3cQmq{{DYhM~lawMt6*t`^)}sx!Nz9$K;!yezl$#ud zIyt)N=wA?Za&z)ei0>};;Jy3a_rCYNH#MKko1FT5oBtiZT-$xWLjp?dhGn;R4%)-2 zy=K|Ha6lrjE7=}n5pB3`Ck`p?dqLM>gi<2m1!$a3IB>;KOrlWO%m%`MoRXnKeMbIA zoPaR5DSX=C<2E;Eur*?_M}-NyisaV5eXfK7w8YA0}Ax9f==+FY_PWT*$49mFhI1rR1A`Xw?)J8!=Do nRQ=);eJOPb1p4In`f<|BaKosj#7RZWw~RU(V}5RIAYA+d2lQ&l diff --git a/crosslang_shell_archive_maker/tmp/PackageCache/Tesses.CrossLang.BuildEssentials/1.0.0.0-prod b/crosslang_shell_archive_maker/tmp/PackageCache/Tesses.CrossLang.BuildEssentials/1.0.0.0-prod index 9fc76c208788dfde755131ef52094117ae4f5d5e..cd68d2c85d158b9ba0f8d98cabc747a30a48078d 100644 GIT binary patch literal 12934 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 delta 4724 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 diff --git a/install.sh b/install.sh deleted file mode 100755 index 26825f8..0000000 --- a/install.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -bash ./script.sh -crossvm crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-prod.crvm install diff --git a/pack.sh b/pack.sh deleted file mode 100644 index 3207ff4..0000000 --- a/pack.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -bash ./script.sh -crossvm crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-prod.crvm \ No newline at end of file diff --git a/script.sh b/script.sh deleted file mode 100755 index bc9259b..0000000 --- a/script.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -cd Tesses.CrossLang.BuildEssentials && crossc -o ./bin-tmp -n Tesses.CrossLang.BuildEssentials -v 1.0.0.0-prod main.tcross src/*.tcross && cd .. -crossvm ./Tesses.CrossLang.BuildEssentials/bin-tmp/Tesses.CrossLang.BuildEssentials-1.0.0.0-prod.crvm Tesses.CrossLang.Shell -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Tesses.CrossLang.PackageServer -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Tesses.CrossLang.WebSite -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Templates/console -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Templates/web -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Templates/template -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Templates/lib -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Templates/compiletool -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build Templates/tool -crossvm ./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm build crosslang_shell_archive_maker -