diff --git a/README.md b/README.md index 883913b..1e8f0f2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ # alibabacloudfn-template -Alibaba Cloud Function Template \ No newline at end of file +Alibaba Cloud Function Template + + +Usage: +```shell +$ kickstart https://git.hatter.ink/templates/alibabacloudfn-template.git +``` + diff --git a/template.toml b/template.toml new file mode 100644 index 0000000..d0472bd --- /dev/null +++ b/template.toml @@ -0,0 +1,49 @@ +name = "Rust Alibaba Cloud Function template" +description = "Hatter's Rust Alibaba Cloud Function template" +kickstart_version = 1 +ignore = [ + ".gitignore", + "README.md", + "LICENSE", +] + +cleanup = [ +] + +[[variables]] +name = "project_name" +default = "My-Fn" +prompt = "What's the name of the project?" +validation = "^([a-zA-Z][a-zA-Z0-9_-]+)$" + +[[variables]] +name = "bin" +default = "my-fn" +prompt = "What's the name of the executable?" +validation = "^([a-zA-Z][a-zA-Z-_]+)$" + +[[variables]] +name = "author" +default = "No One" +prompt = "What is your name?" + +[[variables]] +name = "email" +default = "no@example.com" +prompt = "What is your email?" + +[[variables]] +name = "license" +default = "MIT" +prompt = "Which open-source license do you want to use?" +choices = [ + "MIT", + "BSD", + "GPLv3", + "None", +] + +[[variables]] +name = "description" +default = "A Alibaba Cloud Function application" +prompt = "A short description of the app?" diff --git a/{{project_name}}/Cargo.toml b/{{project_name}}/Cargo.toml new file mode 100644 index 0000000..1a4add1 --- /dev/null +++ b/{{project_name}}/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "{{project_name}}" +version = "0.0.1" +authors = ["{{author}} <{{email}}>"] +edition = "2018" +{% if license != "None" -%} +license = "{{license}}" +{%- endif %} +description = "{{description}}" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "{{bin}}" +path = "src/main.rs" + +[dependencies] +tokio = { version = "0.2", features = ["full"] } +hyper = "0.13" diff --git a/{{project_name}}/bootstrap b/{{project_name}}/bootstrap new file mode 100755 index 0000000..c5af48e --- /dev/null +++ b/{{project_name}}/bootstrap @@ -0,0 +1,2 @@ +#!/bin/bash +./alibabacloundfn diff --git a/{{project_name}}/justfile b/{{project_name}}/justfile new file mode 100644 index 0000000..7607239 --- /dev/null +++ b/{{project_name}}/justfile @@ -0,0 +1,10 @@ +# build alibaba cloud fn +buildfn: + if [ -f "code.zip" ]; then rm code.zip; fi + dockerbuild :image:rust:1.47 :mirror:git://mirrors.ustc.edu.cn/crates.io-index \ + build --release --target-dir linux_target + cp linux_target/release/{{bin}} . + chmod +x bootstrap + zip code.zip bootstrap {{bin}} + rm {{bin}} + diff --git a/{{project_name}}/src/main.rs b/{{project_name}}/src/main.rs new file mode 100644 index 0000000..48552e6 --- /dev/null +++ b/{{project_name}}/src/main.rs @@ -0,0 +1,39 @@ +use std::convert::Infallible; +use hyper::service; +use hyper::{Body, Request, Response, Server}; + +async fn hello(request: Request
) -> Result