Add the templates for npm
All checks were successful
Build and Deploy on Tag / build-crosslang-shell-and-cpkg (push) Successful in 37s

This commit is contained in:
2026-05-10 20:52:26 -05:00
parent e77b071af1
commit 0459b0a84e
57 changed files with 945 additions and 74 deletions

View File

@@ -59,6 +59,10 @@ jobs:
crosslang upload-package --token="${{ secrets.CPKG_KEY }}" --host="https://cpkg.tesseslanguage.com/" crosslang upload-package --token="${{ secrets.CPKG_KEY }}" --host="https://cpkg.tesseslanguage.com/"
cd ../webapp cd ../webapp
crosslang upload-package --token="${{ secrets.CPKG_KEY }}" --host="https://cpkg.tesseslanguage.com/" crosslang upload-package --token="${{ secrets.CPKG_KEY }}" --host="https://cpkg.tesseslanguage.com/"
cd ../npmweb
crosslang upload-package --token="${{ secrets.CPKG_KEY }}" --host="https://cpkg.tesseslanguage.com/"
cd ../npmwebapp
crosslang upload-package --token="${{ secrets.CPKG_KEY }}" --host="https://cpkg.tesseslanguage.com/"
- name: "Publish artifacts" - name: "Publish artifacts"
uses: akkuman/gitea-release-action@v1 uses: akkuman/gitea-release-action@v1
env: env:

View File

@@ -1,5 +1,7 @@
## Changelog ## Changelog
## v0.0.2
Add the templates for npm
## v0.0.1 ## v0.0.1
Make CPKG more complete Make CPKG more complete

View File

@@ -1,6 +1,6 @@
FROM git.tesses.org/tesses50/crosslang:latest FROM git.tesses.org/tesses50/crosslang:latest
WORKDIR /app WORKDIR /app
COPY ./Tesses.CrossLang.PackageServer/bin/Tesses.CrossLang.PackageServer-1.0.0.0-prod.crvm /app/Tesses.CrossLang.PackageServer-1.0.0.0-prod.crvm COPY ./Tesses.CrossLang.PackageServer/bin/Tesses.CrossLang.PackageServer-1.0.0.0-dev.crvm /app/Tesses.CrossLang.PackageServer-1.0.0.0-dev.crvm
EXPOSE 4206 EXPOSE 4206
ENTRYPOINT ["crossvm","Tesses.CrossLang.PackageServer-1.0.0.0-prod.crvm","/data"] ENTRYPOINT ["crossvm","Tesses.CrossLang.PackageServer-1.0.0.0-dev.crvm","/data"]

5
Templates/compiletool/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Template.CompileTool", "name": "Tesses.CrossLang.Template.CompileTool",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "template", "type": "template",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name": "compiletool", "short_name": "compiletool",

5
Templates/console/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Template.Console", "name": "Tesses.CrossLang.Template.Console",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "template", "type": "template",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name": "console", "short_name": "console",

5
Templates/emptyweb/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Template.EmptyWebsite", "name": "Tesses.CrossLang.Template.EmptyWebsite",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "template", "type": "template",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name": "emptyweb", "short_name": "emptyweb",

5
Templates/lib/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Template.Library", "name": "Tesses.CrossLang.Template.Library",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "template", "type": "template",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name": "lib", "short_name": "lib",

View File

@@ -0,0 +1,8 @@
.DS_Store
bin
obj
publish
npm/node_modules
npm/package-lock.json
npm/dist
thumbs.db

8
Templates/npmweb/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
.DS_Store
bin
obj
publish
npm/node_modules
npm/package-lock.json
npm/dist
thumbs.db

View File

@@ -0,0 +1,41 @@
{
"$schema": "https:\/\/crosslang.tesseslanguage.com\/\/schema\/cross-json-schema.json",
"info": {
"template_ignored_files": [
".DS_Store",
"bin",
"obj",
"publish",
"npm/node_modules",
"npm/package-lock.json",
"npm/dist",
"thumbs.db"
],
"short_name_pretty": "NPM WebSite",
"maintainer": "Mike Nolan",
"type": "template",
"repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT",
"short_name": "npmweb",
"description": "A NPM Website Template with BeerCSS and HTMX",
"template_info": {
"type": "console"
},
"template_prebuild": [
{
"workdir": "npm",
"commands": [
["npm","install"],
["npm","run","publish"]
],
"res": [
"npm/dist"
]
}
]
},
"name": "Tesses.CrossLang.Template.NPMWebsite",
"version": "1.0.0.0-dev"
}

View File

@@ -0,0 +1,12 @@
{
"dependencies": {
"beercss": "^4.0.21",
"htmx.org": "^2.0.10"
},
"devDependencies": {
"esbuild": "^0.28.0"
},
"scripts": {
"publish": "esbuild --minify --sourcemap --define:'process.env.NODE_ENV=\"production\"' --bundle --outdir=dist web.mjs --loader:.svg=file --loader:.woff2=file"
}
}

View File

