Quickly create boilerplate projects and templates.

Related tags

Template engine boyl
Overview

boyl

boyl is a command-line tool written in Rust to manage template folders.

boyl can copy existing folders (with support for glob-like ignore patterns) to a persistent location, and provides a terminal UI to instantiate new copies of these templates, list the available templates, and remove templates.

🔗 Installation 🔗 Is it any good? 🔗 FAQ 🔗 Contributing 🔗 Support 🔗 License

Installation

You can find pre-built binaries in the releases page.

To make boyl accessible from the command-line, download one of the releases to a known place (for example, ~/boyl/boyl-0.1.x), and either add that directory to your $PATH, or create a link to the executable in a directory that is already in your $PATH (for example, ~/bin):

ln -s "$HOME/boyl/boyl-0.1.x" "$HOME/bin/boyl"

You can confirm that boyl is available by running

boyl --help

If you wish to build boyl from source, you can do so with cargo:

cargo install --git https://github.com/mikeevmm/boyl

This will make boyl available from the command-line immediately.

Is it any good?

Yes:

Demo gif.

FAQ

Why should I use boyl rather than cargo/npm/gradle/etc?

boyl is more high-level, but does not mean to replace these tools in the first place. Language/application-specific apps to create new/boilerplate projects will always (probably) be better picks to create new projects in their specific domain, but they are not general purpose, and boyl can customize and build on top of them (for example, you may wish to have a specific folder structure set up, or more code than that generated by default).

Regardless, boyl fills a void for languages that do not provide these tools (cough C), without specializing too much.

Why shouldn't I just cp my templates?

You can if you want to. boyl is just a glorified cp with some niceties on top, anyway.

The copy operation is very slow.

I have tried but failed to speed it up, and could not find better approaches online. If you know what should be done, please open an issue or (preferably) a pull request.

