mirror of
https://github.com/jlengrand/jreleaser.github.io.git
synced 2026-03-10 08:31:25 +00:00
Add initial docs
This commit is contained in:
@@ -6,6 +6,7 @@ plugins {
|
||||
jbake {
|
||||
configuration['asciidoctor.attributes.export'] = true
|
||||
configuration['asciidoctor.attributes.export.prefix'] = 'jbake-'
|
||||
configuration['jreleaser-version'] = '0.1.0-SNAPSHOT'
|
||||
|
||||
version = '2.6.5'
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* Sticky footer styles
|
||||
-------------------------------------------------- */
|
||||
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
/* The html and body elements cannot have any padding or margin. */
|
||||
}
|
||||
|
||||
/* Wrapper for page content to push down footer */
|
||||
#wrap {
|
||||
min-height: 100%;
|
||||
height: auto !important;
|
||||
height: 100%;
|
||||
/* Negative indent footer by it's height */
|
||||
margin: 0 auto -60px;
|
||||
}
|
||||
|
||||
/* Set the fixed height of the footer here */
|
||||
#push,
|
||||
#footer {
|
||||
height: 60px;
|
||||
}
|
||||
#footer {
|
||||
background-color: #f5f5f5;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Lastly, apply responsive CSS fixes as necessary */
|
||||
@media (max-width: 767px) {
|
||||
#footer {
|
||||
margin-left: -20px;
|
||||
margin-right: -20px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Custom page CSS
|
||||
-------------------------------------------------- */
|
||||
/* Not required for template or sticky footer method. */
|
||||
|
||||
#wrap > .container {
|
||||
padding-top: 60px;
|
||||
}
|
||||
.container .credit {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
/*code {
|
||||
font-size: 80%;
|
||||
}*/
|
||||
47
src/jbake/assets/css/bootstrap-grid.css
vendored
47
src/jbake/assets/css/bootstrap-grid.css
vendored
@@ -1,8 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap Grid v4.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 The Bootstrap Authors
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Bootstrap Grid v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
@@ -15,39 +15,12 @@ html {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.container {
|
||||
max-width: 540px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
max-width: 720px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.container {
|
||||
max-width: 960px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.container {
|
||||
max-width: 1140px;
|
||||
}
|
||||
}
|
||||
|
||||
.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
|
||||
.container,
|
||||
.container-fluid,
|
||||
.container-sm,
|
||||
.container-md,
|
||||
.container-lg,
|
||||
.container-xl {
|
||||
width: 100%;
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
|
||||
File diff suppressed because one or more lines are too long
10
src/jbake/assets/css/bootstrap-grid.min.css
vendored
10
src/jbake/assets/css/bootstrap-grid.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
32
src/jbake/assets/css/bootstrap-reboot.css
vendored
32
src/jbake/assets/css/bootstrap-reboot.css
vendored
@@ -1,8 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 The Bootstrap Authors
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
*,
|
||||
@@ -24,7 +24,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
@@ -133,12 +133,12 @@ a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:not([href]) {
|
||||
a:not([href]):not([class]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):hover {
|
||||
a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -155,6 +155,7 @@ pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
-ms-overflow-style: scrollbar;
|
||||
}
|
||||
|
||||
figure {
|
||||
@@ -185,6 +186,7 @@ caption {
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
label {
|
||||
@@ -196,9 +198,8 @@ button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
@@ -222,6 +223,10 @@ select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role="button"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
@@ -254,13 +259,6 @@ input[type="checkbox"] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input[type="date"],
|
||||
input[type="time"],
|
||||
input[type="datetime-local"],
|
||||
input[type="month"] {
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
|
||||
File diff suppressed because one or more lines are too long
10
src/jbake/assets/css/bootstrap-reboot.min.css
vendored
10
src/jbake/assets/css/bootstrap-reboot.min.css
vendored
@@ -1,8 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 The Bootstrap Authors
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
|
||||
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
|
||||
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
||||
File diff suppressed because one or more lines are too long
386
src/jbake/assets/css/bootstrap.css
vendored
386
src/jbake/assets/css/bootstrap.css
vendored
@@ -1,8 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap v4.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 The Bootstrap Authors
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Bootstrap v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
--blue: #007bff;
|
||||
@@ -31,7 +31,7 @@
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
@@ -163,12 +163,12 @@ a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:not([href]) {
|
||||
a:not([href]):not([class]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):hover {
|
||||
a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -185,6 +185,7 @@ pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
-ms-overflow-style: scrollbar;
|
||||
}
|
||||
|
||||
figure {
|
||||
@@ -215,6 +216,7 @@ caption {
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
label {
|
||||
@@ -226,9 +228,8 @@ button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
@@ -252,6 +253,10 @@ select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role="button"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
@@ -284,13 +289,6 @@ input[type="checkbox"] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input[type="date"],
|
||||
input[type="time"],
|
||||
input[type="datetime-local"],
|
||||
input[type="month"] {
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
@@ -541,39 +539,12 @@ pre code {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.container {
|
||||
max-width: 540px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
max-width: 720px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.container {
|
||||
max-width: 960px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.container {
|
||||
max-width: 1140px;
|
||||
}
|
||||
}
|
||||
|
||||
.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
|
||||
.container,
|
||||
.container-fluid,
|
||||
.container-sm,
|
||||
.container-md,
|
||||
.container-lg,
|
||||
.container-xl {
|
||||
width: 100%;
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
@@ -2100,6 +2071,15 @@ pre code {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
input[type="date"].form-control,
|
||||
input[type="time"].form-control,
|
||||
input[type="datetime-local"].form-control,
|
||||
input[type="month"].form-control {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
select.form-control:focus::-ms-value {
|
||||
color: #495057;
|
||||
background-color: #fff;
|
||||
@@ -2247,6 +2227,7 @@ textarea.form-control {
|
||||
.valid-tooltip {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 5;
|
||||
display: none;
|
||||
max-width: 100%;
|
||||
@@ -2259,6 +2240,11 @@ textarea.form-control {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.form-row > .col > .valid-tooltip,
|
||||
.form-row > [class*="col-"] > .valid-tooltip {
|
||||
left: 5px;
|
||||
}
|
||||
|
||||
.was-validated :valid ~ .valid-feedback,
|
||||
.was-validated :valid ~ .valid-tooltip,
|
||||
.is-valid ~ .valid-feedback,
|
||||
@@ -2288,7 +2274,7 @@ textarea.form-control {
|
||||
.was-validated .custom-select:valid, .custom-select.is-valid {
|
||||
border-color: #28a745;
|
||||
padding-right: calc(0.75em + 2.3125rem);
|
||||
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
||||
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
|
||||
}
|
||||
|
||||
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
|
||||
@@ -2347,6 +2333,7 @@ textarea.form-control {
|
||||
.invalid-tooltip {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 5;
|
||||
display: none;
|
||||
max-width: 100%;
|
||||
@@ -2359,6 +2346,11 @@ textarea.form-control {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.form-row > .col > .invalid-tooltip,
|
||||
.form-row > [class*="col-"] > .invalid-tooltip {
|
||||
left: 5px;
|
||||
}
|
||||
|
||||
.was-validated :invalid ~ .invalid-feedback,
|
||||
.was-validated :invalid ~ .invalid-tooltip,
|
||||
.is-invalid ~ .invalid-feedback,
|
||||
@@ -2388,7 +2380,7 @@ textarea.form-control {
|
||||
.was-validated .custom-select:invalid, .custom-select.is-invalid {
|
||||
border-color: #dc3545;
|
||||
padding-right: calc(0.75em + 2.3125rem);
|
||||
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
||||
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
|
||||
}
|
||||
|
||||
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
|
||||
@@ -2517,7 +2509,6 @@ textarea.form-control {
|
||||
color: #212529;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
@@ -2551,6 +2542,10 @@ textarea.form-control {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.btn:not(:disabled):not(.disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
a.btn.disabled,
|
||||
fieldset:disabled a.btn {
|
||||
pointer-events: none;
|
||||
@@ -3121,7 +3116,6 @@ fieldset:disabled a.btn {
|
||||
|
||||
.btn-link:focus, .btn-link.focus {
|
||||
text-decoration: underline;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btn-link:disabled, .btn-link.disabled {
|
||||
@@ -3403,7 +3397,7 @@ input[type="button"].btn-block {
|
||||
.dropdown-item:hover, .dropdown-item:focus {
|
||||
color: #16181b;
|
||||
text-decoration: none;
|
||||
background-color: #f8f9fa;
|
||||
background-color: #e9ecef;
|
||||
}
|
||||
|
||||
.dropdown-item.active, .dropdown-item:active {
|
||||
@@ -3413,7 +3407,7 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.dropdown-item.disabled, .dropdown-item:disabled {
|
||||
color: #6c757d;
|
||||
color: #adb5bd;
|
||||
pointer-events: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
@@ -3580,8 +3574,9 @@ input[type="button"].btn-block {
|
||||
.input-group > .custom-select,
|
||||
.input-group > .custom-file {
|
||||
position: relative;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
-ms-flex: 1 1 auto;
|
||||
flex: 1 1 auto;
|
||||
width: 1%;
|
||||
min-width: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@@ -3611,12 +3606,6 @@ input[type="button"].btn-block {
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
.input-group > .form-control:not(:last-child),
|
||||
.input-group > .custom-select:not(:last-child) {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.input-group > .form-control:not(:first-child),
|
||||
.input-group > .custom-select:not(:first-child) {
|
||||
border-top-left-radius: 0;
|
||||
@@ -3631,14 +3620,23 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.input-group > .custom-file:not(:last-child) .custom-file-label,
|
||||
.input-group > .custom-file:not(:last-child) .custom-file-label::after {
|
||||
.input-group > .custom-file:not(:first-child) .custom-file-label {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.input-group:not(.has-validation) > .form-control:not(:last-child),
|
||||
.input-group:not(.has-validation) > .custom-select:not(:last-child),
|
||||
.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label::after {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.input-group > .custom-file:not(:first-child) .custom-file-label {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
.input-group.has-validation > .form-control:nth-last-child(n + 3),
|
||||
.input-group.has-validation > .custom-select:nth-last-child(n + 3),
|
||||
.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.input-group-prepend,
|
||||
@@ -3741,8 +3739,10 @@ input[type="button"].btn-block {
|
||||
|
||||
.input-group > .input-group-prepend > .btn,
|
||||
.input-group > .input-group-prepend > .input-group-text,
|
||||
.input-group > .input-group-append:not(:last-child) > .btn,
|
||||
.input-group > .input-group-append:not(:last-child) > .input-group-text,
|
||||
.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
|
||||
.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
|
||||
.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
|
||||
.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
|
||||
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
||||
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
|
||||
border-top-right-radius: 0;
|
||||
@@ -3761,9 +3761,12 @@ input[type="button"].btn-block {
|
||||
|
||||
.custom-control {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: block;
|
||||
min-height: 1.5rem;
|
||||
padding-left: 1.5rem;
|
||||
-webkit-print-color-adjust: exact;
|
||||
color-adjust: exact;
|
||||
}
|
||||
|
||||
.custom-control-inline {
|
||||
@@ -3836,7 +3839,7 @@ input[type="button"].btn-block {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
content: "";
|
||||
background: no-repeat 50% / 50% 50%;
|
||||
background: 50% / 50% 50% no-repeat;
|
||||
}
|
||||
|
||||
.custom-checkbox .custom-control-label::before {
|
||||
@@ -3925,7 +3928,7 @@ input[type="button"].btn-block {
|
||||
line-height: 1.5;
|
||||
color: #495057;
|
||||
vertical-align: middle;
|
||||
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
|
||||
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: 0.25rem;
|
||||
-webkit-appearance: none;
|
||||
@@ -3994,6 +3997,7 @@ input[type="button"].btn-block {
|
||||
width: 100%;
|
||||
height: calc(1.5em + 0.75rem + 2px);
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
@@ -4023,6 +4027,7 @@ input[type="button"].btn-block {
|
||||
z-index: 1;
|
||||
height: calc(1.5em + 0.75rem + 2px);
|
||||
padding: 0.375rem 0.75rem;
|
||||
overflow: hidden;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #495057;
|
||||
@@ -4059,7 +4064,7 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.custom-range:focus {
|
||||
outline: none;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.custom-range:focus::-webkit-slider-thumb {
|
||||
@@ -4254,11 +4259,8 @@ input[type="button"].btn-block {
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-item {
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link {
|
||||
margin-bottom: -1px;
|
||||
border: 1px solid transparent;
|
||||
border-top-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0.25rem;
|
||||
@@ -4297,12 +4299,14 @@ input[type="button"].btn-block {
|
||||
background-color: #007bff;
|
||||
}
|
||||
|
||||
.nav-fill > .nav-link,
|
||||
.nav-fill .nav-item {
|
||||
-ms-flex: 1 1 auto;
|
||||
flex: 1 1 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.nav-justified > .nav-link,
|
||||
.nav-justified .nav-item {
|
||||
-ms-flex-preferred-size: 0;
|
||||
flex-basis: 0;
|
||||
@@ -4412,8 +4416,12 @@ input[type="button"].btn-block {
|
||||
height: 1.5em;
|
||||
vertical-align: middle;
|
||||
content: "";
|
||||
background: no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
background: 50% / 100% 100% no-repeat;
|
||||
}
|
||||
|
||||
.navbar-nav-scroll {
|
||||
max-height: 75vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
@media (max-width: 575.98px) {
|
||||
@@ -4447,6 +4455,9 @@ input[type="button"].btn-block {
|
||||
-ms-flex-wrap: nowrap;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.navbar-expand-sm .navbar-nav-scroll {
|
||||
overflow: visible;
|
||||
}
|
||||
.navbar-expand-sm .navbar-collapse {
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
@@ -4489,6 +4500,9 @@ input[type="button"].btn-block {
|
||||
-ms-flex-wrap: nowrap;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.navbar-expand-md .navbar-nav-scroll {
|
||||
overflow: visible;
|
||||
}
|
||||
.navbar-expand-md .navbar-collapse {
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
@@ -4531,6 +4545,9 @@ input[type="button"].btn-block {
|
||||
-ms-flex-wrap: nowrap;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.navbar-expand-lg .navbar-nav-scroll {
|
||||
overflow: visible;
|
||||
}
|
||||
.navbar-expand-lg .navbar-collapse {
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
@@ -4573,6 +4590,9 @@ input[type="button"].btn-block {
|
||||
-ms-flex-wrap: nowrap;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.navbar-expand-xl .navbar-nav-scroll {
|
||||
overflow: visible;
|
||||
}
|
||||
.navbar-expand-xl .navbar-collapse {
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
@@ -4617,6 +4637,10 @@ input[type="button"].btn-block {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
.navbar-expand .navbar-nav-scroll {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.navbar-expand .navbar-collapse {
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
@@ -4661,7 +4685,7 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.navbar-light .navbar-toggler-icon {
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
||||
}
|
||||
|
||||
.navbar-light .navbar-text {
|
||||
@@ -4709,7 +4733,7 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.navbar-dark .navbar-toggler-icon {
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
||||
}
|
||||
|
||||
.navbar-dark .navbar-text {
|
||||
@@ -4743,14 +4767,26 @@ input[type="button"].btn-block {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.card > .list-group:first-child .list-group-item:first-child {
|
||||
border-top-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0.25rem;
|
||||
.card > .list-group {
|
||||
border-top: inherit;
|
||||
border-bottom: inherit;
|
||||
}
|
||||
|
||||
.card > .list-group:last-child .list-group-item:last-child {
|
||||
border-bottom-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
.card > .list-group:first-child {
|
||||
border-top-width: 0;
|
||||
border-top-left-radius: calc(0.25rem - 1px);
|
||||
border-top-right-radius: calc(0.25rem - 1px);
|
||||
}
|
||||
|
||||
.card > .list-group:last-child {
|
||||
border-bottom-width: 0;
|
||||
border-bottom-right-radius: calc(0.25rem - 1px);
|
||||
border-bottom-left-radius: calc(0.25rem - 1px);
|
||||
}
|
||||
|
||||
.card > .card-header + .list-group,
|
||||
.card > .list-group + .card-footer {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
@@ -4792,10 +4828,6 @@ input[type="button"].btn-block {
|
||||
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
|
||||
}
|
||||
|
||||
.card-header + .list-group .list-group-item:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
padding: 0.75rem 1.25rem;
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
@@ -4825,6 +4857,7 @@ input[type="button"].btn-block {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: 1.25rem;
|
||||
border-radius: calc(0.25rem - 1px);
|
||||
}
|
||||
|
||||
.card-img,
|
||||
@@ -4936,6 +4969,10 @@ input[type="button"].btn-block {
|
||||
}
|
||||
}
|
||||
|
||||
.accordion {
|
||||
overflow-anchor: none;
|
||||
}
|
||||
|
||||
.accordion > .card {
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -4973,7 +5010,7 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.breadcrumb-item + .breadcrumb-item::before {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
padding-right: 0.5rem;
|
||||
color: #6c757d;
|
||||
content: "/";
|
||||
@@ -5283,6 +5320,7 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
padding: 0.75rem 1.25rem;
|
||||
color: inherit;
|
||||
}
|
||||
@@ -5422,6 +5460,7 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
display: flex;
|
||||
height: 1rem;
|
||||
overflow: hidden;
|
||||
line-height: 0;
|
||||
font-size: 0.75rem;
|
||||
background-color: #e9ecef;
|
||||
border-radius: 0.25rem;
|
||||
@@ -5454,8 +5493,8 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
}
|
||||
|
||||
.progress-bar-animated {
|
||||
-webkit-animation: progress-bar-stripes 1s linear infinite;
|
||||
animation: progress-bar-stripes 1s linear infinite;
|
||||
-webkit-animation: 1s linear infinite progress-bar-stripes;
|
||||
animation: 1s linear infinite progress-bar-stripes;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
@@ -5484,6 +5523,7 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
flex-direction: column;
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.list-group-item-action {
|
||||
@@ -5513,13 +5553,13 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
}
|
||||
|
||||
.list-group-item:first-child {
|
||||
border-top-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0.25rem;
|
||||
border-top-left-radius: inherit;
|
||||
border-top-right-radius: inherit;
|
||||
}
|
||||
|
||||
.list-group-item:last-child {
|
||||
border-bottom-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
border-bottom-right-radius: inherit;
|
||||
border-bottom-left-radius: inherit;
|
||||
}
|
||||
|
||||
.list-group-item.disabled, .list-group-item:disabled {
|
||||
@@ -5549,26 +5589,26 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.list-group-horizontal .list-group-item:first-child {
|
||||
.list-group-horizontal > .list-group-item:first-child {
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.list-group-horizontal .list-group-item:last-child {
|
||||
.list-group-horizontal > .list-group-item:last-child {
|
||||
border-top-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.list-group-horizontal .list-group-item.active {
|
||||
.list-group-horizontal > .list-group-item.active {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.list-group-horizontal .list-group-item + .list-group-item {
|
||||
.list-group-horizontal > .list-group-item + .list-group-item {
|
||||
border-top-width: 1px;
|
||||
border-left-width: 0;
|
||||
}
|
||||
|
||||
.list-group-horizontal .list-group-item + .list-group-item.active {
|
||||
.list-group-horizontal > .list-group-item + .list-group-item.active {
|
||||
margin-left: -1px;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
@@ -5578,22 +5618,22 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
}
|
||||
.list-group-horizontal-sm .list-group-item:first-child {
|
||||
.list-group-horizontal-sm > .list-group-item:first-child {
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-sm .list-group-item:last-child {
|
||||
.list-group-horizontal-sm > .list-group-item:last-child {
|
||||
border-top-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-sm .list-group-item.active {
|
||||
.list-group-horizontal-sm > .list-group-item.active {
|
||||
margin-top: 0;
|
||||
}
|
||||
.list-group-horizontal-sm .list-group-item + .list-group-item {
|
||||
.list-group-horizontal-sm > .list-group-item + .list-group-item {
|
||||
border-top-width: 1px;
|
||||
border-left-width: 0;
|
||||
}
|
||||
.list-group-horizontal-sm .list-group-item + .list-group-item.active {
|
||||
.list-group-horizontal-sm > .list-group-item + .list-group-item.active {
|
||||
margin-left: -1px;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
@@ -5604,22 +5644,22 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
}
|
||||
.list-group-horizontal-md .list-group-item:first-child {
|
||||
.list-group-horizontal-md > .list-group-item:first-child {
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-md .list-group-item:last-child {
|
||||
.list-group-horizontal-md > .list-group-item:last-child {
|
||||
border-top-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-md .list-group-item.active {
|
||||
.list-group-horizontal-md > .list-group-item.active {
|
||||
margin-top: 0;
|
||||
}
|
||||
.list-group-horizontal-md .list-group-item + .list-group-item {
|
||||
.list-group-horizontal-md > .list-group-item + .list-group-item {
|
||||
border-top-width: 1px;
|
||||
border-left-width: 0;
|
||||
}
|
||||
.list-group-horizontal-md .list-group-item + .list-group-item.active {
|
||||
.list-group-horizontal-md > .list-group-item + .list-group-item.active {
|
||||
margin-left: -1px;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
@@ -5630,22 +5670,22 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
}
|
||||
.list-group-horizontal-lg .list-group-item:first-child {
|
||||
.list-group-horizontal-lg > .list-group-item:first-child {
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-lg .list-group-item:last-child {
|
||||
.list-group-horizontal-lg > .list-group-item:last-child {
|
||||
border-top-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-lg .list-group-item.active {
|
||||
.list-group-horizontal-lg > .list-group-item.active {
|
||||
margin-top: 0;
|
||||
}
|
||||
.list-group-horizontal-lg .list-group-item + .list-group-item {
|
||||
.list-group-horizontal-lg > .list-group-item + .list-group-item {
|
||||
border-top-width: 1px;
|
||||
border-left-width: 0;
|
||||
}
|
||||
.list-group-horizontal-lg .list-group-item + .list-group-item.active {
|
||||
.list-group-horizontal-lg > .list-group-item + .list-group-item.active {
|
||||
margin-left: -1px;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
@@ -5656,38 +5696,36 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
}
|
||||
.list-group-horizontal-xl .list-group-item:first-child {
|
||||
.list-group-horizontal-xl > .list-group-item:first-child {
|
||||
border-bottom-left-radius: 0.25rem;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-xl .list-group-item:last-child {
|
||||
.list-group-horizontal-xl > .list-group-item:last-child {
|
||||
border-top-right-radius: 0.25rem;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.list-group-horizontal-xl .list-group-item.active {
|
||||
.list-group-horizontal-xl > .list-group-item.active {
|
||||
margin-top: 0;
|
||||
}
|
||||
.list-group-horizontal-xl .list-group-item + .list-group-item {
|
||||
.list-group-horizontal-xl > .list-group-item + .list-group-item {
|
||||
border-top-width: 1px;
|
||||
border-left-width: 0;
|
||||
}
|
||||
.list-group-horizontal-xl .list-group-item + .list-group-item.active {
|
||||
.list-group-horizontal-xl > .list-group-item + .list-group-item.active {
|
||||
margin-left: -1px;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.list-group-flush .list-group-item {
|
||||
border-right-width: 0;
|
||||
border-left-width: 0;
|
||||
.list-group-flush {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.list-group-flush .list-group-item:first-child {
|
||||
border-top-width: 0;
|
||||
.list-group-flush > .list-group-item {
|
||||
border-width: 0 0 1px;
|
||||
}
|
||||
|
||||
.list-group-flush:last-child .list-group-item:last-child {
|
||||
.list-group-flush > .list-group-item:last-child {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
@@ -5842,9 +5880,6 @@ button.close {
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
a.close.disabled {
|
||||
@@ -5852,15 +5887,14 @@ a.close.disabled {
|
||||
}
|
||||
|
||||
.toast {
|
||||
-ms-flex-preferred-size: 350px;
|
||||
flex-basis: 350px;
|
||||
max-width: 350px;
|
||||
overflow: hidden;
|
||||
font-size: 0.875rem;
|
||||
background-color: rgba(255, 255, 255, 0.85);
|
||||
background-clip: padding-box;
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
|
||||
-webkit-backdrop-filter: blur(10px);
|
||||
backdrop-filter: blur(10px);
|
||||
opacity: 0;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
@@ -5892,6 +5926,8 @@ a.close.disabled {
|
||||
background-color: rgba(255, 255, 255, 0.85);
|
||||
background-clip: padding-box;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||
border-top-left-radius: calc(0.25rem - 1px);
|
||||
border-top-right-radius: calc(0.25rem - 1px);
|
||||
}
|
||||
|
||||
.toast-body {
|
||||
@@ -5982,6 +6018,9 @@ a.close.disabled {
|
||||
.modal-dialog-centered::before {
|
||||
display: block;
|
||||
height: calc(100vh - 1rem);
|
||||
height: -webkit-min-content;
|
||||
height: -moz-min-content;
|
||||
height: min-content;
|
||||
content: "";
|
||||
}
|
||||
|
||||
@@ -6107,6 +6146,9 @@ a.close.disabled {
|
||||
}
|
||||
.modal-dialog-centered::before {
|
||||
height: calc(100vh - 3.5rem);
|
||||
height: -webkit-min-content;
|
||||
height: -moz-min-content;
|
||||
height: min-content;
|
||||
}
|
||||
.modal-sm {
|
||||
max-width: 300px;
|
||||
@@ -6131,7 +6173,7 @@ a.close.disabled {
|
||||
z-index: 1070;
|
||||
display: block;
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
@@ -6244,7 +6286,7 @@ a.close.disabled {
|
||||
z-index: 1060;
|
||||
display: block;
|
||||
max-width: 276px;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
@@ -6532,7 +6574,7 @@ a.close.disabled {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: no-repeat 50% / 100% 100%;
|
||||
background: 50% / 100% 100% no-repeat;
|
||||
}
|
||||
|
||||
.carousel-control-prev-icon {
|
||||
@@ -6621,8 +6663,8 @@ a.close.disabled {
|
||||
border: 0.25em solid currentColor;
|
||||
border-right-color: transparent;
|
||||
border-radius: 50%;
|
||||
-webkit-animation: spinner-border .75s linear infinite;
|
||||
animation: spinner-border .75s linear infinite;
|
||||
-webkit-animation: .75s linear infinite spinner-border;
|
||||
animation: .75s linear infinite spinner-border;
|
||||
}
|
||||
|
||||
.spinner-border-sm {
|
||||
@@ -6638,6 +6680,8 @@ a.close.disabled {
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6648,6 +6692,8 @@ a.close.disabled {
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6659,8 +6705,8 @@ a.close.disabled {
|
||||
background-color: currentColor;
|
||||
border-radius: 50%;
|
||||
opacity: 0;
|
||||
-webkit-animation: spinner-grow .75s linear infinite;
|
||||
animation: spinner-grow .75s linear infinite;
|
||||
-webkit-animation: .75s linear infinite spinner-grow;
|
||||
animation: .75s linear infinite spinner-grow;
|
||||
}
|
||||
|
||||
.spinner-grow-sm {
|
||||
@@ -6668,6 +6714,14 @@ a.close.disabled {
|
||||
height: 1rem;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.spinner-border,
|
||||
.spinner-grow {
|
||||
-webkit-animation-duration: 1.5s;
|
||||
animation-duration: 1.5s;
|
||||
}
|
||||
}
|
||||
|
||||
.align-baseline {
|
||||
vertical-align: baseline !important;
|
||||
}
|
||||
@@ -7933,6 +7987,26 @@ button.bg-dark:focus {
|
||||
}
|
||||
}
|
||||
|
||||
.user-select-all {
|
||||
-webkit-user-select: all !important;
|
||||
-moz-user-select: all !important;
|
||||
user-select: all !important;
|
||||
}
|
||||
|
||||
.user-select-auto {
|
||||
-webkit-user-select: auto !important;
|
||||
-moz-user-select: auto !important;
|
||||
-ms-user-select: auto !important;
|
||||
user-select: auto !important;
|
||||
}
|
||||
|
||||
.user-select-none {
|
||||
-webkit-user-select: none !important;
|
||||
-moz-user-select: none !important;
|
||||
-ms-user-select: none !important;
|
||||
user-select: none !important;
|
||||
}
|
||||
|
||||
.overflow-auto {
|
||||
overflow: auto !important;
|
||||
}
|
||||
@@ -8088,18 +8162,6 @@ button.bg-dark:focus {
|
||||
height: 100vh !important;
|
||||
}
|
||||
|
||||
.stretched-link::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
content: "";
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.m-0 {
|
||||
margin: 0 !important;
|
||||
}
|
||||
@@ -9912,6 +9974,18 @@ button.bg-dark:focus {
|
||||
}
|
||||
}
|
||||
|
||||
.stretched-link::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
content: "";
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.text-monospace {
|
||||
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
|
||||
}
|
||||
@@ -10128,7 +10202,7 @@ a.text-dark:hover, a.text-dark:focus {
|
||||
|
||||
.text-break {
|
||||
word-break: break-word !important;
|
||||
overflow-wrap: break-word !important;
|
||||
word-wrap: break-word !important;
|
||||
}
|
||||
|
||||
.text-reset {
|
||||
|
||||
File diff suppressed because one or more lines are too long
10
src/jbake/assets/css/bootstrap.min.css
vendored
10
src/jbake/assets/css/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
5
src/jbake/assets/css/navbar-top-fixed.css
Normal file
5
src/jbake/assets/css/navbar-top-fixed.css
Normal file
@@ -0,0 +1,5 @@
|
||||
/* Show it is fixed to the top */
|
||||
body {
|
||||
min-height: 75rem;
|
||||
padding-top: 4.5rem;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
|
||||
1811
src/jbake/assets/js/bootstrap.bundle.js
vendored
1811
src/jbake/assets/js/bootstrap.bundle.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
8
src/jbake/assets/js/bootstrap.bundle.min.js
vendored
8
src/jbake/assets/js/bootstrap.bundle.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1779
src/jbake/assets/js/bootstrap.js
vendored
1779
src/jbake/assets/js/bootstrap.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
8
src/jbake/assets/js/bootstrap.min.js
vendored
8
src/jbake/assets/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,30 +0,0 @@
|
||||
!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
||||
(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a=
|
||||
b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&"-"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),
|
||||
h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l==="("?++h:"\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l==="("?(++h,d[h]||(a[f]="(?:")):"\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&
|
||||
(a[f]="\\"+d[l]);for(f=0;f<c;++f)"^"===a[f]&&"^"!==a[f+1]&&(a[f]="");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,
|
||||
f:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(""+i);n.push("(?:"+s(i)+")")}return RegExp(n.join("|"),j?"gi":"g")}function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)s[j]="\n",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=
|
||||
a)}var b=/(?:^|\s)nocode(?:\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join("").replace(/\n$/,""),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?V.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function g(a){for(var j=a.e,k=[j,"pln"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w==="string")f=!1;else{var h=b[z.charAt(0)];
|
||||
if(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w="pln")}if((f=w.length>=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=
|
||||
g[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
|
||||
q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com",
|
||||
/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+
|
||||
s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
|
||||
q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
|
||||
c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute("value",d);var r=j.createElement("ol");
|
||||
r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
|
||||
a.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\bMSIE\s(\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display="none";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,
|
||||
t))){s&&(G=G.replace(d,"\r"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement("span");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
||||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||||
O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||||
Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
|
||||
V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
|
||||
/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(C([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
|
||||
["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}),
|
||||
["cs"]);p(v({keywords:N,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:Q,
|
||||
hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
|
||||
p(C([],[["str",/^[\S\s]+/]]),["regex"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});
|
||||
return b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\??prettify\b/.test(o):m!==3||/\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&
|
||||
o.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=" prettyprinted";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=U(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue("white-space"):0)&&"pre"===o.substring(0,3);u=j.linenums;if(!(u=u==="true"||+u))u=(u=k.match(/\blinenums\b(?::(\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=
|
||||
{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):"function"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\blang(?:uage)?-([\w.]+)(?!\S)/,e=/\bprettyprint\b/,v=/\bprettyprinted\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,
|
||||
h={};g()}};typeof define==="function"&&define.amd&&define("google-code-prettify",[],function(){return Y})})();}()
|
||||
25
src/jbake/content/guide/configuration/announce/index.adoc
Normal file
25
src/jbake/content/guide/configuration/announce/index.adoc
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
= Announce
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Releases can be announced to several media once they have been successfully created.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
announce:
|
||||
# Enable or disable all configured announcers.
|
||||
# Defaults to `true`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
----
|
||||
|
||||
The following announcers are currently available:
|
||||
|
||||
:leveloffset: 3
|
||||
include::sdkman.adoc[]
|
||||
include::twitter.adoc[]
|
||||
include::zulip.adoc[]
|
||||
:leveloffset: 2
|
||||
56
src/jbake/content/guide/configuration/announce/sdkman.adoc
Normal file
56
src/jbake/content/guide/configuration/announce/sdkman.adoc
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
= Sdkman
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Publishes a release to link:https://sdkman.io[SDKMAN!]. Please follow the instructions at
|
||||
link:https://sdkman.io/vendors[] to register your project as a candidate and obtain publishing credentials.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
announce:
|
||||
# [optional]
|
||||
sdkman:
|
||||
|
||||
# Enable or disable this announcer.
|
||||
# Defaults to `true`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# The name of the candidate registered in thew SDKMAN! database.
|
||||
# If unspecified, will use ${project.name}.
|
||||
# [optional]
|
||||
candidate:
|
||||
|
||||
# Announce a major release if `true`, minor release if `false`.
|
||||
# Defaults to `true`.
|
||||
# [optional]
|
||||
major: true
|
||||
|
||||
# The consumer key for publishing to SDKMAN!.
|
||||
# If left unspecified, the JRELEASER_SDKMAN_CONSUMER_KEY environment variable must be defined.
|
||||
# [required]
|
||||
consumerKey:
|
||||
|
||||
# The consumer token for publishing to SDKMAN!.
|
||||
# If left unspecified, the JRELEASER_SDKMAN_CONSUMER_TOKEN environment variable must be defined.
|
||||
# [required]
|
||||
consumerToken:
|
||||
----
|
||||
|
||||
This announcer has the following considerations:
|
||||
|
||||
* No snapshot releases are supported.
|
||||
* Only `zip` artifacts are supported.
|
||||
* The default platform is set to `UNIVERSAL` if the artifact did not define a value for its `platform` field.
|
||||
* If there's more than one artifact then each artifact requires distinct `platform` values, otherwise the latest
|
||||
artifact will override any previous matches by platform.
|
||||
* Announcing will be skipped if no suitable artifacts are found.
|
||||
|
||||
Supported platform values are:
|
||||
|
||||
* `mac`, `osx`.
|
||||
* `win`, `windows`.
|
||||
* `linux`.
|
||||
|
||||
48
src/jbake/content/guide/configuration/announce/twitter.adoc
Normal file
48
src/jbake/content/guide/configuration/announce/twitter.adoc
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
= Twitter
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
:icons: font
|
||||
|
||||
Tweets a new release. You must register a new Twitter application and obtain the set of credentaials. Follow the
|
||||
instructions from link:https://developer.twitter.com/en/portal/projects-and-apps[Twitter] to complete this task.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
announce:
|
||||
# [optional]
|
||||
twitter:
|
||||
|
||||
# Enable or disable this announcer.
|
||||
# Defaults to `true`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# The consumer key.
|
||||
# If left unspecified, the JRELEASER_TWITTER_CONSUMER_KEY environment variable must be defined.
|
||||
# [required]
|
||||
consumerKey:
|
||||
|
||||
# The consumer token.
|
||||
# If left unspecified, the JRELEASER_TWITTER_CONSUMER_TOKEN environment variable must be defined.
|
||||
# [required]
|
||||
consumerToken:
|
||||
|
||||
# The access token.
|
||||
# If left unspecified, the JRELEASER_TWITTER_ACCESS_TOKEN environment variable must be defined.
|
||||
# [required]
|
||||
accessToken:
|
||||
|
||||
# The access token secret.
|
||||
# If left unspecified, the JRELEASER_TWITTER_ACCESS_TOKEN_SECRET environment variable must be defined.
|
||||
# [required]
|
||||
accessTokenSecret:
|
||||
|
||||
# The announcement message.
|
||||
# Review the available <<_templates,template>> names.
|
||||
# [optional]
|
||||
status: icon:rocket[] {{projectNameCapitalized}} {{projectVersion}} has been released! {{releaseNotesUrl}}
|
||||
----
|
||||
|
||||
|
||||
50
src/jbake/content/guide/configuration/announce/zulip.adoc
Normal file
50
src/jbake/content/guide/configuration/announce/zulip.adoc
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
= Zulip
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
:icons: font
|
||||
|
||||
Enables posting a message to a link:https://zulip.com/[Zulip] server. You must procure an account and apiKey to use
|
||||
this announcer.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
announce:
|
||||
# [optional]
|
||||
zulip:
|
||||
|
||||
# Enable or disable this announcer.
|
||||
# Defaults to `true`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# The Zulip account (typically an email address) to use.
|
||||
# [required]
|
||||
account: announce-bot@my.zulipchat.com
|
||||
|
||||
# The Zulip server endpoint
|
||||
# [required]
|
||||
apiHost: https://my.zulipchat.com/api/v1
|
||||
|
||||
# The ApiKey associated with the given account.
|
||||
# If left unspecified, the JRELEASER_ZULIP_API_KEY environment variable must be defined.
|
||||
# [required]
|
||||
apiKey: true
|
||||
|
||||
# The channel where the message will be sent to
|
||||
# Defaults to `announce`.
|
||||
# [optional]
|
||||
channel: announce
|
||||
|
||||
# The messages' subject.
|
||||
# Review the available <<_templates,template>> names.
|
||||
# [optional]
|
||||
subject: {{projectNameCapitalized}} {{projectVersion}}
|
||||
|
||||
# The announcement message.
|
||||
# Review the available <<_templates,template>> names.
|
||||
# [optional]
|
||||
message: icon:rocket[] {{projectNameCapitalized}} {{projectVersion}} has been released! {{releaseNotesUrl}}
|
||||
----
|
||||
|
||||
103
src/jbake/content/guide/configuration/distributions.adoc
Normal file
103
src/jbake/content/guide/configuration/distributions.adoc
Normal file
@@ -0,0 +1,103 @@
|
||||
|
||||
= Distributions
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Distributions define artifacts that may be published using supported packages and announced with supported announcers.
|
||||
|
||||
Each distribution is responsible for defining a unique name and a list of artifacts that belong to it.
|
||||
|
||||
JReleaser requires at least 1 distribution to be configured. A distribution requires at least 1 artifact to be listed.
|
||||
|
||||
Distributions inherit the configuration specified in the <<_packagers,packagers>> block and may override it.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [required]
|
||||
distributions:
|
||||
# A named distribution
|
||||
# [required]
|
||||
app:
|
||||
|
||||
# Enables or disables the distribution.
|
||||
# Defaults to `true`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# The distribution type.
|
||||
# Used to determine packager templates.
|
||||
# Supported values are: [BINARY].
|
||||
# [required]
|
||||
type: BINARY
|
||||
|
||||
# Name of the executable launcher.
|
||||
# If left undefined, will use {$distribution.name}.
|
||||
# [optional]
|
||||
executable: app
|
||||
|
||||
# The minimum Java version required by consumers to run the application.
|
||||
# If left undefined, will use {project.javaVersion}.
|
||||
# [optional]
|
||||
javaVersion: 8
|
||||
|
||||
# Maven coordinates: groupId.
|
||||
# f left undefined, will use {project.groupId}
|
||||
# [optional]
|
||||
groupId: com.acme
|
||||
|
||||
# Maven coordinates: artifactId.
|
||||
# f left undefined, will use {project.artifactId}
|
||||
# [optional]
|
||||
artifactId: app
|
||||
|
||||
# The application's entry point.
|
||||
# Required by <<_jbang,jbang>>.
|
||||
# [optional]
|
||||
mainClass: com.acme.Main
|
||||
|
||||
# A list of tags.
|
||||
# [optional]
|
||||
tags:
|
||||
- cli
|
||||
- awesome
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `distribution`, i.e, `distributionFoo`.
|
||||
foo: bar
|
||||
|
||||
# A list of artifacts.
|
||||
# At least on entry must be present
|
||||
# [required]
|
||||
artifacts:
|
||||
- path: path/to/{{distributionName}}-{{projectVersion}}.zip
|
||||
# If left undefined, will use {distribution.javaVersion}.
|
||||
javaVersion: 8
|
||||
- path: path/to/{{distributionName}}-{{projectVersion}}-mac.zip
|
||||
platform: osx
|
||||
- path: path/to/{{distributionName}}-{{projectVersion}}-win.zip
|
||||
platform: windows
|
||||
----
|
||||
|
||||
It's recommended to list universal artifacts first, then platform specific.
|
||||
|
||||
The value of `platform` is dictated by the normalized values detected by
|
||||
link:https://github.com/trustin/os-maven-plugin[os-maven-plugin]. You may use the plain `platform` value or append a
|
||||
`arch` classifier. The following values are currently recognized
|
||||
|
||||
[horizontal]
|
||||
platform:: `aix`, `hpux`, `os400`, `linux`, `osx`, `freebsd`, `openbsd`, `netbsd`, `sunos`, `windows`, `zos`.
|
||||
arch:: `x86_64`, `x86_32`, `itanium_64`, `itanium_32`, `sparc_32`, `sparc_64`, `arm_32`, `aarch_64`, `mips_32`,
|
||||
`mipsel_32`, `mips_64`, `mipsel_64`, `ppc_32`, `ppcle_32`, `ppc_64`, `ppcle_64`, `s390_32`, `s390_64`, `riscv`
|
||||
|
||||
Examples:
|
||||
|
||||
* `osx`
|
||||
* `osx-arm`
|
||||
* `windows`
|
||||
* `linux`
|
||||
* `linux-x86_32`
|
||||
|
||||
|
||||
19
src/jbake/content/guide/configuration/files.adoc
Normal file
19
src/jbake/content/guide/configuration/files.adoc
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
= Files
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
You can define a set of additional files that should be uploaded as part of the release. These files may also
|
||||
be checksumed and signed before uploading.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# Defines a list of files.
|
||||
# Each entry must define a path: field.
|
||||
# The path may be relative to the project's basedir or absolute.
|
||||
# [optional]
|
||||
files:
|
||||
- path: path/to/some/file.txt
|
||||
- path: path/to/another/file.md
|
||||
----
|
||||
19
src/jbake/content/guide/configuration/index.adoc
Normal file
19
src/jbake/content/guide/configuration/index.adoc
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
= Configuration
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
This section describes elements that can be configured in `.jrelease.yml`. This file can be generated by running
|
||||
`jreleaser init --format yml` or start from scratch. Other configuration formats besides YAML may be supported as well,
|
||||
such as JSON, the <<_maven,Maven>> DSL, the <<_gradle,Gradle>> DSL.
|
||||
|
||||
:leveloffset: 2
|
||||
include::project.adoc[]
|
||||
include::signing.adoc[]
|
||||
include::release/index.adoc[]
|
||||
include::packagers/index.adoc[]
|
||||
include::distributions.adoc[]
|
||||
include::files.adoc[]
|
||||
include::announce/index.adoc[]
|
||||
include::templates.adoc[]
|
||||
:leveloffset: 1
|
||||
147
src/jbake/content/guide/configuration/packagers/chocolatey.adoc
Normal file
147
src/jbake/content/guide/configuration/packagers/chocolatey.adoc
Normal file
@@ -0,0 +1,147 @@
|
||||
|
||||
= Chocolatey
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Publishes packages to link:https://chocolatey.org[].
|
||||
|
||||
NOTE: At the moment, only artifacts with `.zip` extension may be packaged with Chocolatey.
|
||||
|
||||
WARNING: Local publication of packages is currently not supported. Please set `remoteBuild` to `true` and trigger a
|
||||
build in CI. Local publication will be added at a later release.
|
||||
|
||||
WARNING: Snapshots are not supported.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
packagers:
|
||||
# [optional]
|
||||
chocolatey:
|
||||
# Enables or disables Chocolatey.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# Directory with file templates used to prepare the Chocolatey distribution
|
||||
# Defaults to `src/distribution/${distribution.name}/chocolatey`.
|
||||
# If specified, path must exist.
|
||||
# [optional]
|
||||
templateDirectory: path/to/chocolatey/templates
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `chocolatey`, i.e, `chocolateyFoo`.
|
||||
foo: bar
|
||||
|
||||
# The username that can publish Chocolatey packages.
|
||||
# If left unspecified, the release owner will be used.
|
||||
# [required]
|
||||
username: duke
|
||||
|
||||
# Whether to build the package on a remote server or locally.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
remoteBuild: false
|
||||
|
||||
# Git author used to commit to the bucket repository.
|
||||
# [optional]
|
||||
commitAuthor:
|
||||
# Name used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit name.
|
||||
# [optional]
|
||||
name: jreleaser-bot
|
||||
|
||||
# E-mail used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit email.
|
||||
# [optional]
|
||||
email: pass:[jreleaser-bot@jreleaser.org]
|
||||
|
||||
# Git repository to push the package it remoteBuild is `true`.
|
||||
# Defaults are shown.
|
||||
# [optional]
|
||||
bucket:
|
||||
|
||||
# The owner of the bucket repository.
|
||||
# Defaults to the same owner as the release repository.
|
||||
# [optional]
|
||||
owner: duke
|
||||
|
||||
# The name of the bucket repository.
|
||||
# Defaults to `${distribution.name}-chocolatey-bucket`.
|
||||
# [optional]
|
||||
name: app-chocolatey-bucket
|
||||
|
||||
# Username used for authoring commits. Must have write access to the bucket repository.
|
||||
# Defaults to the same username as the release repository.
|
||||
# [optional]
|
||||
username: duke
|
||||
|
||||
# Password or OAuth token with write access to the bucket repository.
|
||||
# If left unspecified, the JRELEASER_CHOCOLATEY_GITHUB_TOKEN environment variable may be defined.
|
||||
# [optional]
|
||||
token: 1n$3cUrEP@s$w0rd
|
||||
----
|
||||
|
||||
Assuming that the current version is `1.2.3`, and a distribution named `app`, the above configuration will generate
|
||||
the following files in `out/jreleaser/app/prepare`, which may be published to `app-chocolatey-bucket`
|
||||
|
||||
[source,xml]
|
||||
[subs="verbatim"]
|
||||
.app.nuspec
|
||||
----
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Do not remove this test for UTF-8: if “Ω” doesn’t appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
|
||||
<metadata>
|
||||
<!-- required -->
|
||||
<id>app</id>
|
||||
<version>1.2.3</version>
|
||||
<authors>Duke</authors>
|
||||
<description>Sample app</description>
|
||||
<!-- optional -->
|
||||
<title>app</title>
|
||||
<projectUrl>https://acme.com/app</projectUrl>
|
||||
<license type="expression">Apache-2.0</license>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<tags></tags>
|
||||
<summary>Sample app</summary>
|
||||
<releaseNotes>https://github.com/duke/app/releases/tag/v1.2.3</releaseNotes>
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="tools\**" target="tools" />
|
||||
</files>
|
||||
</package>
|
||||
----
|
||||
|
||||
[source]
|
||||
.tools/chocolateyinstall.ps1
|
||||
----
|
||||
$tools = Split-Path $MyInvocation.MyCommand.Definition
|
||||
$package = Split-Path $tools
|
||||
$app_home = Join-Path $package 'app-1.2.3'
|
||||
$app_bat = Join-Path $app_home 'bin/app.cmd'
|
||||
|
||||
Install-ChocolateyZipPackage `
|
||||
-PackageName 'app' `
|
||||
-Url 'https://github.com/duke/app/releases/download/v1.2.3/app-1.2.3.zip' `
|
||||
-Checksum '812121a64bbd3f49286f7b0be3c9209068f71fcf9541f313708979602e8de466' `
|
||||
-ChecksumType 'sha256' `
|
||||
-UnzipLocation $package
|
||||
|
||||
Install-BinFile -Name 'app' -Path $app_bat
|
||||
----
|
||||
|
||||
[source]
|
||||
.tools/chocolateyuninstall.ps1
|
||||
----
|
||||
$tools = Split-Path $MyInvocation.MyCommand.Definition
|
||||
$package = Split-Path $tools
|
||||
$app_home = Join-Path $package 'app-1.2.3'
|
||||
$app_bat = Join-Path $app_home 'bin/app.cmd'
|
||||
|
||||
Uninstall-BinFile -Name 'app' -Path $app_bat
|
||||
----
|
||||
|
||||
129
src/jbake/content/guide/configuration/packagers/homebrew.adoc
Normal file
129
src/jbake/content/guide/configuration/packagers/homebrew.adoc
Normal file
@@ -0,0 +1,129 @@
|
||||
|
||||
= Homebrew
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
The `brew` section specifies how the formula should be created. You can check the
|
||||
link:https://github.com/Homebrew/brew/blob/master/docs/How-to-Create-and-Maintain-a-Tap.md[Homebrew documentation] and the
|
||||
link:https://github.com/Homebrew/brew/blob/master/docs/Formula-Cookbook.md[formula cookbook] for more details.
|
||||
|
||||
NOTE: At the moment, only artifacts with `.zip` extension may be packaged with Homebrew.
|
||||
|
||||
WARNING: Snapshots are not supported.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
packagers:
|
||||
# [optional]
|
||||
brew:
|
||||
# Enables or disables Homebrew.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# Directory with file templates used to prepare the Homebrew distribution
|
||||
# Defaults to `src/distribution/${distribution.name}/brew`.
|
||||
# If specified, path must exist.
|
||||
# [optional]
|
||||
templateDirectory: path/to/brew/templates
|
||||
|
||||
# A map of Homebrew dependencies.
|
||||
# The key `:java` will be added automatically if not defined.
|
||||
# [optional]
|
||||
dependencies:
|
||||
# key in symbol format
|
||||
# mapped as `depends_on :key1 => "value1"`
|
||||
':key1': value1
|
||||
|
||||
# plain key
|
||||
# mapped as `depends_on "key2" => "value2"`
|
||||
key2: value2
|
||||
|
||||
# key in symbol format without value
|
||||
# mapped as `depends_on `:key3`
|
||||
':key3': 'null'
|
||||
|
||||
# plain key without value
|
||||
# mapped as `depends_on `"key4"`
|
||||
key4: 'null'
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
|
||||
foo: bar
|
||||
|
||||
# Git author used to commit to the tap repository.
|
||||
# [optional]
|
||||
commitAuthor:
|
||||
# Name used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit name.
|
||||
# [optional]
|
||||
name: jreleaser-bot
|
||||
|
||||
# E-mail used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit email.
|
||||
# [optional]
|
||||
email: pass:[jreleaser-bot@jreleaser.org]
|
||||
|
||||
# Git repository to push the formula to.
|
||||
# Defaults are shown.
|
||||
# [optional]
|
||||
tap:
|
||||
|
||||
# The owner of the tap repository.
|
||||
# Defaults to the same owner as the release repository.
|
||||
# [optional]
|
||||
owner: duke
|
||||
|
||||
# The name of the tap repository.
|
||||
# Defaults to `homebrew-tap`.
|
||||
# [optional]
|
||||
name: homebrew-tap
|
||||
|
||||
# Username used for authoring commits. Must have write access to the tap repository.
|
||||
# Defaults to the same username as the release repository.
|
||||
# [optional]
|
||||
username: duke
|
||||
|
||||
# Password or OAuth token with write access to the tap repository.
|
||||
# If left unspecified, the JRELEASER_HOMEBREW_GITHUB_TOKEN environment variable may be defined.
|
||||
# [optional]
|
||||
token: 1n$3cUrEP@s$w0rd
|
||||
----
|
||||
|
||||
Assuming that the current version is `1.2.3`, and a distribution named `app`, the above configuration will generate
|
||||
a `app.rb` formula in the `duke/homebrew-tap` repository:
|
||||
|
||||
[source,ruby]
|
||||
----
|
||||
class App < Formula
|
||||
desc "Sample app"
|
||||
homepage "https://acme.com/app"
|
||||
version "1.2.3"
|
||||
url "https://github.com/duke/app/releases/download/v1.2.3/app-1.2.3.zip"
|
||||
sha256 "812121a64bbd3f49286f7b0be3c9209068f71fcf9541f313708979602e8de466"
|
||||
license "Apache-2.0"
|
||||
|
||||
bottle :unneeded
|
||||
|
||||
depends_on :java => "8"
|
||||
|
||||
def install
|
||||
libexec.install Dir["*"]
|
||||
bin.install_symlink "#{libexec}/bin/app"
|
||||
end
|
||||
|
||||
test do
|
||||
output = shell_output("#{bin}/app --version")
|
||||
assert_match "1.2.3", output
|
||||
end
|
||||
end
|
||||
----
|
||||
|
||||
NOTE: JReleaser does not generate a valid homebrew-core formula. The generated formulas are meant to be published as
|
||||
link:https://docs.brew.sh/Taps.html[homebrew taps], and in their current form will not be accepted in any of the official
|
||||
homebrew repositories.
|
||||
|
||||
48
src/jbake/content/guide/configuration/packagers/index.adoc
Normal file
48
src/jbake/content/guide/configuration/packagers/index.adoc
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
= Packagers
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
After a release is created at the desired remote Git host, JReleaser can generate and publish specialized packagers
|
||||
into their respective distribution media, such a Git repository you have access to, or a packager store.
|
||||
|
||||
The sections defined here can be applied globally (for all distributions) or per distribution. Global configuration is
|
||||
inherited by distribution configuration. Here's for example how <<_homebrew,Homebrew>> and <<_scoop,Scoop>> can be activated
|
||||
for all distributions:
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
packagers:
|
||||
brew:
|
||||
enabled: true
|
||||
scoop:
|
||||
enabled: true
|
||||
----
|
||||
|
||||
Given this setup here's how a distribution may inherit that configuration and disable Scoop while keeping Homebrew active:
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
packagers:
|
||||
brew:
|
||||
enabled: true
|
||||
scoop:
|
||||
enabled: true
|
||||
|
||||
distributions:
|
||||
app:
|
||||
scoop:
|
||||
enabled: false
|
||||
artifacts:
|
||||
- path: path/to/app-1.0.0.zip
|
||||
----
|
||||
|
||||
:leveloffset: 3
|
||||
include::chocolatey.adoc[]
|
||||
include::homebrew.adoc[]
|
||||
include::jbang.adoc[]
|
||||
include::scoop.adoc[]
|
||||
include::snap.adoc[]
|
||||
:leveloffset: 2
|
||||
141
src/jbake/content/guide/configuration/packagers/jbang.adoc
Normal file
141
src/jbake/content/guide/configuration/packagers/jbang.adoc
Normal file
@@ -0,0 +1,141 @@
|
||||
|
||||
= Jbang
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Unleash the power of Java with link:https://github.com/jbangdev/jbang[jbang]. You can publish distributions as jbang
|
||||
catalogs.
|
||||
|
||||
Each separate executable will have it's own jbang script. All executables will be collected in the same catalog. Existing
|
||||
catalogs located at the target repository will be merged into a single catalog.
|
||||
|
||||
Snapshots are supported, in which case executables will bear the `-snapshot` suffix in their alias.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
packagers:
|
||||
# [optional]
|
||||
jbang:
|
||||
# Enables or disables Jbang.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# Directory with file templates used to prepare the Jbang distribution
|
||||
# Defaults to `src/distribution/${distribution.name}/jbang`.
|
||||
# If specified, path must exist.
|
||||
# [optional]
|
||||
templateDirectory: path/to/jbang/templates
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `jbang`, i.e, `jbangFoo`.
|
||||
foo: bar
|
||||
|
||||
# Git author used to commit to the catalog repository.
|
||||
# [optional]
|
||||
commitAuthor:
|
||||
# Name used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit name.
|
||||
# [optional]
|
||||
name: jreleaser-bot
|
||||
|
||||
# E-mail used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit email.
|
||||
# [optional]
|
||||
email: pass:[jreleaser-bot@jreleaser.org]
|
||||
|
||||
# Git repository to push the catalog to.
|
||||
# Defaults are shown.
|
||||
# [optional]
|
||||
catalog:
|
||||
|
||||
# The owner of the catalog repository.
|
||||
# Defaults to the same owner as the release repository.
|
||||
# [optional]
|
||||
owner: duke
|
||||
|
||||
# The name of the catalog repository.
|
||||
# Defaults to `jbang-catalog`.
|
||||
# [optional]
|
||||
name: jbang-catalog
|
||||
|
||||
# Username used for authoring commits. Must have write access to the catalog repository.
|
||||
# Defaults to the same username as the release repository.
|
||||
# [optional]
|
||||
username: duke
|
||||
|
||||
# Password or OAuth token with write access to the catalog repository.
|
||||
# If left unspecified, the JRELEASER_JBANG_GITHUB_TOKEN environment variable may be defined.
|
||||
# [optional]
|
||||
token: 1n$3cUrEP@s$w0rd
|
||||
----
|
||||
|
||||
NOTE: You must define a value for `mainClass` in the owning distribution.
|
||||
|
||||
NOTE: When the project's version is snapshot, unless manually updated, the default prepared template assumes JARs may be
|
||||
resolved from link:https://jitpack.io[].
|
||||
|
||||
Assuming that the current version is `1.2.3`, and a distribution named `app`, the above configuration will generate
|
||||
a `app.java` file in the `duke/jbang-catalog` repository:
|
||||
|
||||
[source,json]
|
||||
.jbang-catalog.json
|
||||
----
|
||||
{
|
||||
"aliases": {
|
||||
"app": {
|
||||
"script-ref": "app.java",
|
||||
"description": "Sample app"
|
||||
}
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
[source,java]
|
||||
.app.java
|
||||
----
|
||||
//usr/bin/env jbang "$0" "$@" ; exit $?
|
||||
//JAVA 8
|
||||
//DEPS com.acme:app:1.2.3
|
||||
|
||||
public class app {
|
||||
public static void main(String... args) throws Exception {
|
||||
com.acme.Main.main(args);
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
When the version is snapshot then the catalog and the script template change to:
|
||||
|
||||
[source,json]
|
||||
.jbang-catalog.json
|
||||
----
|
||||
{
|
||||
"aliases": {
|
||||
"app-snapshot": {
|
||||
"script-ref": "app_snapshot.java",
|
||||
"description": "Sample app"
|
||||
}
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
[source,java]
|
||||
.app_snapshot.java
|
||||
----
|
||||
//usr/bin/env jbang "$0" "$@" ; exit $?
|
||||
//JAVA 8
|
||||
//REPOS jitpack
|
||||
//DEPS com.github.duke:app:main-SNAPSHOT
|
||||
|
||||
public class app_snapshot {
|
||||
public static void main(String... args) throws Exception {
|
||||
com.acme.Main.main(args);
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
128
src/jbake/content/guide/configuration/packagers/scoop.adoc
Normal file
128
src/jbake/content/guide/configuration/packagers/scoop.adoc
Normal file
@@ -0,0 +1,128 @@
|
||||
|
||||
= Scoop
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
JReleaser can generate and publish a _Scoop App Manifest_ into a repository that you have access to.
|
||||
|
||||
The `scoop` section specifies how the manifest should be created.
|
||||
|
||||
NOTE: At the moment, only artifacts with `.zip` extension may be packaged with Scoop.
|
||||
|
||||
WARNING: Snapshots are not supported.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
packagers:
|
||||
# [optional]
|
||||
scoop:
|
||||
# Enables or disables Scoop.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# Directory with file templates used to prepare the Scoop distribution
|
||||
# Defaults to `src/distribution/${distribution.name}/scoop`.
|
||||
# If specified, path must exist.
|
||||
# [optional]
|
||||
templateDirectory: path/to/scoop/templates
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `scoop`, i.e, `scoopFoo`.
|
||||
foo: bar
|
||||
|
||||
# URL used to check the latest version.
|
||||
# Defaults to the releaser's `latestReleaseUrlFormat`.
|
||||
# [optional]
|
||||
checkverUrl:
|
||||
|
||||
# URL used to download a new version.
|
||||
# Defaults to the releaser's `downloadUrlFormat`.
|
||||
# [optional]
|
||||
autoupdateUrl:
|
||||
|
||||
# Git author used to commit to the bucket repository.
|
||||
# [optional]
|
||||
commitAuthor:
|
||||
# Name used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit name.
|
||||
# [optional]
|
||||
name: jreleaser-bot
|
||||
|
||||
# E-mail used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit email.
|
||||
# [optional]
|
||||
email: pass:[jreleaser-bot@jreleaser.org]
|
||||
|
||||
# Git repository to push the app manifest.
|
||||
# Defaults are shown.
|
||||
# [optional]
|
||||
bucket:
|
||||
|
||||
# The owner of the bucket repository.
|
||||
# Defaults to the same owner as the release repository.
|
||||
# [optional]
|
||||
owner: duke
|
||||
|
||||
# The name of the bucket repository.
|
||||
# Defaults to `${distribution.name}-scoop-bucket`.
|
||||
# [optional]
|
||||
name: app-scoop-bucket
|
||||
|
||||
# Username used for authoring commits. Must have write access to the bucket repository.
|
||||
# Defaults to the same username as the release repository.
|
||||
# [optional]
|
||||
username: duke
|
||||
|
||||
# Password or OAuth token with write access to the bucket repository.
|
||||
# If left unspecified, the JRELEASER_SCOOP_GITHUB_TOKEN environment variable may be defined.
|
||||
# [optional]
|
||||
token: 1n$3cUrEP@s$w0rd
|
||||
----
|
||||
|
||||
Assuming that the current version is `1.2.3`, and a distribution named `app`, the above configuration will generate
|
||||
a `manifest.json` formula in the `duke/app-scoop-bucket` repository:
|
||||
|
||||
[source,json]
|
||||
----
|
||||
{
|
||||
"homepage": "https://acme.com/app",
|
||||
"description": "Sample app",
|
||||
"version": "1.2.3",
|
||||
"license": "Apache-2.0",
|
||||
"url": "https://github.com/duke/app/releases/download/v1.2.3/app-1.2.3.zip",
|
||||
"hash": "sha256:812121a64bbd3f49286f7b0be3c9209068f71fcf9541f313708979602e8de466",
|
||||
"extract_dir": "app-1.2.3",
|
||||
"env_add_path": "bin",
|
||||
"suggest": {
|
||||
"JDK": [
|
||||
"java/oraclejdk",
|
||||
"java/openjdk"
|
||||
]
|
||||
},
|
||||
"checkver": {
|
||||
"url": "https://github.com/duke/app/releases/latest",
|
||||
"re": "v([\\d.]+).zip"
|
||||
},
|
||||
"autoupdate": {
|
||||
"url": "https://github.com/duke/app/releases/download/v1.2.3/app-$version.zip",
|
||||
"extract_dir": "app-$version",
|
||||
"hash": {
|
||||
"url": "$url.sha256"
|
||||
}
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
Your users can then install your app by doing:
|
||||
|
||||
[source]
|
||||
----
|
||||
scoop bucket add duke https://github.com/duke/app-scoop-bucket.git
|
||||
scoop install duke/app
|
||||
----
|
||||
|
||||
191
src/jbake/content/guide/configuration/packagers/snap.adoc
Normal file
191
src/jbake/content/guide/configuration/packagers/snap.adoc
Normal file
@@ -0,0 +1,191 @@
|
||||
|
||||
= Snap
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
link:http://snapcraft.io[Snaps] are a new packaging format, that will let you publish your project directly to the
|
||||
Ubuntu store. From there it will be installable in all the link:https://snapcraft.io/docs/core/install[supported Linux distros],
|
||||
with automatic and transactional updates.
|
||||
|
||||
You can read more about it in the link:https://snapcraft.io/docs/[snapcraft docs].
|
||||
|
||||
NOTE: At the moment, only artifacts with `.tar.gz` or `.tar` extension may be packaged with Snapcraft.
|
||||
|
||||
WARNING: Snapshots are not supported.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
packagers:
|
||||
# [optional]
|
||||
snap:
|
||||
# Enables or disables Snapcraft.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# Directory with file templates used to prepare the Snapcraft distribution
|
||||
# Defaults to `src/distribution/${distribution.name}/snap`.
|
||||
# If specified, path must exist.
|
||||
# [optional]
|
||||
templateDirectory: path/to/snap/templates
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `snap`, i.e, `snapFoo`.
|
||||
foo: bar
|
||||
|
||||
# Git author used to commit to the snap repository.
|
||||
# [optional]
|
||||
commitAuthor:
|
||||
# Name used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit name.
|
||||
# [optional]
|
||||
name: jreleaser-bot
|
||||
|
||||
# E-mail used when authoring commits.
|
||||
# If left undefined, will use the releaser's commit email.
|
||||
# [optional]
|
||||
email: pass:[jreleaser-bot@jreleaser.org]
|
||||
|
||||
# Exported snapcraft login credentials.
|
||||
# Will be sent to local snapcraft build with `snapcraft login --with ${exportedLogin`.
|
||||
# Required if `remoteBuild` is set to `false`.
|
||||
exportedLogin:
|
||||
|
||||
# Whether to build the package on a remote server or locally.
|
||||
# If set to `true` then the package must be configured to be built
|
||||
# via link:https://snapcraft.io[].
|
||||
# Review the docs at link:https://snapcraft.io/build[].
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
remoteBuild: false
|
||||
|
||||
# Git repository to push the package it remoteBuild is `true`.
|
||||
# Defaults are shown.
|
||||
# [optional]
|
||||
snap:
|
||||
|
||||
# The owner of the snap repository.
|
||||
# Defaults to the same owner as the release repository.
|
||||
# [optional]
|
||||
owner: duke
|
||||
|
||||
# The name of the tap repository.
|
||||
# Defaults to `homebrew-tap`.
|
||||
# [optional]
|
||||
name: homebrew-tap
|
||||
|
||||
# Username used for authoring commits. Must have write access to the snap repository.
|
||||
# Defaults to the same username as the release repository.
|
||||
# [optional]
|
||||
username: duke
|
||||
|
||||
# Password or OAuth token with write access to the snap repository.
|
||||
# If left unspecified, the JRELEASER_SNAP_GITHUB_TOKEN environment variable may be defined.
|
||||
# [optional]
|
||||
token: 1n$3cUrEP@s$w0rd
|
||||
|
||||
# A snap of type base to be used as the execution environment for this snap.
|
||||
# Valid values are:
|
||||
# * bare - Empty base snap;
|
||||
# * core - Ubuntu Core 16;
|
||||
# * core18 - Ubuntu Core 18.
|
||||
# Defaults to `core18`.
|
||||
# [optional]
|
||||
base: core18
|
||||
|
||||
# A guardrail to prevent you from releasing a snap to all your users before
|
||||
# it is ready.
|
||||
# `devel` will let you release only to the `edge` and `beta` channels in the
|
||||
# store. `stable` will let you release also to the `candidate` and `stable`
|
||||
# channels. More info about channels here:
|
||||
# link:https://snapcraft.io/docs/reference/channels[].
|
||||
# Defaults to `stable`.
|
||||
# [optional]
|
||||
grade: stable
|
||||
|
||||
# Snaps can be setup to follow three different confinement policies:
|
||||
# `strict`, `devmode` and `classic`. A strict confinement where the snap
|
||||
# can only read and write in its own namespace is recommended. Extra
|
||||
# permissions for strict snaps can be declared as `plugs` for the app, which
|
||||
# are explained later. More info about confinement here:
|
||||
# link:https://snapcraft.io/docs/reference/confinement[].
|
||||
# Defaults to `strict`.
|
||||
# [optional]
|
||||
confinement: strict
|
||||
|
||||
# List of plug names the application is associated with.
|
||||
# When a plug is connected to one of these slots, the application
|
||||
# will be granted the permissions specified for that interface.
|
||||
# If attributes are required, or the plug name does not match the
|
||||
# interface name, more details must be declared in the `plugs` field.
|
||||
# link:https://snapcraft.io/docs/reference/interfaces[].
|
||||
# [optional]
|
||||
localPlugs:
|
||||
- some_plug_name
|
||||
|
||||
# List of slot names the application is associated with.
|
||||
# When a plug is connected to one of these slots, the application
|
||||
# will be granted the permissions specified for that interface.
|
||||
# If attributes are required, or the slot name does not match the
|
||||
# interface name, more details must be declared in the `slots` field.
|
||||
# link:https://snapcraft.io/docs/reference/interfaces[].
|
||||
# [optional]
|
||||
localSlots:
|
||||
- some_slot_name
|
||||
|
||||
# Allows plugs to be configured.
|
||||
# [optional]
|
||||
plugs:
|
||||
some_plug_name:
|
||||
key: value
|
||||
|
||||
# Allows slots to be configured.
|
||||
# [optional]
|
||||
slots:
|
||||
some_slot_name:
|
||||
key: value
|
||||
read:
|
||||
- $HOME/.foo
|
||||
write:
|
||||
- $HOME/.foo
|
||||
- $HOME/.foobar
|
||||
----
|
||||
|
||||
Assuming that the current version is `1.2.3`, and a distribution named `app`, the above configuration will generate
|
||||
a `snapcraft.yaml` file `out/jreleaser/snap/prepare`, which may be published to `app-snap`
|
||||
|
||||
[source,yaml]
|
||||
.snapcraft.yaml
|
||||
----
|
||||
name: app
|
||||
base: core18
|
||||
version: 1.2.3
|
||||
license: Apache-2.0
|
||||
grade: stable
|
||||
type: app
|
||||
confinement: strict
|
||||
summary: Sample app
|
||||
description: Sample app
|
||||
|
||||
apps:
|
||||
app:
|
||||
command: bin/app
|
||||
environment:
|
||||
JAVA_HOME: $SNAP/usr/lib/jvm/java
|
||||
|
||||
parts:
|
||||
app:
|
||||
plugin: dump
|
||||
source: https://github.com/duke/app/releases/download/v1.2.3/app-1.2.3.tar.gz
|
||||
source-checksum: sha256/8e74020ca5e7d01d25c34cf1bd53adcf78c77adf7b53530ae5e0baeb841cb43e
|
||||
stage-packages:
|
||||
- openjdk-8-jdk
|
||||
organize:
|
||||
usr/lib/jvm/java-8-openjdk*: usr/lib/jvm/java
|
||||
----
|
||||
|
||||
|
||||
79
src/jbake/content/guide/configuration/project.adoc
Normal file
79
src/jbake/content/guide/configuration/project.adoc
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
= Project
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Defines general information about the project.
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
project:
|
||||
# The name of the project.
|
||||
# [required]
|
||||
name: app
|
||||
|
||||
# The version to be released.
|
||||
# May define a JRELEASER_PROJECT_VERSION environment variable instead.
|
||||
# [required]
|
||||
version: 1.0.0
|
||||
|
||||
# Maven coordinates: groupId.
|
||||
# Inherited by distributions if they do not define a value for it.
|
||||
# [required]
|
||||
groupId: com.acme
|
||||
|
||||
# Maven coordinates: artifactId.
|
||||
# If undefined, will use ${project.name}.
|
||||
# Inherited by distributions if they do not define a value for it.
|
||||
# [required]
|
||||
artifactId: app
|
||||
|
||||
# Identifies the project as being mermber of a multi-project build.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
multiProject : false
|
||||
|
||||
# A short description (60 chars max).
|
||||
# [required]
|
||||
description: My awesome app
|
||||
|
||||
# A more thorough explanation of the project's capabilities.
|
||||
# May use markdown syntax.
|
||||
# If left unspecified, will use the value of `description`.
|
||||
# [optional]
|
||||
longDescription: |
|
||||
My Awesome app is the bees knees
|
||||
|
||||
# The project's website.
|
||||
# [required]
|
||||
website: pass:[https://acme.com/app]
|
||||
|
||||
# A list of author names.
|
||||
# [required]
|
||||
authors:
|
||||
- Duke
|
||||
|
||||
# A list of tags.
|
||||
# [optional]
|
||||
tags:
|
||||
- cli
|
||||
- awesome
|
||||
|
||||
# The project's license.
|
||||
# It's recommended to use a valid SPDX identifier if the project is Open Source.
|
||||
# See link:https://spdx.org/licenses[].
|
||||
# [required]
|
||||
license: Apache-2.0
|
||||
|
||||
# The minimum Java version required by consumers to run the application.
|
||||
# [required]
|
||||
javaVersion: 8
|
||||
|
||||
# Additional properties used when evaluating templates.
|
||||
# [optional]
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
143
src/jbake/content/guide/configuration/release/github.adoc
Normal file
143
src/jbake/content/guide/configuration/release/github.adoc
Normal file
@@ -0,0 +1,143 @@
|
||||
|
||||
= Github
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [required]
|
||||
release:
|
||||
# Repo in which the release will be created.
|
||||
# [required]
|
||||
github:
|
||||
# Disables or enables publication to GitHub.
|
||||
# defaults to `true`.
|
||||
enabled: true
|
||||
|
||||
# The user or organization that owns the repository.
|
||||
# [required]
|
||||
owner: duke
|
||||
|
||||
# The name of the repository.
|
||||
# If unspecified, will use ${project.name}.
|
||||
# [optional]
|
||||
name: app
|
||||
|
||||
# The GitHub host url.
|
||||
# Defaults to `github.com`.
|
||||
# [required]
|
||||
host: github.com
|
||||
|
||||
# Username used for authoring commits. Must have write access to the repository.
|
||||
# [required]
|
||||
username: duke
|
||||
|
||||
# Password or OAuth token with write access to the repository.
|
||||
# If left unspecified, the JRELEASER_GITHUB_TOKEN environment variable must be defined.
|
||||
# [required]
|
||||
token: 1n$3cUrEP@s$w0rd
|
||||
|
||||
# The tag associated with the release.
|
||||
# If left unspecified, will use `v${project.version}`.
|
||||
# [optional]
|
||||
tagName: v1.0.0
|
||||
|
||||
# The name of the release.
|
||||
# If left unspecified, will use `Release ${tagName}`.
|
||||
# [optional]
|
||||
releaseName: Release v1.0.0
|
||||
|
||||
# Drops and creates an existing release with matching tag.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
overwrite: true
|
||||
|
||||
# Appends artifacts to an existing release with matching tag,
|
||||
# useful if `overwrite` is set to `false`.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
allowUploadToExisting: true
|
||||
|
||||
# The GitHub API endpoint to use.
|
||||
# Update it if using GitHub Enterprise.
|
||||
# Defaults to `pass:[https://api.github.com]`.
|
||||
# [optional]
|
||||
apiEndpoint: pass:[https://api.github.com]
|
||||
|
||||
# Git author used to commit to the repository.
|
||||
# [optional]
|
||||
commitAuthor:
|
||||
# Name used when authoring commits.
|
||||
# Defaults to `jreleaser-bot`.
|
||||
# [optional]
|
||||
name: jreleaser-bot
|
||||
|
||||
# E-mail used when authoring commits.
|
||||
# Defaults to `pass:[jreleaser-bot@jreleaser.org]`.
|
||||
# [optional]
|
||||
email: pass:[jreleaser-bot@jreleaser.org]
|
||||
|
||||
# Signs commits with the configured credentials.
|
||||
# The <<_signing,signing>> section must be configured as well.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
sign: false
|
||||
|
||||
# Changelog customization.
|
||||
# [optional]
|
||||
changelog:
|
||||
# Disables or enables the changelog.
|
||||
# defaults to `true`.
|
||||
# [optional]
|
||||
enabled: true
|
||||
|
||||
# Sorts commits in ascending (oldest first) or descending (newer first).
|
||||
# Valid values are: `ASC`, `DESC`.
|
||||
# Defaults to `DESC`.
|
||||
# [optional]
|
||||
sort: DESC
|
||||
|
||||
# Path to an external file that contains the changelog, read as is.
|
||||
# May be a relative path to the configuration file or an absolute path.
|
||||
# If unspecified, JReleaser will automatically calculate the changelog.
|
||||
# [optional]
|
||||
external: path/to/changelog.md
|
||||
|
||||
# Create explicit markdown links for commit hashes.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
links: false
|
||||
|
||||
# The target branch to use.
|
||||
# Defaults to `main`.
|
||||
# [optional]
|
||||
targetCommitish: main
|
||||
|
||||
# Marks the release as a draft.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
draft: false
|
||||
|
||||
# Marks the release as prerelease.
|
||||
# Defaults to `false`.
|
||||
# [optional]
|
||||
prerelease: false
|
||||
|
||||
# The following properties define [optional] URL formats.
|
||||
# Defaults are shown.
|
||||
# Review the available <<_templates,template>> names.
|
||||
|
||||
repoUrlFormat: pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}]
|
||||
|
||||
commitUrlFormat: pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits]
|
||||
|
||||
downloadUrlFormat: pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFileName}}]
|
||||
|
||||
releaseNotesUrlFormat: pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}]
|
||||
|
||||
latestReleaseUrlFormat: pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest]
|
||||
|
||||
issueTrackerUrlFormat: pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues]
|
||||
----
|
||||
|
||||
14
src/jbake/content/guide/configuration/release/index.adoc
Normal file
14
src/jbake/content/guide/configuration/release/index.adoc
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
= Release
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
JReleaser can create and tag a GitHub release, upload all files and generate the changelog based on the new commits since
|
||||
the previous tag.
|
||||
|
||||
The `release` section allows the following options to be customized
|
||||
|
||||
:leveloffset: 3
|
||||
include::github.adoc[]
|
||||
:leveloffset: 2
|
||||
|
||||
43
src/jbake/content/guide/configuration/signing.adoc
Normal file
43
src/jbake/content/guide/configuration/signing.adoc
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
= Signing
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Signing ensures that the artifacts have been generated by yourself and your users can verify that by comparing the
|
||||
generated signature with your public signing key.
|
||||
|
||||
JReleaser can sign all files, including distribution archives and any extra files attached to the project. This section
|
||||
must be configured if you intent to sign commits as well.
|
||||
|
||||
Use the following options to customize how files may be signed:
|
||||
|
||||
[source,yaml]
|
||||
[subs="+macros"]
|
||||
----
|
||||
# [optional]
|
||||
signing:
|
||||
# Enables or disables file signing.
|
||||
# Defaults to `false`.
|
||||
enabled: true
|
||||
|
||||
# Generates an armored signature.
|
||||
# Defaults to `true`.
|
||||
armored: true
|
||||
|
||||
# The public GPG (ascii armored) used to sign files and commits.
|
||||
# If left unspecified, the JRELEASER_GPG_PUBLIC_KEY environment variable must be defined.
|
||||
# [required]
|
||||
publicKey:
|
||||
|
||||
# The private GPG (ascii armored) used to sign files and commits.
|
||||
# If left unspecified, the JRELEASER_GPG_SECRET_KEY environment variable must be defined.
|
||||
# [required]
|
||||
secretKey:
|
||||
|
||||
# The passphrase required to read secret keys.
|
||||
# If left unspecified, the JRELEASER_GPG_PASSPHRASE environment variable must be defined.
|
||||
# [required]
|
||||
passphrase: My$3cR3tP@a$sw0rD
|
||||
----
|
||||
|
||||
WARNING: Prefer the use of environment variables if the configuration is stored at a public repository.
|
||||
310
src/jbake/content/guide/configuration/templates.adoc
Normal file
310
src/jbake/content/guide/configuration/templates.adoc
Normal file
@@ -0,0 +1,310 @@
|
||||
|
||||
= Templates
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Several fields in the JReleaser config file support templating. JReleaser makes use of the
|
||||
link:https://mustache.github.io/[Mustache] format for its templating support. Packagers rely on input files that
|
||||
also support templates. A template name can be used as `{{ name }}`
|
||||
|
||||
The following is a list of pre-defined template names:
|
||||
|
||||
.Project
|
||||
|
||||
The following names are related to the <<_project,Project>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| projectName | the project name
|
||||
| projectNameCapitalized | the project name, capitalized, hyphens replaced by spaces.
|
||||
| projectVersion | the project version
|
||||
| projectDescription | the project description
|
||||
| projectLongDescription | the project long description
|
||||
| projectWebsite | link to the project website
|
||||
| projectLicense | the project license, typically an SPDX identifier
|
||||
| projectAuthorsBySpace | space separated list of author names
|
||||
| projectAuthorsByComma | commma separated list of author names
|
||||
| projectTagsBySpace | space separate list of project tags
|
||||
| projectTagsByComma | comma separate list of project tags
|
||||
| javaVersion | the project Java version
|
||||
| groupId | the project groupId (Maven coordinates)
|
||||
| artifactId | the project artifactId (Maven coordinates)
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `project.extraProperties` is mapped with `project` as key prefix and the capitalized
|
||||
key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
project:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `project`, i.e, `projectFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
.Release
|
||||
|
||||
The following names are related to the <<_release,Release>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| repoHost | the Git host, i.e. "github.com"
|
||||
| repoOwner | the owner of the Git repository
|
||||
| repoName | the name of the Git repository
|
||||
| repoBranch | the branch on which the release is made
|
||||
| tagName | the tag being release, defaults to `v{{projectVersion}}`
|
||||
| releaseName | the release name, defaults to `Release {{tagName}}`
|
||||
| repoCanonicalName | the canonical name of the repository, `{{repoOwner}}/{{repoName}}`
|
||||
| repoUrl | the repository URL, `pass:[https://{{repoHost}}/{{repoOwner}}/{{repoName}}]`
|
||||
| commitsUrl | the URL to find commits
|
||||
| releaseNotesUrl | the URL pointing to the release
|
||||
| latestReleaseUrl | the URL pointing to latest release
|
||||
| issueTrackerUrl | the URL of the issue tracker
|
||||
| reverseRepoHost | reversed Git host, i.e. "com.github"
|
||||
|===
|
||||
|
||||
.Distribution
|
||||
|
||||
The following names are related to <<_distribution,Distribution>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| distributionName | the name of the distribution
|
||||
| distributionExecutable | the name of the executable script launcher
|
||||
| distributionTagsBySpace | space separate list of distribution tags
|
||||
| distributionTagsByComma | comma separate list of distribution tags
|
||||
| distributionGroupId | the distribution groupId (Maven coordinates)
|
||||
| distributionArtifactId | the distribution artifactId (Maven coordinates)
|
||||
| mainClass | the main class launched by the executable script launcher
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `distribution.<name>.extraProperties` is mapped with `distribution` as key prefix
|
||||
and the capitalized key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
distributions:
|
||||
theName:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `distribution`, i.e, `distributionFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
.Artifact
|
||||
|
||||
The following names identify an artifact without explicit `platform`
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| artifactJavaVersion | the artifact Java version
|
||||
| artifactUrl | the URL required to download the artifact
|
||||
| artifactSha256 | the SHA256 checksum of the artifact's file
|
||||
| artifactFileName | the name of the artifact file
|
||||
|===
|
||||
|
||||
The following names match the first artifact in a distribution
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| distributionJavaVersion | the artifact Java version
|
||||
| distributionUrl | the URL required to download the artifact
|
||||
| distributionSha256 | the SHA256 checksum of the artifact's file
|
||||
| distributionFileName | the name of the artifact file
|
||||
|===
|
||||
|
||||
Additional names become available when the artifact defines a `platform`
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| artifact{{CapitalizedPlatform}}JavaVersion | the distribution Java version
|
||||
| artifact{{CapitalizedPlatform}}Url | the URL required to download the artifact
|
||||
| artifact{{CapitalizedPlatform}}Sha256 | the SHA256 checksum of the artifact's file
|
||||
| artifact{{CapitalizedPlatform}}FileName | the name of the artifact file
|
||||
|===
|
||||
|
||||
Thus, for artifacts defined as
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
distributions:
|
||||
app:
|
||||
artifacts:
|
||||
- path: path/to/{{distributionName}}-{{projectVersion}}.zip
|
||||
- path: path/to/{{distributionName}}-{{projectVersion}}-mac.zip
|
||||
platform: osx
|
||||
----
|
||||
|
||||
The following names will be calculated:
|
||||
|
||||
*1st artifact*
|
||||
|
||||
* artifactJavaVersion
|
||||
* artifactUrl
|
||||
* artifactSha256
|
||||
* artifactFileName
|
||||
* distributionJavaVersion
|
||||
* distributionUrl
|
||||
* distributionSha256
|
||||
* distributionFileName
|
||||
|
||||
*Platform specific artifact*
|
||||
|
||||
* artifactOsxJavaVersion
|
||||
* artifactOsxUrl
|
||||
* artifactOsxSha256
|
||||
* artifactOsxFileName
|
||||
|
||||
.Brew
|
||||
|
||||
The following names are related to <<_homebrew,Homebrew>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| brewDependencies | a map of key/value pairs
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `brew.extraProperties` is mapped with `brew` as key prefix and the capitalized
|
||||
key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
packagers:
|
||||
brew:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `brew`, i.e, `brewFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
.Chocolatey
|
||||
|
||||
The following names are related to <<_chocolatey,Chocolatey>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| chocolateyUsername | the name of the Chocolatey username
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `chocolatey.extraProperties` is mapped with `chocolatey` as key prefix and the capitalized
|
||||
key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
packagers:
|
||||
chocolatey:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `chocolatey`, i.e, `chocolateyFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
.Jbang
|
||||
|
||||
The following names are related to <<_jbang,Jbang>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| jbangAliasName | the name of the jbang alias, `{{distributionName}}` or `{{distributionName}}-snapshot`
|
||||
| jbangAliasClassName | the name of the Jbang executable, `{{distributionName}}` or `{{distributionName}}_snapshot`
|
||||
| jbangDistributionGA a| calculated Maven coordinates for link:https://jitpack.io[],
|
||||
|
||||
* single: `{{reverseRepoHost}}.{{repoOwner}}:{{distributionArtifactId}` +
|
||||
* multi: `{{reverseRepoHost}}.{{repoOwner}}.{{repoName}}:{{distributionArtifactId}`
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `jbang.extraProperties` is mapped with `jbang` as key prefix and the capitalized
|
||||
key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
packagers:
|
||||
jbang:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `jbang`, i.e, `jbangFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
.Scoop
|
||||
|
||||
The following names are related to <<_scoop_,Scoop>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| scoopCheckverUrl | the URL used to check for a release version
|
||||
| scoopAutoupdateUrl | the URL pattern used to update the package
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `scoop.extraProperties` is mapped with `scoop` as key prefix and the capitalized
|
||||
key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
packagers:
|
||||
scoop:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `scoop`, i.e, `scoopFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
.Snap
|
||||
|
||||
The following names are related to <<_snap_,Snap>>
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| snapBase | the snap base
|
||||
| snapGrade | the snap grade
|
||||
| snapConfinement | the snap confinement
|
||||
| snapHasPlugs | a boolean, when there snap defines plugs
|
||||
| snapPlugs | a list of `Plugs`
|
||||
| snapHasSlots | a boolean, when the snap defines slots
|
||||
| snapSlots | a list of `Slots`
|
||||
| snapHasLocalPlugs | a boolean, when the snap defines plug names
|
||||
| snapLocalPlugs | a list of plug names
|
||||
| snapHasLocalSlots | a boolean, when the snap defines slot names
|
||||
| snapLocalSlots | a list of slot names
|
||||
|===
|
||||
|
||||
A `Plug` defines the following fields
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| name | the plug's name
|
||||
| attributes | a map of key/value attributes
|
||||
|===
|
||||
|
||||
A `Slot` defines the following fields
|
||||
|
||||
[%header, cols="<2,<5", width="100%"]
|
||||
|===
|
||||
| Key | Description
|
||||
| name | the slot's name
|
||||
| attributes | a map of key/value attributes
|
||||
| reads | a list of read names
|
||||
| writes | a list of write names
|
||||
| hasReads | a boolean, when the slot defines reads
|
||||
| hasWrites | a boolean, when the slot defines writes
|
||||
|===
|
||||
|
||||
Additionally, every key/value from `snap.extraProperties` is mapped with `snap` as key prefix and the capitalized
|
||||
key, such that
|
||||
|
||||
[source,yaml]
|
||||
----
|
||||
packagers:
|
||||
snap:
|
||||
extraProperties:
|
||||
# Key will be capitalized and prefixed with `snap`, i.e, `snapFoo`.
|
||||
foo: bar
|
||||
----
|
||||
|
||||
65
src/jbake/content/guide/getting-started.adoc
Normal file
65
src/jbake/content/guide/getting-started.adoc
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
= Getting Started
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
Once JReleaser is installed you may initialize its config file by invoking the following command:
|
||||
|
||||
[source]
|
||||
----
|
||||
$ jreleaser init --format yml
|
||||
[INFO] Writing file /Home/duke/app/.jreleaser.yml
|
||||
[INFO] JReleaser initialized at /Home/duke/app
|
||||
----
|
||||
|
||||
This generates a `.jreleaser.yml` file with the following configuration
|
||||
|
||||
[source,yaml]
|
||||
..jreleaser.yml
|
||||
----
|
||||
project:
|
||||
name: app
|
||||
groupId: com.acme
|
||||
version: 0.0.0-SNAPSHOT
|
||||
description: Awesome App
|
||||
longDescription: Awesome App
|
||||
website: https://acme.com/app
|
||||
authors:
|
||||
- Duke
|
||||
license: Apache-2
|
||||
javaVersion: 8
|
||||
|
||||
release:
|
||||
github:
|
||||
owner: duke
|
||||
|
||||
distributions:
|
||||
app:
|
||||
artifacts:
|
||||
- path: path/to/{{distributionName}}-{{projectVersion}}.zip
|
||||
----
|
||||
|
||||
Edit the file to suite your needs. JReleaser does not create artifact files for you. It assumes those are created using
|
||||
other tools; JReleaser only cares if the resolved artifact paths exist. Once you have edited the file you may verify its
|
||||
configuration by invoking
|
||||
|
||||
[source]
|
||||
----
|
||||
$ jreleaser config
|
||||
----
|
||||
|
||||
At any time you may invoke any of the other commands, but when it's time to make a release you have to invoke
|
||||
|
||||
[source]
|
||||
----
|
||||
$ jreleaser full-release
|
||||
----
|
||||
|
||||
This command performs the following actions:
|
||||
|
||||
* checksums all artifacts.
|
||||
* signs all files (if signing is enabled).
|
||||
* creates a release at the chosen Git repository.
|
||||
* prepares, packages, and uploads configured packagers (brew, jbang, etc).
|
||||
* announces the release.
|
||||
|
||||
15
src/jbake/content/guide/index.adoc
Normal file
15
src/jbake/content/guide/index.adoc
Normal file
@@ -0,0 +1,15 @@
|
||||
= JReleaser Guide
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
:linkattrs:
|
||||
:icons: font
|
||||
:toc: left
|
||||
:toclevels: 3
|
||||
|
||||
:leveloffset: 1
|
||||
include::introduction.adoc[]
|
||||
include::install.adoc[]
|
||||
include::getting-started.adoc[]
|
||||
include::workflow.adoc[]
|
||||
include::configuration/index.adoc[]
|
||||
include::tools/index.adoc[]
|
||||
88
src/jbake/content/guide/install.adoc
Normal file
88
src/jbake/content/guide/install.adoc
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
= Install
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
There are multiple choices depending on your preference.
|
||||
|
||||
== CLI
|
||||
The <<_jreleaser_cli,CLI tool>> can be installed in the following ways:
|
||||
|
||||
*homebrew tap* (only on OSX for now):
|
||||
[source]
|
||||
----
|
||||
brew install jreleaser/tap/jreleaser
|
||||
----
|
||||
|
||||
*scoop*:
|
||||
[source]
|
||||
----
|
||||
scoop bucket add jreleaser https://github.com/jreleaser/scoop-bucket.git
|
||||
scoop install jreleaser
|
||||
----
|
||||
|
||||
*sdkman*:
|
||||
[source]
|
||||
----
|
||||
sdk install jreleaser
|
||||
----
|
||||
|
||||
*jbang*
|
||||
[source]
|
||||
----
|
||||
// Download, cache, and run
|
||||
jbang jreleaser@jreleaser <args>
|
||||
----
|
||||
|
||||
*manually*:
|
||||
|
||||
Download the pre-compiled binary from the link:https://github.com/jreleaser/jreleaser/releases[releases page],
|
||||
uncompress and copy to the desired location.
|
||||
|
||||
== Maven
|
||||
Configure the <<_jreleaser_maven,jreleaser-maven-plugin>> in your POM file
|
||||
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
.pom.xml
|
||||
----
|
||||
<plugin>
|
||||
<groupId>org.jreleaser</groupId>
|
||||
<artifactId>jreleaser-maven-plugin</artifactId>
|
||||
<version>{jbake-jreleaser-version}</version>
|
||||
</plugin>
|
||||
----
|
||||
|
||||
== Gradle
|
||||
Configure the <<_jreleaser_gradle,jreleaser-gradle-plugin>> in your `build.gradle` or `settings.gradle` file
|
||||
|
||||
[source,groovy]
|
||||
[subs="attributes"]
|
||||
.build.gradle
|
||||
----
|
||||
plugins {
|
||||
id 'org.jreleaser' version '{jbake-jreleaser-version}'
|
||||
}
|
||||
----
|
||||
|
||||
== Ant
|
||||
Download the <<_jreleaser_ant,jreleaser-ant-tasks>> ZIP bundle from the link:https://github.com/jreleaser/jreleaser/releases[releases page]
|
||||
and unzip it in your project. Place all JARs inside the `lib` folder. Create this folder if there is none.
|
||||
Add the following elements to your `build.xml` file
|
||||
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
.build.xml
|
||||
----
|
||||
<path id="jreleaser.classpath">
|
||||
<fileset dir="lib">
|
||||
<include name="jreleaser-ant-tasks-{jbake-jreleaser-version}/*.jar"/>
|
||||
</fileset>
|
||||
</path>
|
||||
|
||||
<import>
|
||||
<javaresource name="org/jreleaser/ant/targets.xml"
|
||||
classpathref="jreleaser.classpath"/>
|
||||
</import>
|
||||
----
|
||||
|
||||
18
src/jbake/content/guide/introduction.adoc
Normal file
18
src/jbake/content/guide/introduction.adoc
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
= Introduction
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
JReleaser is a release automation tool for Java projects. Its goal is to simplify creating releases and publishing artifacts
|
||||
to multiple package managers while providing customizable options.
|
||||
|
||||
A release process can be customized with a `.jreleaser.yml` file if using the <<_jreleaser_cli,CLI>> or
|
||||
<<_jreleaser_ant,Ant>> options, or direct DSL configuration inside a `pom.xml` (<<_jreleaser_maven,Maven>>) or
|
||||
`build.gradle` (<<_jreleaser_gradle,Gradle>>) file.
|
||||
|
||||
Once setup, you can create a new release by invoking the `full-release` command.
|
||||
|
||||
*Acknowledgment*
|
||||
|
||||
JReleaser is heavily inspired by link:https://goreleaser.com[GoReleaser].
|
||||
|
||||
5
src/jbake/content/guide/tools/ant.adoc
Normal file
5
src/jbake/content/guide/tools/ant.adoc
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
= JReleaser Ant Tasks
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
5
src/jbake/content/guide/tools/cli.adoc
Normal file
5
src/jbake/content/guide/tools/cli.adoc
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
= JReleaser CLI
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
5
src/jbake/content/guide/tools/gradle.adoc
Normal file
5
src/jbake/content/guide/tools/gradle.adoc
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
= JReleaser Gradle Plugin
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
12
src/jbake/content/guide/tools/index.adoc
Normal file
12
src/jbake/content/guide/tools/index.adoc
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
= Tools
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
:leveloffset: 2
|
||||
include::cli.adoc[]
|
||||
include::maven.adoc[]
|
||||
include::gradle.adoc[]
|
||||
include::ant.adoc[]
|
||||
include::tool-provider.adoc[]
|
||||
:leveloffset: 1
|
||||
5
src/jbake/content/guide/tools/maven.adoc
Normal file
5
src/jbake/content/guide/tools/maven.adoc
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
= JReleaser Maven Plugin
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
5
src/jbake/content/guide/tools/tool-provider.adoc
Normal file
5
src/jbake/content/guide/tools/tool-provider.adoc
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
= JReleaser Tool Provider
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
29
src/jbake/content/guide/workflow.adoc
Normal file
29
src/jbake/content/guide/workflow.adoc
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
= Workflow
|
||||
:jbake-type: page
|
||||
:jbake-status: published
|
||||
|
||||
JReleaser follows a series of steps to create, verify, and publish a release. All <<_tools,tools>> let you invoke these
|
||||
steps in isolation or together.
|
||||
|
||||
== Checksum
|
||||
Calculates checksums for all files.
|
||||
|
||||
== Sign
|
||||
Signs all artifacts with the given PGP credentials.
|
||||
|
||||
== Release
|
||||
Creates and tags a release at a remote Git repository. Also, uploads all files, including checksums and signatures.
|
||||
|
||||
== Prepare
|
||||
Setups input files for packaging tools, based on templates.
|
||||
|
||||
== Package
|
||||
Creates packages based on the prepared input files.
|
||||
|
||||
== Upload
|
||||
Uploads all packages to their corresponding destinations.
|
||||
|
||||
== FullRelease
|
||||
Performs all operations in the order described above.
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
</div>
|
||||
<div id="push"></div>
|
||||
<footer class="mastfoot mt-auto">
|
||||
<div class="inner">
|
||||
<p>© 2021 Andres Almiray</p>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<div class="container">
|
||||
<p class="muted credit">© 2021 Andres Almiray</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Le javascript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
|
||||
<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/jquery-1.11.1.min.js"></script>
|
||||
<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/bootstrap.min.js"></script>
|
||||
<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/prettify.js"></script>
|
||||
|
||||
</body>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/run_prettify.min.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,33 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>JReleaser</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<meta name="keywords" content="">
|
||||
<meta name="generator" content="JBake">
|
||||
|
||||
<!-- Le styles -->
|
||||
<link href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/font-awesome.min.css" rel="stylesheet">
|
||||
<link href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/asciidoctor.css" rel="stylesheet">
|
||||
<link href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/base.css" rel="stylesheet">
|
||||
<link href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/prettify.css" rel="stylesheet">
|
||||
<link href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>css/font-awesome.min.css"
|
||||
rel="stylesheet">
|
||||
<link href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>css/bootstrap.min.css"
|
||||
rel="stylesheet">
|
||||
<link href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>css/asciidoctor.css"
|
||||
rel="stylesheet">
|
||||
<link href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>css/navbar-top-fixed.css"
|
||||
rel="stylesheet">
|
||||
|
||||
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<link rel="shortcut icon" href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>favicon.ico">
|
||||
|
||||
<!-- Fav and touch icons -->
|
||||
<!--<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
|
||||
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
|
||||
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
|
||||
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">-->
|
||||
<link rel="shortcut icon" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>favicon.ico">
|
||||
</head>
|
||||
<body onload="prettyPrint()">
|
||||
<div id="wrap">
|
||||
<style>
|
||||
.bd-placeholder-img {
|
||||
font-size: 1.125rem;
|
||||
text-anchor: middle;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.bd-placeholder-img-lg {
|
||||
font-size: 3.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width:768px){
|
||||
#toctitle{font-size:1.375em}
|
||||
#toc.toc{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto; padding-top: 60px;}
|
||||
#toc.toc #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
|
||||
#toc.toc>ul{font-size:.9em;margin-bottom:0}
|
||||
#toc.toc ul ul{margin-left:0;padding-left:1em}
|
||||
#toc.toc ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
|
||||
}
|
||||
@media only screen and (min-width:1280px){
|
||||
body.toc2{padding-left:20em;padding-right:0}
|
||||
#toc.toc{width:20em; padding-top: 60px;}
|
||||
#toc.toc #toctitle{font-size:1.375em}
|
||||
#toc.toc>ul{font-size:.95em}
|
||||
#toc.toc ul ul{padding-left:1.25em}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body <% if (content.uri) { %>class="toc2 toc-left"<% } else { %><% } %>>
|
||||
|
||||
@@ -2,20 +2,27 @@
|
||||
|
||||
<% include "menu.gsp" %>
|
||||
|
||||
<div class="container">
|
||||
<div class="page-header">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
<div class="sect1">
|
||||
<h2>Coming up ...</h2>
|
||||
</div>
|
||||
|
||||
<main role="main" class="container">
|
||||
<div class="jumbotron">
|
||||
<h1>JReleaser</h1>
|
||||
<p class="lead">The quick and effortless way to release Java projects!</p>
|
||||
<p>with JReleaser, you can:
|
||||
<ul>
|
||||
<li>Calculate file checksums</li>
|
||||
<li>Sign files</li>
|
||||
<li>Release to GitHub</li>
|
||||
<li>Create Homebrew taps</li>
|
||||
<li>Create Scoop buckets</li>
|
||||
<li>Configure Snaps</li>
|
||||
<li>Announce releases to SDKMAN!, Twitter, Zulip</li>
|
||||
<li>... and much more!</li>
|
||||
</ul>
|
||||
</p>
|
||||
<div class="d-grid gap-2 d-md-block">
|
||||
<a class="btn btn-lg btn-primary" href="/guide" role="button">Get started</a>
|
||||
<a class="btn btn-lg btn-outline-primary" href="https://github.com/jreleaser/jreleaser" role="button">Go to GitHub</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<% include "footer.gsp" %>
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
<!-- Fixed navbar -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
|
||||
<a class="navbar-brand" href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>#">JReleaser</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse"
|
||||
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>index.html">Home <span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="<% if (content.rootpath) { %>${content.rootpath}<% } else { %><% } %>#">Home <span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/guide">Guide</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://github.com/jreleaser/jreleaser">Code</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container">
|
||||
@@ -1,6 +1,6 @@
|
||||
<%include "header.gsp"%>
|
||||
|
||||
<%include "menu.gsp"%>
|
||||
<%include "menu.gsp"%>
|
||||
|
||||
<div class="page-header">
|
||||
<h1>${content.title}</h1>
|
||||
@@ -10,6 +10,4 @@
|
||||
|
||||
<p>${content.body}</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<%include "footer.gsp"%>
|
||||
Reference in New Issue
Block a user