Create new Julia packages, the easy way
defaults | ||
docs | ||
licenses | ||
src | ||
test | ||
.appveyor.yml | ||
.codecov.yml | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
REQUIRE |
PkgTemplates
PkgTemplates is a Julia package for creating new Julia packages in an easy, repeatable, and customizable way.
Installation
PkgTemplates
is registered in
METADATA.jl
, so just run
Pkg.add("PkgTemplates")
.
Usage
The simplest template only requires your GitHub username.
julia> using PkgTemplates
julia> t = Template(; user="invenia")
julia> generate("MyPkg", t; force=true)
INFO: Initialized git repo at /tmp/tmpvaHVki/MyPkg
INFO: Made initial empty commit
INFO: Set remote origin to https://github.com/invenia/MyPkg.jl
INFO: Staged 5 files/directories: src/, REQUIRE, test/, README.md, .gitignore
INFO: Committed files generated by PkgTemplates
INFO: Copying temporary package directory into /home/degraafc/.julia/v0.6/
INFO: Finished
julia> run(`ls -R $(Pkg.dir("MyPkg"))`)
/home/degraafc/.julia/v0.6/MyPkg:
README.md REQUIRE src test
/home/degraafc/.julia/v0.6/MyPkg/src:
MyPkg.jl
/home/degraafc/.julia/v0.6/MyPkg/test:
runtests.jl
However, we can also configure a number of keyword arguments to Template
and
generate
:
julia> t = Template(;
user="invenia",
license="MIT",
authors=["Chris de Graaf", "Invenia Technical Computing Corporation"],
years="2016-2017",
dir=joinpath(ENV["HOME"], "code"),
julia_version=v"0.5.2",
git_config=Dict("diff.renames" => true),
plugins=[
TravisCI(),
CodeCov(; config_file=nothing),
AppVeyor(),
GitHubPages(; assets=[joinpath(ENV["HOME"], "invenia.css")]),
],
)
julia> generate("MyPkg", t; force=true, ssh=true)
INFO: Initialized git repo at /tmp/tmpe0dWY5/MyPkg
INFO: Applying git configuration
INFO: Made initial empty commit
INFO: Set remote origin to git@github.com:invenia/MyPkg.jl.git
INFO: Created empty gh-pages branch
INFO: Staged 9 files/directories: LICENSE, src/, REQUIRE, test/, README.md, .gitignore, .travis.yml, .appveyor.yml, docs/
INFO: Committed files generated by PkgTemplates
INFO: Copying temporary package directory into /home/degraafc/code/
INFO: Finished
WARNING: Remember to push all created branches to your remote: git push --all
Information on each keyword as well as plugin types can be found in the documentation.