2023-04-17 14:05:12 -04:00
2023-04-13 15:13:38 -04:00
2023-04-15 13:33:09 -04:00
2023-04-17 05:19:25 -04:00
2023-04-08 11:40:00 -04:00
2023-04-17 14:05:12 -04:00
2023-04-17 05:19:25 -04:00
2023-04-17 09:00:36 -04:00
2023-04-17 05:19:25 -04:00

scaffold

Intro

Use scaffold to setup a new project with a directory skeleton of your design, and if you'd like, it can also automatically initialize local, remote and gitea git repositories for the new project.

What scaffold does

  • A new project directory is created
  • Your project skeleton/template is copied from your config/projectType/sample directory
  • your setup/initialization commmands are run
  • And if you enable them
    • a git repository is initialized in the project directory
    • a remote repository is created and setup
    • a gitea repository is created and setup

Installation

  1. Grab a binary version for your system from the releases page.
  2. Put it in a directory that is on your path.
  3. Now configure your preferred setups/layouts/skeletons/templates for your projects.

Configuration

On linux, the configuration directory will be at /home/user/.config/devel/scaffold

For the windows versions, you might want to look at your User_Configuration_Directories location, and change it according to your needs. On windows it's value is the %APPDATA% environment variable.

In a PowerShell, use Get Child-Item Env: to display all the environment variables. Then [Environment]::SetEnvironmentVariable("APPDATA","C:\Users\You\Wherever-you-like\","User") to set the new value.

It's a little simpler at a command prompt -- type the command set and hit Enter. See what APPDATA is currently set to. Change it with setx APPDATA "C:\Users\You\SomeWhere".

The examples directory contains an example-scaffold-projectType.toml configuration file. Place a copy in each projectType directory, adjusted to your preferences per the given project type.

Naming convention warning

Creating repositories on gitea via a ssh push, the standard method, has a side effect -- the project name is forced to lowercase. There are no configuration options to change this. Please see gitea and it's documentation for full explanations.

Here are a couple of thoughts:

  1. Adapt and only create projects using lowercase (myspecialproject) or lower_snake_case (my_special_project) or use hyphens between words (my-special-project)

    • all lowercase is universally accepted but hard to read for multi-word project names
    • lower_snake_case is not universally accepted
    • hyphens might not be what you are used to, or prefer, but it seems to be universally accepted and reasonably readable.
  2. If you insist on CamelCase project names -- a work around would be to manually create a reposity with the CamelCase name you want via gitea's web UI. And then use scaffold on your development machine with the -c flag eg. scaffold -c go MySpecialProject to have scaffold clone it from gitea, build it out according to your skeleton/templates, and then push the changes.

The whole idea or point to little utilities like this is to simplify things - to get what you want. In this case, it seems, that to get what you want means one extra step --OR-- changing your personal preference for the names of things.

The scaffold command

Command Description
scaffold The program name
flags:
-i Display the available project types and the build and version information about the program.
-c Clone a gitea repository, not create one. Then push the new structure to it.
Examples:
scaffold ProjectType new-project-name Creates a new project and then creates new remote repositories and pushes changes
scaffold -c ProjectType GiteaRepositoryName clones the repo from gitea and then fills it according to your skeleton/template, and then pushes the changes.

Configuration of samples

Example Directory Structure

The image should explain alot quickly. The go, go-cli, go-web, hs, js, py and svelte directories define the project types available to scaffold. Arrange the contents of the sample directory, within each project type directory, to your preferred layout for each language/use-case.

Git

Git is available to be used as the version control system for new projects. Select/Deselect within the scaffold-<PROJECTTYPE>.toml file.

Please Note that if you also use git to track your configuration files and sample directories, then a .gitignore file within your sample directory will interfere with git's ability to track your skeletons/templates properly. So, to allow for this, put what you normally would in a .gitignore file instead into a file named GITIGNORE in your sample directory. And scaffold will convert it to a .gitignore file within your newProject directory.

If you are NOT using git to track your project types and samples/skeletons/templates, then no problem, just place a .gitignore file within the sample directory as you would any other file.

Description
Use scaffold to setup a new project with a directory skeleton of your design, and if you'd like, it can also automatically initialize local, remote and gitea git repositories for the new project.
Readme 198 KiB
2023-04-17 14:18:45 -04:00
Languages
Go 80.8%
Makefile 19.2%