build based on a41187b

This commit is contained in:
zeptodoctor 2019-12-17 06:44:15 +00:00
parent a9a7a8b600
commit 4d3ef46450
12 changed files with 15776 additions and 1044 deletions

View File

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16.5mm"
height="8.6603003mm"
viewBox="0 0 58.464567 30.686103"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="arrow.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.2"
inkscape:cx="14.209234"
inkscape:cy="29.780479"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1021.6761)">
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 0,1021.6761 35.433071,0 -17.716536,30.6861 z"
id="path4140"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,605 +0,0 @@
/*
* The default CSS style for Documenter.jl generated sites
*
* Heavily inspired by the Julia Sphinx theme
* https://github.com/JuliaLang/JuliaDoc
* which extends the sphinx_rtd_theme
* https://github.com/snide/sphinx_rtd_theme
*
* Part of Documenter.jl
* https://github.com/JuliaDocs/Documenter.jl
*
* License: MIT
*/
/* fonts */
body, input {
font-family: 'Lato', 'Helvetica Neue', Arial, sans-serif;
font-size: 16px;
color: #222;
text-rendering: optimizeLegibility;
}
pre, code, kbd {
font-family: 'Roboto Mono', Monaco, courier, monospace;
font-size: 0.90em;
}
pre code {
font-size: 1em;
}
a {
color: #2980b9;
text-decoration: none;
}
a:hover {
color: #3091d1;
}
a:visited {
color: #9b59b6;
}
body {
line-height: 1.5;
}
h1 {
font-size: 1.75em;
}
/* Unless the <h1> the is very first thing on the page (i.e. the second element
* in the <article>, * after the <header>, we add some additional styling to it
* to make it stand out a bit more. This way we get a reasonable fallback if CSS3
* selectors are not supported in the browser.
*/
article > h1:not(:nth-child(2)) {
margin: 2.5em 0 0;
padding-bottom: 0.30em;
border-bottom: 1px solid #e5e5e5;
}
h2 {
font-size: 1.50em;
margin: 2.3em 0 0;
padding-bottom: 0.25em;
border-bottom: 1px solid #e5e5e5;
}
h3 {
font-size: 1.25em;
margin: 2.0em 0 0;
}
h4 { font-size: 1.15em; }
h5 { font-size: 1.10em; }
h6 { font-size: 1em; }
h4, h5, h6 {
margin-top: 1.5em;
margin-bottom: 1em;
}
img {
max-width: 100%;
}
video {
max-width: 100%;
}
table {
border-collapse: collapse;
margin: 1em 0;
}
th, td {
border: 1px solid #e1e4e5;
padding: 0.5em 1em;
}
th {
border-bottom-width: 2px;
}
tr:nth-child(even) {
background-color: #f3f6f6;
}
hr {
border: 0;
border-top: 1px solid #e5e5e5;
}
/* Inline code and code blocks */
code {
padding: 0.1em;
background-color: rgba(0,0,0,.04);
border-radius: 3px;
}
pre {
background-color: #f5f5f5;
border: 1px solid #dddddd;
border-radius: 3px;
padding: 0.5em;
overflow: auto;
}
pre code {
padding: 0;
background-color: initial;
}
kbd {
font-size: 0.70em;
display: inline-block;
padding: 0.1em 0.5em 0.4em 0.5em;
line-height: 1.0em;
color: #444d56;
vertical-align: middle;
background-color: #fafbfc;
border: solid 1px #c6cbd1;
border-bottom-color: #959da5;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #959da5;
}
/* Headers in admonitions and docstrings */
.admonition h1,
article section.docstring h1 {
font-size: 1.25em;
}
.admonition h2,
article section.docstring h2 {
font-size: 1.10em;
}
.admonition h3,
.admonition h4,
.admonition h5,
.admonition h6,
article section.docstring h3,
article section.docstring h4,
article section.docstring h5,
article section.docstring h6 {
font-size: 1em;
}
/* Navigation */
nav.toc {
position: fixed;
top: 0;
left: 0;
bottom: 0;
width: 20em;
display: flex;
flex-flow: column nowrap;
overflow-y: auto;
padding: 1em 0 0 0;
background-color: #fcfcfc;
box-shadow: inset -14px 0px 5px -12px rgb(210,210,210);
}
nav.toc .logo {
margin: 0 auto;
display: block;
max-height: 6em;
max-width: 18em;
}
nav.toc h1 {
text-align: center;
margin-top: .57em;
margin-bottom: 0;
}
nav.toc select {
display: block;
height: 2em;
flex-shrink: 0;
padding: 0 1.6em 0 1em;
min-width: 7em;
max-width: 90%;
max-width: calc(100% - 5em);
margin: 0 auto;
font-size: .83em;
border: 1px solid #c9c9c9;
border-radius: 1em;
/* TODO: doesn't seem to be centered on Safari */
text-align: center;
text-align-last: center;
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
background: white url("arrow.svg");
background-size: 1.155em;
background-repeat: no-repeat;
background-position: right;
}
nav.toc select:hover {
border: 1px solid #a0a0a0;
}
nav.toc select option {
text-align: center;
}
nav.toc input {
display: block;
height: 2em;
width: 90%;
width: calc(100% - 5em);
margin: 1.2em auto;
padding: 0 1em;
border: 1px solid #c9c9c9;
border-radius: 1em;
font-size: .83em;
}
nav.toc > ul * {
margin: 0;
}
nav.toc > ul {
min-height: 2em;
overflow-y: auto;
margin: 0;
}
nav.toc > ul > li:last-child {
padding-bottom: 1em;
}
nav.toc ul {
color: #404040;
padding: 0;
list-style: none;
}
nav.toc ul .toctext {
color: inherit;
display: block;
}
nav.toc ul a:hover {
color: #fcfcfc;
background-color: #4e4a4a;
}
nav.toc ul.internal a {
color: inherit;
display: block;
}
nav.toc ul.internal a:hover {
background-color: #d6d6d6;
}
nav.toc ul.internal {
background-color: #e3e3e3;
box-shadow: inset -14px 0px 5px -12px rgb(210,210,210);
list-style: none;
}
nav.toc ul.internal li.toplevel {
border-top: 1px solid #909090;
font-weight: bold;
}
nav.toc ul.internal li.toplevel:first-child {
border-top: none;
}
nav.toc .toctext {
padding-top: 0.3em;
padding-bottom: 0.3em;
padding-right: 1em;
}
nav.toc ul .toctext {
padding-left: 1em;
}
nav.toc ul ul .toctext {
padding-left: 2em;
}
nav.toc ul ul ul .toctext {
padding-left: 3em;
}
nav.toc li.current > .toctext {
border-top: 1px solid #c9c9c9;
border-bottom: 1px solid #c9c9c9;
color: #404040;
font-weight: bold;
background-color: white;
}
nav.toc ul::-webkit-scrollbar {
width: .4em;
background: none;
}
nav.toc ul::-webkit-scrollbar-thumb {
border-radius: 5px;
background: #c9c9c9;
}
nav.toc ul::-webkit-scrollbar-thumb:hover {
border-radius: 5px;
background: #aaaaaa;
}
article {
margin-left: 20em;
min-width: 20em;
max-width: 48em;
padding: 2em;
}
article > header {}
article > header div#topbar {
display: none;
}
article > header nav ul {
display: inline-block;
list-style: none;
margin: 0;
padding: 0;
}
article > header nav li {
display: inline-block;
padding-right: 0.2em;
}
article > header nav li:before {
content: "»";
padding-right: 0.2em;
}
article > header .edit-page {
float: right;
}
article > footer {}
article > footer a.prev {
float: left;
}
article > footer a.next {
float: right;
}
article > footer a .direction:after {
content: ": ";
}
article hr {
margin: 1em 0;
}
article section.docstring {
border: 1px solid #ddd;
margin: 0.5em 0;
padding: 0.5em;
border-radius: 3px;
}
article section.docstring .docstring-header {
margin-bottom: 1em;
}
article section.docstring .docstring-binding {
color: #333;
font-weight: bold;
}
article section.docstring .docstring-category {
font-style: italic;
}
article section.docstring a.source-link {
display: block;
font-weight: bold;
}
.nav-anchor,
.nav-anchor:hover,
.nav-anchor:visited {
color: #333;
}
/*
* Admonitions
*
* Colors (title, body)
* warning: #f0b37e #ffedcc (orange)
* note: #6ab0de #e7f2fa (blue)
* tip: #1abc9c #dbfaf4 (green)
*/
.admonition {
border-radius: 3px;
background-color: #eeeeee;
margin: 1em 0;
}
.admonition-title {
border-radius: 3px 3px 0 0;
background-color: #9b9b9b;
padding: 0.15em 0.5em;
}
.admonition-text {
padding: 0.5em;
}
.admonition-text > :first-child {
margin-top: 0;
}
.admonition-text > :last-child {
margin-bottom: 0;
}
.admonition > .admonition-title:before {
font-family: "FontAwesome";
margin-right: 5px;
content: "\f06a";
}
.admonition.warning > .admonition-title {
background-color: #f0b37e;
}
.admonition.warning {
background-color: #ffedcc;
}
.admonition.note > .admonition-title {
background-color: #6ab0de;
}
.admonition.note {
background-color: #e7f2fa;
}
.admonition.tip > .admonition-title {
background-color: #1abc9c;
}
.admonition.tip {
background-color: #dbfaf4;
}
/* footnotes */
.footnote {
padding-left: 0.8em;
border-left: 2px solid #ccc;
}
/* Search page */
#search-results .category {
font-size: smaller;
}
/* Overriding the <code> block style of highligh.js.
* We have to override the padding and the background-color, since we style this
* part ourselves. Specifically, we style the <pre> surrounding the <code>, while
* highlight.js applies the .hljs style directly to the <code> tag.
*/
.hljs {
background-color: transparent;
padding: 0;
}
@media only screen and (max-width: 768px) {
nav.toc {
position: fixed;
width: 16em;
left: -16em;
-webkit-overflow-scrolling: touch;
-webkit-transition-property: left; /* Safari */
-webkit-transition-duration: 0.3s; /* Safari */
transition-property: left;
transition-duration: 0.3s;
-webkit-transition-timing-function: ease-out; /* Safari */
transition-timing-function: ease-out;
z-index: 2;
box-shadow: 5px 0px 5px 0px rgb(210,210,210);
}
nav.toc.show {
left: 0;
}
article {
margin-left: 0;
padding: 3em 0.9em 0 0.9em; /* top right bottom left */
overflow-wrap: break-word;
}
article > header {
position: fixed;
left: 0;
z-index: 1;
}
article > header nav, hr {
display: none;
}
article > header div#topbar {
display: block; /* is mobile */
position: fixed;
width: 100%;
height: 1.5em;
padding-top: 1em;
padding-bottom: 1em;
background-color: #fcfcfc;
box-shadow: 0 1px 3px rgba(0,0,0,.26);
top: 0;
-webkit-transition-property: top; /* Safari */
-webkit-transition-duration: 0.3s; /* Safari */
transition-property: top;
transition-duration: 0.3s;
}
article > header div#topbar.headroom--unpinned.headroom--not-top.headroom--not-bottom {
top: -4em;
-webkit-transition-property: top; /* Safari */
-webkit-transition-duration: 0.7s; /* Safari */
transition-property: top;
transition-duration: 0.7s;
}
article > header div#topbar span {
width: 80%;
height: 1.5em;
margin-top: -0.1em;
margin-left: 0.9em;
font-size: 1.2em;
overflow: hidden;
}
article > header div#topbar a.fa-bars {
float: right;
padding: 0.6em;
margin-top: -0.6em;
margin-right: 0.3em;
font-size: 1.5em;
}
article > header div#topbar a.fa-bars:visited {
color: #3091d1;
}
article table {
overflow-x: auto;
display: block;
}
article div.MathJax_Display {
overflow: scroll;
}
article span.MathJax {
overflow: hidden;
}
}
@media only screen and (max-width: 320px) {
body {
font-size: 15px;
}
}