@@ -0,0 +1,78 @@
:root,
body.light {
--primary:#855400;
--on-primary:#ffffff;
--primary-container:#ffddb7;
--on-primary-container:#2a1700;
--secondary:#705b41;
--on-secondary:#ffffff;
--secondary-container:#fcdebc;
--on-secondary-container:#281805;
--tertiary:#53643e;
--on-tertiary:#ffffff;
--tertiary-container:#d6e9b9;
--on-tertiary-container:#121f03;
--error:#ba1a1a;
--on-error:#ffffff;
--error-container:#ffdad6;
--on-error-container:#410002;
--background:#fffbff;
--on-background:#1f1b16;
--surface:#fff8f4;
--on-surface:#1f1b16;
--surface-variant:#f0e0d0;
--on-surface-variant:#504539;
--outline:#827568;
--outline-variant:#d4c4b5;
--shadow:#000000;
--scrim:#000000;
--inverse-surface:#352f2a;
--inverse-on-surface:#f9efe7;
--inverse-primary:#ffb95c;
--surface-dim:#e2d8d1;
--surface-bright:#fff8f4;
--surface-container-lowest:#ffffff;
--surface-container-low:#fcf2ea;
--surface-container:#f6ece4;
--surface-container-high:#f0e6de;
--surface-container-highest:#ebe1d9;
}
body.dark {
--primary:#ffb95c;
--on-primary:#462a00;
--primary-container:#653e00;
--on-primary-container:#ffddb7;
--secondary:#dfc2a2;
--on-secondary:#3f2d17;
--secondary-container:#57432b;
--on-secondary-container:#fcdebc;
--tertiary:#bacd9f;
--on-tertiary:#263514;
--tertiary-container:#3c4c28;
--on-tertiary-container:#d6e9b9;
--error:#ffb4ab;
--on-error:#690005;
--error-container:#93000a;
--on-error-container:#ffb4ab;
--background:#1f1b16;
--on-background:#ebe1d9;
--surface:#17130e;
--on-surface:#ebe1d9;
--surface-variant:#504539;
--on-surface-variant:#d4c4b5;
--outline:#9c8e80;
--outline-variant:#504539;
--shadow:#000000;
--scrim:#000000;
--inverse-surface:#ebe1d9;
--inverse-on-surface:#352f2a;
--inverse-primary:#855400;
--surface-dim:#17130e;
--surface-bright:#3e3833;
--surface-container-lowest:#110e09;
--surface-container-low:#1f1b16;
--surface-container:#231f1a;
--surface-container-high:#2e2924;
--surface-container-highest:#39342f;
}

View File

@@ -0,0 +1,3 @@
import 'beercss'
import 'htmx.org'
import './web.css'

View File

@@ -0,0 +1,78 @@
func Components.Shell(title,pages,body)
{
<return>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/dist/web.css">
<title>%PROJECT_NAME% - {title}</title>
<script src="/dist/web.js" defer></script>
</head>
<body>
<dialog class="left" id="leftpane">
<header>
<nav>
<img class="circle large" src="/tytd-128.png">
<h6 class="max">%PROJECT_NAME%</h6>
<button hx-on:click="ui('#leftpane')" class="transparent circle large">
<i>close</i>
</button>
</nav>
</header>
<div class="space"></div>
<ul class="list">
<each(var item : pages)>
<if(item.active)>
<true>
<li class="wave round primary" hx-target="body" hx-push-url="true" hx-get={item.link}>
<i>{item.icon}</i>
<span class="max">{item.text}</span>
<b></b>
</li>
</true>
<false>
<li class="wave round" hx-target="body" hx-push-url="true" hx-get={item.route}>
<i>{item.icon}</i>
<span class="max">{item.text}</span>
<b></b>
</li>
</false>
</if>
</each>
</ul>
</dialog>
<header class="fixed primary-container">
<nav>
<button hx-on:click="ui('#leftpane')" class="circle transparent">
<i>menu</i>
</button>
<button hx-target="body" hx-push-url="true" hx-get="/" class="circle transparent">
<i>home</i>
</button>
<div class="max"></div>
<div>
<button class="circle transparent">
<i>more_vert</i>
</button>
<menu class="left no-wrap">
<li><a href="https://beercss.com/">BeerCSS</a></li>
</menu>
</div>
</nav>
<div class="small-padding">
<h5>%PROJECT_NAME%</h5>
</div>
</header>
<main class="responsive">
<raw(body)>
</main>
</body>
</html>
</return>
}

View File

