A simple CLI utility for creating new project scaffolds for Janet. Written in Janet. Inspired by neil.
Required: Janet.
-
Clone this repo.
For e.g., using the GitHub CLI:
$ gh repo clone CFiggers/juno
-
cd into the directory:
$ cd juno
-
Run
$ juno new hello-world
-
See a new directory folder created with the arg you passed to the
new
subcommand:
$ ls
... hello-world ...
-
Symlink the
juno
script in the project root onto your$PATH
.For e.g., using
ln
:$ sudo ln -s /usr/bin/juno [path to juno project root]/juno
-
Use
juno
anywhere you want!
Required: jpm.
-
In the
juno
repo, runjpm deps -l && jpm build -l
. -
See a new
build
directory folder:
$ ls
... build ...
-
Put or symlink the
juno
binary inbuild
onto your$PATH
. A common way to accomplish this is to put a new item in your~/bin
folder, which is probably already on your$PATH
.For e.g., using
ln
to create a symlink:$ sudo ln -s /usr/bin/juno [path to juno project root]/build/juno
Or using mv to actually relocate the binary:
$ mv [path to juno project root]/build/juno /usr/bin/juno
-
Use
juno
anywhere you want!
- Improved
license
subcommand for adding/updating licenses based on Github's API - User-defined templates and automated template adoption from existing directories
- Interactive collection of parameters if needed but not provided by option flags
- MVP (Creating projects with
new
, add a license withlicense
, tell a joke withjoke
) - Dynamic tweaks to templates based on flags (like
--executable
/-e
to automatically include a(declare-executable)
inproject.janet
but leave the rest of the template the same) - Persistent user configuration of template defaults using
juno config
and related subcommands
Issues, forks, and pull requests are welcome!
juno
is by no means an original concept. Innumerable project scaffolding and management tools exist, written in a plethora of languages, for a plethora of target languages and frameworks.
Here are a few that already exist in Janet (alphabetical order):
Compared with these, the biggest difference with juno
is the data-oriented approach to project templating. Also, the (planned) adopt
command is distinct (to my knowledge, even among project scaffolding frameworks more broadly).
Copyright (c) 2023 Caleb Figgers