This commit is contained in:
Andrew Woodlee 2025-01-03 23:30:07 -06:00
parent 01efeab13f
commit b5f7c3fd72
818 changed files with 1112 additions and 82997 deletions

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "docs/themes/hugo-theme-relearn"]
path = docs/themes/hugo-theme-relearn
url = https://github.com/McShelby/hugo-theme-relearn
url = https://github.com/McShelby/hugo-theme-relearn.git

View File

@ -4,6 +4,7 @@ steps:
commands:
- git submodule foreach 'git fetch origin; git checkout $(git describe --tags `git rev-list --tags --max-count=1`);'
- cd docs
- hugo mod get -u ./...
- hugo
when:
- event: push

View File

@ -20,8 +20,15 @@ var (
}
)
func execute(cmd *cobra.Command, args []string) {
func init() {
execCmd.AddCommand(hostExecCommand)
hostExecCommand.Flags().StringSliceVarP(&hostsList, "hosts", "m", nil, "Accepts comma-separated names of hosts.")
hostExecCommand.Flags().StringSliceVarP(&cmdList, "commands", "c", nil, "Accepts comma-separated names of commands.")
}
func execute(cmd *cobra.Command, args []string) {
if len(args) < 1 {
logging.ExitWithMSG("Please provide a command to run. Pass --help to see options.", 1, nil)
}

60
cmd/host.go Normal file
View File

@ -0,0 +1,60 @@
package cmd
import (
"git.andrewnw.xyz/CyberShell/backy/pkg/backy"
"git.andrewnw.xyz/CyberShell/backy/pkg/logging"
"github.com/spf13/cobra"
)
var (
hostExecCommand = &cobra.Command{
Use: "host [--commands=command1,command2, ... | -c command1,command2, ...] [--hosts=host1,hosts2, ... | -m host1,host2, ...] ",
Short: "Runs command defined in config file on the hosts in order specified.",
Long: "Host executes specified commands on the hosts defined in config file.\nUse the --commands or -c flag to choose the commands.",
Run: Host,
}
)
// Holds command list to run
var hostsList []string
var cmdList []string
func init() {
}
// cli input should be hosts and commands. Hosts are defined in config files.
// commands can be passed by the following mutually exclusive options:
// 1. as a list of commands defined in the config file
// 2. stdin (on command line) (TODO)
func Host(cmd *cobra.Command, args []string) {
backyConfOpts := backy.NewOpts(cfgFile)
backyConfOpts.InitConfig()
backy.ReadConfig(backyConfOpts)
// check CLI input
if hostsList == nil {
logging.ExitWithMSG("error: hosts must be specified", 1, &backyConfOpts.Logger)
}
// host is only checked when we read the SSH File
// so a check may not be needed here
for _, h := range hostsList {
_, hostFound := backyConfOpts.Hosts[h]
if !hostFound {
logging.ExitWithMSG("host "+h+" not found", 1, &backyConfOpts.Logger)
}
}
if cmdList == nil {
logging.ExitWithMSG("error: commands must be specified", 1, &backyConfOpts.Logger)
}
for _, c := range cmdList {
_, cmdFound := backyConfOpts.Cmds[c]
if !cmdFound {
logging.ExitWithMSG("cmd "+c+" not found", 1, &backyConfOpts.Logger)
}
}
backyConfOpts.ExecCmdsSSH(cmdList, hostsList)
}

View File

@ -1,13 +1,17 @@
baseURL = 'http://example.org/'
baseURL = 'http://backy.cybershell.xyz/'
languageCode = 'en-us'
title = 'A tool for commands'
# Change the default theme to be use when building the site with Hugo
theme = "hugo-theme-relearn"
theme = [ "hugo-theme-relearn", "plausible-hugo"] # Add this theme to your already existing other themes
# For search functionality
[outputs]
home = [ "HTML", "RSS", "SEARCH"]
home = [ "HTML", "RSS", "PRINT"]
[module]
[[module.imports]]
path = "github.com/divinerites/plausible-hugo"
[params]
# This controls whether submenus will be expanded (true), or collapsed (false) in the
@ -18,8 +22,6 @@ home = [ "HTML", "RSS", "SEARCH"]
# Useful to give opportunity to people to create merge request for your doc.
# See the config.toml file from this documentation site to have an example.
editURL = ""
# Author of the site, will be used in meta information
author = ""
# Description of the site, will be used in meta information
description = ""
# Shows a checkmark for visited pages on the menu
@ -52,13 +54,13 @@ home = [ "HTML", "RSS", "SEARCH"]
# If set to true, hide table of contents menu in the header of all pages
disableToc = false
# If set to false, load the MathJax module on every page regardless if a MathJax shortcode is present
disableMathJax = false
math = true
# Specifies the remote location of the MathJax js
customMathJaxURL = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
# Initialization parameter for MathJax, see MathJax documentation
mathJaxInitialize = "{}"
# If set to false, load the Mermaid module on every page regardless if a Mermaid shortcode or Mermaid codefence is present
disableMermaid = false
mermaid = true
# Specifies the remote location of the Mermaid js
customMermaidURL = "https://unpkg.com/mermaid/dist/mermaid.min.js"
# Initialization parameter for Mermaid, see Mermaid documentation
@ -74,8 +76,42 @@ home = [ "HTML", "RSS", "SEARCH"]
# Order sections in menu by "weight" or "title". Default to "weight";
# this can be overridden in the pages frontmatter
ordersectionsby = "weight"
# Change default color scheme with a variant one. Eg. can be "auto", "red", "blue", "green" or an array like [ "blue", "green" ].
themeVariant = "auto"
[[params.themeVariant]]
auto = []
identifier = 'relearn-auto'
name = 'Relearn Light/Dark'
[[params.themeVariant]]
identifier = 'relearn-light'
[[params.themeVariant]]
identifier = 'relearn-dark'
[[params.themeVariant]]
identifier = 'relearn-bright'
[[params.themeVariant]]
auto = ['zen-light', 'zen-dark']
identifier = 'zen-auto'
name = 'Zen Light/Dark'
[[params.themeVariant]]
identifier = 'zen-light'
[[params.themeVariant]]
identifier = 'zen-dark'
[[params.themeVariant]]
auto = ['learn', 'neon']
identifier = 'retro-auto'
name = 'Retro Learn/Neon'
[[params.themeVariant]]
identifier = 'neon'
[[params.themeVariant]]
identifier = 'learn'
# Change the title separator. Default to "::".
titleSeparator = "-"
# If set to true, the menu in the sidebar will be displayed in a collapsible tree view. Although the functionality works with old browsers (IE11), the display of the expander icons is limited to modern browsers
@ -87,4 +123,15 @@ home = [ "HTML", "RSS", "SEARCH"]
disableExplicitIndexURLs = false
# For external links you can define how they are opened in your browser; this setting will only be applied to the content area but not the shortcut menu
externalLinkTarget = "_blank"
# Author of the site, will be used in meta information
[params.author]
name = "Andrew Woodlee"
[params.plausible]
enable = true # Whether to enable plausible tracking
domain = "backy.cybershell.xyz" # Plausible "domain" name/id in your dashboard
outbound_link = true
gitstar = false
selfhosted_domain = "stats.andrewnw.com" # Self-hosted plausible domain

View File

@ -73,10 +73,35 @@ Exec executes commands defined in config file in order given.
Usage:
backy exec command ... [flags]
backy exec [command]
Available Commands:
host Runs command defined in config file on the hosts in order specified.
Flags:
-h, --help help for exec
Global Flags:
-f, --config string config file to read from
-v, --verbose Sets verbose level
Use "backy exec [command] --help" for more information about a command.
```
### exec host
```
Host executes specified commands on the hosts defined in config file.
Use the --commands or -c flag to choose the commands.
Usage:
backy exec host [--commands=command1,command2, ... | -c command1,command2, ...] [--hosts=host1,hosts2, ... | -m host1,host2, ...] [flags]
Flags:
-c, --commands strings Accepts comma-separated names of commands.
-h, --help help for host
-m, --hosts strings Accepts comma-separated names of hosts.
Global Flags:
-f, --config string config file to read from
-v, --verbose Sets verbose level

19
docs/content/cli/exec.md Normal file
View File

@ -0,0 +1,19 @@
---
title: Exec
---
The `exec` subcommand can do somethings that the configuration file can't do yet. The command `exec host` can execute commands on many hosts.
`exec host` takes the following arguments:
```sh
-c, --commands strings Accepts comma-separated names of commands.
-h, --help help for host
-m, --hosts strings Accepts comma-separated names of hosts.
```
The commands have to be defined in the config file. The hosts need to at least be in the ssh_config(5) file.
```sh
backy exec host [--commands=command1,command2, ... | -c command1,command2, ...] [--hosts=host1,hosts2, ... | -m host1,host2, ...] [flags]
```

View File

@ -36,27 +36,27 @@ commands:
- APP=$VAR
```
Values available for this section:
Values available for this section **(case-sensitive)**:
| name | notes | type | required
| --- | --- | --- | --- |
| `cmd` | Defines the command to execute | `string` | yes |
| `args` | Defines the arguments to the command | `[]string` | no |
| `Args` | Defines the arguments to the command | `[]string` | no |
| `environment` | Defines evironment variables for the command | `[]string` | no |
| `type` | May be `scriptFile` or `script`. Runs script from local machine on remote. Only applicable when `host` is defined. | `string` | no |
| `type` | May be `scriptFile`, `script`, or `package`. Runs script from local machine on remote. `Package` is the only one that can be run on local and remote hosts. | `string` | no |
| `getOutput` | Command(s) output is in the notification(s) | `bool` | no |
| `host` | If not specified, the command will execute locally. | `string` | no |
| `scriptEnvFile` | When type is `scriptFile`, the script is appended to this file. | `string` | no |
| `shell` | Only applicable when host is not specified | `string` | no |
| `hooks` | Hooks are used at the end of the individual command. Must be another command. | `[]string` | no |
| `scriptEnvFile` | When type is `scriptFile` or `script`, this file is prepended to the input. | `string` | no |
| `shell` | Run the command in the shell | `string` | no |
| `hooks` | Hooks are used at the end of the individual command. Must have at least `error`, `success`, or `final`. | `map[string][]string` | no |
#### cmd
cmd must be a valid command or script to execute.
#### args
#### Args
args must be arguments to cmd as they would be on the command-line:
args must be arguments to cmd as they would be passed on the command-line:
```sh
cmd [arg1 arg2 ...]
@ -65,7 +65,7 @@ cmd [arg1 arg2 ...]
Define them in an array:
```yaml
args:
Args:
- arg1
- arg2
- arg3
@ -94,14 +94,14 @@ If I assign a value to host as `host: web-prod` and don't specify this value in
### shell
If shell is defined and host is NOT defined, the command will run in the specified shell.
If shell is defined, the command will run in the specified shell.
Make sure to escape any shell input.
### scriptEnvFile
Path to a file.
When type is specified, the script is appended to this file.
When type is `script` or `scriptFile` , the script is appended to this file.
This is useful for specifying environment variables or other things so they don't have to be included in the script.
@ -113,6 +113,8 @@ If `type` is `script`, `cmd` is used as the script.
If `type` is `scriptFile`, cmd must be a script file.
If `type` is `package`, there are additional fields that must be specified.
### environment
The environment variables support expansion:
@ -143,4 +145,8 @@ command:
- successcommand
final:
- donecommand
```
```
### packages
See the [dedicated page](/config/packages) for package configuration.

View File

@ -0,0 +1,77 @@
---
title: "Packages"
weight: 2
---
This is dedicated to `package` commands. The command `type` field must be `package`. Package is a type that allows one to perform package operations. There are several additional options available when `type` is `package`:
| name | notes | type | required |
| --- | --- | --- | --- |
| `packageName` | The name of a package to be modified. | `string` | yes |
| `packageManager` | The name of the package manger to be used. | `string` | yes |
| `packageOperation` | The type of operation to be perform. | `string` | yes |
| `packageVersion` | The version of a package to be modified. | `string` | no |
#### example
The following is an example of a package command:
```yaml
update-docker:
type: package
shell: zsh
packageName: docker-ce
packageManager: apt
packageOperation: install
host: debian-based-host
```
#### packageOperation
The following package operations are supported:
- `install`
- `remove`
- `upgrade`
#### packageManager
The following package managers are recognized:
- `apt`
- `yum`
- `dnf`
#### package command args
You can add additional arguments using the standard `Args` key. This is useful for adding more packages.
### Development
The PackageManager interface provides an easy to enforce functions and options. There are two interfaces, `PackageManager` and `ConfigurablePackageManager` in the directory `pkg/pkgman`. Go's import-cycle "feature" caused me to implement functional options using a third interface. `PackageManagerOption`is a function that takes an interface.
#### PackageManager
```go
// PackageManager is an interface used to define common package commands. This shall be implemented by every package.
type PackageManager interface {
Install(pkg, version string, args []string) (string, []string)
Remove(pkg string, args []string) (string, []string)
Upgrade(pkg, version string) (string, []string) // Upgrade a specific package
UpgradeAll() (string, []string)
// Configure applies functional options to customize the package manager.
Configure(options ...pkgcommon.PackageManagerOption)
}
```
There are a few functional options that should be implemented using the `ConfigurablePackageManager` interface:
```go
// ConfigurablePackageManager defines methods for setting configuration options.
type ConfigurablePackageManager interface {
SetUseAuth(useAuth bool)
SetAuthCommand(authCommand string)
}
```

View File

@ -101,21 +101,25 @@ For more, [see the notification object documentation](/config/notifications). Th
```yaml
notifications:
prod-email:
type: mail
host: yourhost.tld
port: 587
senderAddress: email@domain.tld
recipients:
- admin@domain.tld
username: smtp-username@domain.tld
password: your-password-here
mail:
prod-email:
id: prod-email
type: mail
host: yourhost.tld
port: 587
senderAddress: email@domain.tld
to:
- admin@domain.tld
username: smtp-username@domain.tld
password: your-password-here
matrix:
type: matrix
home-server: your-home-server.tld
room-id: room-id
access-token: your-access-token
user-id: your-user-id
matrix:
id: matrix
type: matrix
home-server: your-home-server.tld
room-id: room-id
access-token: your-access-token
user-id: your-user-id
```
### Logging

View File

@ -1,5 +1,8 @@
module git.andrewnw.xyz/CyberShell/backy-docs
module git.andrewnw.xyz/CyberShell/backy/docs
go 1.19
require github.com/McShelby/hugo-theme-relearn v0.0.0-20230209073138-890d12ea922d // indirect
require (
github.com/McShelby/hugo-theme-relearn v0.0.0-20230209073138-890d12ea922d // indirect
github.com/divinerites/plausible-hugo v1.21.1 // indirect
)

View File

@ -1,2 +1,4 @@
github.com/McShelby/hugo-theme-relearn v0.0.0-20230209073138-890d12ea922d h1:weq1mrQ/qNAvGrNgvZVL1K8adbT3bswZf2ABLr/LCIA=
github.com/McShelby/hugo-theme-relearn v0.0.0-20230209073138-890d12ea922d/go.mod h1:mKQQdxZNIlLvAj8X3tMq+RzntIJSr9z7XdzuMomt0IM=
github.com/divinerites/plausible-hugo v1.21.1 h1:ZTWwjhZ0PmLMacCVGlcGiYFEZW7VaYE767tchDskOug=
github.com/divinerites/plausible-hugo v1.21.1/go.mod h1:cxr+YB3FUwbLon8KCs4pV4Ankbkq6lJxTQUpNb5KqPo=

View File

@ -0,0 +1,84 @@
<!DOCTYPE html>
{{- block "storeOutputFormat" . }}{{ end }}
{{- if .IsHome }}
{{- $hugoVersion := "0.126.0" }}
{{- if lt hugo.Version $hugoVersion }}
{{- errorf "The Relearn theme requires Hugo %s or later" $hugoVersion }}
{{- end }}
{{- end }}
{{- if .Site.Params.description }}
{{- warnf "UNSUPPORTED usage of 'params.description' config parameter found, move it to the front matter of your home page; see https://mcshelby.github.io/hugo-theme-relearn/introduction/releasenotes/6/#6-0-0" }}
{{- end }}
<html lang="{{ .Page.Language.LanguageCode }}" dir="{{ .Page.Language.LanguageDirection | default (T "Reading-direction") | default "ltr" }}" itemscope itemtype="http://schema.org/Article" data-r-output-format="{{ with .Store.Get "relearnOutputFormat" }}{{ . }}{{ else }}html{{ end }}">
<head>
{{ partial "plausible_head.html" . }}
{{- partial "meta.html" . }}
{{- $title := partial "title.gotmpl" (dict "page" . "fullyQualified" true "reverse" true) }}
<title>{{ $title }}</title>
{{- /* multilingual stuff */}}
{{- if .IsTranslated -}}
{{- range $index, $trans := .AllTranslations }}
{{- if eq $index 0 }}
<link href="{{ partial "permalink.gotmpl" (dict "to" . "abs" true) }}" rel="alternate" hreflang="x-default">
{{- end }}
<link href="{{ partial "permalink.gotmpl" (dict "to" . "abs" true) }}" rel="alternate" hreflang="{{ .Language.LanguageCode }}">
{{- end }}
{{- end }}
{{- /* output formats */}}
{{- $page := . }}
{{- $link := "<link href=\"%s\" rel=\"%s\" type=\"%s\" title=\"%s\">" }}
{{- range .AlternativeOutputFormats }}
{{- if eq .Rel "canonical" }}
{{ (printf $link (partial "permalink.gotmpl" (dict "to" . "abs" true)) .Rel .MediaType.Type ($title | htmlEscape)) | safeHTML }}
{{- else if not (partial "_relearn/pageIsSpecial.gotmpl" $page) }}
{{ (printf $link (partial "permalink.gotmpl" (dict "to" .)) .Rel .MediaType.Type ($title | htmlEscape)) | safeHTML }}
{{- end }}
{{- end }}
{{- partialCached "favicon.html" . }}
{{- partial "stylesheet.html" . }}
{{- partial "dependencies.gotmpl" (dict "page" . "location" "header") }}
{{- partial "custom-header.html" . }}
</head>
<body class="mobile-support {{ with .Store.Get "relearnOutputFormat" }}{{ . }}{{ else }}html{{ end }}{{- if .Site.Params.disableInlineCopyToClipBoard }} disableInlineCopyToClipboard{{ end }}{{- if .Site.Params.disableHoverBlockCopyToClipBoard }} disableHoverBlockCopyToClipBoard{{ end }}" data-url="{{ partial "permalink.gotmpl" (dict "to" .) }}">
<div id="R-body" class="default-animation">
<div id="R-body-overlay"></div>
<nav id="R-topbar">
<div class="topbar-wrapper">
<div class="topbar-sidebar-divider"></div>
<div class="topbar-area topbar-area-start" data-area="start">
{{- partial "topbar/area/start.html" . }}
</div>
{{- $showBreadcrumb := (and (not .Params.disableBreadcrumb) (not .Site.Params.disableBreadcrumb)) }}
{{- if $showBreadcrumb }}
<ol class="topbar-breadcrumbs breadcrumbs highlightable" itemscope itemtype="http://schema.org/BreadcrumbList">
{{- partial "breadcrumbs.html" (dict "page" .) }}
</ol>
{{- else }}
<span class="topbar-breadcrumbs highlightable">
{{ partial "title.gotmpl" (dict "page" . "linkTitle" true) }}
</span>
{{- end }}
<div class="topbar-area topbar-area-end" data-area="end">
{{- partial "topbar/area/end.html" . }}
</div>
</div>
</nav>
<div id="R-main-overlay"></div>
<main id="R-body-inner" class="highlightable{{ with or .Type "default" }} {{ . }}{{ end }}" tabindex="-1">
<div class="flex-block-wrapper">
{{- block "body" . }}{{ end }}
</div>
</main>
{{- partial "custom-comments.html" . }}
</div>
{{- block "menu" . }}{{ end }}
{{- $assetBusting := partialCached "assetbusting.gotmpl" . }}
<script src="{{"js/clipboard.min.js" | relURL}}{{ $assetBusting }}" defer></script>
<script src="{{"js/perfect-scrollbar.min.js" | relURL}}{{ $assetBusting }}" defer></script>
{{- partial "dependencies.gotmpl" (dict "page" . "location" "footer") }}
<script src="{{"js/theme.js" | relURL}}{{ $assetBusting }}" defer></script>
{{- partial "custom-footer.html" . }}
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,66 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0">
<meta name="generator" content="Hugo 0.110.0">
<meta name="generator" content="Relearn 5.11.2">
<meta name="description" content="">
<title>404 Page not found - A tool for commands</title>
<!-- https://github.com/filamentgroup/loadCSS/blob/master/README.md#how-to-use -->
<link href="/css/fontawesome-all.min.css?1676866111" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/css/fontawesome-all.min.css?1676866111" rel="stylesheet"></noscript>
<link href="/css/auto-complete.css?1676866111" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/css/auto-complete.css?1676866111" rel="stylesheet"></noscript>
<link href="/css/perfect-scrollbar.min.css?1676866111" rel="stylesheet">
<link href="/css/nucleus.css?1676866111" rel="stylesheet">
<link href="/css/fonts.css?1676866111" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/css/fonts.css?1676866111" rel="stylesheet"></noscript>
<link href="/css/theme.css?1676866111" rel="stylesheet">
<link href="/css/theme-auto.css?1676866111" rel="stylesheet" id="variant-style">
<link href="/css/ie.css?1676866111" rel="stylesheet">
<link href="/css/variant.css?1676866111" rel="stylesheet">
<link href="/css/print.css?1676866111" rel="stylesheet" media="print">
<script src="/js/url.js?1676866111"></script>
<script src="/js/variant.js?1676866111"></script>
<script>
// hack to let hugo tell us how to get to the root when using relativeURLs, it needs to be called *url= for it to do its magic:
// https://github.com/gohugoio/hugo/blob/145b3fcce35fbac25c7033c91c1b7ae6d1179da8/transform/urlreplacers/absurlreplacer.go#L72
window.index_js_url="/index.search.js";
var root_url="/";
var baseUri=root_url.replace(/\/$/, '');
// translations
window.T_Copy_to_clipboard = 'Copy to clipboard';
window.T_Copied_to_clipboard = 'Copied to clipboard!';
window.T_Copy_link_to_clipboard = 'Copy link to clipboard';
window.T_Link_copied_to_clipboard = 'Copied link to clipboard!';
window.T_No_results_found = 'No results found for \u0022{0}\u0022';
window.T_N_results_found = '{1} results found for \u0022{0}\u0022';
// some further base stuff
var baseUriFull='http:\/\/example.org/';
window.variants && variants.init( [ 'auto' ] );
</script>
<style>
p, li, ul {
text-align: center
}
ul {
list-style-type: none;
}
</style>
</head>
<body class="mobile-support" data-url="/404.html">
<div id="body" class="default-animation" style="margin-left:0px;">
<div id="sidebar-overlay"></div>
<main id="body-inner" class="chapter" tabindex="-1">
<div class="flex-block-wrapper">
<article class="default">
<h1 id="error">Error</h1>
<p></p>
<p>Woops. Looks like this page doesn&#39;t exist ¯\_(ツ)_/¯.</p>
<p></p>
<p><a href="/index.html">Go to homepage</a></p>
<p><img src="/images/gopher-404.jpg" style="width:50%" alt="Page not found!"></p>
</article>
</div>
</main>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Categories on A tool for commands</title>
<link>http://example.org/categories/index.html</link>
<description>Recent content in Categories on A tool for commands</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="http://example.org/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because one or more lines are too long

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>CLI on A tool for commands</title>
<link>http://example.org/cli/index.html</link>
<description>Recent content in CLI on A tool for commands</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="http://example.org/cli/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Configuring Backy on A tool for commands</title>
<link>http://example.org/config/index.html</link>
<description>Recent content in Configuring Backy on A tool for commands</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="http://example.org/config/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Command Lists</title>
<link>http://example.org/config/command-lists/index.html</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://example.org/config/command-lists/index.html</guid>
<description>Command lists are for executing commands in sequence and getting notifications from them.
The top-level object key can be anything you want.
key description type required order Defines the sequence of commands to execute []string yes notifications The notification IDs to use on success and failure []string no name Optional name of the list string no cron Time at which to schedule the list. string no Order The order is an array of commands to execute in order.</description>
</item>
<item>
<title>Commands</title>
<link>http://example.org/config/commands/index.html</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://example.org/config/commands/index.html</guid>
<description>The yaml top-level map can be any string.
The top-level name must be unique.
commands: stop-docker-container: cmd: docker Args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, command will be run locally host: some-host backup-docker-container-script: cmd: /path/to/script # The host has to be defined in either the config file or the SSH Config files host: some-host environment: - FOO=BAR - APP=$VAR Values available for this section:</description>
</item>
<item>
<title>Notifications</title>
<link>http://example.org/config/notifications/index.html</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://example.org/config/notifications/index.html</guid>
<description>Notifications can be sent on command list completion and failure.
The supported platforms for notifications are email (SMTP) and Matrix.
Notifications are defined by type. The top-level object will be the id, and the type is required.
Info Type in a cmd-configs object must match one of these.
notifications: prod-email: type: mail host: yourhost.tld port: 587 senderaddress: email@domain.tld to: - admin@domain.tld username: smtp-username@domain.tld password: your-password-here matrix: type: matrix home-server: your-home-server.tld room-id: room-id access-token: your-access-token user-id: your-user-id Types recognized are type: mail and type: matrix</description>
</item>
</channel>
</rss>

File diff suppressed because one or more lines are too long

View File

@ -1,58 +0,0 @@
.autocomplete-suggestions {
text-align: left;
cursor: default;
border: 1px solid #ccc;
border-top: 0;
background: #fff;
box-shadow: -1px 1px 3px rgba(0,0,0,.1);
/* core styles should not be changed */
position: absolute;
display: none;
z-index: 9999;
max-height: 150px;
max-height: calc( 100vh - 150px );
overflow: hidden;
overflow-y: auto;
box-sizing: border-box;
}
.autocomplete-suggestion {
position: relative;
cursor: pointer;
padding: 7px;
line-height: 23px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #282828;
}
.autocomplete-suggestion b {
font-weight: normal;
color: #1f8dd6;
}
.autocomplete-suggestion.selected {
background: #282828;
color: #fff;
}
.autocomplete-suggestion:hover,
.autocomplete-suggestion:focus,
.autocomplete-suggestion:active,
.autocomplete-suggestion:hover > .context,
.autocomplete-suggestion:focus > .context,
.autocomplete-suggestion:active > .context,
#searchresults .autocomplete-suggestion:hover > .context,
#searchresults .autocomplete-suggestion:focus > .context,
#searchresults .autocomplete-suggestion:active > .context {
background: #383838;
color: #fff;
}
.autocomplete-suggestion > .context {
font-size: 12px;
margin-inline-start: 1em;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@ -1,83 +0,0 @@
/* based on base16-snazzy
/* Background */ .chroma { color: #e2e4e5; background-color: #282a36 }
/* Other */ .chroma .x { }
/* Error */ .chroma .err { color: #ff5c57 }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* Keyword */ .chroma .k { color: #ff6ac1 }
/* KeywordConstant */ .chroma .kc { color: #ff6ac1 }
/* KeywordDeclaration */ .chroma .kd { color: #ff5c57 }
/* KeywordNamespace */ .chroma .kn { color: #ff6ac1 }
/* KeywordPseudo */ .chroma .kp { color: #ff6ac1 }
/* KeywordReserved */ .chroma .kr { color: #ff6ac1 }
/* KeywordType */ .chroma .kt { color: #9aedfe }
/* Name */ .chroma .n { }
/* NameAttribute */ .chroma .na { color: #57c7ff }
/* NameBuiltin */ .chroma .nb { color: #ff5c57 }
/* NameBuiltinPseudo */ .chroma .bp { }
/* NameClass */ .chroma .nc { color: #f3f99d }
/* NameConstant */ .chroma .no { color: #ff9f43 }
/* NameDecorator */ .chroma .nd { color: #ff9f43 }
/* NameEntity */ .chroma .ni { }
/* NameException */ .chroma .ne { }
/* NameFunction */ .chroma .nf { color: #57c7ff }
/* NameFunctionMagic */ .chroma .fm { }
/* NameLabel */ .chroma .nl { color: #ff5c57 }
/* NameNamespace */ .chroma .nn { }
/* NameOther */ .chroma .nx { }
/* NameProperty */ .chroma .py { }
/* NameTag */ .chroma .nt { color: #ff6ac1 }
/* NameVariable */ .chroma .nv { color: #ff5c57 }
/* NameVariableClass */ .chroma .vc { color: #ff5c57 }
/* NameVariableGlobal */ .chroma .vg { color: #ff5c57 }
/* NameVariableInstance */ .chroma .vi { color: #ff5c57 }
/* NameVariableMagic */ .chroma .vm { }
/* Literal */ .chroma .l { }
/* LiteralDate */ .chroma .ld { }
/* LiteralString */ .chroma .s { color: #5af78e }
/* LiteralStringAffix */ .chroma .sa { color: #5af78e }
/* LiteralStringBacktick */ .chroma .sb { color: #5af78e }
/* LiteralStringChar */ .chroma .sc { color: #5af78e }
/* LiteralStringDelimiter */ .chroma .dl { color: #5af78e }
/* LiteralStringDoc */ .chroma .sd { color: #5af78e }
/* LiteralStringDouble */ .chroma .s2 { color: #5af78e }
/* LiteralStringEscape */ .chroma .se { color: #5af78e }
/* LiteralStringHeredoc */ .chroma .sh { color: #5af78e }
/* LiteralStringInterpol */ .chroma .si { color: #5af78e }
/* LiteralStringOther */ .chroma .sx { color: #5af78e }
/* LiteralStringRegex */ .chroma .sr { color: #5af78e }
/* LiteralStringSingle */ .chroma .s1 { color: #5af78e }
/* LiteralStringSymbol */ .chroma .ss { color: #5af78e }
/* LiteralNumber */ .chroma .m { color: #ff9f43 }
/* LiteralNumberBin */ .chroma .mb { color: #ff9f43 }
/* LiteralNumberFloat */ .chroma .mf { color: #ff9f43 }
/* LiteralNumberHex */ .chroma .mh { color: #ff9f43 }
/* LiteralNumberInteger */ .chroma .mi { color: #ff9f43 }
/* LiteralNumberIntegerLong */ .chroma .il { color: #ff9f43 }
/* LiteralNumberOct */ .chroma .mo { color: #ff9f43 }
/* Operator */ .chroma .o { color: #ff6ac1 }
/* OperatorWord */ .chroma .ow { color: #ff6ac1 }
/* Punctuation */ .chroma .p { }
/* Comment */ .chroma .c { color: #78787e }
/* CommentHashbang */ .chroma .ch { color: #78787e }
/* CommentMultiline */ .chroma .cm { color: #78787e }
/* CommentSingle */ .chroma .c1 { color: #78787e }
/* CommentSpecial */ .chroma .cs { color: #78787e }
/* CommentPreproc */ .chroma .cp { color: #78787e }
/* CommentPreprocFile */ .chroma .cpf { color: #78787e }
/* Generic */ .chroma .g { }
/* GenericDeleted */ .chroma .gd { color: #ff5c57 }
/* GenericEmph */ .chroma .ge { text-decoration: underline }
/* GenericError */ .chroma .gr { color: #ff5c57 }
/* GenericHeading */ .chroma .gh { font-weight: bold }
/* GenericInserted */ .chroma .gi { font-weight: bold }
/* GenericOutput */ .chroma .go { color: #43454f }
/* GenericPrompt */ .chroma .gp { }
/* GenericStrong */ .chroma .gs { font-style: italic }
/* GenericSubheading */ .chroma .gu { font-weight: bold }
/* GenericTraceback */ .chroma .gt { }
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
/* TextWhitespace */ .chroma .w { }

View File

@ -1,89 +0,0 @@
/* this variant does not work well if we use fallback styles for IE11 so better
ignore this variant in IE completely */
@supports not (-ms-high-contrast:none) {
/* based on rrt
/* Background */ .chroma { color: #f8f8f2; background-color: #000000 }
/* Other */ .chroma .x { }
/* Error */ .chroma .err { }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7c7c79 }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7c7c79 }
/* Keyword */ .chroma .k { color: #ff0000 }
/* KeywordConstant */ .chroma .kc { color: #ff0000 }
/* KeywordDeclaration */ .chroma .kd { color: #ff0000 }
/* KeywordNamespace */ .chroma .kn { color: #ff0000 }
/* KeywordPseudo */ .chroma .kp { color: #ff0000 }
/* KeywordReserved */ .chroma .kr { color: #ff0000 }
/* KeywordType */ .chroma .kt { color: #ee82ee }
/* Name */ .chroma .n { }
/* NameAttribute */ .chroma .na { }
/* NameBuiltin */ .chroma .nb { }
/* NameBuiltinPseudo */ .chroma .bp { }
/* NameClass */ .chroma .nc { }
/* NameConstant */ .chroma .no { color: #7fffd4 }
/* NameDecorator */ .chroma .nd { }
/* NameEntity */ .chroma .ni { }
/* NameException */ .chroma .ne { }
/* NameFunction */ .chroma .nf { color: #ffff00 }
/* NameFunctionMagic */ .chroma .fm { }
/* NameLabel */ .chroma .nl { }
/* NameNamespace */ .chroma .nn { }
/* NameOther */ .chroma .nx { }
/* NameProperty */ .chroma .py { }
/* NameTag */ .chroma .nt { }
/* NameVariable */ .chroma .nv { color: #eedd82 }
/* NameVariableClass */ .chroma .vc { }
/* NameVariableGlobal */ .chroma .vg { }
/* NameVariableInstance */ .chroma .vi { }
/* NameVariableMagic */ .chroma .vm { }
/* Literal */ .chroma .l { }
/* LiteralDate */ .chroma .ld { }
/* LiteralString */ .chroma .s { color: #87ceeb }
/* LiteralStringAffix */ .chroma .sa { color: #87ceeb }
/* LiteralStringBacktick */ .chroma .sb { color: #87ceeb }
/* LiteralStringChar */ .chroma .sc { color: #87ceeb }
/* LiteralStringDelimiter */ .chroma .dl { color: #87ceeb }
/* LiteralStringDoc */ .chroma .sd { color: #87ceeb }
/* LiteralStringDouble */ .chroma .s2 { color: #87ceeb }
/* LiteralStringEscape */ .chroma .se { color: #87ceeb }
/* LiteralStringHeredoc */ .chroma .sh { color: #87ceeb }
/* LiteralStringInterpol */ .chroma .si { color: #87ceeb }
/* LiteralStringOther */ .chroma .sx { color: #87ceeb }
/* LiteralStringRegex */ .chroma .sr { color: #87ceeb }
/* LiteralStringSingle */ .chroma .s1 { color: #87ceeb }
/* LiteralStringSymbol */ .chroma .ss { color: #ff6600 }
/* LiteralNumber */ .chroma .m { color: #ff6600 }
/* LiteralNumberBin */ .chroma .mb { color: #ff6600 }
/* LiteralNumberFloat */ .chroma .mf { color: #ff6600 }
/* LiteralNumberHex */ .chroma .mh { color: #ff6600 }
/* LiteralNumberInteger */ .chroma .mi { color: #ff6600 }
/* LiteralNumberIntegerLong */ .chroma .il { color: #ff6600 }
/* LiteralNumberOct */ .chroma .mo { color: #ff6600 }
/* Operator */ .chroma .o { }
/* OperatorWord */ .chroma .ow { }
/* Punctuation */ .chroma .p { }
/* Comment */ .chroma .c { color: #00ff00 }
/* CommentHashbang */ .chroma .ch { color: #00ff00 }
/* CommentMultiline */ .chroma .cm { color: #00ff00 }
/* CommentSingle */ .chroma .c1 { color: #00ff00 }
/* CommentSpecial */ .chroma .cs { color: #00ff00 }
/* CommentPreproc */ .chroma .cp { color: #e5e5e5 }
/* CommentPreprocFile */ .chroma .cpf { color: #e5e5e5 }
/* Generic */ .chroma .g { }
/* GenericDeleted */ .chroma .gd { }
/* GenericEmph */ .chroma .ge { }
/* GenericError */ .chroma .gr { }
/* GenericHeading */ .chroma .gh { }
/* GenericInserted */ .chroma .gi { }
/* GenericOutput */ .chroma .go { }
/* GenericPrompt */ .chroma .gp { }
/* GenericStrong */ .chroma .gs { }
/* GenericSubheading */ .chroma .gu { }
/* GenericTraceback */ .chroma .gt { }
/* GenericUnderline */ .chroma .gl { }
/* TextWhitespace */ .chroma .w { }
}

View File

@ -1,83 +0,0 @@
/* based on monokai
/* Background */ .chroma { color: #f8f8f8; background-color: #2b2b2b }
/* Other */ .chroma .x { }
/* Error */ .chroma .err { color: #960050; }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* Keyword */ .chroma .k { color: #66d9ef }
/* KeywordConstant */ .chroma .kc { color: #66d9ef }
/* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
/* KeywordNamespace */ .chroma .kn { color: #f92672 }
/* KeywordPseudo */ .chroma .kp { color: #66d9ef }
/* KeywordReserved */ .chroma .kr { color: #66d9ef }
/* KeywordType */ .chroma .kt { color: #66d9ef }
/* Name */ .chroma .n { }
/* NameAttribute */ .chroma .na { color: #a6e22e }
/* NameBuiltin */ .chroma .nb { }
/* NameBuiltinPseudo */ .chroma .bp { }
/* NameClass */ .chroma .nc { color: #a6e22e }
/* NameConstant */ .chroma .no { color: #66d9ef }
/* NameDecorator */ .chroma .nd { color: #a6e22e }
/* NameEntity */ .chroma .ni { }
/* NameException */ .chroma .ne { color: #a6e22e }
/* NameFunction */ .chroma .nf { color: #a6e22e }
/* NameFunctionMagic */ .chroma .fm { }
/* NameLabel */ .chroma .nl { }
/* NameNamespace */ .chroma .nn { }
/* NameOther */ .chroma .nx { color: #a6e22e }
/* NameProperty */ .chroma .py { }
/* NameTag */ .chroma .nt { color: #f92672 }
/* NameVariable */ .chroma .nv { }
/* NameVariableClass */ .chroma .vc { }
/* NameVariableGlobal */ .chroma .vg { }
/* NameVariableInstance */ .chroma .vi { }
/* NameVariableMagic */ .chroma .vm { }
/* Literal */ .chroma .l { color: #ae81ff }
/* LiteralDate */ .chroma .ld { color: #e6db74 }
/* LiteralString */ .chroma .s { color: #e6db74 }
/* LiteralStringAffix */ .chroma .sa { color: #e6db74 }
/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 }
/* LiteralStringChar */ .chroma .sc { color: #e6db74 }
/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 }
/* LiteralStringDoc */ .chroma .sd { color: #e6db74 }
/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 }
/* LiteralStringEscape */ .chroma .se { color: #ae81ff }
/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 }
/* LiteralStringInterpol */ .chroma .si { color: #e6db74 }
/* LiteralStringOther */ .chroma .sx { color: #e6db74 }
/* LiteralStringRegex */ .chroma .sr { color: #e6db74 }
/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 }
/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 }
/* LiteralNumber */ .chroma .m { color: #ae81ff }
/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
/* Operator */ .chroma .o { color: #f92672 }
/* OperatorWord */ .chroma .ow { color: #f92672 }
/* Punctuation */ .chroma .p { }
/* Comment */ .chroma .c { color: #7c7c7c }
/* CommentHashbang */ .chroma .ch { color: #7c7c7c }
/* CommentMultiline */ .chroma .cm { color: #7c7c7c }
/* CommentSingle */ .chroma .c1 { color: #7c7c7c }
/* CommentSpecial */ .chroma .cs { color: #7c7c7c }
/* CommentPreproc */ .chroma .cp { color: #7c7c7c }
/* CommentPreprocFile */ .chroma .cpf { color: #7c7c7c }
/* Generic */ .chroma .g { }
/* GenericDeleted */ .chroma .gd { color: #f92672 }
/* GenericEmph */ .chroma .ge { font-style: italic }
/* GenericError */ .chroma .gr { }
/* GenericHeading */ .chroma .gh { }
/* GenericInserted */ .chroma .gi { color: #a6e22e }
/* GenericOutput */ .chroma .go { }
/* GenericPrompt */ .chroma .gp { }
/* GenericStrong */ .chroma .gs { font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #7c7c7c }
/* GenericTraceback */ .chroma .gt { }
/* GenericUnderline */ .chroma .gl { }
/* TextWhitespace */ .chroma .w { }

View File

@ -1,83 +0,0 @@
/* based on tango
/* Background */ .chroma { background-color: #f8f8f8 }
/* Other */ .chroma .x { color: #000000 }
/* Error */ .chroma .err { color: #a40000 }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* Keyword */ .chroma .k { color: #204a87; font-weight: bold }
/* KeywordConstant */ .chroma .kc { color: #204a87; font-weight: bold }
/* KeywordDeclaration */ .chroma .kd { color: #204a87; font-weight: bold }
/* KeywordNamespace */ .chroma .kn { color: #204a87; font-weight: bold }
/* KeywordPseudo */ .chroma .kp { color: #204a87; font-weight: bold }
/* KeywordReserved */ .chroma .kr { color: #204a87; font-weight: bold }
/* KeywordType */ .chroma .kt { color: #204a87; font-weight: bold }
/* Name */ .chroma .n { color: #000000 }
/* NameAttribute */ .chroma .na { color: #c4a000 }
/* NameBuiltin */ .chroma .nb { color: #204a87 }
/* NameBuiltinPseudo */ .chroma .bp { color: #3465a4 }
/* NameClass */ .chroma .nc { color: #000000 }
/* NameConstant */ .chroma .no { color: #000000 }
/* NameDecorator */ .chroma .nd { color: #5c35cc; font-weight: bold }
/* NameEntity */ .chroma .ni { color: #ce5c00 }
/* NameException */ .chroma .ne { color: #cc0000; font-weight: bold }
/* NameFunction */ .chroma .nf { color: #000000 }
/* NameFunctionMagic */ .chroma .fm { color: #000000 }
/* NameLabel */ .chroma .nl { color: #f57900 }
/* NameNamespace */ .chroma .nn { color: #000000 }
/* NameOther */ .chroma .nx { color: #000000 }
/* NameProperty */ .chroma .py { color: #000000 }
/* NameTag */ .chroma .nt { color: #204a87; font-weight: bold }
/* NameVariable */ .chroma .nv { color: #000000 }
/* NameVariableClass */ .chroma .vc { color: #000000 }
/* NameVariableGlobal */ .chroma .vg { color: #000000 }
/* NameVariableInstance */ .chroma .vi { color: #000000 }
/* NameVariableMagic */ .chroma .vm { color: #000000 }
/* Literal */ .chroma .l { color: #000000 }
/* LiteralDate */ .chroma .ld { color: #000000 }
/* LiteralString */ .chroma .s { color: #4e9a06 }
/* LiteralStringAffix */ .chroma .sa { color: #4e9a06 }
/* LiteralStringBacktick */ .chroma .sb { color: #4e9a06 }
/* LiteralStringChar */ .chroma .sc { color: #4e9a06 }
/* LiteralStringDelimiter */ .chroma .dl { color: #4e9a06 }
/* LiteralStringDoc */ .chroma .sd { color: #8f5902; font-style: italic }
/* LiteralStringDouble */ .chroma .s2 { color: #4e9a06 }
/* LiteralStringEscape */ .chroma .se { color: #4e9a06 }
/* LiteralStringHeredoc */ .chroma .sh { color: #4e9a06 }
/* LiteralStringInterpol */ .chroma .si { color: #4e9a06 }
/* LiteralStringOther */ .chroma .sx { color: #4e9a06 }
/* LiteralStringRegex */ .chroma .sr { color: #4e9a06 }
/* LiteralStringSingle */ .chroma .s1 { color: #4e9a06 }
/* LiteralStringSymbol */ .chroma .ss { color: #4e9a06 }
/* LiteralNumber */ .chroma .m { color: #0000cf; font-weight: bold }
/* LiteralNumberBin */ .chroma .mb { color: #0000cf; font-weight: bold }
/* LiteralNumberFloat */ .chroma .mf { color: #0000cf; font-weight: bold }
/* LiteralNumberHex */ .chroma .mh { color: #0000cf; font-weight: bold }
/* LiteralNumberInteger */ .chroma .mi { color: #0000cf; font-weight: bold }
/* LiteralNumberIntegerLong */ .chroma .il { color: #0000cf; font-weight: bold }
/* LiteralNumberOct */ .chroma .mo { color: #0000cf; font-weight: bold }
/* Operator */ .chroma .o { color: #ce5c00; font-weight: bold }
/* OperatorWord */ .chroma .ow { color: #204a87; font-weight: bold }
/* Punctuation */ .chroma .p { color: #000000; font-weight: bold }
/* Comment */ .chroma .c { color: #8f5902; font-style: italic }
/* CommentHashbang */ .chroma .ch { color: #8f5902; font-style: italic }
/* CommentMultiline */ .chroma .cm { color: #8f5902; font-style: italic }
/* CommentSingle */ .chroma .c1 { color: #8f5902; font-style: italic }
/* CommentSpecial */ .chroma .cs { color: #8f5902; font-style: italic }
/* CommentPreproc */ .chroma .cp { color: #8f5902; font-style: italic }
/* CommentPreprocFile */ .chroma .cpf { color: #8f5902; font-style: italic }
/* Generic */ .chroma .g { color: #000000 }
/* GenericDeleted */ .chroma .gd { color: #a40000 }
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
/* GenericError */ .chroma .gr { color: #ef2929 }
/* GenericHeading */ .chroma .gh { color: #000080; font-weight: bold }
/* GenericInserted */ .chroma .gi { color: #00a000 }
/* GenericOutput */ .chroma .go { color: #000000; font-style: italic }
/* GenericPrompt */ .chroma .gp { color: #8f5902 }
/* GenericStrong */ .chroma .gs { color: #000000; font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #800080; font-weight: bold }
/* GenericTraceback */ .chroma .gt { color: #a40000; font-weight: bold }
/* GenericUnderline */ .chroma .gl { color: #000000; text-decoration: underline }
/* TextWhitespace */ .chroma .w { color: #f8f8f8; text-decoration: underline }

File diff suppressed because one or more lines are too long

View File

@ -1,39 +0,0 @@
@font-face {
font-family: 'Work Sans';
font-style: normal;
font-weight: 200;
src: url("../fonts/WorkSans-ExtraLight.woff") format("woff2"), url("../fonts/WorkSans-ExtraLight.woff") format("woff");
font-display: swap;
}
@font-face {
font-family: 'Work Sans';
font-style: normal;
font-weight: 300;
src: url("../fonts/WorkSans-Light.woff2") format("woff2"), url("../fonts/WorkSans-Light.woff") format("woff");
font-display: swap;
}
@font-face {
font-family: 'Work Sans';
font-style: normal;
font-weight: 400;
src: url("../fonts/WorkSans-Regular.woff2") format("woff2"), url("../fonts/WorkSans-Regular.woff") format("woff");
font-display: swap;
}
@font-face {
font-family: 'Work Sans';
font-style: normal;
font-weight: 500;
src: url("../fonts/WorkSans-Medium.woff2") format("woff2"), url("../fonts/WorkSans-Medium.woff") format("woff");
font-display: swap;
}
@font-face {
font-family: 'Work Sans';
font-style: normal;
font-weight: 600;
src: url("../fonts/WorkSans-Bold.woff2") format("woff2"), url("../fonts/WorkSans-Bold.woff") format("woff");
font-display: swap;
}

View File

@ -1,233 +0,0 @@
@import "theme-relearn-light.css";
#sidebar {
display: none;
}
#body {
margin-left: 0 !important;
min-width: 100% !important;
max-width: 100% !important;
width: 100% !important;
}
#body #navigation {
display: none;
}
html{
font-size: 8.763pt;
}
body {
background-color: white;
}
code.copy-to-clipboard-code {
border-bottom-right-radius: 2px;
border-top-right-radius: 2px;
border-right-width: 1px;
}
span > code.copy-to-clipboard-code {
border-end-end-radius: 2px;
border-start-end-radius: 2px;
border-inline-end-width: 1px;
}
pre {
border: 1px solid #ccc;
}
#body #topbar{
background-color: #fff; /* avoid background bleeding*/
border-bottom: 1px solid #ddd;
border-radius: 0;
padding-left: 0; /* for print, we want to align with the footer to ease the layout */
color: #777;
}
.navigation,
#top-print-link,
#top-github-link {
/* we don't need this while printing */
display: none;
}
#body #breadcrumbs {
width: 100%;
}
#body #breadcrumbs .links {
overflow-x: hidden;
visibility: visible;
}
.copy-to-clipboard-button {
display: none;
}
#body h1, #body h2, #body h3, #body .article-subheading, #body h4, #body h5, #body h6 {
/* better contrast for colored elements */
color: black;
}
#body th, #body td,
#body code, #body strong, #body b,
#body li, #body dd, #body dt,
#body p,
#body a, #body button, #body .badge .badge-content {
/* better contrast for colored elements */
color: black;
}
#body .anchor{
display: none;
}
#body pre,
#body code {
background-color: white;
border-color: #ddd;
}
hr{
border-bottom: 1px solid #ddd;
}
body,
#body,
#body-inner {
overflow: visible !important; /* turn off limitations for perfect scrollbar */
}
#body #body-inner {
/* reset paddings for chapters in screen */
padding: 0 3.25rem 4rem 3.25rem;
}
#body #body-inner h1 {
border-bottom: 1px solid #ddd;
margin-bottom: 2rem;
padding-bottom: .75rem;
}
#body-inner .chapter h3:first-of-type {
margin-top: 2rem;
}
/* Children shortcode */
.children p,
.children-li p,
.children-h2 p,
.children-h3 p {
font-size: 1rem;
}
.footline {
/* in print mode show footer line to signal reader the end of document */
border-top: 1px solid #ddd;
color: #777;
margin-top: 1.5rem;
padding-top: .75rem;
}
#body #body-inner .footline a,
#body #body-inner .btn a {
text-decoration: none;
}
#body #body-inner a {
/* in print we want to distinguish links in our content from
normal text even if printed black/white;
don't use a.highlight in selector to also get links that are
put as HTML into markdown */
text-decoration-line: underline;
}
#toc-menu {
/* we don't need this while printing */
display: none;
}
#body #sidebar-toggle-span {
/* we don't need this while printing */
display: none;
}
#breadcrumbs .links {
display: inline;
}
#topbar{
/* the header is sticky which is not suitable for print; */
position: inherit; /* IE11 doesn't know "initial" here */
}
#topbar > div {
background-color: #ffffff; /* IE11 doesn't know "initial" here */
}
#body .tab-nav-button:not(.active) {
opacity: .5;
}
#head-tags {
display: none;
}
mark {
background: inherit