A shell script to quickly bootstrap new Julia packages with a complete, production-ready project structure.
- Interactive wizard for package configuration
- Standard Julia package directory structure
- Pre-configured testing with Test.jl
- Documentation setup with Documenter.jl
- Code formatting with JuliaFormatter
- Makefile with common development tasks
- GitHub Actions CI/CD pipeline
- Jenkins pipeline configuration
- MIT License template
- Comprehensive .gitignore
- Example code and tests to get started
- Bash
- Git
- Julia (recommended: 1.9 or later)
uuidgen(usually pre-installed on Unix systems)
./bootstrap-julia-package.shThe script will prompt you for:
- Package name (must be a valid Julia identifier)
- Author name (defaults to git config user.name)
- Author email (defaults to git config user.email)
- Julia version (defaults to 1.12)
- Short description (optional)
MyPackage/
├── src/
│ └── MyPackage.jl # Main module file
├── test/
│ └── runtests.jl # Test suite
├── docs/
│ ├── make.jl # Documentation builder
│ └── src/
│ ├── index.md # Documentation home
│ └── api.md # API reference
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI
├── Project.toml # Package metadata
├── Makefile # Development tasks
├── README.md # Package README
├── AGENTS.md # AI agent conventions
├── LICENSE # MIT License
├── Jenkinsfile # Jenkins pipeline
└── .gitignore # Git ignore rules
After generating a package, the following Makefile targets are available:
make install- Install package dependenciesmake test- Run test suitemake lint- Run code linter/formattermake format- Auto-format codemake docs- Generate and serve documentationmake clean- Clean build artifacts
$ ./bootstrap-julia-package.sh
Julia Package Bootstrapper
==========================
This script will create a new Julia package with standard structure.
Package name [MyPackage]: AwesomePackage
Author name [John Doe]:
Author email [john@example.com]:
Julia version [1.12]:
Short description (optional): An awesome Julia package for doing awesome things
Generating package: AwesomePackage
Author: John Doe <john@example.com>
Julia version: 1.12
Creating files...
Package AwesomePackage created successfully!MIT License. See LICENSE file for details.