@@ -0,0 +1,33 @@
func Pages.About(ctx)
{
var pages = [
{
active = false,
route = "/",
text = "Home",
icon = "home"
},
{
active = false,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = true,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("About Me",pages,<section>
<h1>About Me</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</section>
));
return true;
}

View File

@@ -0,0 +1,30 @@
var counter = 0;
func Pages.Counter(ctx)
{
var pages = [
{
active = false,
route = "/",
text = "Home",
icon = "home"
},
{
active = true,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = false,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("Counter",pages,<section>
<button hx-get="./counter" hx-target="body" hx-push-url="true">Counter is {++counter}</button>
</section>
));
return true;
}

View File

@@ -0,0 +1,35 @@
func Pages.Echo(ctx)
{
const text = ctx.QueryParams.TryGetFirst("text");
var pages = [
{
active = true,
route = "/",
text = "Home",
icon = "home"
},
{
active = false,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = false,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("Echo",pages,<section>
<if(text != null)>
<true>
<plink(text)>
</true>
<false>
<p>No text available</p>
</false>
</if>
</section>));
return true;
}

View File

@@ -0,0 +1,42 @@
func Pages.Index(ctx)
{
var pages = [
{
active = true,
route = "/",
text = "Home",
icon = "home"
},
{
active = false,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = false,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("Main Page",pages,<section>
<form hx-get="./echo" hx-target="body" hx-push-url="true" action="./echo" method="GET">
<div class="row">
<div class="max">
<div class="field label border">
<input type="text" name="text">
<label>Text to echo</label>
</div>
</div>
<div class="min">
<button type="submit">
Echo
</button>
</div>
</div>
</form>
<p>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.</p>
</section>));
return true;
}

View File

@@ -0,0 +1,40 @@
class MyWebApp {
private fileServer;
private mountable;
private pages;
public MyWebApp()
{
this.fileServer = new FileServer(embeddir("/"), true, false);
this.mountable = new MountableServer((ctx)=>{
const page = this.pages.[ctx.Path];
if(TypeIsDefined(page)) return page(ctx);
return false;
});
this.mountable.Mount("/dist/",this.fileServer);
this.pages = {
.["/"] = Pages.Index,
.["/counter"] = Pages.Counter,
.["/about"] = Pages.About,
.["/echo"] = Pages.Echo
};
}
public Handle(ctx)
{
return this.mountable.Handle(ctx);
}
public Close()
{
this.mountable = null;
}
}
func main(args)
{
const webApp=new MyWebApp();
Net.Http.ListenSimpleWithLoop(webApp,4206);
webApp.Close();
}

View File

@@ -0,0 +1,8 @@
.DS_Store
bin
obj
publish
npm/node_modules
npm/package-lock.json
npm/dist
thumbs.db

8
Templates/npmwebapp/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
.DS_Store
bin
obj
publish
npm/node_modules
npm/package-lock.json
npm/dist
thumbs.db

View File

@@ -0,0 +1,43 @@
{
"$schema": "https:\/\/crosslang.tesseslanguage.com\/\/schema\/cross-json-schema.json",
"info": {
"template_ignored_files": [
".DS_Store",
"bin",
"obj",
"publish",
"npm/node_modules",
"npm/package-lock.json",
"npm/dist",
"thumbs.db"
],
"short_name_pretty": "NPM WebApp",
"maintainer": "Mike Nolan",
"type": "template",
"repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT",
"short_name": "npmwebapp",
"description": "A NPM WebApp Template with BeerCSS and HTMX",
"template_info": {
"type": "webapp",
"short_name": "changeme",
"short_name_pretty": "Change Me"
},
"template_prebuild": [
{
"workdir": "npm",
"commands": [
["npm","install"],
["npm","run","publish"]
],
"res": [
"npm/dist"
]
}
]
},
"name": "Tesses.CrossLang.Template.NPMWebApp",
"version": "1.0.0.0-dev"
}

View File

@@ -0,0 +1,12 @@
{
"dependencies": {
"beercss": "^4.0.21",
"htmx.org": "^2.0.10"
},
"devDependencies": {
"esbuild": "^0.28.0"
},
"scripts": {
"publish": "esbuild --minify --sourcemap --define:'process.env.NODE_ENV=\"production\"' --bundle --outdir=dist web.mjs --loader:.svg=file --loader:.woff2=file"
}
}

View File

@@ -0,0 +1,78 @@
:root,
body.light {
--primary:#855400;
--on-primary:#ffffff;
--primary-container:#ffddb7;
--on-primary-container:#2a1700;
--secondary:#705b41;
--on-secondary:#ffffff;
--secondary-container:#fcdebc;
--on-secondary-container:#281805;
--tertiary:#53643e;
--on-tertiary:#ffffff;
--tertiary-container:#d6e9b9;
--on-tertiary-container:#121f03;
--error:#ba1a1a;
--on-error:#ffffff;
--error-container:#ffdad6;
--on-error-container:#410002;
--background:#fffbff;
--on-background:#1f1b16;
--surface:#fff8f4;
--on-surface:#1f1b16;
--surface-variant:#f0e0d0;
--on-surface-variant:#504539;
--outline:#827568;
--outline-variant:#d4c4b5;
--shadow:#000000;
--scrim:#000000;
--inverse-surface:#352f2a;
--inverse-on-surface:#f9efe7;
--inverse-primary:#ffb95c;
--surface-dim:#e2d8d1;
--surface-bright:#fff8f4;
--surface-container-lowest:#ffffff;
--surface-container-low:#fcf2ea;
--surface-container:#f6ece4;
--surface-container-high:#f0e6de;
--surface-container-highest:#ebe1d9;
}
body.dark {
--primary:#ffb95c;
--on-primary:#462a00;
--primary-container:#653e00;
--on-primary-container:#ffddb7;
--secondary:#dfc2a2;
--on-secondary:#3f2d17;
--secondary-container:#57432b;
--on-secondary-container:#fcdebc;
--tertiary:#bacd9f;
--on-tertiary:#263514;
--tertiary-container:#3c4c28;
--on-tertiary-container:#d6e9b9;
--error:#ffb4ab;
--on-error:#690005;
--error-container:#93000a;
--on-error-container:#ffb4ab;
--background:#1f1b16;
--on-background:#ebe1d9;
--surface:#17130e;
--on-surface:#ebe1d9;
--surface-variant:#504539;
--on-surface-variant:#d4c4b5;
--outline:#9c8e80;
--outline-variant:#504539;
--shadow:#000000;
--scrim:#000000;
--inverse-surface:#ebe1d9;
--inverse-on-surface:#352f2a;
--inverse-primary:#855400;
--surface-dim:#17130e;
--surface-bright:#3e3833;
--surface-container-lowest:#110e09;
--surface-container-low:#1f1b16;
--surface-container:#231f1a;
--surface-container-high:#2e2924;
--surface-container-highest:#39342f;
}

View File

@@ -0,0 +1,3 @@
import 'beercss'
import 'htmx.org'
import './web.css'

View File

@@ -0,0 +1,78 @@
func Components.Shell(title,pages,body)
{
<return>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/dist/web.css">
<title>%PROJECT_NAME% - {title}</title>
<script src="/dist/web.js" defer></script>
</head>
<body>
<dialog class="left" id="leftpane">
<header>
<nav>
<img class="circle large" src="/tytd-128.png">
<h6 class="max">%PROJECT_NAME%</h6>
<button hx-on:click="ui('#leftpane')" class="transparent circle large">
<i>close</i>
</button>
</nav>
</header>
<div class="space"></div>
<ul class="list">
<each(var item : pages)>
<if(item.active)>
<true>
<li class="wave round primary" hx-target="body" hx-push-url="true" hx-get={item.link}>
<i>{item.icon}</i>
<span class="max">{item.text}</span>
<b></b>
</li>
</true>
<false>
<li class="wave round" hx-target="body" hx-push-url="true" hx-get={item.route}>
<i>{item.icon}</i>
<span class="max">{item.text}</span>
<b></b>
</li>
</false>
</if>
</each>
</ul>
</dialog>
<header class="fixed primary-container">
<nav>
<button hx-on:click="ui('#leftpane')" class="circle transparent">
<i>menu</i>
</button>
<button hx-target="body" hx-push-url="true" hx-get="/" class="circle transparent">
<i>home</i>
</button>
<div class="max"></div>
<div>
<button class="circle transparent">
<i>more_vert</i>
</button>
<menu class="left no-wrap">
<li><a href="https://beercss.com/">BeerCSS</a></li>
</menu>
</div>
</nav>
<div class="small-padding">
<h5>%PROJECT_NAME%</h5>
</div>
</header>
<main class="responsive">
<raw(body)>
</main>
</body>
</html>
</return>
}

View File

@@ -0,0 +1,33 @@
func Pages.About(ctx)
{
var pages = [
{
active = false,
route = "/",
text = "Home",
icon = "home"
},
{
active = false,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = true,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("About Me",pages,<section>
<h1>About Me</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</section>
));
return true;
}

View File

@@ -0,0 +1,30 @@
var counter = 0;
func Pages.Counter(ctx)
{
var pages = [
{
active = false,
route = "/",
text = "Home",
icon = "home"
},
{
active = true,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = false,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("Counter",pages,<section>
<button hx-get="./counter" hx-target="body" hx-push-url="true">Counter is {++counter}</button>
</section>
));
return true;
}

View File

@@ -0,0 +1,35 @@
func Pages.Echo(ctx)
{
const text = ctx.QueryParams.TryGetFirst("text");
var pages = [
{
active = true,
route = "/",
text = "Home",
icon = "home"
},
{
active = false,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = false,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("Echo",pages,<section>
<if(text != null)>
<true>
<plink(text)>
</true>
<false>
<p>No text available</p>
</false>
</if>
</section>));
return true;
}

View File

@@ -0,0 +1,42 @@
func Pages.Index(ctx)
{
var pages = [
{
active = true,
route = "/",
text = "Home",
icon = "home"
},
{
active = false,
route = "/counter",
text = "Counter",
icon = "exposure_plus_1"
},
{
active = false,
route = "/about",
text = "About",
icon = "info"
}
];
ctx.WithMimeType("text/html").SendText(Components.Shell("Main Page",pages,<section>
<form hx-get="./echo" hx-target="body" hx-push-url="true" action="./echo" method="GET">
<div class="row">
<div class="max">
<div class="field label border">
<input type="text" name="text">
<label>Text to echo</label>
</div>
</div>
<div class="min">
<button type="submit">
Echo
</button>
</div>
</div>
</form>
<p>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.</p>
</section>));
return true;
}

View File

@@ -0,0 +1,37 @@
class MyWebApp {
private fileServer;
private mountable;
private pages;
public MyWebApp()
{
this.fileServer = new FileServer(embeddir("/"), true, false);
this.mountable = new MountableServer((ctx)=>{
const page = this.pages.[ctx.Path];
if(TypeIsDefined(page)) return page(ctx);
return false;
});
this.mountable.Mount("/dist/",this.fileServer);
this.pages = {
.["/"] = Pages.Index,
.["/counter"] = Pages.Counter,
.["/about"] = Pages.About,
.["/echo"] = Pages.Echo
};
}
public Handle(ctx)
{
return this.mountable.Handle(ctx);
}
public Close()
{
this.mountable = null;
}
}
func WebAppMain(args)
{
return new MyWebApp();
}

5
Templates/template/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Template.Template", "name": "Tesses.CrossLang.Template.Template",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "template", "type": "template",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name": "template", "short_name": "template",

5
Templates/tool/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -17,12 +17,12 @@
"description": "A crosslang tool that you can run via crosslang tool", "description": "A crosslang tool that you can run via crosslang tool",
"type": "template", "type": "template",
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name_pretty": "Tool" "short_name_pretty": "Tool"
}, },
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"name": "Tesses.CrossLang.Template.Tool", "name": "Tesses.CrossLang.Template.Tool",
"$schema": "https://crosslang.tesseslanguage.com//schema/cross-json-schema.json" "$schema": "https://crosslang.tesseslanguage.com//schema/cross-json-schema.json"
} }

5
Templates/web/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Template.Website", "name": "Tesses.CrossLang.Template.Website",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "template", "type": "template",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "MIT", "license": "MIT",
"short_name": "web", "short_name": "web",

5
Templates/webapp/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
bin
obj
publish
thumbs.db

View File

@@ -15,12 +15,12 @@
"short_name_pretty": "Web Application", "short_name_pretty": "Web Application",
"template_project_dependencies": [ "template_project_dependencies": [
], ],
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"type": "template", "type": "template",
"description": "A web app (for webview or eventual cloud OS)" "description": "A web app (for webview or eventual cloud OS)"
}, },
"name": "Tesses.CrossLang.Template.WebApp", "name": "Tesses.CrossLang.Template.WebApp",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"$schema": "https://crosslang.tesseslanguage.com//schema/cross-json-schema.json" "$schema": "https://crosslang.tesseslanguage.com//schema/cross-json-schema.json"
} }

