Skip to content

Commit 40207bf

Browse files
committed
feat: Group --server and --render as --render
1 parent e05e48d commit 40207bf

File tree

4 files changed

+72
-75
lines changed

4 files changed

+72
-75
lines changed

.build/build.fs

+23-20
Original file line numberDiff line numberDiff line change
@@ -40,38 +40,41 @@ let buildOutputDir = slnDir </> "build"
4040
let packageName = "Bolero.Templates"
4141
let packageOutputFile o = buildOutputDir </> $"{packageName}.{version o}.nupkg"
4242
let variantsToTest =
43+
let serverModes = [
44+
("LegacyWasm","LegacyWebAssembly")
45+
("LegacyServer","LegacyServer")
46+
("IntServer", "InteractiveServer")
47+
("IntWasm", "InteractiveWebAssembly")
48+
("IntAuto", "InteractiveAuto")
49+
]
4350
[
4451
for pwak, pwav in [("Pwa", "true"); ("NoPwa", "false")] do
45-
// Server
46-
for hostk, hostv in [("Bolero", "bolero"); ("Razor", "razor"); ("Html", "html")] do
52+
for minik, miniv in [("Minimal", "true"); ("Full", "false")] do
4753
for htmlk, reloadv, htmlv in [("Reload", "true", "true"); ("NoReload", "false", "true"); ("NoHtml", "false", "false")] do
48-
for minik, miniv in [("Minimal", "true"); ("Full", "false")] do
49-
if not (miniv = "true" && htmlv = "true") then
50-
$"{minik}.Server{hostk}.{htmlk}.{pwak}", [
51-
"--server"
52-
$"--minimal={miniv}"
53-
$"--hostpage={hostv}"
54-
$"--pwa={pwav}"
55-
$"--html={htmlv}"
56-
$"--hotreload={reloadv}"
57-
]
58-
if (hostv = "bolero") then
59-
for renderk, renderv in [("IntServer", "InteractiveServer");("IntWasm", "InteractiveWebAssembly");("IntAuto", "InteractiveAuto");] do
54+
if not (miniv = "true" && htmlv = "true") then
55+
for renderk, renderv in serverModes do
56+
if renderv.StartsWith("Legacy") then
57+
for hostk, hostv in [("Bolero", "bolero"); ("Razor", "razor"); ("Html", "html")] do
6058
$"{minik}.{renderk}.{hostk}.{htmlk}.{pwak}", [
61-
"--server"
6259
$"--minimal={miniv}"
6360
$"--hostpage={hostv}"
6461
$"--pwa={pwav}"
6562
$"--html={htmlv}"
6663
$"--hotreload={reloadv}"
6764
$"--render={renderv}"
6865
]
69-
// Client
70-
for htmlk, htmlv in [("Html", "true"); ("NoHtml", "false")] do
71-
for minik, miniv in [("Minimal", "true"); ("Full", "false")] do
66+
else
67+
$"{minik}.{renderk}.{htmlk}.{pwak}", [
68+
$"--minimal={miniv}"
69+
$"--pwa={pwav}"
70+
$"--html={htmlv}"
71+
$"--hotreload={reloadv}"
72+
$"--render={renderv}"
73+
]
74+
for htmlk, htmlv in [("Html", "true"); ("NoHtml", "false")] do
7275
if not (miniv = "true" && htmlv = "true") then
73-
$"{minik}.NoServer.{htmlk}.{pwak}", [
74-
"--server=false"
76+
$"{minik}.Wasm.{htmlk}.{pwak}", [
77+
"--render=WebAssembly"
7578
$"--minimal={miniv}"
7679
$"--pwa={pwav}"
7780
$"--html={htmlv}"

CHANGELOG.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
## 0.24
44

5-
* [#50](https://github.com/fsbolero/Template/issues/50) Add option `--render` to decide the render mode. Possible values are:
6-
* `Server` for classic server-side mode.
7-
* `WebAssembly` for classic client-side mode.
5+
* [#50](https://github.com/fsbolero/Template/issues/50) Replace option `--server` with `--render` to decide the render mode. Possible values are:
6+
* `LegacyServer` for classic server-side mode.
7+
* `LegacyWebAssembly` for classic client-side mode.
8+
* `WebAssembly` for client-only WebAssembly mode without a server project.
89
* `InteractiveServer` for server-side interactive render mode (see https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0).
910
* `InteractiveWebAssembly` for client-side interactive render mode.
1011
* `InteractiveAuto` for automatic interactive render mode (client-side if available, otherwise server-side while downloading the client-side runtime in the background).

README.md

+14-20
Original file line numberDiff line numberDiff line change
@@ -42,39 +42,33 @@ You can use the following options to customize the project being created:
4242

4343
If `false` (the default), the created project includes Bolero features such as routed pages, HTML templates and remoting.
4444

45-
* `--server`, `-s`:
46-
47-
If `true` (the default), the solution includes a `Server` project, which is an ASP.NET Core server that hosts the application.
48-
49-
If `false`, the solution only contains the `Client` project that is compiled to WebAssembly.
50-
51-
* `--hostpage`, `-hp`:
45+
* `--render`, `-r`:
5246

53-
Determines how the server-side HTML page content is written. Can be one of:
47+
Determines the render mode. Can be one of:
5448

55-
* `bolero`: using Bolero.Html functions.
49+
* `InteractiveWebAssembly` (the default) for client-side interactive render mode.
5650

57-
* `razor`: using a dynamically-compiled Razor page.
51+
* `InteractiveServer` for server-side interactive render mode (see https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0).
5852

59-
* `html`: using a plain .html file.
53+
* `InteractiveAuto` for automatic interactive render mode (client-side if available, otherwise server-side while downloading the client-side runtime in the background).
6054

61-
This is ignored if `server=false`.
55+
* `WebAssembly` for client-only WebAssembly without a server project.
6256

63-
* `--render`, `-r`:
57+
* `LegacyServer` for classic (pre-.NET 8) server-side mode.
6458

65-
Determines the render mode. Can be one of:
59+
* `LegacyWebAssembly` for classic (pre-.NET 8) client-side mode.
6660

67-
* `Server` for classic server-side mode.
61+
* `--hostpage`, `-hp`:
6862

69-
* `WebAssembly` for classic client-side mode.
63+
Determines how the server-side HTML page content is written for `LegacyServer`. Can be one of:
7064

71-
* `InteractiveServer` for server-side interactive render mode (see https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0).
65+
* `bolero` (the default): using Bolero.Html functions.
7266

73-
* `InteractiveWebAssembly` for client-side interactive render mode.
67+
* `razor`: using a dynamically-compiled Razor page.
7468

75-
* `InteractiveAuto` for automatic interactive render mode (client-side if available, otherwise server-side while downloading the client-side runtime in the background).
69+
* `html`: using a plain .html file.
7670

77-
This is ignored if `server=false`. Moreover, the `Interactive*` render modes are only compatible with `hostpage=bolero`.
71+
This is ignored if `render` is not `LegacyServer`.
7872

7973
* `--html`, `-ht`:
8074

content/application/.template.config/template.json

+31-32
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,26 @@
1919
"dataType": "bool",
2020
"defaultValue": "false"
2121
},
22-
"server": {
23-
"type": "parameter",
24-
"isRequired": false,
25-
"description": "Include an ASP.NET Core server-side host",
26-
"dataType": "bool",
27-
"defaultValue": "true"
28-
},
29-
"html": {
30-
"type": "parameter",
31-
"isRequired": false,
32-
"description": "Use HTML templates (ignored if minimal=true)",
33-
"dataType": "bool",
34-
"defaultValue": "true"
35-
},
36-
"hotreload": {
22+
"render": {
3723
"type": "parameter",
3824
"isRequired": false,
39-
"description": "Include hot reload for HTML templates (ignored if html=false or server=false)",
40-
"dataType": "bool",
41-
"defaultValue": "true"
25+
"description": "The type of rendering to use",
26+
"dataType": "choice",
27+
"replaces": "RENDER_MODE",
28+
"choices": [
29+
{"choice":"WebAssembly","description":"WebAssembly only (no server project)"},
30+
{"choice":"InteractiveServer","description":"InteractiveServer render mode"},
31+
{"choice":"InteractiveWebAssembly","description":"InteractiveWebAssembly render mode"},
32+
{"choice":"InteractiveAuto","description":"InteractiveAuto render mode"},
33+
{"choice":"LegacyServer","description":"Legacy server-side mode"},
34+
{"choice":"LegacyWebAssembly","description":"Legacy client-side mode"}
35+
],
36+
"defaultValue": "InteractiveWebAssembly"
4237
},
4338
"hostpage": {
4439
"type": "parameter",
4540
"isRequired": false,
46-
"description": "How the static HTML content is generated (ignored if server=false)",
41+
"description": "How the static HTML content is generated with render=LegacyServer",
4742
"dataType": "choice",
4843
"choices": [
4944
{"choice":"bolero","description":"A page defined with Bolero's html functions"},
@@ -52,25 +47,29 @@
5247
],
5348
"defaultValue":"bolero"
5449
},
55-
"render": {
50+
"html": {
5651
"type": "parameter",
5752
"isRequired": false,
58-
"description": "The type of rendering to use (ignored if server=false or hostpage!=bolero)",
59-
"dataType": "choice",
60-
"replaces": "RENDER_MODE",
61-
"choices": [
62-
{"choice":"InteractiveServer","description":"Use InteractiveServer render mode"},
63-
{"choice":"InteractiveWebAssembly","description":"Use InteractiveWebAssembly render mode"},
64-
{"choice":"InteractiveAuto","description":"Use InteractiveAuto render mode"},
65-
{"choice":"Server","description":"Use classic server-side mode"},
66-
{"choice":"WebAssembly","description":"Use classic client-side mode"}
67-
],
68-
"defaultValue": "WebAssembly"
53+
"description": "Use HTML templates (ignored if minimal=true)",
54+
"dataType": "bool",
55+
"defaultValue": "true"
56+
},
57+
"hotreload": {
58+
"type": "parameter",
59+
"isRequired": false,
60+
"description": "Include hot reload for HTML templates (ignored if html=false or render=WebAssembly)",
61+
"dataType": "bool",
62+
"defaultValue": "true"
63+
},
64+
"server": {
65+
"type": "computed",
66+
"dataType": "bool",
67+
"value": "(render != \"WebAssembly\")"
6968
},
7069
"isInteractive": {
7170
"type": "computed",
7271
"dataType": "bool",
73-
"value": "(hostpage == \"bolero\" && (render == \"InteractiveServer\" || render == \"InteractiveWebAssembly\" || render == \"InteractiveAuto\"))"
72+
"value": "(render == \"InteractiveServer\" || render == \"InteractiveWebAssembly\" || render == \"InteractiveAuto\")"
7473
},
7574
"renderServer": {
7675
"type": "generated",

0 commit comments

Comments
 (0)