install rust and template
This commit is contained in:
parent
166fef2383
commit
d321b7e2de
123
README.org
123
README.org
@ -22,20 +22,20 @@ Checking if the install went ok
|
|||||||
#+description: running version and upgrade to confirm install is ok
|
#+description: running version and upgrade to confirm install is ok
|
||||||
#+name: confirm install
|
#+name: confirm install
|
||||||
#+begin_src shell
|
#+begin_src shell
|
||||||
rustup --version
|
rustup --version
|
||||||
rustup upgrade
|
rustup upgrade
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS: confirm install
|
#+RESULTS: confirm install
|
||||||
| rustup 1.26.0 (5af9b9484 2023-04-05)
|
: rustup 1.26.0 (5af9b9484 2023-04-05)
|
||||||
| info: This is the version for the rustup toolchain manager, not the rustc compiler.
|
: info: This is the version for the rustup toolchain manager, not the rustc compiler.
|
||||||
| info: The currently active `rustc` version is `rustc 1.74.0 (79e9716c9 2023-11-13)`
|
: info: The currently active `rustc` version is `rustc 1.74.0 (79e9716c9 2023-11-13)`
|
||||||
| info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
|
: info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
|
||||||
| info: checking for self-update
|
: info: checking for self-update
|
||||||
|
|
:
|
||||||
| stable-x86_64-unknown-linux-gnu unchanged - rustc 1.74.0 (79e9716c9 2023-11-13)
|
: stable-x86_64-unknown-linux-gnu unchanged - rustc 1.74.0 (79e9716c9 2023-11-13)
|
||||||
|
|
:
|
||||||
| info: cleaning up downloads & tmp directories
|
: info: cleaning up downloads & tmp directories
|
||||||
|
|
||||||
|
|
||||||
Ensure cargo, the package manager is also installed
|
Ensure cargo, the package manager is also installed
|
||||||
@ -45,6 +45,103 @@ Ensure cargo, the package manager is also installed
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS: confirm cargo installed
|
#+RESULTS: confirm cargo installed
|
||||||
| cargo 1.74.0 (ecb9851af 2023-10-18)
|
: cargo 1.74.0 (ecb9851af 2023-10-18)
|
||||||
* Rust mode for emacs
|
** Rust mode for emacs
|
||||||
Woohoo https://github.com/rust-lang/rust-mode
|
Woohoo https://github.com/rust-lang/rust-mode
|
||||||
|
* Install Spin
|
||||||
|
This has been done already in a previous tut.
|
||||||
|
#+name: check install spin
|
||||||
|
#+begin_src shell
|
||||||
|
spin -V
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: check install spin
|
||||||
|
: spin 2.0.1 (1d72f1c 2023-11-10)
|
||||||
|
* Install Templates for Rust
|
||||||
|
This has also been done in a previous tut.
|
||||||
|
#+name: check install templates
|
||||||
|
#+begin_src shell
|
||||||
|
spin template list
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: check install templates
|
||||||
|
: +------------------------------------------------------------------------+
|
||||||
|
: | Name Description |
|
||||||
|
: +========================================================================+
|
||||||
|
: | http-c HTTP request handler using C and the Zig toolchain |
|
||||||
|
: | http-empty HTTP application with no components |
|
||||||
|
: | http-go HTTP request handler using (Tiny)Go |
|
||||||
|
: | http-grain HTTP request handler using Grain |
|
||||||
|
: | http-js HTTP request handler using Javascript |
|
||||||
|
: | http-php HTTP request handler using PHP |
|
||||||
|
: | http-rust HTTP request handler using Rust |
|
||||||
|
: | http-swift HTTP request handler using SwiftWasm |
|
||||||
|
: | http-ts HTTP request handler using Typescript |
|
||||||
|
: | http-zig HTTP request handler using Zig |
|
||||||
|
: | redirect Redirects a HTTP route |
|
||||||
|
: | redis-go Redis message handler using (Tiny)Go |
|
||||||
|
: | redis-rust Redis message handler using Rust |
|
||||||
|
: | static-fileserver Serves static files from an asset directory |
|
||||||
|
: +------------------------------------------------------------------------+
|
||||||
|
* Installing Wasm
|
||||||
|
We need additional tools to support Wasm.
|
||||||
|
#+description: adding extra tools
|
||||||
|
#+name: add wasm
|
||||||
|
#+begin_src shell
|
||||||
|
rustup target add wasm32-wasi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: add wasm
|
||||||
|
: info: downloading component 'rust-std' for 'wasm32-wasi'
|
||||||
|
: info: installing component 'rust-std' for 'wasm32-wasi'
|
||||||
|
: 17.7 MiB / 17.7 MiB (100 %) 13.8 MiB/s in 1s ETA: 0s
|
||||||
|
* Create the first application
|
||||||
|
We use ~spin new~ and select the rust template ~http-rust~
|
||||||
|
#+name: spin new http-rust
|
||||||
|
#+begin_src shell
|
||||||
|
spin new -t http-rust qstart
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: spin new http-rust
|
||||||
|
: Description []: a quick hello world
|
||||||
|
: Description: a quick hello world
|
||||||
|
: HTTP path [/...]:
|
||||||
|
: HTTP path: /...
|
||||||
|
|
||||||
|
#+description: check the folder structure for Rust app
|
||||||
|
#+name: tree qstart
|
||||||
|
#+begin_src shell
|
||||||
|
tree qstart/
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: tree qstart
|
||||||
|
: qstart/
|
||||||
|
: ├── Cargo.toml
|
||||||
|
: ├── spin.toml
|
||||||
|
: └── src
|
||||||
|
: └── lib.rs
|
||||||
|
:
|
||||||
|
: 2 directories, 3 files
|
||||||
|
|
||||||
|
The manifest file is =spin.toml=
|
||||||
|
#+begin_src toml
|
||||||
|
spin_manifest_version = 2
|
||||||
|
|
||||||
|
[application]
|
||||||
|
name = "qstart"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["HaQadosch <redacted>"]
|
||||||
|
description = "a quick hello world"
|
||||||
|
|
||||||
|
[[trigger.http]]
|
||||||
|
route = "/..."
|
||||||
|
component = "qstart"
|
||||||
|
|
||||||
|
[component.qstart]
|
||||||
|
source = "target/wasm32-wasi/release/qstart.wasm"
|
||||||
|
allowed_outbound_hosts = []
|
||||||
|
[component.qstart.build]
|
||||||
|
command = "cargo build --target wasm32-wasi --release"
|
||||||
|
watch = ["src/**/*.rs", "Cargo.toml"]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
2
qstart/.gitignore
vendored
Normal file
2
qstart/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
target/
|
||||||
|
.spin/
|
16
qstart/Cargo.toml
Normal file
16
qstart/Cargo.toml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
[package]
|
||||||
|
name = "qstart"
|
||||||
|
authors = ["HaQadosch <gittea.h0w2x@passmail.net>"]
|
||||||
|
description = "a quick hello world"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = [ "cdylib" ]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1"
|
||||||
|
http = "0.2"
|
||||||
|
spin-sdk = { git = "https://github.com/fermyon/spin", tag = "v2.0.1" }
|
||||||
|
|
||||||
|
[workspace]
|
18
qstart/spin.toml
Normal file
18
qstart/spin.toml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
spin_manifest_version = 2
|
||||||
|
|
||||||
|
[application]
|
||||||
|
name = "qstart"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["HaQadosch <gittea.h0w2x@passmail.net>"]
|
||||||
|
description = "a quick hello world"
|
||||||
|
|
||||||
|
[[trigger.http]]
|
||||||
|
route = "/..."
|
||||||
|
component = "qstart"
|
||||||
|
|
||||||
|
[component.qstart]
|
||||||
|
source = "target/wasm32-wasi/release/qstart.wasm"
|
||||||
|
allowed_outbound_hosts = []
|
||||||
|
[component.qstart.build]
|
||||||
|
command = "cargo build --target wasm32-wasi --release"
|
||||||
|
watch = ["src/**/*.rs", "Cargo.toml"]
|
12
qstart/src/lib.rs
Normal file
12
qstart/src/lib.rs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
use spin_sdk::http::{IntoResponse, Request};
|
||||||
|
use spin_sdk::http_component;
|
||||||
|
|
||||||
|
/// A simple Spin HTTP component.
|
||||||
|
#[http_component]
|
||||||
|
fn handle_qstart(req: Request) -> anyhow::Result<impl IntoResponse> {
|
||||||
|
println!("Handling request to {:?}", req.header("spin-full-url"));
|
||||||
|
Ok(http::Response::builder()
|
||||||
|
.status(200)
|
||||||
|
.header("content-type", "text/plain")
|
||||||
|
.body("Hello, Fermyon")?)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user