![]() |
||
---|---|---|
defaults | ||
docs | ||
licenses | ||
src | ||
test | ||
.appveyor.yml | ||
.codecov.yml | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
Manifest.toml | ||
Project.toml | ||
README.md | ||
REQUIRE |
README.md
PkgTemplates
PkgTemplates is a Julia package for creating new Julia packages in an easy, repeatable, and customizable way.
Installation
pkg> add PkgTemplates
Plugins
PkgTemplates
is based on plugins which handle the setup of individual package components.
The available plugins are:
- Continuous Integration (CI)
- Code Coverage
- Documentation
- Citation
Usage
Assuming you have the relatively standard Git options user.name
, user.email
and github.user
set up globally with git config --global
, the simplest template requires no arguments:
julia> using PkgTemplates
julia> t = Template()
Template:
→ User: christopher-dG
→ Host: github.com
→ License: MIT (Chris de Graaf 2018)
→ Package directory: ~/.julia/dev
→ Minimum Julia version: v1.0
→ SSH remote: No
→ Commit Manifest.toml: No
→ Plugins: None
julia> generate("MyPkg", t)
julia> run(`git -C $(joinpath(t.dir, "MyPkg")) ls-files`);
.gitignore
LICENSE
Manifest.toml
Project.toml
README.md
REQUIRE
src/MyPkg.jl
test/runtests.jl
However, we can also configure a number of keyword arguments to Template
:
julia> t = Template(;
user="myusername",
license="ISC",
authors=["Chris de Graaf", "Invenia Technical Computing Corporation"],
dir="~/code",
julia_version=v"0.7",
plugins=[
TravisCI(),
Codecov(),
Coveralls(),
AppVeyor(),
GitHubPages(),
CirrusCI(),
],
)
Template:
→ User: myusername
→ Host: github.com
→ License: ISC (Chris de Graaf, Invenia Technical Computing Corporation 2018)
→ Package directory: ~/code
→ Minimum Julia version: v0.7
→ SSH remote: No
→ Commit Manifest.toml: No
→ Plugins:
• AppVeyor:
→ Config file: Default
→ 0 gitignore entries
• Codecov:
→ Config file: None
→ 3 gitignore entries: "*.jl.cov", "*.jl.*.cov", "*.jl.mem"
• Coveralls:
→ Config file: None
→ 3 gitignore entries: "*.jl.cov", "*.jl.*.cov", "*.jl.mem"
• GitHubPages:
→ 0 asset files
→ 2 gitignore entries: "/docs/build/", "/docs/site/"
• TravisCI:
→ Config file: Default
→ 0 gitignore entries
julia> generate(t, "MyPkg2")
julia> run(`git -C $(joinpath(t.dir, "MyPkg2")) ls-files`);
.appveyor.yml
.gitignore
.travis.yml
LICENSE
Project.toml
README.md
REQUIRE
docs/Manifest.toml
docs/Project.toml
docs/make.jl
docs/src/index.md
src/MyPkg2.jl
test/runtests.jl
Information on each keyword as well as plugin types can be found in the documentation.
If that looks like a lot of work, you can also create templates interactively
with interactive_template
:
And if that's still too much work for you, you can call
interactive_template
with fast=true
to use default values for everything
but username and plugin selection.
You can also use generate_interactive
to interactively generate a template and then
immediately use it to create a new package.
Contributing
It's extremely easy to extend PkgTemplates
with new plugins. To get started,
check out the
plugin development guide.