md_puppy

Your assistant in making a static site!

[![GitHub license](https://img.shields.io/github/license/SoftAnnaLee/md_puppy?color=FFCDB2&style=for-the-badge)](https://github.com/SoftAnnaLee/md_puppy/blob/main/LICENSE.txt) [![Crates.io](https://img.shields.io/crates/v/md_puppy?color=FFCDB2&style=for-the-badge)](https://crates.io/crates/md_puppy) ## Project Description A minimalist static site generator written in Rust, inspired by [Hugo](https://gohugo.io/). The site's html template and file layout is based off of [HTML5 Boilerplate](https://html5boilerplate.com/). ## An example You can see an example of a site generated with md_puppy at [https://softannalee.neocities.org](https://softannalee.neocities.org) ![a screenshot of a site generated](https://raw.githubusercontent.com/SoftAnnaLee/md_puppy/main/img/screenshot.png) ## Installation ### Pre-requisites - [Rust (2021 Edition)](https://www.rust-lang.org/learn/get-started) ### How to install To install, first install Rust and Cargo. Then and use **one** the following commands; `cargo install md_puppy` or `cargo install --git https://github.com/SoftAnnaLee/md_puppy` ### Compiling from source First clone this repo and then use `cargo build` or `cargo install` like the following code exerpt; ``` git clone https://github.com/SoftAnnaLee/md_puppy cd md_puppy cargo install --path "$(pwd)" ``` ## Usage Use `md_puppy help` to display the following information; ``` md_puppy 1.0.0 AnnaLee <@SoftAnnaLee> A minimal static site generator USAGE: md_puppy [OPTIONS] [SUBCOMMAND] OPTIONS: -c, --completions Generate a SHELL completion script and print to stdout [possible values: bash, zsh, fish, power-shell, elvish] -h, --help Print help information -V, --version Print version information SUBCOMMANDS: build Process all files in the 'content/' folder and parse into a website help Print this message or the help of the given subcommand(s) init Download and initalize directories needed for website new Create a new file within the 'content/' folder with default frontmatter ``` - `md_puppy init` is used to initalize a directory with the necessary files needed to begin creating a website. - `md_puppy new ` is used to create blank files with pre-configured frontmatter. All pages will be created in the `content/` directory, and any subdirectories you add to the filepath. - `md_puppy build` is used to compile the markdown in the `content/` directory, and places a fully formed site in the `site/` directory. - `md_puppy --completions ` is used to generate shell completions, and outputs to stdout. I reccommend looking up how to add shell completions to your personal shell to utilize this. The site generator only has a single theme, which I used in my personal site. I give free usage to copy and reuse it; but I heavily encourage you to personalize it yourself. It is only HTML and CSS, so it should be pretty easy to modify to your own personal taste. There is also a config.toml which has a default configuration of the following; ``` # Name for the website across all pages site_name: md_puppy site # Url to pull the static site content/theme static_url: https://github.com/SoftAnnaLee/md_puppy/releases/download/static/static.zip # Url to pull boilerplate boilerplate_url: https://raw.githubusercontent.com/SoftAnnaLee/md_puppy/main/template/boilerplate.html # Base Url used for relative links base_url: https://www.example.com/ ``` If you have a different HTML boilerplate you'd like to use, or a different theme to pull into static_url, then you can change those details there. ## Purpose I am a beginner programmer who is trying to teach themselves Rust and finishing projects. So this is pretty minimal and designed around my personal use case (running a personal blog and website). If you want any features added, I may do so on request, but sadly no guarantees. Feel free to fork or add pull requests as well!