View File

@@ -11,5 +11,5 @@
"project_dependencies": [ "project_dependencies": [
"..\/Tesses.CrossLang.BuildEssentials" "..\/Tesses.CrossLang.BuildEssentials"
], ],
"version": "1.0.0.0-prod" "version": "1.0.0.0-dev"
} }

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.Args", "name": "Tesses.CrossLang.Args",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "lib", "type": "lib",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "LGPLv3" "license": "LGPLv3"
} }

View File

@@ -1,10 +1,10 @@
{ {
"name": "Tesses.CrossLang.BuildEssentials", "name": "Tesses.CrossLang.BuildEssentials",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "lib", "type": "lib",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "LGPLv3" "license": "LGPLv3"
} }

View File

@@ -3,9 +3,13 @@
"info": { "info": {
"type": "console", "type": "console",
"short_name": "packageserver", "short_name": "packageserver",
"short_name_pretty": "Package Server" "short_name_pretty": "Package Server",
"description": "This webapp allows you to serve packages",
"repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://cpkg.tesseslanguage.com/",
"license": "AGPLv3"
}, },
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"name": "Tesses.CrossLang.PackageServer", "name": "Tesses.CrossLang.PackageServer",
"compTime": "secure" "compTime": "secure"
} }

View File

@@ -24,7 +24,7 @@ func main(args)
PUT /api/v1/upload Authorization Bearer PUT /api/v1/upload Authorization Bearer
POST /api/v1/login Json object with email and password returns json object with either 200 for success {"token": "TOKEN_VAL"} or non 2XX if fails {"reason": "SOME ERROR"} POST /api/v1/login Json object with email 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 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/latest?name=PackageName returns 200 OK with json {"version":"1.0.0.0-dev"} 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/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 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

