initial commit

main
Alina Marquardt 2023-04-09 01:15:51 +02:00
commit aab7616ebf
4 changed files with 136 additions and 0 deletions

67
.gitignore vendored Normal file
View File

@ -0,0 +1,67 @@
# Project specific
/pub
# Created by https://www.toptal.com/developers/gitignore/api/rust,nova,macos,sass
# Edit at https://www.toptal.com/developers/gitignore?templates=rust,nova,macos,sass
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### nova ###
.nova/*
### Rust ###
# Generated by Cargo
# will have compiled files and executables
debug/
target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
### Sass ###
.sass-cache/
*.css.map
*.sass.map
*.scss.map
# End of https://www.toptal.com/developers/gitignore/api/rust,nova,macos,sass

10
Cargo.toml Normal file
View File

@ -0,0 +1,10 @@
[package]
name = "lf-builder"
version = "0.1.0"
edition = "2021"
authors = [ "Alina Marquardt" ]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
chrono = "0.4.24"

13
README.md Normal file
View File

@ -0,0 +1,13 @@
# lastfuture.de static page generator
Static page generator for lastfuture.de, written in Rust
## Features
- generates static HTML pages in Rust
## Planned features
- Templating using Mustache
- SCSS preprocessing
- TypeScript preprocessing
- Minification
- Deploy script

46
src/main.rs Normal file
View File

@ -0,0 +1,46 @@
use std::fs::File;
use std::io::{Write, BufReader, BufRead, Error};
use chrono;
use std::time::Instant;
const PUBLISH_PATH: &str = "./pub/";
const TEMPLATE_PATH: &str = "./src/templates/";
fn render_html(file: &str, template: &str, data: Vec<i32>) -> Result<(), Error> {
let output_path = &format!("{}{}", PUBLISH_PATH, file);
let template_path = &format!("{}{}", TEMPLATE_PATH, template);
let now = Instant::now();
// TODO: Templating with template and data
let html_string = "<h1>Hello!</h1>";
let elapsed = now.elapsed();
let mut output_file = File::create(output_path)?;
write!(output_file,
"{}\n
<!--\n
{}\n
{}\n
generated in {:.2?}\n
-->",
html_string,
template,
chrono::offset::Local::now(),
elapsed
)?;
let input = File::open(output_path)?;
let buffered = BufReader::new(input);
for line in buffered.lines() {
println!("{}", line?);
}
Ok(())
}
fn main() {
render_html("index.html", "index.tmpl", vec![1, 2, 3]);
}