gdalle
1
A while back, some friends (@jacobusmmsmit @hill) and I started a blog called Modern Julia Workflows, to reveal the hidden secrets of Julia development. I am pleased to announce that this blog is making progress, and that the second tutorial is now complete!
It will take you from a dirty script to a fully functional and reproducible Julia package, featuring all the niceties we love: GitHub actions, tests, documentation, good style, quality checks, compatibility bounds and much more. I honestly think every Julia user can learn something there, no matter how advanced they are.
https://modernjuliaworkflows.github.io/sharing/
Now we want your ruthless feedback, either here or directly on the GitHub repo. Did you find this useful? What do you think is missing?
Original announcement:
48 Likes
Tbl
2
Thanks for this tutorial, I used it already, very useful!
One small thing at the beginning is confusing: you rightly remind packages should end with “.jl” extension, but immediately after that you show example in the terminal “MyAwesomePackage” with no “.jl” at the end.
1 Like
Maybe this is a misunderstanding. The package name should not include .jl
but it is a common convention to append .jl
to the repository name.
7 Likes
This is great starting advice! Today I was updating my newproj.jl
script that has all my PkgTemplates defaults:
#! /usr/bin/env julia --compile=min
using Pkg
Pkg.activate(dirname(@__FILE__); io = devnull)
Pkg.instantiate()
using PkgTemplates
function newproj(projname, orgname = "sjkelly")
tpl = Template(;
user = orgname,
plugins = [
Git(; manifest = false, ssh = true),
Documenter{GitHubActions}(),
TagBot(),
CompatHelper(),
Dependabot(),
Codecov(),
Coveralls(),
GitHubActions(; linux = true, osx = true),
Tests(;
project = true,
aqua = true,
aqua_kwargs = NamedTuple(),
jet = true
),
Formatter(;
file = "./.JuliaFormatter.toml"
)
]
)
return tpl(projname)
end
if !isempty(ARGS)
newproj(ARGS[1])
else
println("Usage: newproj <project name> <orgname>")
end
3 Likes