View File

@@ -86,7 +86,7 @@ func VM.RunEventLoop()
/^ /^
Merge all crvm files into one and returns path inside destVFS of output Merge all crvm files into one and returns path inside destVFS of output
You should have srcFS a SubdirFilesystem to directory with executable You should have srcFS a SubdirFilesystem to directory with executable
so if the source executable was /app/bin/app-1.0.0.0-prod.crvm you should pass a SubdirFilesystem pointing to the directory /app/bin and sourcePath set to /app-1.0.0.0-prod.crvm and destVFS to a empty SubdirFilesystem so if the source executable was /app/bin/app-1.0.0.0-dev.crvm you should pass a SubdirFilesystem pointing to the directory /app/bin and sourcePath set to /app-1.0.0.0-dev.crvm and destVFS to a empty SubdirFilesystem
^/ ^/
func VM.Merge(srcVFS,sourcePath,destVFS) func VM.Merge(srcVFS,sourcePath,destVFS)
{ {

View File

@@ -1,11 +1,11 @@
{ {
"name": "Tesses.CrossLang.Shell", "name": "Tesses.CrossLang.Shell",
"version": "1.0.0.0-prod", "version": "1.0.0.0-dev",
"dependencies": [], "dependencies": [],
"info": { "info": {
"maintainer": "Mike Nolan", "maintainer": "Mike Nolan",
"type": "console", "type": "console",
"repo": "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", "repo": "https://git.tesses.org/tesses50/crosslangextras",
"homepage": "https://crosslang.tesseslanguage.com/", "homepage": "https://crosslang.tesseslanguage.com/",
"license": "LGPLv3" "license": "LGPLv3"
}, },

View File

@@ -74,6 +74,7 @@ func Tesses.CrossLang.Shell.New(dd)
var old_info = proj.info; var old_info = proj.info;
proj.info = old_info.template_info; proj.info = old_info.template_info;
proj.icon = old_info.template_icon; proj.icon = old_info.template_icon;
proj.prebuild = old_info.template_prebuild;
proj.dependencies = old_info.template_project_dependencies; proj.dependencies = old_info.template_project_dependencies;
var srcDir = proj.source_directory; var srcDir = proj.source_directory;
if(TypeOf(srcDir) == "Undefined") srcDir = "/src"; if(TypeOf(srcDir) == "Undefined") srcDir = "/src";
@@ -105,7 +106,7 @@ func Tesses.CrossLang.Shell.New(dd)
var src = FS.ReadAllText(projectDir, ent); var src = FS.ReadAllText(projectDir, ent);
src = src.Replace("%PROJECT_NAME%",projectPath.GetFileName()); src = src.Replace("%PROJECT_NAME%",projectPath.GetFileName());
src = src.Replace("%TEMPLATE_PROJECT_NAME%","%PROJECT_NAME"); src = src.Replace("%TEMPLATE_PROJECT_NAME%","%PROJECT_NAME%");
FS.WriteAllText(projectDir, ent, src); FS.WriteAllText(projectDir, ent, src);
} }

View File

@@ -4,5 +4,5 @@
"description": "The standard library of crosslang" "description": "The standard library of crosslang"
}, },
"name": "Tesses.CrossLang.Std", "name": "Tesses.CrossLang.Std",
"version": "1.0.0.0-prod" "version": "1.0.0.0-dev"
} }