View File

@ -1,132 +1,260 @@
/*
* Part of Documenter.jl
* https://github.com/JuliaDocs/Documenter.jl
*
* License: MIT
*/
// Generated by Documenter.jl
requirejs.config({
paths: {
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min',
'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min',
'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.3/headroom.min',
'mathjax': 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML',
'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min',
'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/julia.min',
'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/julia-repl.min',
paths: {
'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia.min',
'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/headroom.min',
'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min',
'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/contrib/auto-render.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min',
'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/jQuery.headroom.min',
'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min',
'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min',
'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia-repl.min',
},
shim: {
"highlight-julia": {
"deps": [
"highlight"
]
},
"katex-auto-render": {
"deps": [
"katex"
]
},
"headroom-jquery": {
"deps": [
"jquery",
"headroom"
]
},
"highlight-julia-repl": {
"deps": [
"highlight"
]
}
}
});
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) {
$(document).ready(function() {
renderMathInElement(
document.body,
{
"delimiters": [
{
"left": "$",
"right": "$",
"display": false
},
shim: {
'mathjax' : {
exports: "MathJax"
},
'highlight-julia': ['highlight'],
'highlight-julia-repl': ['highlight'],
{
"left": "$$",
"right": "$$",
"display": true
},
{
"left": "\\[",
"right": "\\]",
"display": true
}
]
}
);
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) {
$(document).ready(function() {
hljs.initHighlighting();
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) {
// Manages the top navigation bar (hides it when the user starts scrolling down on the
// mobile).
window.Headroom = Headroom; // work around buggy module loading?
$(document).ready(function() {
$('#documenter .docs-navbar').headroom({
"tolerance": {"up": 10, "down": 10},
});
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
// Modal settings dialog
$(document).ready(function() {
var settings = $('#documenter-settings');
$('#documenter-settings-button').click(function(){
settings.toggleClass('is-active');
});
// Close the dialog if X is clicked
$('#documenter-settings button.delete').click(function(){
settings.removeClass('is-active');
});
// Close dialog if ESC is pressed
$(document).keyup(function(e) {
if (e.keyCode == 27) settings.removeClass('is-active');
});
});
// Load MathJax
require(['mathjax'], function(MathJax) {
MathJax.Hub.Config({
"tex2jax": {
inlineMath: [['$','$'], ['\\(','\\)']],
processEscapes: true
}
});
MathJax.Hub.Config({
config: ["MMLorHTML.js"],
jax: [
"input/TeX",
"output/HTML-CSS",
"output/NativeMML"
],
extensions: [
"MathMenu.js",
"MathZoom.js",
"TeX/AMSmath.js",
"TeX/AMSsymbols.js",
"TeX/autobold.js",
"TeX/autoload-all.js"
]
});
MathJax.Hub.Config({
TeX: { equationNumbers: { autoNumber: "AMS" } }
});
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
// Manages the showing and hiding of the sidebar.
$(document).ready(function() {
var sidebar = $("#documenter > .docs-sidebar");
var sidebar_button = $("#documenter-sidebar-button")
sidebar_button.click(function(ev) {
ev.preventDefault();
sidebar.toggleClass('visible');
if (sidebar.hasClass('visible')) {
// Makes sure that the current menu item is visible in the sidebar.
$("#documenter .docs-menu a.is-active").focus();
}
});
$("#documenter > .docs-main").bind('click', function(ev) {
if ($(ev.target).is(sidebar_button)) {
return;
}
if (sidebar.hasClass('visible')) {
sidebar.removeClass('visible');
}
});
})
require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) {
$(document).ready(function() {
hljs.initHighlighting();
})
// Resizes the package name / sitename in the sidebar if it is too wide.
// Inspired by: https://github.com/davatron5000/FitText.js
$(document).ready(function() {
e = $("#documenter .docs-autofit");
function resize() {
var L = parseInt(e.css('max-width'), 10);
var L0 = e.width();
if(L0 > L) {
var h0 = parseInt(e.css('font-size'), 10);
e.css('font-size', L * h0 / L0);
// TODO: make sure it survives resizes?
}
}
// call once and then register events
resize();
$(window).resize(resize);
$(window).on('orientationchange', resize);
});
// Scroll the navigation bar to the currently selected menu item
$(document).ready(function() {
var sidebar = $("#documenter .docs-menu").get(0);
var active = $("#documenter .docs-menu .is-active").get(0);
if(typeof active !== 'undefined') {
sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15;
}
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
function set_theme(theme) {
var active = null;
var disabled = [];
for (var i = 0; i < document.styleSheets.length; i++) {
var ss = document.styleSheets[i];
var themename = ss.ownerNode.getAttribute("data-theme-name");
if(themename === null) continue; // ignore non-theme stylesheets
// Find the active theme
if(themename === theme) active = ss;
else disabled.push(ss);
}
if(active !== null) {
active.disabled = false;
if(active.ownerNode.getAttribute("data-theme-primary") === null) {
document.getElementsByTagName('html')[0].className = "theme--" + theme;
} else {
document.getElementsByTagName('html')[0].className = "";
}
disabled.forEach(function(ss){
ss.disabled = true;
});
}
// Store the theme in localStorage
if(typeof(window.localStorage) !== "undefined") {
window.localStorage.setItem("documenter-theme", theme);
} else {
console.error("Browser does not support window.localStorage");
}
}
// Theme picker setup
$(document).ready(function() {
// onchange callback
$('#documenter-themepicker').change(function themepick_callback(ev){
var themename = $('#documenter-themepicker option:selected').attr('value');
set_theme(themename);
});
// Make sure that the themepicker displays the correct theme when the theme is retrieved
// from localStorage
if(typeof(window.localStorage) !== "undefined") {
var theme = window.localStorage.getItem("documenter-theme");
if(theme !== null) {
$('#documenter-themepicker option').each(function(i,e) {
e.selected = (e.value === theme);
})
}
}
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
// update the version selector with info from the siteinfo.js and ../versions.js files
require(['jquery'], function($) {
$(document).ready(function() {
var version_selector = $("#version-selector");
$(document).ready(function() {
var version_selector = $("#documenter .docs-version-selector");
var version_selector_select = $("#documenter .docs-version-selector select");
// add the current version to the selector based on siteinfo.js, but only if the selector is empty
if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) {
var option = $("<option value='#' selected='selected'>" + DOCUMENTER_CURRENT_VERSION + "</option>");
version_selector.append(option);
}
version_selector_select.change(function(x) {
target_href = version_selector_select.children("option:selected").get(0).value;
window.location.href = target_href;
});
if (typeof DOC_VERSIONS !== 'undefined') {
var existing_versions = $('#version-selector > option');
var existing_versions_texts = existing_versions.map(function(i,x){return x.text});
DOC_VERSIONS.forEach(function(each) {
var version_url = documenterBaseURL + "/../" + each;
var existing_id = $.inArray(each, existing_versions_texts);
// if not already in the version selector, add it as a new option,
// otherwise update the old option with the URL and enable it
if (existing_id == -1) {
var option = $("<option value='" + version_url + "'>" + each + "</option>");
version_selector.append(option);
} else {
var option = existing_versions[existing_id];
option.value = version_url;
option.disabled = false;
}
});
}
// add the current version to the selector based on siteinfo.js, but only if the selector is empty
if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) {
var option = $("<option value='#' selected='selected'>" + DOCUMENTER_CURRENT_VERSION + "</option>");
version_selector_select.append(option);
}
// only show the version selector if the selector has been populated
if ($('#version-selector > option').length > 0) {
version_selector.css("visibility", "visible");
}
// Scroll the navigation bar to the currently selected menu item
$("nav.toc > ul").get(0).scrollTop = $(".current").get(0).offsetTop - $("nav.toc > ul").get(0).offsetTop;
})
if (typeof DOC_VERSIONS !== 'undefined') {
var existing_versions = version_selector_select.children("option");
var existing_versions_texts = existing_versions.map(function(i,x){return x.text});
DOC_VERSIONS.forEach(function(each) {
var version_url = documenterBaseURL + "/../" + each;
var existing_id = $.inArray(each, existing_versions_texts);
// if not already in the version selector, add it as a new option,
// otherwise update the old option with the URL and enable it
if (existing_id == -1) {
var option = $("<option value='" + version_url + "'>" + each + "</option>");
version_selector_select.append(option);
} else {
var option = existing_versions[existing_id];
option.value = version_url;
option.disabled = false;
}
});
}
// only show the version selector if the selector has been populated
if (version_selector_select.children("option").length > 0) {
version_selector.toggleClass("visible");
}
})
// mobile
require(['jquery', 'headroom'], function($, Headroom) {
$(document).ready(function() {
var navtoc = $("nav.toc");
$("nav.toc li.current a.toctext").click(function() {
navtoc.toggleClass('show');
});
$("article > header div#topbar a.fa-bars").click(function(ev) {
ev.preventDefault();
navtoc.toggleClass('show');
if (navtoc.hasClass('show')) {
var title = $("article > header div#topbar span").text();
$("nav.toc ul li a:contains('" + title + "')").focus();
}
});
$("article#docs").bind('click', function(ev) {
if ($(ev.target).is('div#topbar a.fa-bars')) {
return;
}
if (navtoc.hasClass('show')) {
navtoc.removeClass('show');
}
});
if ($("article > header div#topbar").css('display') == 'block') {
var headroom = new Headroom(document.querySelector("article > header div#topbar"), {"tolerance": {"up": 10, "down": 10}});
headroom.init();
}
})
})

View File

@ -1,250 +1,248 @@
/*
* Part of Documenter.jl
* https://github.com/JuliaDocs/Documenter.jl
*
* License: MIT
*/
// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
function parseUri (str) {
var o = parseUri.options,
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
uri = {},
i = 14;
while (i--) uri[o.key[i]] = m[i] || "";
uri[o.q.name] = {};
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
if ($1) uri[o.q.name][$1] = $2;
});
return uri;
};
parseUri.options = {
strictMode: false,
key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
};
// Generated by Documenter.jl
requirejs.config({
paths: {
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min',
'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.5/lunr.min',
'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min',
}
paths: {
'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.6/lunr.min',
'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min',
}
});
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'lunr', 'lodash'], function($, lunr, _) {
var currentScript = document.currentScript;
$(document).ready(function() {
// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
function parseUri (str) {
var o = parseUri.options,
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
uri = {},
i = 14;
require(["jquery", "lunr", "lodash"], function($, lunr, _) {
$("#search-form").submit(function(e) {
e.preventDefault()
while (i--) uri[o.key[i]] = m[i] || "";
uri[o.q.name] = {};
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
if ($1) uri[o.q.name][$1] = $2;
});
return uri;
};
parseUri.options = {
strictMode: false,
key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
};
$("#search-form").submit(function(e) {
e.preventDefault()
})
// list below is the lunr 2.1.3 list minus the intersect with names(Base)
// (all, any, get, in, is, which) and (do, else, for, let, where, while, with)
// ideally we'd just filter the original list but it's not available as a variable
lunr.stopWordFilter = lunr.generateStopWordFilter([
'a',
'able',
'about',
'across',
'after',
'almost',
'also',
'am',
'among',
'an',
'and',
'are',
'as',
'at',
'be',
'because',
'been',
'but',
'by',
'can',
'cannot',
'could',
'dear',
'did',
'does',
'either',
'ever',
'every',
'from',
'got',
'had',
'has',
'have',
'he',
'her',
'hers',
'him',
'his',
'how',
'however',
'i',
'if',
'into',
'it',
'its',
'just',
'least',
'like',
'likely',
'may',
'me',
'might',
'most',
'must',
'my',
'neither',
'no',
'nor',
'not',
'of',
'off',
'often',
'on',
'only',
'or',
'other',
'our',
'own',
'rather',
'said',
'say',
'says',
'she',
'should',
'since',
'so',
'some',
'than',
'that',
'the',
'their',
'them',
'then',
'there',
'these',
'they',
'this',
'tis',
'to',
'too',
'twas',
'us',
'wants',
'was',
'we',
'were',
'what',
'when',
'who',
'whom',
'why',
'will',
'would',
'yet',
'you',
'your'
])
// add . as a separator, because otherwise "title": "Documenter.Anchors.add!"
// would not find anything if searching for "add!", only for the entire qualification
lunr.tokenizer.separator = /[\s\-\.]+/
// custom trimmer that doesn't strip @ and !, which are used in julia macro and function names
lunr.trimmer = function (token) {
return token.update(function (s) {
return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '')
})
}
// list below is the lunr 2.1.3 list minus the intersect with names(Base)
// (all, any, get, in, is, which) and (do, else, for, let, where, while, with)
// ideally we'd just filter the original list but it's not available as a variable
lunr.stopWordFilter = lunr.generateStopWordFilter([
'a',
'able',
'about',
'across',
'after',
'almost',
'also',
'am',
'among',
'an',
'and',
'are',
'as',
'at',
'be',
'because',
'been',
'but',
'by',
'can',
'cannot',
'could',
'dear',
'did',
'does',
'either',
'ever',
'every',
'from',
'got',
'had',
'has',
'have',
'he',
'her',
'hers',
'him',
'his',
'how',
'however',
'i',
'if',
'into',
'it',
'its',
'just',
'least',
'like',
'likely',
'may',
'me',
'might',
'most',
'must',
'my',
'neither',
'no',
'nor',
'not',
'of',
'off',
'often',
'on',
'only',
'or',
'other',
'our',
'own',
'rather',
'said',
'say',
'says',
'she',
'should',
'since',
'so',
'some',
'than',
'that',
'the',
'their',
'them',
'then',
'there',
'these',
'they',
'this',
'tis',
'to',
'too',
'twas',
'us',
'wants',
'was',
'we',
'were',
'what',
'when',
'who',
'whom',
'why',
'will',
'would',
'yet',
'you',
'your'
])
lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter')
lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer')
// add . as a separator, because otherwise "title": "Documenter.Anchors.add!"
// would not find anything if searching for "add!", only for the entire qualification
lunr.tokenizer.separator = /[\s\-\.]+/
var index = lunr(function () {
this.ref('location')
this.field('title',{boost: 100})
this.field('text')
documenterSearchIndex['docs'].forEach(function(e) {
this.add(e)
}, this)
})
var store = {}
// custom trimmer that doesn't strip @ and !, which are used in julia macro and function names
lunr.trimmer = function (token) {
return token.update(function (s) {
return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '')
documenterSearchIndex['docs'].forEach(function(e) {
store[e.location] = {title: e.title, category: e.category}
})
$(function(){
searchresults = $('#documenter-search-results');
searchinfo = $('#documenter-search-info');
searchbox = $('#documenter-search-query');
function update_search(querystring) {
tokens = lunr.tokenizer(querystring)
results = index.query(function (q) {
tokens.forEach(function (t) {
q.term(t.toString(), {
fields: ["title"],
boost: 100,
usePipeline: false,
editDistance: 0,
wildcard: lunr.Query.wildcard.NONE
})
q.term(t.toString(), {
fields: ["title"],
boost: 10,
usePipeline: false,
editDistance: 2,
wildcard: lunr.Query.wildcard.NONE
})
q.term(t.toString(), {
fields: ["text"],
boost: 1,
usePipeline: true,
editDistance: 0,
wildcard: lunr.Query.wildcard.NONE
})
})
})
searchinfo.text("Number of results: " + results.length)
searchresults.empty()
results.forEach(function(result) {
data = store[result.ref]
link = $('<a class="docs-label">'+data.title+'</a>')
link.attr('href', documenterBaseURL+'/'+result.ref)
cat = $('<span class="docs-category">('+data.category+')</span>')
li = $('<li>').append(link).append(" ").append(cat)
searchresults.append(li)
})
}
lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter')
lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer')
function update_search_box() {
querystring = searchbox.val()
update_search(querystring)
}
var index = lunr(function () {
this.ref('location')
this.field('title')
this.field('text')
documenterSearchIndex['docs'].forEach(function(e) {
this.add(e)
}, this)
})
var store = {}
searchbox.keyup(_.debounce(update_search_box, 250))
searchbox.change(update_search_box)
search_query_uri = parseUri(window.location).queryKey["q"]
if(search_query_uri !== undefined) {
search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20'))
searchbox.val(search_query)
}
update_search_box();
})
})
documenterSearchIndex['docs'].forEach(function(e) {
store[e.location] = {title: e.title, category: e.category}
})
$(function(){
function update_search(querystring) {
tokens = lunr.tokenizer(querystring)
results = index.query(function (q) {
tokens.forEach(function (t) {
q.term(t.toString(), {
fields: ["title"],
boost: 100,
usePipeline: false,
editDistance: 0,
wildcard: lunr.Query.wildcard.NONE
})
q.term(t.toString(), {
fields: ["title"],
boost: 10,
usePipeline: false,
editDistance: 2,
wildcard: lunr.Query.wildcard.NONE
})
q.term(t.toString(), {
fields: ["text"],
boost: 1,
usePipeline: true,
editDistance: 0,
wildcard: lunr.Query.wildcard.NONE
})
})
})
$('#search-info').text("Number of results: " + results.length)
$('#search-results').empty()
results.forEach(function(result) {
data = store[result.ref]
link = $('<a>')
link.text(data.title)
link.attr('href', documenterBaseURL+'/'+result.ref)
cat = $('<span class="category">('+data.category+')</span>')
li = $('<li>').append(link).append(" ").append(cat)
$('#search-results').append(li)
})
}
function update_search_box() {
querystring = $('#search-query').val()
update_search(querystring)
}
$('#search-query').keyup(_.debounce(update_search_box, 250))
$('#search-query').change(update_search_box)
search_query_uri = parseUri(window.location).queryKey["q"]
if(search_query_uri !== undefined) {
search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20'))
$("#search-query").val(search_query)
}
update_search_box();
})
})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

42
dev/assets/themeswap.js Normal file
View File

@ -0,0 +1,42 @@
// Small function to quickly swap out themes. Gets put into the <head> tag..
function set_theme_from_local_storage() {
// Browser does not support Web Storage, bail early.
if(typeof(window.localStorage) === "undefined") return;
// Get the user-picked theme from localStorage. May be `null`, which means the default
// theme.
var theme = window.localStorage.getItem("documenter-theme");
// Initialize a few variables for the loop:
//
// - active: will contain the index of the theme that should be active. Note that there
// is no guarantee that localStorage contains sane values. If `active` stays `null`
// we either could not find the theme or it is the default (primary) theme anyway.
// Either way, we then need to stick to the primary theme.
//
// - disabled: style sheets that should be disabled (i.e. all the theme style sheets
// that are not the currently active theme)
var active = null; var disabled = [];
for (var i = 0; i < document.styleSheets.length; i++) {
var ss = document.styleSheets[i];
// The <link> tag of each style sheet is expected to have a data-theme-name attribute
// which must contain the name of the theme. The names in localStorage much match this.
var themename = ss.ownerNode.getAttribute("data-theme-name");
// attribute not set => non-theme stylesheet => ignore
if(themename === null) continue;
// To distinguish the default (primary) theme, it needs to have the data-theme-primary
// attribute set.
var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null);
// If we find a matching theme (and it's not the default), we'll set active to non-null
if(!isprimary && themename === theme) active = i;
// Store the style sheets of inactive themes so that we could disable them
if(themename !== theme) disabled.push(ss);
}
if(active !== null) {
// If we did find an active theme, we'll (1) add the theme--$(theme) class to <html>
document.getElementsByTagName('html')[0].className = "theme--" + theme;
// and (2) disable all the other theme stylesheets
disabled.forEach(function(ss){
ss.disabled = true;
});
}
}
set_theme_from_local_storage();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Search · PkgTemplates.jl</title><link rel="canonical" href="https://invenia.github.io/PkgTemplates.jl/search/index.html"/><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link href="../assets/documenter.css" rel="stylesheet" type="text/css"/></head><body><nav class="toc"><h1>PkgTemplates.jl</h1><select id="version-selector" onChange="window.location.href=this.value" style="visibility: hidden"></select><form class="search" id="search-form" action><input id="search-query" name="q" type="text" placeholder="Search docs"/></form><ul><li><a class="toctext" href="../">Home</a></li><li><a class="toctext" href="../user/">User Guide</a></li><li><a class="toctext" href="../developer/">Developer Guide</a></li><li><a class="toctext" href="../migrating/">Migrating To PkgTemplates 0.7+</a></li></ul></nav><article><header><nav><ul><li>Search</li></ul></nav><hr/><div id="topbar"><span>Search</span><a class="fa fa-bars" href="#"></a></div></header><h1>Search</h1><p id="search-info">Number of results: <span id="search-results-number">loading...</span></p><ul id="search-results"></ul></article></body><script src="../search_index.js"></script><script src="../assets/search.js"></script></html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Search · PkgTemplates.jl</title><link rel="canonical" href="https://invenia.github.io/PkgTemplates.jl/search/index.html"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit">PkgTemplates.jl</span></div><form class="docs-search" action><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><a class="tocitem" href="../user/">User Guide</a></li><li><a class="tocitem" href="../developer/">Developer Guide</a></li><li><a class="tocitem" href="../migrating/">Migrating To PkgTemplates 0.7+</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Search</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Search</a></li></ul></nav><div class="docs-right"><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article><p id="documenter-search-info">Loading search...</p><ul id="documenter-search-results"></ul></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 17 December 2019 06:44">Tuesday 17 December 2019</span>. Using Julia version 1.0.5.</p></section><footer class="modal-card-foot"></footer></div></div></div></body><script src="../search_index.js"></script><script src="../assets/search.js"></script></html>

View File

@ -1,29 +1,29 @@
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>User Guide · PkgTemplates.jl</title><link rel="canonical" href="https://invenia.github.io/PkgTemplates.jl/user/index.html"/><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link href="../assets/documenter.css" rel="stylesheet" type="text/css"/></head><body><nav class="toc"><h1>PkgTemplates.jl</h1><select id="version-selector" onChange="window.location.href=this.value" style="visibility: hidden"></select><form class="search" id="search-form" action="../search/"><input id="search-query" name="q" type="text" placeholder="Search docs"/></form><ul><li><a class="toctext" href="../">Home</a></li><li class="current"><a class="toctext" href>User Guide</a><ul class="internal"><li><a class="toctext" href="#Template-1">Template</a></li><li><a class="toctext" href="#Plugins-1">Plugins</a></li><li><a class="toctext" href="#A-More-Complicated-Example-1">A More Complicated Example</a></li><li><a class="toctext" href="#Custom-Template-Files-1">Custom Template Files</a></li><li><a class="toctext" href="#Extending-Existing-Plugins-1">Extending Existing Plugins</a></li><li><a class="toctext" href="#Saving-Templates-1">Saving Templates</a></li></ul></li><li><a class="toctext" href="../developer/">Developer Guide</a></li><li><a class="toctext" href="../migrating/">Migrating To PkgTemplates 0.7+</a></li></ul></nav><article id="docs"><header><nav><ul><li><a href>User Guide</a></li></ul><a class="edit-page" href="https://github.com/invenia/PkgTemplates.jl/blob/master/docs/src/user.md#L"><span class="fa"></span> Edit on GitHub</a></nav><hr/><div id="topbar"><span>User Guide</span><a class="fa fa-bars" href="#"></a></div></header><h1><a class="nav-anchor" id="PkgTemplates-User-Guide-1" href="#PkgTemplates-User-Guide-1">PkgTemplates User Guide</a></h1><ul><li><a href="#PkgTemplates-User-Guide-1">PkgTemplates User Guide</a></li><ul><li><a href="#Template-1">Template</a></li><li><a href="#Plugins-1">Plugins</a></li><li><a href="#A-More-Complicated-Example-1">A More Complicated Example</a></li><li><a href="#Custom-Template-Files-1">Custom Template Files</a></li><li><a href="#Extending-Existing-Plugins-1">Extending Existing Plugins</a></li><li><a href="#Saving-Templates-1">Saving Templates</a></li></ul></ul><p>Using PkgTemplates is straightforward. Just create a <a href="#PkgTemplates.Template"><code>Template</code></a>, and call it on a package name to generate that package:</p><pre><code class="language-julia">using PkgTemplates
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>User Guide · PkgTemplates.jl</title><link rel="canonical" href="https://invenia.github.io/PkgTemplates.jl/user/index.html"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit">PkgTemplates.jl</span></div><form class="docs-search" action="../search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li class="is-active"><a class="tocitem" href>User Guide</a><ul class="internal"><li><a class="tocitem" href="#Template-1"><span>Template</span></a></li><li><a class="tocitem" href="#Plugins-1"><span>Plugins</span></a></li><li><a class="tocitem" href="#A-More-Complicated-Example-1"><span>A More Complicated Example</span></a></li><li><a class="tocitem" href="#Custom-Template-Files-1"><span>Custom Template Files</span></a></li><li><a class="tocitem" href="#Extending-Existing-Plugins-1"><span>Extending Existing Plugins</span></a></li><li><a class="tocitem" href="#Saving-Templates-1"><span>Saving Templates</span></a></li></ul></li><li><a class="tocitem" href="../developer/">Developer Guide</a></li><li><a class="tocitem" href="../migrating/">Migrating To PkgTemplates 0.7+</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>User Guide</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>User Guide</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/invenia/PkgTemplates.jl/blob/master/docs/src/user.md#L" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="PkgTemplates-User-Guide-1"><a class="docs-heading-anchor" href="#PkgTemplates-User-Guide-1">PkgTemplates User Guide</a><a class="docs-heading-anchor-permalink" href="#PkgTemplates-User-Guide-1" title="Permalink"></a></h1><ul><li><a href="#PkgTemplates-User-Guide-1">PkgTemplates User Guide</a></li><ul><li><a href="#Template-1">Template</a></li><li><a href="#Plugins-1">Plugins</a></li><li><a href="#A-More-Complicated-Example-1">A More Complicated Example</a></li><li><a href="#Custom-Template-Files-1">Custom Template Files</a></li><li><a href="#Extending-Existing-Plugins-1">Extending Existing Plugins</a></li><li><a href="#Saving-Templates-1">Saving Templates</a></li></ul></ul><p>Using PkgTemplates is straightforward. Just create a <a href="#PkgTemplates.Template"><code>Template</code></a>, and call it on a package name to generate that package:</p><pre><code class="language-julia">using PkgTemplates
t = Template()
t(&quot;MyPkg&quot;)</code></pre><h2><a class="nav-anchor" id="Template-1" href="#Template-1">Template</a></h2><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Template" href="#PkgTemplates.Template"><code>PkgTemplates.Template</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Template(; kwargs...)</code></pre><p>A configuration used to generate packages.</p><p><strong>Keyword Arguments</strong></p><p><strong>User Options</strong></p><ul><li><code>user::AbstractString=&quot;username&quot;</code>: GitHub (or other code hosting service) username. The default value comes from the global Git config (<code>github.user</code>). If no value is obtained, many plugins that use this value will not work.</li><li><code>authors::Union{AbstractString, Vector{&lt;:AbstractString}}=&quot;name &lt;email&gt;&quot;</code>: Package authors. Like <code>user</code>, it takes its default value from the global Git config (<code>user.name</code> and <code>user.email</code>).</li></ul><p><strong>Package Options</strong></p><ul><li><code>dir::AbstractString=&quot;~/.julia/dev&quot;</code>: Directory to place packages in.</li><li><code>host::AbstractString=&quot;github.com&quot;</code>: URL to the code hosting service where packages will reside.</li><li><code>julia::VersionNumber=v&quot;1.0.0&quot;</code>: Minimum allowed Julia version.</li></ul><p><strong>Template Plugins</strong></p><ul><li><code>plugins::Vector{&lt;:Plugin}=Plugin[]</code>: A list of <a href="../developer/#PkgTemplates.Plugin"><code>Plugin</code></a>s used by the template.</li><li><code>disable_defaults::Vector{DataType}=DataType[]</code>: Default plugins to disable. The default plugins are <a href="#PkgTemplates.ProjectFile"><code>ProjectFile</code></a>, <a href="#PkgTemplates.SrcDir"><code>SrcDir</code></a>, <a href="#PkgTemplates.Tests"><code>Tests</code></a>, <a href="#PkgTemplates.Readme"><code>Readme</code></a>, <a href="#PkgTemplates.License"><code>License</code></a>, and <a href="#PkgTemplates.Git"><code>Git</code></a>. To override a default plugin instead of disabling it altogether, supply it via <code>plugins</code>.</li></ul><hr/><p>To create a package from a <code>Template</code>, use the following syntax:</p><pre><code class="language-julia">julia&gt; t = Template();
t(&quot;MyPkg&quot;)</code></pre><h2 id="Template-1"><a class="docs-heading-anchor" href="#Template-1">Template</a><a class="docs-heading-anchor-permalink" href="#Template-1" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Template" href="#PkgTemplates.Template"><code>PkgTemplates.Template</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Template(; kwargs...)</code></pre><p>A configuration used to generate packages.</p><p><strong>Keyword Arguments</strong></p><p><strong>User Options</strong></p><ul><li><code>user::AbstractString=&quot;username&quot;</code>: GitHub (or other code hosting service) username. The default value comes from the global Git config (<code>github.user</code>). If no value is obtained, many plugins that use this value will not work.</li><li><code>authors::Union{AbstractString, Vector{&lt;:AbstractString}}=&quot;name &lt;email&gt;&quot;</code>: Package authors. Like <code>user</code>, it takes its default value from the global Git config (<code>user.name</code> and <code>user.email</code>).</li></ul><p><strong>Package Options</strong></p><ul><li><code>dir::AbstractString=&quot;~/.julia/dev&quot;</code>: Directory to place packages in.</li><li><code>host::AbstractString=&quot;github.com&quot;</code>: URL to the code hosting service where packages will reside.</li><li><code>julia::VersionNumber=v&quot;1.0.0&quot;</code>: Minimum allowed Julia version.</li></ul><p><strong>Template Plugins</strong></p><ul><li><code>plugins::Vector{&lt;:Plugin}=Plugin[]</code>: A list of <a href="../developer/#PkgTemplates.Plugin"><code>Plugin</code></a>s used by the template.</li><li><code>disable_defaults::Vector{DataType}=DataType[]</code>: Default plugins to disable. The default plugins are <a href="#PkgTemplates.ProjectFile"><code>ProjectFile</code></a>, <a href="#PkgTemplates.SrcDir"><code>SrcDir</code></a>, <a href="#PkgTemplates.Tests"><code>Tests</code></a>, <a href="#PkgTemplates.Readme"><code>Readme</code></a>, <a href="#PkgTemplates.License"><code>License</code></a>, and <a href="#PkgTemplates.Git"><code>Git</code></a>. To override a default plugin instead of disabling it altogether, supply it via <code>plugins</code>.</li></ul><hr/><p>To create a package from a <code>Template</code>, use the following syntax:</p><pre><code class="language-julia">julia&gt; t = Template();
julia&gt; t(&quot;PkgName&quot;)</code></pre></div></div><a class="source-link" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/39350c10de378964a3fa673176602c93d532acdb/src/template.jl#LL12-L48">source</a></section><h2><a class="nav-anchor" id="Plugins-1" href="#Plugins-1">Plugins</a></h2><p>Plugins add functionality to <code>Template</code>s. There are a number of plugins available to automate common boilerplate tasks.</p><h3><a class="nav-anchor" id="Default-Plugins-1" href="#Default-Plugins-1">Default Plugins</a></h3><p>These plugins are included by default. They can be overridden by supplying another value via the <code>plugins</code> keyword, or disabled by supplying the type via the <code>disable_defaults</code> keyword.</p><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.ProjectFile" href="#PkgTemplates.ProjectFile"><code>PkgTemplates.ProjectFile</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">ProjectFile(; version=v&quot;0.1.0&quot;)</code></pre><p>Creates a <code>Project.toml</code>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>version::VersionNumber</code>: The initial version of created packages.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L7">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.SrcDir" href="#PkgTemplates.SrcDir"><code>PkgTemplates.SrcDir</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">SrcDir(; file=&quot;~/build/invenia/PkgTemplates.jl/templates/src/module.jl&quot;)</code></pre><p>Creates a module entrypoint.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>src/&lt;module&gt;.jl</code>.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L7">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Tests" href="#PkgTemplates.Tests"><code>PkgTemplates.Tests</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Tests(; file=&quot;~/build/invenia/PkgTemplates.jl/templates/test/runtests.jl&quot;, project=false)</code></pre><p>Sets up testing for packages.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>runtests.jl</code>.</li><li><code>project::Bool</code>: Whether or not to create a new project for tests (<code>test/Project.toml</code>). See <a href="https://julialang.github.io/Pkg.jl/v1/creating-packages/#Test-specific-dependencies-in-Julia-1.2-and-above-1">here</a> for more details.</li></ul><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>Managing test dependencies with <code>test/Project.toml</code> is only supported in Julia 1.2 and later.</p></div></div></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L14">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Readme" href="#PkgTemplates.Readme"><code>PkgTemplates.Readme</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Readme(;
julia&gt; t(&quot;PkgName&quot;)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/a41187be1ca920d203f146602432a3f31e3ecfcd/src/template.jl#LL12-L48">source</a></section></article><h2 id="Plugins-1"><a class="docs-heading-anchor" href="#Plugins-1">Plugins</a><a class="docs-heading-anchor-permalink" href="#Plugins-1" title="Permalink"></a></h2><p>Plugins add functionality to <code>Template</code>s. There are a number of plugins available to automate common boilerplate tasks.</p><h3 id="Default-Plugins-1"><a class="docs-heading-anchor" href="#Default-Plugins-1">Default Plugins</a><a class="docs-heading-anchor-permalink" href="#Default-Plugins-1" title="Permalink"></a></h3><p>These plugins are included by default. They can be overridden by supplying another value via the <code>plugins</code> keyword, or disabled by supplying the type via the <code>disable_defaults</code> keyword.</p><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.ProjectFile" href="#PkgTemplates.ProjectFile"><code>PkgTemplates.ProjectFile</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">ProjectFile(; version=v&quot;0.1.0&quot;)</code></pre><p>Creates a <code>Project.toml</code>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>version::VersionNumber</code>: The initial version of created packages.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L7">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.SrcDir" href="#PkgTemplates.SrcDir"><code>PkgTemplates.SrcDir</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">SrcDir(; file=&quot;~/build/invenia/PkgTemplates.jl/templates/src/module.jl&quot;)</code></pre><p>Creates a module entrypoint.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>src/&lt;module&gt;.jl</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L7">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Tests" href="#PkgTemplates.Tests"><code>PkgTemplates.Tests</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Tests(; file=&quot;~/build/invenia/PkgTemplates.jl/templates/test/runtests.jl&quot;, project=false)</code></pre><p>Sets up testing for packages.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>runtests.jl</code>.</li><li><code>project::Bool</code>: Whether or not to create a new project for tests (<code>test/Project.toml</code>). See <a href="https://julialang.github.io/Pkg.jl/v1/creating-packages/#Test-specific-dependencies-in-Julia-1.2-and-above-1">here</a> for more details.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Managing test dependencies with <code>test/Project.toml</code> is only supported in Julia 1.2 and later.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L14">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Readme" href="#PkgTemplates.Readme"><code>PkgTemplates.Readme</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Readme(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/README.md&quot;,
destination=&quot;README.md&quot;,
inline_badges=false,
)</code></pre><p>Creates a <code>README</code> file that contains badges for other included plugins.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for the <code>README</code>.</li><li><code>destination::AbstractString</code>: File destination, relative to the repository root. For example, values of <code>&quot;README&quot;</code> or <code>&quot;README.rst&quot;</code> might be desired.</li><li><code>inline_badges::Bool</code>: Whether or not to put the badges on the same line as the package name.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L14">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.License" href="#PkgTemplates.License"><code>PkgTemplates.License</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">License(; name=&quot;MIT&quot;, path=nothing, destination=&quot;LICENSE&quot;)</code></pre><p>Creates a license file.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>name::AbstractString</code>: Name of a license supported by PkgTemplates. Available licenses can be seen <a href="https://github.com/invenia/PkgTemplates.jl/tree/master/templates/licenses">here</a>.</li><li><code>path::Union{AbstractString, Nothing}</code>: Path to a custom license file. This keyword takes priority over <code>name</code>.</li><li><code>destination::AbstractString</code>: File destination, relative to the repository root. For example, <code>&quot;LICENSE.md&quot;</code> might be desired.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/39350c10de378964a3fa673176602c93d532acdb/src/plugins/license.jl#LL1-L14">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Git" href="#PkgTemplates.Git"><code>PkgTemplates.Git</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Git(; ignore=String[], ssh=false, manifest=false, gpgsign=false)</code></pre><p>Creates a Git repository and a <code>.gitignore</code> file.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>ignore::Vector{&lt;:AbstractString}</code>: Patterns to add to the <code>.gitignore</code>. See also: <a href="../developer/#PkgTemplates.gitignore"><code>gitignore</code></a>.</li><li><code>ssh::Bool</code>: Whether or not to use SSH for the remote. If left unset, HTTPS is used.</li><li><code>manifest::Bool</code>: Whether or not to commit <code>Manifest.toml</code>.</li><li><code>gpgsign::Bool</code>: Whether or not to sign commits with your GPG key. This option requires that the Git CLI is installed, and for you to have a GPG key associated with your committer identity.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L14">source</a></section><h3><a class="nav-anchor" id="Continuous-Integration-(CI)-1" href="#Continuous-Integration-(CI)-1">Continuous Integration (CI)</a></h3><p>These plugins will create the configuration files of common CI services for you.</p><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.AppVeyor" href="#PkgTemplates.AppVeyor"><code>PkgTemplates.AppVeyor</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">AppVeyor(;
)</code></pre><p>Creates a <code>README</code> file that contains badges for other included plugins.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for the <code>README</code>.</li><li><code>destination::AbstractString</code>: File destination, relative to the repository root. For example, values of <code>&quot;README&quot;</code> or <code>&quot;README.rst&quot;</code> might be desired.</li><li><code>inline_badges::Bool</code>: Whether or not to put the badges on the same line as the package name.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L14">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.License" href="#PkgTemplates.License"><code>PkgTemplates.License</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">License(; name=&quot;MIT&quot;, path=nothing, destination=&quot;LICENSE&quot;)</code></pre><p>Creates a license file.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>name::AbstractString</code>: Name of a license supported by PkgTemplates. Available licenses can be seen <a href="https://github.com/invenia/PkgTemplates.jl/tree/master/templates/licenses">here</a>.</li><li><code>path::Union{AbstractString, Nothing}</code>: Path to a custom license file. This keyword takes priority over <code>name</code>.</li><li><code>destination::AbstractString</code>: File destination, relative to the repository root. For example, <code>&quot;LICENSE.md&quot;</code> might be desired.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/a41187be1ca920d203f146602432a3f31e3ecfcd/src/plugins/license.jl#LL1-L14">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Git" href="#PkgTemplates.Git"><code>PkgTemplates.Git</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Git(; ignore=String[], ssh=false, manifest=false, gpgsign=false)</code></pre><p>Creates a Git repository and a <code>.gitignore</code> file.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>ignore::Vector{&lt;:AbstractString}</code>: Patterns to add to the <code>.gitignore</code>. See also: <a href="../developer/#PkgTemplates.gitignore"><code>gitignore</code></a>.</li><li><code>ssh::Bool</code>: Whether or not to use SSH for the remote. If left unset, HTTPS is used.</li><li><code>manifest::Bool</code>: Whether or not to commit <code>Manifest.toml</code>.</li><li><code>gpgsign::Bool</code>: Whether or not to sign commits with your GPG key. This option requires that the Git CLI is installed, and for you to have a GPG key associated with your committer identity.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L14">source</a></section></article><h3 id="Continuous-Integration-(CI)-1"><a class="docs-heading-anchor" href="#Continuous-Integration-(CI)-1">Continuous Integration (CI)</a><a class="docs-heading-anchor-permalink" href="#Continuous-Integration-(CI)-1" title="Permalink"></a></h3><p>These plugins will create the configuration files of common CI services for you.</p><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.AppVeyor" href="#PkgTemplates.AppVeyor"><code>PkgTemplates.AppVeyor</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">AppVeyor(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/appveyor.yml&quot;,
x86=false,
coverage=true,
extra_versions=[&quot;1.0&quot;, &quot;1.0&quot;, &quot;nightly&quot;],
)</code></pre><p>Integrates your packages with <a href="https://appveyor.com">AppVeyor</a> via <a href="https://github.com/JuliaCI/Appveyor.jl">AppVeyor.jl</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.appveyor.yml</code>.</li><li><code>x86::Bool</code>: Whether or not to run builds on 32-bit systems, in addition to the default 64-bit builds.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L18">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.CirrusCI" href="#PkgTemplates.CirrusCI"><code>PkgTemplates.CirrusCI</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">CirrusCI(;
)</code></pre><p>Integrates your packages with <a href="https://appveyor.com">AppVeyor</a> via <a href="https://github.com/JuliaCI/Appveyor.jl">AppVeyor.jl</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.appveyor.yml</code>.</li><li><code>x86::Bool</code>: Whether or not to run builds on 32-bit systems, in addition to the default 64-bit builds.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L18">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.CirrusCI" href="#PkgTemplates.CirrusCI"><code>PkgTemplates.CirrusCI</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">CirrusCI(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/cirrus.yml&quot;,
image=&quot;freebsd-12-0-release-amd64&quot;,
coverage=true,
extra_versions=[&quot;1.0&quot;, &quot;1.0&quot;, &quot;nightly&quot;],
)</code></pre><p>Integrates your packages with <a href="https://cirrus-ci.org">Cirrus CI</a> via <a href="https://github.com/ararslan/CirrusCI.jl">CirrusCI.jl</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.cirrus.yml</code>.</li><li><code>image::AbstractString</code>: The FreeBSD image to be used.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>Code coverage submission from Cirrus CI is not yet supported by <a href="https://github.com/JuliaCI/Coverage.jl">Coverage.jl</a>.</p></div></div></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L21">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.DroneCI" href="#PkgTemplates.DroneCI"><code>PkgTemplates.DroneCI</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">DroneCI(;
)</code></pre><p>Integrates your packages with <a href="https://cirrus-ci.org">Cirrus CI</a> via <a href="https://github.com/ararslan/CirrusCI.jl">CirrusCI.jl</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.cirrus.yml</code>.</li><li><code>image::AbstractString</code>: The FreeBSD image to be used.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Code coverage submission from Cirrus CI is not yet supported by <a href="https://github.com/JuliaCI/Coverage.jl">Coverage.jl</a>.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L21">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.DroneCI" href="#PkgTemplates.DroneCI"><code>PkgTemplates.DroneCI</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">DroneCI(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/drone.star&quot;,
amd64=true,
arm=false,
arm64=false,
extra_versions=[&quot;1.0&quot;, &quot;1.0&quot;],
)</code></pre><p>Integrates your packages with <a href="https://drone.io">Drone CI</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.drone.star</code>.</li><li><code>destination::AbstractString</code>: File destination, relative to the repository root. For example, you might want to generate a <code>.drone.yml</code> instead of the default Starlark file.</li><li><code>amd64::Bool</code>: Whether or not to run builds on AMD64.</li><li><code>arm::Bool</code>: Whether or not to run builds on ARM (32-bit).</li><li><code>arm64::Bool</code>: Whether or not to run builds on ARM64.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>Nightly Julia is not supported.</p></div></div></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L22">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.GitHubActions" href="#PkgTemplates.GitHubActions"><code>PkgTemplates.GitHubActions</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">GitHubActions(;
)</code></pre><p>Integrates your packages with <a href="https://drone.io">Drone CI</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.drone.star</code>.</li><li><code>destination::AbstractString</code>: File destination, relative to the repository root. For example, you might want to generate a <code>.drone.yml</code> instead of the default Starlark file.</li><li><code>amd64::Bool</code>: Whether or not to run builds on AMD64.</li><li><code>arm::Bool</code>: Whether or not to run builds on ARM (32-bit).</li><li><code>arm64::Bool</code>: Whether or not to run builds on ARM64.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Nightly Julia is not supported.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L22">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.GitHubActions" href="#PkgTemplates.GitHubActions"><code>PkgTemplates.GitHubActions</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">GitHubActions(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/github/workflows/ci.yml&quot;,
destination=&quot;ci.yml&quot;,
linux=true,
@ -33,11 +33,11 @@ julia&gt; t(&quot;PkgName&quot;)</code></pre></div></div><a class="source-link"
x86=false,
coverage=true,
extra_versions=[&quot;1.0&quot;, &quot;1.0&quot;],
)</code></pre><p>Integrates your packages with <a href="https://github.com/features/actions">GitHub Actions</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for the workflow file.</li><li><code>destination::AbstractString</code>: Destination of the worflow file, relative to <code>.github/workflows</code>.</li><li><code>linux::Bool</code>: Whether or not to run builds on Linux.</li><li><code>osx::Bool</code>: Whether or not to run builds on OSX (MacOS).</li><li><code>windows::Bool</code>: Whether or not to run builds on Windows.</li><li><code>x64::Bool</code>: Whether or not to run builds on 64-bit architecture.</li><li><code>x86::Bool</code>: Whether or not to run builds on 32-bit architecture.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. Another code coverage plugin such as <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>If using coverage plugins, don&#39;t forget to manually add your API tokens as secrets, as described <a href="https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets#creating-encrypted-secrets">here</a>.</p></div></div><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>Nightly Julia is not supported.</p></div></div></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L34">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.GitLabCI" href="#PkgTemplates.GitLabCI"><code>PkgTemplates.GitLabCI</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">GitLabCI(;
)</code></pre><p>Integrates your packages with <a href="https://github.com/features/actions">GitHub Actions</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for the workflow file.</li><li><code>destination::AbstractString</code>: Destination of the worflow file, relative to <code>.github/workflows</code>.</li><li><code>linux::Bool</code>: Whether or not to run builds on Linux.</li><li><code>osx::Bool</code>: Whether or not to run builds on OSX (MacOS).</li><li><code>windows::Bool</code>: Whether or not to run builds on Windows.</li><li><code>x64::Bool</code>: Whether or not to run builds on 64-bit architecture.</li><li><code>x86::Bool</code>: Whether or not to run builds on 32-bit architecture.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. Another code coverage plugin such as <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If using coverage plugins, don&#39;t forget to manually add your API tokens as secrets, as described <a href="https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets#creating-encrypted-secrets">here</a>.</p></div></div><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Nightly Julia is not supported.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L34">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.GitLabCI" href="#PkgTemplates.GitLabCI"><code>PkgTemplates.GitLabCI</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">GitLabCI(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/gitlab-ci.yml&quot;,
coverage=true,
extra_versions=[&quot;1.0&quot;, &quot;1.0&quot;],
)</code></pre><p>Integrates your packages with <a href="https://docs.gitlab.com/ce/ci">GitLab CI</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.gitlab-ci.yml</code>.</li><li><code>coverage::Bool</code>: Whether or not to compute code coverage.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><p><strong>GitLab Pages</strong></p><p>Documentation can be generated by including a <code>Documenter{GitLabCI}</code> plugin. See <a href="#PkgTemplates.Documenter"><code>Documenter</code></a> for more information.</p><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>Nightly Julia is not supported.</p></div></div></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L20">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.TravisCI" href="#PkgTemplates.TravisCI"><code>PkgTemplates.TravisCI</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">TravisCI(;
)</code></pre><p>Integrates your packages with <a href="https://docs.gitlab.com/ce/ci">GitLab CI</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.gitlab-ci.yml</code>.</li><li><code>coverage::Bool</code>: Whether or not to compute code coverage.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul><p><strong>GitLab Pages</strong></p><p>Documentation can be generated by including a <code>Documenter{GitLabCI}</code> plugin. See <a href="#PkgTemplates.Documenter"><code>Documenter</code></a> for more information.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Nightly Julia is not supported.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L20">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.TravisCI" href="#PkgTemplates.TravisCI"><code>PkgTemplates.TravisCI</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">TravisCI(;
file=&quot;~/build/invenia/PkgTemplates.jl/templates/travis.yml&quot;,
linux=true,
osx=true,
@ -47,13 +47,13 @@ julia&gt; t(&quot;PkgName&quot;)</code></pre></div></div><a class="source-link"
arm64=false,
coverage=true,
extra_versions=[&quot;1.0&quot;, &quot;1.0&quot;, &quot;nightly&quot;],
)</code></pre><p>Integrates your packages with <a href="https://travis-ci.com">Travis CI</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.travis.yml</code>.</li><li><code>linux::Bool</code>: Whether or not to run builds on Linux.</li><li><code>osx::Bool</code>: Whether or not to run builds on OSX (MacOS).</li><li><code>windows::Bool</code>: Whether or not to run builds on Windows.</li><li><code>x64::Bool</code>: Whether or not to run builds on 64-bit architecture.</li><li><code>x86::Bool</code>: Whether or not to run builds on 32-bit architecture.</li><li><code>arm64::Bool</code>: Whether or not to run builds on the ARM64 architecture.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. Another code coverage plugin such as <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L26">source</a></section><h3><a class="nav-anchor" id="Code-Coverage-1" href="#Code-Coverage-1">Code Coverage</a></h3><p>These plugins will enable code coverage reporting from CI.</p><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Codecov" href="#PkgTemplates.Codecov"><code>PkgTemplates.Codecov</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Codecov(; file=nothing)</code></pre><p>Sets up code coverage submission from CI to <a href="https://codecov.io">Codecov</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::Union{AbstractString, Nothing}</code>: Template file for <code>.codecov.yml</code>, or <code>nothing</code> to create no file.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L8">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Coveralls" href="#PkgTemplates.Coveralls"><code>PkgTemplates.Coveralls</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Coveralls(; file=nothing)</code></pre><p>Sets up code coverage submission from CI to <a href="https://coveralls.io">Coveralls</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::Union{AbstractString, Nothing}</code>: Template file for <code>.coveralls.yml</code>, or <code>nothing</code> to create no file.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L8">source</a></section><h3><a class="nav-anchor" id="Documentation-1" href="#Documentation-1">Documentation</a></h3><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Documenter" href="#PkgTemplates.Documenter"><code>PkgTemplates.Documenter</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Documenter{T&lt;:Union{TravisCI, GitLabCI, Nothing}}(;
)</code></pre><p>Integrates your packages with <a href="https://travis-ci.com">Travis CI</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>.travis.yml</code>.</li><li><code>linux::Bool</code>: Whether or not to run builds on Linux.</li><li><code>osx::Bool</code>: Whether or not to run builds on OSX (MacOS).</li><li><code>windows::Bool</code>: Whether or not to run builds on Windows.</li><li><code>x64::Bool</code>: Whether or not to run builds on 64-bit architecture.</li><li><code>x86::Bool</code>: Whether or not to run builds on 32-bit architecture.</li><li><code>arm64::Bool</code>: Whether or not to run builds on the ARM64 architecture.</li><li><code>coverage::Bool</code>: Whether or not to publish code coverage. Another code coverage plugin such as <a href="#PkgTemplates.Codecov"><code>Codecov</code></a> must also be included.</li><li><code>extra_versions::Vector</code>: Extra Julia versions to test, as strings or <code>VersionNumber</code>s.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L26">source</a></section></article><h3 id="Code-Coverage-1"><a class="docs-heading-anchor" href="#Code-Coverage-1">Code Coverage</a><a class="docs-heading-anchor-permalink" href="#Code-Coverage-1" title="Permalink"></a></h3><p>These plugins will enable code coverage reporting from CI.</p><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Codecov" href="#PkgTemplates.Codecov"><code>PkgTemplates.Codecov</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Codecov(; file=nothing)</code></pre><p>Sets up code coverage submission from CI to <a href="https://codecov.io">Codecov</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::Union{AbstractString, Nothing}</code>: Template file for <code>.codecov.yml</code>, or <code>nothing</code> to create no file.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L8">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Coveralls" href="#PkgTemplates.Coveralls"><code>PkgTemplates.Coveralls</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Coveralls(; file=nothing)</code></pre><p>Sets up code coverage submission from CI to <a href="https://coveralls.io">Coveralls</a>.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::Union{AbstractString, Nothing}</code>: Template file for <code>.coveralls.yml</code>, or <code>nothing</code> to create no file.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L8">source</a></section></article><h3 id="Documentation-1"><a class="docs-heading-anchor" href="#Documentation-1">Documentation</a><a class="docs-heading-anchor-permalink" href="#Documentation-1" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Documenter" href="#PkgTemplates.Documenter"><code>PkgTemplates.Documenter</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Documenter{T&lt;:Union{TravisCI, GitLabCI, Nothing}}(;
make_jl=&quot;~/build/invenia/PkgTemplates.jl/templates/docs/make.jl&quot;,
index_md=&quot;~/build/invenia/PkgTemplates.jl/templates/docs/src/index.md&quot;,
assets=String[],
canonical_url=make_canonical(T),
makedocs_kwargs=Dict{Symbol, Any}(),
)</code></pre><p>Sets up documentation generation via <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a>. Documentation deployment depends on <code>T</code>, where <code>T</code> is some supported CI plugin, or <code>Nothing</code> to only support local documentation builds.</p><p><strong>Supported Type Parameters</strong></p><ul><li><code>GitHubActions</code>: Deploys documentation to <a href="https://pages.github.com">GitHub Pages</a> with the help of <a href="#PkgTemplates.GitHubActions"><code>GitHubActions</code></a>.</li><li><code>TravisCI</code>: Deploys documentation to <a href="https://pages.github.com">GitHub Pages</a> with the help of <a href="#PkgTemplates.TravisCI"><code>TravisCI</code></a>.</li><li><code>GitLabCI</code>: Deploys documentation to <a href="https://pages.gitlab.com">GitLab Pages</a> with the help of <a href="#PkgTemplates.GitLabCI"><code>GitLabCI</code></a>.</li><li><code>Nothing</code> (default): Does not set up documentation deployment.</li></ul><p><strong>Keyword Arguments</strong></p><ul><li><code>make_jl::AbstractString</code>: Template file for <code>make.jl</code>.</li><li><code>index_md::AbstractString</code>: Template file for <code>index.md</code>.</li><li><code>assets::Vector{&lt;:AbstractString}</code>: Extra assets for the generated site.</li><li><code>canonical_url::Union{Function, Nothing}</code>: A function to generate the site&#39;s canonical URL. The default value will compute GitHub Pages and GitLab Pages URLs for <a href="#PkgTemplates.TravisCI"><code>TravisCI</code></a> and <a href="#PkgTemplates.GitLabCI"><code>GitLabCI</code></a>, respectively. If set to <code>nothing</code>, no canonical URL is set.</li><li><code>makedocs_kwargs::Dict{Symbol}</code>: Extra keyword arguments to be inserted into <code>makedocs</code>.</li></ul><div class="admonition note"><div class="admonition-title">Note</div><div class="admonition-text"><p>If deploying documentation with Travis CI, don&#39;t forget to complete <a href="https://juliadocs.github.io/Documenter.jl/stable/man/hosting/#SSH-Deploy-Keys-1">the required configuration</a>.</p></div></div></div></div><a class="source-link" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/39350c10de378964a3fa673176602c93d532acdb/src/plugins/documenter.jl#LL9-L44">source</a></section><h3><a class="nav-anchor" id="Miscellaneous-1" href="#Miscellaneous-1">Miscellaneous</a></h3><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Develop" href="#PkgTemplates.Develop"><code>PkgTemplates.Develop</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Develop()</code></pre><p>Adds generated packages to the current environment by <code>dev</code>ing them. See the Pkg documentation <a href="https://julialang.github.io/Pkg.jl/v1/managing-packages/#Developing-packages-1">here</a> for more details.</p></div></div><a class="source-link" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/39350c10de378964a3fa673176602c93d532acdb/src/plugins/develop.jl#LL1-L8">source</a></section><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.Citation" href="#PkgTemplates.Citation"><code>PkgTemplates.Citation</code></a><span class="docstring-category">Type</span>.</div><div><div><pre><code class="language-julia">Citation(; file=&quot;~/build/invenia/PkgTemplates.jl/templates/CITATION.bib&quot;, readme=false)</code></pre><p>Creates a <code>CITATION.bib</code> file for citing package repositories.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>CITATION.bib</code>.</li><li><code>readme::Bool</code>: Whether or not to include a section about citing in the README.</li></ul></div></div><a class="source-link" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L8">source</a></section><h2><a class="nav-anchor" id="A-More-Complicated-Example-1" href="#A-More-Complicated-Example-1">A More Complicated Example</a></h2><p>Here are a few example templates that use the options and plugins explained above.</p><p>This one includes plugins suitable for a project hosted on GitHub, and some other customizations:</p><pre><code class="language-julia">Template(;
)</code></pre><p>Sets up documentation generation via <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a>. Documentation deployment depends on <code>T</code>, where <code>T</code> is some supported CI plugin, or <code>Nothing</code> to only support local documentation builds.</p><p><strong>Supported Type Parameters</strong></p><ul><li><code>GitHubActions</code>: Deploys documentation to <a href="https://pages.github.com">GitHub Pages</a> with the help of <a href="#PkgTemplates.GitHubActions"><code>GitHubActions</code></a>.</li><li><code>TravisCI</code>: Deploys documentation to <a href="https://pages.github.com">GitHub Pages</a> with the help of <a href="#PkgTemplates.TravisCI"><code>TravisCI</code></a>.</li><li><code>GitLabCI</code>: Deploys documentation to <a href="https://pages.gitlab.com">GitLab Pages</a> with the help of <a href="#PkgTemplates.GitLabCI"><code>GitLabCI</code></a>.</li><li><code>Nothing</code> (default): Does not set up documentation deployment.</li></ul><p><strong>Keyword Arguments</strong></p><ul><li><code>make_jl::AbstractString</code>: Template file for <code>make.jl</code>.</li><li><code>index_md::AbstractString</code>: Template file for <code>index.md</code>.</li><li><code>assets::Vector{&lt;:AbstractString}</code>: Extra assets for the generated site.</li><li><code>canonical_url::Union{Function, Nothing}</code>: A function to generate the site&#39;s canonical URL. The default value will compute GitHub Pages and GitLab Pages URLs for <a href="#PkgTemplates.TravisCI"><code>TravisCI</code></a> and <a href="#PkgTemplates.GitLabCI"><code>GitLabCI</code></a>, respectively. If set to <code>nothing</code>, no canonical URL is set.</li><li><code>makedocs_kwargs::Dict{Symbol}</code>: Extra keyword arguments to be inserted into <code>makedocs</code>.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If deploying documentation with Travis CI, don&#39;t forget to complete <a href="https://juliadocs.github.io/Documenter.jl/stable/man/hosting/#SSH-Deploy-Keys-1">the required configuration</a>.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/a41187be1ca920d203f146602432a3f31e3ecfcd/src/plugins/documenter.jl#LL9-L44">source</a></section></article><h3 id="Miscellaneous-1"><a class="docs-heading-anchor" href="#Miscellaneous-1">Miscellaneous</a><a class="docs-heading-anchor-permalink" href="#Miscellaneous-1" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Develop" href="#PkgTemplates.Develop"><code>PkgTemplates.Develop</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Develop()</code></pre><p>Adds generated packages to the current environment by <code>dev</code>ing them. See the Pkg documentation <a href="https://julialang.github.io/Pkg.jl/v1/managing-packages/#Developing-packages-1">here</a> for more details.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/a41187be1ca920d203f146602432a3f31e3ecfcd/src/plugins/develop.jl#LL1-L8">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.Citation" href="#PkgTemplates.Citation"><code>PkgTemplates.Citation</code></a><span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia">Citation(; file=&quot;~/build/invenia/PkgTemplates.jl/templates/CITATION.bib&quot;, readme=false)</code></pre><p>Creates a <code>CITATION.bib</code> file for citing package repositories.</p><p><strong>Keyword Arguments</strong></p><ul><li><code>file::AbstractString</code>: Template file for <code>CITATION.bib</code>.</li><li><code>readme::Bool</code>: Whether or not to include a section about citing in the README.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaLang/julia/blob/3af96bcefcb0aec559d4652fd75e1bc3fcfe99da/base/#L0-L8">source</a></section></article><h2 id="A-More-Complicated-Example-1"><a class="docs-heading-anchor" href="#A-More-Complicated-Example-1">A More Complicated Example</a><a class="docs-heading-anchor-permalink" href="#A-More-Complicated-Example-1" title="Permalink"></a></h2><p>Here are a few example templates that use the options and plugins explained above.</p><p>This one includes plugins suitable for a project hosted on GitHub, and some other customizations:</p><pre><code class="language-julia">Template(;
user=&quot;my-username&quot;,
dir=&quot;~/code&quot;,
authors=&quot;Acme Corp&quot;,
@ -73,7 +73,7 @@ julia&gt; t(&quot;PkgName&quot;)</code></pre></div></div><a class="source-link"
GitLabCI(),
Documenter{GitLabCI}(),
],
)</code></pre><h2><a class="nav-anchor" id="Custom-Template-Files-1" href="#Custom-Template-Files-1">Custom Template Files</a></h2><div class="admonition note"><div class="admonition-title">Templates vs Templating</div><div class="admonition-text"><p>This documentation refers plenty to <a href="#PkgTemplates.Template"><code>Template</code></a>s, the package&#39;s main type, but it also refers to &quot;template files&quot; and &quot;text templating&quot;, which are plaintext files with placeholders to be filled with data, and the technique of filling those placeholders with data, respectively.</p><p>These concepts should be familiar if you&#39;ve used <a href="https://palletsprojects.com/p/jinja">Jinja</a> or <a href="https://mustache.github.io">Mustache</a> (Mustache is the particular flavour used by PkgTemplates, via <a href="https://github.com/jverzani/Mustache.jl">Mustache.jl</a>). Please keep the difference between these two things in mind!</p></div></div><p>Many plugins support a <code>file</code> argument or similar, which sets the path to the template file to be used for generating files. Each plugin has a sensible default that should make sense for most people, but you might have a specialized workflow that requires a totally different template file.</p><p>If that&#39;s the case, a basic understanding of <a href="https://mustache.github.io">Mustache</a>&#39;s syntax is required. Here&#39;s an example template file:</p><pre><code class="language-none">Hello, {{{name}}}.
)</code></pre><h2 id="Custom-Template-Files-1"><a class="docs-heading-anchor" href="#Custom-Template-Files-1">Custom Template Files</a><a class="docs-heading-anchor-permalink" href="#Custom-Template-Files-1" title="Permalink"></a></h2><div class="admonition is-info"><header class="admonition-header">Templates vs Templating</header><div class="admonition-body"><p>This documentation refers plenty to <a href="#PkgTemplates.Template"><code>Template</code></a>s, the package&#39;s main type, but it also refers to &quot;template files&quot; and &quot;text templating&quot;, which are plaintext files with placeholders to be filled with data, and the technique of filling those placeholders with data, respectively.</p><p>These concepts should be familiar if you&#39;ve used <a href="https://palletsprojects.com/p/jinja">Jinja</a> or <a href="https://mustache.github.io">Mustache</a> (Mustache is the particular flavour used by PkgTemplates, via <a href="https://github.com/jverzani/Mustache.jl">Mustache.jl</a>). Please keep the difference between these two things in mind!</p></div></div><p>Many plugins support a <code>file</code> argument or similar, which sets the path to the template file to be used for generating files. Each plugin has a sensible default that should make sense for most people, but you might have a specialized workflow that requires a totally different template file.</p><p>If that&#39;s the case, a basic understanding of <a href="https://mustache.github.io">Mustache</a>&#39;s syntax is required. Here&#39;s an example template file:</p><pre><code class="language-none">Hello, {{{name}}}.
{{#weather}}
It&#39;s {{{weather}}} outside.
@ -109,9 +109,9 @@ I have the following things:
- Here&#39;s a thing: c
- John is happy
- Jane is sad</code></pre><h2><a class="nav-anchor" id="Extending-Existing-Plugins-1" href="#Extending-Existing-Plugins-1">Extending Existing Plugins</a></h2><p>Most of the existing plugins generate a file from a template file. If you want to use custom template files, you may run into situations where the data passed into the templating engine is not sufficient. In this case, you can look into implementing <a href="#PkgTemplates.user_view"><code>user_view</code></a> to supply whatever data is necessary for your use case.</p><section class="docstring"><div class="docstring-header"><a class="docstring-binding" id="PkgTemplates.user_view" href="#PkgTemplates.user_view"><code>PkgTemplates.user_view</code></a><span class="docstring-category">Function</span>.</div><div><div><pre><code class="language-julia">user_view(::Plugin, ::Template, pkg::AbstractString) -&gt; Dict{String, Any}</code></pre><p>The same as <a href="../developer/#PkgTemplates.view"><code>view</code></a>, but for use by package <em>users</em> for extension.</p><p>Values returned by this function will override those from <a href="../developer/#PkgTemplates.view"><code>view</code></a> when the keys are the same.</p></div></div><a class="source-link" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/39350c10de378964a3fa673176602c93d532acdb/src/plugin.jl#LL32-L39">source</a></section><p>For example, suppose you were using the <a href="#PkgTemplates.Readme"><code>Readme</code></a> plugin with a custom template file that looked like this:</p><pre><code class="language-md"># {{PKG}}
- Jane is sad</code></pre><h2 id="Extending-Existing-Plugins-1"><a class="docs-heading-anchor" href="#Extending-Existing-Plugins-1">Extending Existing Plugins</a><a class="docs-heading-anchor-permalink" href="#Extending-Existing-Plugins-1" title="Permalink"></a></h2><p>Most of the existing plugins generate a file from a template file. If you want to use custom template files, you may run into situations where the data passed into the templating engine is not sufficient. In this case, you can look into implementing <a href="#PkgTemplates.user_view"><code>user_view</code></a> to supply whatever data is necessary for your use case.</p><article class="docstring"><header><a class="docstring-binding" id="PkgTemplates.user_view" href="#PkgTemplates.user_view"><code>PkgTemplates.user_view</code></a><span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia">user_view(::Plugin, ::Template, pkg::AbstractString) -&gt; Dict{String, Any}</code></pre><p>The same as <a href="../developer/#PkgTemplates.view"><code>view</code></a>, but for use by package <em>users</em> for extension.</p><p>Values returned by this function will override those from <a href="../developer/#PkgTemplates.view"><code>view</code></a> when the keys are the same.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/invenia/PkgTemplates.jl/blob/a41187be1ca920d203f146602432a3f31e3ecfcd/src/plugin.jl#LL32-L39">source</a></section></article><p>For example, suppose you were using the <a href="#PkgTemplates.Readme"><code>Readme</code></a> plugin with a custom template file that looked like this:</p><pre><code class="language-md"># {{PKG}}
Created on *{{TODAY}}*.</code></pre><p>The <a href="../developer/#PkgTemplates.view"><code>view</code></a> function supplies a value for <code>PKG</code>, but it does not supply a value for <code>TODAY</code>. Rather than override <a href="../developer/#PkgTemplates.view"><code>view</code></a>, we can implement this function to get both the default values and whatever else we need to add.</p><pre><code class="language-julia">user_view(::Readme, ::Template, ::AbstractString) = Dict(&quot;TODAY&quot; =&gt; today())</code></pre><h2><a class="nav-anchor" id="Saving-Templates-1" href="#Saving-Templates-1">Saving Templates</a></h2><p>One of the main reasons for PkgTemplates&#39; existence is for new packages to be consistent. This means using the same template more than once, so we want a way to save a template to be used later.</p><p>Here&#39;s my recommendation for loading a template whenever it&#39;s needed:</p><pre><code class="language-julia">function template()
Created on *{{TODAY}}*.</code></pre><p>The <a href="../developer/#PkgTemplates.view"><code>view</code></a> function supplies a value for <code>PKG</code>, but it does not supply a value for <code>TODAY</code>. Rather than override <a href="../developer/#PkgTemplates.view"><code>view</code></a>, we can implement this function to get both the default values and whatever else we need to add.</p><pre><code class="language-julia">user_view(::Readme, ::Template, ::AbstractString) = Dict(&quot;TODAY&quot; =&gt; today())</code></pre><h2 id="Saving-Templates-1"><a class="docs-heading-anchor" href="#Saving-Templates-1">Saving Templates</a><a class="docs-heading-anchor-permalink" href="#Saving-Templates-1" title="Permalink"></a></h2><p>One of the main reasons for PkgTemplates&#39; existence is for new packages to be consistent. This means using the same template more than once, so we want a way to save a template to be used later.</p><p>Here&#39;s my recommendation for loading a template whenever it&#39;s needed:</p><pre><code class="language-julia">function template()
@eval using PkgTemplates
Template(; #= ... =#)
end</code></pre><p>Add this to your <code>startup.jl</code>, and you can create your template from anywhere, without incurring any startup cost.</p><p>Another strategy is to write the string representation of the template to a Julia file:</p><pre><code class="language-julia">const t = Template(; #= ... =#)
@ -121,4 +121,4 @@ open(&quot;template.jl&quot;, &quot;w&quot;) do io
end</code></pre><p>Then the template is just an <code>include</code> away:</p><pre><code class="language-julia">const t = include(&quot;template.jl&quot;)</code></pre><p>The only disadvantage to this approach is that the saved template is much less human-readable than code you wrote yourself.</p><p>One more method of saving templates is to simply use the Serialization package in the standard library:</p><pre><code class="language-julia">const t = Template(; #= ... =#)
using Serialization
open(io -&gt; serialize(io, t), &quot;template.bin&quot;, &quot;w&quot;)</code></pre><p>Then simply <code>deserialize</code> to load:</p><pre><code class="language-julia">using Serialization
const t = open(deserialize, &quot;template.bin&quot;)</code></pre><p>This approach has the same disadvantage as the previous one, and the serialization format is not guaranteed to be stable across Julia versions.</p><footer><hr/><a class="previous" href="../"><span class="direction">Previous</span><span class="title">Home</span></a><a class="next" href="../developer/"><span class="direction">Next</span><span class="title">Developer Guide</span></a></footer></article></body></html>
const t = open(deserialize, &quot;template.bin&quot;)</code></pre><p>This approach has the same disadvantage as the previous one, and the serialization format is not guaranteed to be stable across Julia versions.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Home</a><a class="docs-footer-nextpage" href="../developer/">Developer Guide »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Tuesday 17 December 2019 06:44">Tuesday 17 December 2019</span>. Using Julia version 1.0.5.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>