(Be aware that exclusion patterns mean you have to traverse the whole copied directory; you can't just copy the base directory file.)

Why doesn't boyl use NCurses?

To maximize portability; like the rest of my command line utility, I wanted boyl to be usable in a setting where you only have user permissions (no sudo).

After writing plenty of Rust, I know which choice I'll make next time. (Using NCurses.)

This code is a little janky.

Sorry about that. It's my first project in Rust. You can check out template, which is boyl's predecessor written in Python, and is substantially less janky code-wise (and tiny in comparison).

Why isn't boyl as tiny as template?

Because template doesn't have a TUI, but also because you wouldn't believe the amount of code needed to accomplish in Rust what you can do in a few lines in Python. (I understand why this is, but it is matter-of-fact.) I am not excellent at low-level programming, thus there might be some overhead from that as well --- I'll leave that for you to decide.

Isn't this basically /insert existing piece of software/?

Probably. That happens a lot, where I want some tool that does some thing and there is already an existing tool to do that thing that I didn't go looking for. Usually, however, I want that tool to have basically no dependencies (so I can curl and ln it in both personal and work computers and be done), and have a specific vision for what I want the tool to do and behave. So, instead of finding and learning how to use tool X, I just try my hand at doing it.

I do not endorse this approach, frankly.

Contributing

Pull requests are welcome, and preferred to issues. I cannot guarantee that I will be able to address issues. Please be polite.

License

boyl is licensed under a GNU General Public License v2. This informally means that:

You may copy, distribute and modify the software as long as you track
changes/dates in source files. Any modifications to or software including
(via compiler) GPL-licensed code must also be made available under the GPL
along with build & install instructions.

See LICENSE for the full text.

Support

Getting donations, no matter how small, lets me know that people use and appreciate the software I've put out. (Enough so to pay for it.)

If you like boyl, please consider buying me a coffee.

You might also like...
A template for creating services in Rust using Axum and Prisma.

A template for creating services in Rust using Axum and Prisma. This uses the super cool Prisma Rust Client.

CLI tool to quickly create React + Typescript + Tailwind projects
CLI tool to quickly create React + Typescript + Tailwind projects

QUICK INIT CLI Tool to quickly create React projects with Tailwind automatically configured for use. Typescript is selected as default. If JS is to be

tmplt is a command-line interface tool that allows you to quickly and easily set up project templates for various programming languages and frameworks
tmplt is a command-line interface tool that allows you to quickly and easily set up project templates for various programming languages and frameworks

tmplt A User Friendly CLI Tool For Creating New Projects With Templates About tmplt is a command-line tool that lets users quickly create new projects

Templates for creating rust projects with a GitHub-managed lifecycle with cargo-generate 🏗️📃

rust-templates Templates for creating rust projects with a GitHub-managed lifecycle with cargo-generate. 🏗️ 📃 What you get: PR build validation usin

🎒 CLI to create starters from repos + Templates 🤖 + Actions 🚀
🎒 CLI to create starters from repos + Templates 🤖 + Actions 🚀

Backpack A tool to curate and automate your starter projects Key Features • How To Use • Download • Contributing • License Key Features Generate from

Create `.gitignore` files using one or more templates from TopTal, GitHub or your own collection
Create `.gitignore` files using one or more templates from TopTal, GitHub or your own collection

gitnr A cross-platform CLI utility to create .gitignore files using templates. Use templates from the GitHub & TopTal collections Use local files and

A dead simple boilerplate for Rust projects.
A dead simple boilerplate for Rust projects.

boilerplate-rs • A dead simple boilerplate for Rust projects. Project Structure ├── assets │ └── logo.png ├── bin │ ├── Cargo.toml │ └── src │

Cookiecutter Rust Actix template for jumpstarting production-ready projects quickly.

Cookiecutter actix simple clean architecture This is a reusable Rust Cookiecutter template. The project is based on Actix web in combination with Dies

A simple cli to clone projects and fetch all projects in a GitHub org..

stupid-git A simple cli to clone projects and update all projects. get all repository from GitHub clone all pull all with git stash Usage create sgit.

A library to quickly create OAuth2.1 compliant servers from scratch.

oauth21-server A library to easily create an OAuth 2.1 compliant authorization server. The motivation to develop this library comes from the fact that

A Command-line tool to create, manage and deploy your python projects

PPM A Command-line tool to create, manage and deploy your python projects Table of Contents PPM Main Features Create a Project project.ini file Projec

Create, open, manage your Python projects with ease, a project aimed to make python development experience a little better
Create, open, manage your Python projects with ease, a project aimed to make python development experience a little better

Create, open, manage your Python projects with ease, a project aimed to make python development experience a little better

Create virtual serial ports, connect them to physical serial ports, and create routes between them all.

Virtual Serial Port Router (vsp-router) Create virtual serial ports, connect them to physical serial ports, and create routes between them all. vsp-ro

A quick create wizard to create and modify opinionated kustomize deployments.

kqc 🚀 ☸️ A quick create wizard to create and modify opinionated kustomize deployments. This tool should help to quickly create and build up kustomize

Manas project aims to create a modular framework and ecosystem to create robust storage servers adhering to Solid protocol in rust.

मनस् | Manas Solid is a web native protocol to enable interoperable, read-write, collaborative, and decentralized web, truer to web's original vision.

Create a Python project automatically with rust (like create-react-app but for python)

create-python-project Create a Python project automatically with rust (like create-react-app but for python) Installation cargo install create-python-

Cookiecutter templates for Serverless applications using AWS SAM and the Rust programming language.

Cookiecutter SAM template for Lambda functions in Rust This is a Cookiecutter template to create a serverless application based on the Serverless Appl

The simplest build-time framework for writing web apps with html templates and typescript

Encoped A build-time fast af tool to write static apps with html and TypeScript Features Template-based ESLint, Prettier and Rollup integration No ext

Core Fiberplane data models and methods for transforming them (templates, providers, markdown conversion)

fiberplane This repository is a monorepo for Rust code that is used throughout Fiberplane's product. Overview base64uuid - A utility for working with

Releases(v0.2.0)
Owner
Miguel M.
Hi, nice to meet you. I study physics, program (games) and make music. You can find my portfolio below!
Miguel M.
:pencil: Compile-time HTML templates for Rust

maud Documentation (source) • API reference • Change log Maud is an HTML template engine for Rust. It's implemented as a macro, html!, which compiles

Chris Wong 1.4k Jan 1, 2023
Rust Compiled Templates with static-file handling

Rust Compiled Templates — ructe This is my attempt at writing a HTML template system for Rust. Some inspiration comes from the scala template system u

Rasmus Kaj 337 Jan 8, 2023
Type-safe, compiled Jinja-like templates for Rust

Askama Askama implements a template rendering engine based on Jinja. It generates Rust code from your templates at compile time based on a user-define

Dirkjan Ochtman 2k Jan 5, 2023
📦 Transpile readable code into DiamondFire templates

Welcome to fudge ?? ?? Transpile readable code into DiamondFire templates Author ?? BumpyBill & DADp Show your support Give a ⭐️ if this project helpe

null 6 Jan 25, 2022
A fast & simple boilerplate generator, built with Rust. 🦀

Boom ?? A fast & simple boilerplate generator, built with Rust. Installing boom This package is not yet downloadable on Brew or other package managers

Tristan Edwards 4 Apr 20, 2022
Hatch new projects like a chick coming out of its egg

?? Cargo Hatch Hatch new projects like a chick coming out of its egg. Cargo hatch is a cargo init/cargo new on steroids, allowing complex templates th

Dominik Nakamura 6 Nov 2, 2022
Template for Cargo based SysY compiler projects.

基于 Cargo 的 SysY 编译器项目模板 该仓库中存放了一个基于 Cargo 的 SysY 编译器项目的模板, 你可以在该模板的基础上进行进一步的开发. 该仓库中的 Rust 代码实现仅作为演示, 不代表你的编译器必须以此方式实现. 如你需要使用该模板, 建议你删掉所有 Rust 源文件, 仅

PKU Compiler Course 1 Nov 1, 2021
Easily embed and manage assets for your web application to build standalone-executables. Offers filename hashing, templating and more.

reinda: easily embed and manage assets This library helps you manage your assets (external files) and is mostly intended to be used in web application

Lukas Kalbertodt 23 Jul 15, 2022
Automatic HTTPS certificates for Tide, via Let's Encrypt and ACME tls-alpn-01 challenges

tide-acme helps you serve HTTPS with Rust and Tide using automatic certificates, via Let's Encrypt and ACME tls-alpn-01 challenges. Documentation To u

http-rs 158 Oct 9, 2022
finch - a super fast and efficient template rendering engine for node.js

finch A super fast and efficient template rendering engine for node.js, inspired by Handlebars. Usage Finch is very simple to use: Register a template

null 1 Nov 2, 2021