View File

@@ -14,7 +14,7 @@ func cmd(name, args)
func main(args) func main(args)
{ {
var args2=["-o","./Tesses.CrossLang.BuildEssentials/bin-tmp","-r","./Tesses.CrossLang.BuildEssentials/res","-n","Tesses.CrossLang.BuildEssentials","-v","1.0.0.0-prod","Tesses.CrossLang.BuildEssentials/main.tcross"]; var args2=["-o","./Tesses.CrossLang.BuildEssentials/bin-tmp","-r","./Tesses.CrossLang.BuildEssentials/res","-n","Tesses.CrossLang.BuildEssentials","-v","1.0.0.0-dev","Tesses.CrossLang.BuildEssentials/main.tcross"];
each(var f : FS.Local.EnumeratePaths("./Tesses.CrossLang.BuildEssentials/src")) each(var f : FS.Local.EnumeratePaths("./Tesses.CrossLang.BuildEssentials/src"))
{ {
if(f.GetExtension() == ".tcross") if(f.GetExtension() == ".tcross")
@@ -22,38 +22,41 @@ func main(args)
args2.Add(f.ToString()); args2.Add(f.ToString());
} }
} }
cmd("crossc", args2);
cmd("crossvm",["./Tesses.CrossLang.BuildEssentials/bin-tmp/Tesses.CrossLang.BuildEssentials-1.0.0.0-prod.crvm","Tesses.CrossLang.Shell"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.PackageServer"]);
//cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.WebSite"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.Std"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/console"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/emptyweb"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/web"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/template"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/lib"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/compiletool"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/tool"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Templates/webapp"]);
cmd("crossc", args2);
cmd("crossvm",["./Tesses.CrossLang.BuildEssentials/bin-tmp/Tesses.CrossLang.BuildEssentials-1.0.0.0-dev.crvm","Tesses.CrossLang.Shell"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
//cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.WebSite"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.Std"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/console"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/emptyweb"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/web"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/template"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/lib"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/compiletool"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/tool"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/webapp"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/npmweb"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/npmwebapp"]);
/* /*
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.PackageServer"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","Tesses.CrossLang.PackageServer"]);
*/ */
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm","build","crosslang_shell_archive_maker"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","crosslang_shell_archive_maker"]);
if(args.Length > 1) if(args.Length > 1)
{ {
if(args[1] == "install") if(args[1] == "install")
{ {
cmd("crossvm",["crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-prod.crvm", "install"]); cmd("crossvm",["crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-dev.crvm", "install"]);
} }
else if(args[1] == "pack") else if(args[1] == "pack")
{ {
cmd("crossvm",["crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-prod.crvm"]); cmd("crossvm",["crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-dev.crvm"]);
} }
} }
} }

