Skip to content

Commit db6fbdd

Browse files
committed
docs(examples): 🚚 merged basic/cli examples and cleaned up examples
1 parent 2c2d06b commit db6fbdd

20 files changed

+23
-71
lines changed

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ members = [
44
"examples/*",
55
# We have the CLI subcrates as workspace members so we can actively develop on them
66
# They also can't be a workspace until nested workspaces are supported
7-
"examples/cli/.perseus",
8-
"examples/cli/.perseus/server"
7+
"examples/basic/.perseus",
8+
"examples/basic/.perseus/server"
99
]

bonnie.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ dev.subcommands.cli.cmd = [
55
"cd packages/perseus-cli",
66
# We need to copy in the directory where we actually work on the subcrate
77
"rm -rf ./.perseus",
8-
"cp -r ../../examples/cli/.perseus/ .perseus/",
8+
"cp -r ../../examples/basic/.perseus/ .perseus/",
99
"mv .perseus/Cargo.toml .perseus/Cargo.toml.old",
1010
"mv .perseus/server/Cargo.toml .perseus/server/Cargo.toml.old",
1111
"cargo run -- %%"
@@ -15,7 +15,7 @@ dev.subcommands.example.cmd = [
1515
"cd packages/perseus-cli",
1616
# We need to copy in the directory where we actually work on the subcrate
1717
"rm -rf ./.perseus",
18-
"cp -r ../../examples/cli/.perseus/ .perseus/",
18+
"cp -r ../../examples/basic/.perseus/ .perseus/",
1919
"mv .perseus/Cargo.toml .perseus/Cargo.toml.old",
2020
"mv .perseus/server/Cargo.toml .perseus/server/Cargo.toml.old",
2121
# Now point this live version of the CLI at the given example
@@ -75,7 +75,7 @@ publish.cmd = [
7575
# The CLI needs the `.perseus/` directory copied in for packaging (and we need to rename `Cargo.toml` to `Cargo.toml.old`)
7676
"cd ../perseus-cli",
7777
"rm -rf ./.perseus",
78-
"cp -r ../../examples/cli/.perseus/ .perseus/",
78+
"cp -r ../../examples/basic/.perseus/ .perseus/",
7979
"mv .perseus/Cargo.toml .perseus/Cargo.toml.old",
8080
"mv .perseus/server/Cargo.toml .perseus/server/Cargo.toml.old",
8181
"cargo publish --allow-dirty %%", # Without this flag, `.perseus` will be a problem because it's not in Git

examples/README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ This folder contains examples for Perseus, which are used to test the project an
55
These examples are all fully self-contained, and do not serve as examples in the traditional Cargo way, they are each indepedent crates to enable the use of build tools such as `wasm-pack`.
66

77
- Showcase -- an app that demonstrates all the different features of Perseus, including SSR, SSG, and ISR (this example is actively used for testing/development)
8-
- Basic -- a simple app that uses the Perseus CLI (symlinks to CLI example)
9-
- CLI -- same as basic, but includes the CLI subcrates (actively used for testing/development)
8+
- Basic -- a simple app that uses the Perseus CLI
9+
- This has `.perseus/` included in Git, it's where that's developed
1010
- i18n -- a simple app that showcases internationalization in particular
11+
- Tiny -- the smallest Perseus can get, the _Hello World!_ example

examples/basic/.gitignore

-2
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.

examples/basic/Cargo.toml

+3-11
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
1-
# This package is a testing playground for the CLI subcrates, which are stored here under `.perseus/`.
2-
# Use the `basic` example for learning
3-
41
[package]
5-
name = "perseus-example-basic"
2+
name = "perseus-example-cli"
63
version = "0.1.4"
74
edition = "2018"
85

96
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
107

118
[dependencies]
129
perseus = { path = "../../packages/perseus" }
13-
sycamore = { version = "0.6", features = ["ssr"] }
14-
sycamore-router = "0.6"
10+
sycamore = "0.6"
1511
serde = { version = "1", features = ["derive"] }
16-
serde_json = "1" # Possibly don't need?
17-
18-
# This section is needed for Wasm Pack (which we use instead of Trunk for flexibility)
19-
[lib]
20-
crate-type = ["cdylib", "rlib"]
12+
serde_json = "1"

examples/basic/src

-1
This file was deleted.

examples/cli/src/error_pages.rs renamed to examples/basic/src/error_pages.rs

+2-10
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use std::rc::Rc;
33
use sycamore::template;
44

55
pub fn get_error_pages<G: GenericNode>() -> ErrorPages<G> {
6-
let mut error_pages = ErrorPages::new(Rc::new(|_, _, _, _| {
6+
let mut error_pages = ErrorPages::new(Rc::new(|url, status, err, _| {
77
template! {
8-
p { "Another error occurred." }
8+
p { (format!("An error with HTTP code {} occurred at '{}': '{}'.", status, url, err)) }
99
}
1010
}));
1111
error_pages.add_page(
@@ -16,14 +16,6 @@ pub fn get_error_pages<G: GenericNode>() -> ErrorPages<G> {
1616
}
1717
}),
1818
);
19-
error_pages.add_page(
20-
400,
21-
Rc::new(|_, _, _, _| {
22-
template! {
23-
p { "Client error occurred..." }
24-
}
25-
}),
26-
);
2719

2820
error_pages
2921
}

examples/cli/src/lib.rs renamed to examples/basic/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
mod error_pages;
2-
mod pages;
2+
mod templates;
33

44
use perseus::define_app;
55

66
define_app! {
77
templates: [
8-
crate::pages::index::get_page::<G>(),
9-
crate::pages::about::get_page::<G>()
8+
crate::templates::index::get_template::<G>(),
9+
crate::templates::about::get_template::<G>()
1010
],
1111
error_pages: crate::error_pages::get_error_pages(),
1212
static_aliases: {

examples/cli/src/pages/about.rs renamed to examples/basic/src/templates/about.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub fn about_page() -> SycamoreTemplate<G> {
99
}
1010
}
1111

12-
pub fn get_page<G: GenericNode>() -> Template<G> {
12+
pub fn get_template<G: GenericNode>() -> Template<G> {
1313
Template::new("about")
1414
.template(template_fn())
1515
.head(head_fn())

examples/cli/src/pages/index.rs renamed to examples/basic/src/templates/index.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
use perseus::{StringResultWithCause, Template};
1+
use perseus::{GenericNode, StringResultWithCause, Template};
22
use serde::{Deserialize, Serialize};
33
use std::rc::Rc;
4-
use sycamore::prelude::{component, template, GenericNode, Template as SycamoreTemplate};
4+
use sycamore::prelude::{component, template, Template as SycamoreTemplate};
55

66
#[derive(Serialize, Deserialize, Debug)]
77
pub struct IndexPageProps {
@@ -16,14 +16,14 @@ pub fn index_page(props: IndexPageProps) -> SycamoreTemplate<G> {
1616
}
1717
}
1818

19-
pub fn get_page<G: GenericNode>() -> Template<G> {
19+
pub fn get_template<G: GenericNode>() -> Template<G> {
2020
Template::new("index")
21-
.build_state_fn(Rc::new(get_static_props))
21+
.build_state_fn(Rc::new(get_build_props))
2222
.template(template_fn())
2323
.head(head_fn())
2424
}
2525

26-
pub async fn get_static_props(_path: String) -> StringResultWithCause<String> {
26+
pub async fn get_build_props(_path: String) -> StringResultWithCause<String> {
2727
Ok(serde_json::to_string(&IndexPageProps {
2828
greeting: "Hello World!".to_string(),
2929
})
File renamed without changes.

examples/cli/Cargo.toml

-20
This file was deleted.

examples/cli/index.html

-11
This file was deleted.

examples/tiny/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<meta charset="UTF-8" />
55
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<title>Perseus Example – Tiny</title>
78
</head>
89
<body>
910
<div id="root"></div>

0 commit comments

Comments
 (0)