diff --git a/Makefile b/Makefile index feba684..e8fd11c 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ linkerflags = '-s -w' prep: clean > date +"%F %a %T %Z" > buildTime.txt > git describe --always --tags --dirty --long > buildVersion.txt -> mkdir -p build +> @mkdir -p build build: prep linux windows diff --git a/README.md b/README.md index 5684227..bf157c4 100644 --- a/README.md +++ b/README.md @@ -4,28 +4,49 @@ 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. -## The Process +## What scaffold does -- The new project directory is created -- Your project skeleton is copied from your sample directory +- A new project directory is created +- Your project skeleton/template is copied from your config/projectType/sample directory - your setup/initialization commmands are run - a git repository is initialized in the project directory - and if you enable it, a remote repository is created and setup +## Installation + +1 - Grab a 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. + +## The `scaffold` command + +| Command | Description | +| ------- | ----------- | +| scaffold | The program name | +| flags: + -i or -Info | Display the available project types and the build and version information about the program. | +| **Examples:** | | +| scaffold *ProjectType* *NewProjectName* | Stuff | + ## Configuration of samples ![Example Directory Structure](assets/images/dirtree-pic.png) -The image should explain alot. - -The important description goes here. - -More paragraphs of stuff. +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-.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. +*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. diff --git a/assets/images/dirtree-pic.png b/assets/images/dirtree-pic.png index ae7fdee..89cad7f 100644 Binary files a/assets/images/dirtree-pic.png and b/assets/images/dirtree-pic.png differ diff --git a/main.go b/main.go index 72c839a..ec05d4e 100644 --- a/main.go +++ b/main.go @@ -48,7 +48,6 @@ var ( infoFlag = flag.Bool("Info", false, "Displays the program build information and exits.") infoFlag2 = flag.Bool("i", false, "Displays the program build information and exits.") sep = "/" - user_cfg_dir string cfg_dir = "devel/scaffold" // relative to , on linux /home/user/.config cfg_filename = "scaffold-cfg.toml" setup ScaffoldSetup @@ -59,6 +58,9 @@ func main() { flag.Parse() + user_cfg_dir, err := os.UserConfigDir() + ifFerr("Unable to determine user config directory", err) + if *infoFlag || *infoFlag2 { fmt.Printf("Scaffold version: %s", buildVersion) fmt.Printf("Built: %s\n", buildTime) @@ -67,8 +69,10 @@ func main() { fmt.Println("It's a windows system") } - user_cfg_dir, err := os.UserConfigDir() - ifFerr("Unable to determine user config directory", err) + at, err := availableProjectTypes(user_cfg_dir + sep + cfg_dir) + ifFerr("Unable to get available project types", err) + fmt.Printf("Avaiable types: %v\n", at) + fmt.Println("System says -- user config directory: ", user_cfg_dir) os.Exit(0) @@ -304,6 +308,9 @@ func availableProjectTypes(adir string) ([]string, error) { for _, e := range entries { if e.IsDir() { + if e.Name() == ".git" { + continue + } res = append(res, e.Name()) } }