View File

@@ -6,5 +6,5 @@
"project_dependencies": [ "project_dependencies": [
"..\/Tesses.CrossLang.BuildEssentials" "..\/Tesses.CrossLang.BuildEssentials"
], ],
"version": "1.0.0.0-prod" "version": "1.0.0.0-dev"
} }

View File

@@ -1,5 +1,5 @@
var name = "Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm"; var name = "Tesses.CrossLang.ShellPackage-1.0.0.0-dev.crvm";
func main(args) func main(args)
{ {
create_archive(); create_archive();
@@ -43,9 +43,9 @@ func create_archive()
tmpFS.CreateDirectory(shell); tmpFS.CreateDirectory(shell);
copyFile("Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Args-1.0.0.0-prod.crvm", shell / "Tesses.CrossLang.Args-1.0.0.0-prod.crvm"); copyFile("Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Args-1.0.0.0-dev.crvm", shell / "Tesses.CrossLang.Args-1.0.0.0-dev.crvm");
copyFile("Tesses.CrossLang.Shell/bin/Tesses.CrossLang.BuildEssentials-1.0.0.0-prod.crvm", shell / "Tesses.CrossLang.BuildEssentials-1.0.0.0-prod.crvm"); copyFile("Tesses.CrossLang.Shell/bin/Tesses.CrossLang.BuildEssentials-1.0.0.0-dev.crvm", shell / "Tesses.CrossLang.BuildEssentials-1.0.0.0-dev.crvm");
copyFile("Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-prod.crvm", shell / "Shell.crvm"); copyFile("Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm", shell / "Shell.crvm");
copyFile("Tesses.CrossLang.Reference/bin/Tesses.CrossLang.Reference-1.0.0.0-dev.crvm", "Reference.crvm"); copyFile("Tesses.CrossLang.Reference/bin/Tesses.CrossLang.Reference-1.0.0.0-dev.crvm", "Reference.crvm");
var devStudio = r / "DevStudio"; var devStudio = r / "DevStudio";
tmpFS.CreateDirectory(devStudio); tmpFS.CreateDirectory(devStudio);
@@ -68,14 +68,16 @@ func create_archive()
copyFile("Templates/compiletool/bin/Tesses.CrossLang.Template.CompileTool-1.0.0.0-prod.crvm", templates / "compiletool.crvm"); copyFile("Templates/compiletool/bin/Tesses.CrossLang.Template.CompileTool-1.0.0.0-dev.crvm", templates / "compiletool.crvm");
copyFile("Templates/console/bin/Tesses.CrossLang.Template.Console-1.0.0.0-prod.crvm", templates / "console.crvm"); copyFile("Templates/console/bin/Tesses.CrossLang.Template.Console-1.0.0.0-dev.crvm", templates / "console.crvm");
copyFile("Templates/lib/bin/Tesses.CrossLang.Template.Library-1.0.0.0-prod.crvm", templates / "lib.crvm"); copyFile("Templates/lib/bin/Tesses.CrossLang.Template.Library-1.0.0.0-dev.crvm", templates / "lib.crvm");
copyFile("Templates/template/bin/Tesses.CrossLang.Template.Template-1.0.0.0-prod.crvm", templates / "template.crvm"); copyFile("Templates/template/bin/Tesses.CrossLang.Template.Template-1.0.0.0-dev.crvm", templates / "template.crvm");
copyFile("Templates/web/bin/Tesses.CrossLang.Template.Website-1.0.0.0-prod.crvm", templates / "web.crvm"); copyFile("Templates/web/bin/Tesses.CrossLang.Template.Website-1.0.0.0-dev.crvm", templates / "web.crvm");
copyFile("Templates/emptyweb/bin/Tesses.CrossLang.Template.EmptyWebsite-1.0.0.0-prod.crvm", templates / "emptyweb.crvm"); copyFile("Templates/emptyweb/bin/Tesses.CrossLang.Template.EmptyWebsite-1.0.0.0-dev.crvm", templates / "emptyweb.crvm");
copyFile("Templates/tool/bin/Tesses.CrossLang.Template.Tool-1.0.0.0-prod.crvm", templates / "tool.crvm"); copyFile("Templates/tool/bin/Tesses.CrossLang.Template.Tool-1.0.0.0-dev.crvm", templates / "tool.crvm");
copyFile("Templates/webapp/bin/Tesses.CrossLang.Template.WebApp-1.0.0.0-prod.crvm", templates / "webapp.crvm"); copyFile("Templates/webapp/bin/Tesses.CrossLang.Template.WebApp-1.0.0.0-dev.crvm", templates / "webapp.crvm");
copyFile("Templates/npmwebapp/bin/Tesses.CrossLang.Template.NPMWebApp-1.0.0.0-dev.crvm", templates / "npmwebapp.crvm");
copyFile("Templates/npmweb/bin/Tesses.CrossLang.Template.NPMWebsite-1.0.0.0-dev.crvm", templates / "npmweb.crvm");
var packageCache = r / "PackageCache"; var packageCache = r / "PackageCache";
@@ -84,18 +86,18 @@ func create_archive()
tmpFS.CreateDirectory(packageCache / "Tesses.CrossLang.BuildEssentials"); tmpFS.CreateDirectory(packageCache / "Tesses.CrossLang.BuildEssentials");
tmpFS.CreateDirectory(packageCache / "Tesses.CrossLang.Markup"); tmpFS.CreateDirectory(packageCache / "Tesses.CrossLang.Markup");
tmpFS.CreateDirectory(packageCache / "Tesses.CrossLang.Std"); tmpFS.CreateDirectory(packageCache / "Tesses.CrossLang.Std");
copyFile("Tesses.CrossLang.Args/bin/Tesses.CrossLang.Args-1.0.0.0-prod.crvm", packageCache / "Tesses.CrossLang.Args" / "1.0.0.0-prod"); copyFile("Tesses.CrossLang.Args/bin/Tesses.CrossLang.Args-1.0.0.0-dev.crvm", packageCache / "Tesses.CrossLang.Args" / "1.0.0.0-prod");
copyFile("Tesses.CrossLang.BuildEssentials/bin/Tesses.CrossLang.BuildEssentials-1.0.0.0-prod.crvm", packageCache / "Tesses.CrossLang.BuildEssentials" / "1.0.0.0-prod"); copyFile("Tesses.CrossLang.BuildEssentials/bin/Tesses.CrossLang.BuildEssentials-1.0.0.0-dev.crvm", packageCache / "Tesses.CrossLang.BuildEssentials" / "1.0.0.0-prod");
//copyFile("Tesses.CrossLang.Markup/bin/Tesses.CrossLang.Markup-1.0.0.0-prod.crvm", packageCache / "Tesses.CrossLang.Markup" / "1.0.0.0-prod"); //copyFile("Tesses.CrossLang.Markup/bin/Tesses.CrossLang.Markup-1.0.0.0-dev.crvm", packageCache / "Tesses.CrossLang.Markup" / "1.0.0.0-prod");
copyFile("Tesses.CrossLang.Args/bin/Tesses.CrossLang.Args-1.0.0.0-prod.crvm", packageCache / "Tesses.CrossLang.Args" / "1.0.0.0-prod"); copyFile("Tesses.CrossLang.Args/bin/Tesses.CrossLang.Args-1.0.0.0-dev.crvm", packageCache / "Tesses.CrossLang.Args" / "1.0.0.0-prod");
copyFile("Tesses.CrossLang.Std/bin/Tesses.CrossLang.Std-1.0.0.0-prod.crvm", packageCache / "Tesses.CrossLang.Std" / "1.0.0.0-prod"); copyFile("Tesses.CrossLang.Std/bin/Tesses.CrossLang.Std-1.0.0.0-dev.crvm", packageCache / "Tesses.CrossLang.Std" / "1.0.0.0-prod");
var installer = FS.Local.OpenFile(name, "wb"); var installer = FS.Local.OpenFile(name, "wb");
var ifo = { var ifo = {
type = "archive", type = "archive",
maintainer = "Mike Nolan", maintainer = "Mike Nolan",
repo = "https://onedev.site.tesses.net/CrossLang/CrossLangExtras", repo = "https://git.tesses.org/tesses50/crosslangextras",
homepage = "https://crosslang.tesseslanguage.com/" homepage = "https://crosslang.tesseslanguage.com/"
}; };

View File

@@ -1,6 +1,6 @@
console: a console application (or webserver) console: a console application (or webserver)
lib: a library lib: a library
webapp: A web app (for webview or eventual cloud OS) webapp: A web app (for webview or android, can specify port on cli)
template: used for project templates template: used for project templates
compile_tool: run before source is compiled for project if it is in the dependency tree for the project (and is not linked to said projects) compile_tool: run before source is compiled for project if it is in the dependency tree for the project (and is not linked to said projects)
tool: a tool invokable via crosslang (gets Tesses.CrossLang.Args for free) tool: a tool invokable via crosslang (gets Tesses.CrossLang.Args for free)

View File

@@ -7,7 +7,7 @@
"vscode": "^1.107.0" "vscode": "^1.107.0"
}, },
"publisher": "tesses50", "publisher": "tesses50",
"repository": "https://onedev.site.tesses.net/crosslang/crosslangextras", "repository": "https://git.tesses.org/tesses50/crosslangextras",
"categories": [ "categories": [
"Programming Languages" "Programming Languages"
], ],