Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • oss/utilities/documentation-manager
1 result
Show changes
Commits on Source (9)
Showing
with 1211 additions and 83 deletions
{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}
{{- if .Versions }}
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
style: gitlab
template: CHANGELOG.tpl.md
info:
title: CHANGELOG
repository_url: https://gitlab.schukai.com/oss/utilities/documentation-manager
options:
commits:
filters:
Type:
- feat
- fix
- doc
- refactor
- perf
- test
- chore
## deprecated types and typos
- docs
- documentation
- feat
- added
- add
- bugfix
- revert
- update
- updates
- change
- changed
commit_groups:
title_maps:
feat: Add Features
fix: Bug Fixes
doc: Documentation
refactor: Code Refactoring
perf: Performance Improvements
test: Tests
## Chore is used for all other changes that don't fit in the other categories
chore: Changes
## deprecated types and typos
docs: Documentation
documentation: Documentation
added: Add Features
add: Add Features
bugfix: Bug Fixes
revert: Reverts
update: Changes
updates: Changes
change: Changes
changed: Changes
header:
pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
pattern_maps:
- Type
- Scope
- Subject
notes:
keywords:
- BREAKING CHANGE
/deployment/build/
\ No newline at end of file
# Makefile comes from update
Makefile.example
# Vendor
/development/vendor/
/deployment/vendor/
# Created by https://www.toptal.com/developers/gitignore/api/intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
### DBeaver ###
# ide config file
.dbeaver-data-sources*.xml
### Git ###
# Created by git for backups. To disable backups in Git:
# git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### Go ###
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
#
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
# Go workspace file
go.work
### Go Patch ###
/vendor/
/Godeps/
### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.
.idea/*
!.idea/codeStyles
!.idea/runConfigurations
### Intellij+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
# AWS User-specific
# Generated files
# Sensitive or high-churn files
# Gradle
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
# Mongo Explorer plugin
# File-based project format
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# SonarLint plugin
# Crashlytics plugin (for Android Studio and IntelliJ)
# Editor-based Rest Client
# Android studio 3.1+ serialized cache file
### Intellij+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
### NetBeans ###
**/nbproject/private/
**/nbproject/Makefile-*.mk
**/nbproject/Package-*.bash
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
# SvelteKit build / generate output
.svelte-kit
### PhpStorm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
# AWS User-specific
# Generated files
# Sensitive or high-churn files
# Gradle
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
# Mongo Explorer plugin
# File-based project format
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# SonarLint plugin
# Crashlytics plugin (for Android Studio and IntelliJ)
# Editor-based Rest Client
# Android studio 3.1+ serialized cache file
### PhpStorm Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/
# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/ACHE_FILE
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml
### PHPUnit ###
# Covers PHPUnit
# Reference: https://phpunit.de/
# Generated files
.phpunit.result.cache
.phpunit.cache
# PHPUnit
/app/phpunit.xml
/phpunit.xml
# Build data
/build/
### Vim ###
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# Support for Project snippet scope
.vscode/*.code-snippets
# Ignore code-workspaces
*.code-workspace
### yarn ###
# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
.yarn/*
!.yarn/releases
!.yarn/patches
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
# if you are NOT using Zero-installs, then:
# comment the following lines
!.yarn/cache
# and uncomment the following lines
# .pnp.*
......@@ -3,6 +3,11 @@
<module name="documentation-manager" />
<working_directory value="$PROJECT_DIR$/development/examples/example3/" />
<parameters value="document html --config=config/web.yaml" />
<EXTENSION ID="software.aws.toolkits.jetbrains.core.execution.GoAwsConnectionRunConfigurationExtension">
<option name="credential" />
<option name="region" />
<option name="useCurrentConnection" value="false" />
</EXTENSION>
<kind value="DIRECTORY" />
<directory value="$PROJECT_DIR$/application/source" />
<filePath value="$PROJECT_DIR$" />
......
<a name="v1.1.0"></a>
## v1.1.0 - 2022-12-04
### Add Features
- new thunderclient api and change markdown lib
### Changes
- update makefiles
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
- commit save point
......@@ -21,13 +21,14 @@ THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH)
# include project.mk only if it exists
-include $(PROJECT_ROOT)project.mk
## Define the location of Makefiles
# Define the location of Makefiles
MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/
#############################################################################################
#############################################################################################
##
......@@ -36,43 +37,73 @@ MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/
#############################################################################################
#############################################################################################
include $(MAKEFILE_IMPORT_PATH)license-agpl3.mk
#include $(MAKEFILE_IMPORT_PATH)directories-standard.mk
#include $(MAKEFILE_IMPORT_PATH)directories-go-lib.mk
include $(MAKEFILE_IMPORT_PATH)directories-go-utilities.mk
#include $(MAKEFILE_IMPORT_PATH)directories-platform-part.mk
#include $(MAKEFILE_IMPORT_PATH)jsdoc.mk
include $(MAKEFILE_IMPORT_PATH)output.mk
include $(MAKEFILE_IMPORT_PATH)placeholder.mk
include $(MAKEFILE_IMPORT_PATH)directories-standard.mk
include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)conan.mk
include $(MAKEFILE_IMPORT_PATH)s3.mk
#include $(MAKEFILE_IMPORT_PATH)readme-standard.mk
#include $(MAKEFILE_IMPORT_PATH)readme-webcomponents.mk
#include $(MAKEFILE_IMPORT_PATH)readme-go-utilities.mk
#include $(MAKEFILE_IMPORT_PATH)readme-go-lib.mk
#include $(MAKEFILE_IMPORT_PATH)readme-platform-part.mk
include $(MAKEFILE_IMPORT_PATH)licenses.mk
include $(MAKEFILE_IMPORT_PATH)license-agpl3.mk
#include $(MAKEFILE_IMPORT_PATH)license-unlicensed.mk
#include $(MAKEFILE_IMPORT_PATH)license-all-rights-reserved.mk
#include $(MAKEFILE_IMPORT_PATH)jsdoc-json.mk
include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)changelog.mk
#include $(MAKEFILE_IMPORT_PATH)docman.mk
#include $(MAKEFILE_IMPORT_PATH)reqman.mk
include $(MAKEFILE_IMPORT_PATH)git.mk
include $(MAKEFILE_IMPORT_PATH)gitignore.mk
include $(MAKEFILE_IMPORT_PATH)color.mk
include $(MAKEFILE_IMPORT_PATH)terminal.mk
include $(MAKEFILE_IMPORT_PATH)output.mk
include $(MAKEFILE_IMPORT_PATH)version.mk
include $(MAKEFILE_IMPORT_PATH)target-help.mk
include $(MAKEFILE_IMPORT_PATH)target-variable.mk
include $(MAKEFILE_IMPORT_PATH)target-update-makefiles.mk
#include $(MAKEFILE_IMPORT_PATH)docker.mk
#include $(MAKEFILE_IMPORT_PATH)node.mk
include $(MAKEFILE_IMPORT_PATH)terminal.mk
# include project.mk only if it exists
-include $(MAKEFILE_IMPORT_PATH)project.mk
include $(MAKEFILE_IMPORT_PATH)target-go-fetch-licenses.mk
include $(MAKEFILE_IMPORT_PATH)target-add-licenses.mk
include $(MAKEFILE_IMPORT_PATH)target-deploy-tool.mk
include $(MAKEFILE_IMPORT_PATH)target-build-go.mk
#include $(MAKEFILE_IMPORT_PATH)target-jsdoc-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-docman.mk
#include $(MAKEFILE_IMPORT_PATH)target-caddy.mk
include $(MAKEFILE_IMPORT_PATH)target-conan.mk
#include $(MAKEFILE_IMPORT_PATH)target-phpunit.mk
#include $(MAKEFILE_IMPORT_PATH)target-jekyll.mk
include $(MAKEFILE_IMPORT_PATH)target-update-makefiles.mk
include $(MAKEFILE_IMPORT_PATH)target-help.mk
include $(MAKEFILE_IMPORT_PATH)target-go-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-node-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-node-test.mk
#include $(MAKEFILE_IMPORT_PATH)target-npm-publish.mk
#include $(MAKEFILE_IMPORT_PATH)target-npm.mk
include $(MAKEFILE_IMPORT_PATH)target-git.mk
include $(MAKEFILE_IMPORT_PATH)terminal-check.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-standard.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-webcomponent.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-go-utilities.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-go-lib.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-platform-part.mk
include $(MAKEFILE_IMPORT_PATH)target-version.mk
include $(MAKEFILE_IMPORT_PATH)target-variable.mk
include $(MAKEFILE_IMPORT_PATH)terminal-check.mk
#############################################################################################
#############################################################################################
##
## PROJECT-DEFINITIONS
##
#############################################################################################
#############################################################################################
GOFILES := $(shell find $(SOURCE_PATH) -name '*.go' ! -name 'catalog.go')
LOCALEFILES := $(shell find $(SOURCE_PATH)translations/locales/ -name '*.json')
CATALOGFILES := $(SOURCE_PATH)translations/locales/catalog.go
# include target-project.mk only if it exists
-include $(MAKEFILE_IMPORT_PATH)target-project.mk
$(CATALOGFILES): $(LOCALEFILES) $(GOFILES)
$(QUIET) $(GO) generate $(SOURCE_PATH)translations/translations.go
$(QUIET) touch $(CATALOGFILES) $(LOCALEFILES)
.PHONY: build-locales
## Generate the catalog files
build-locales: $(CATALOGFILES)
......@@ -30,11 +30,15 @@ show font directories
kpsepath mf | sed -e 's/:/\n/g'
```
### Awsome Boxes
## Usage
### Markdown
#### Awsome Boxes
* [Awesomebox](https://ftp.gwdg.de/pub/ctan/graphics/awesomebox/awesomebox.pdf)
### Circled numbers
#### Circled numbers
[compsymb-1qyb3zd.pdf](https://math.uoregon.edu/wp-content/uploads/2014/12/compsymb-1qyb3zd.pdf)
......@@ -71,15 +75,22 @@ dingbats are not supported in the current version of TikZ.
[](https://ctan.net/fonts/libertine/doc/libertine.pdf)
#### Api-Documentation
##### Thunder Client
[Thunder Client](https://www.thunderclient.io/) is a plugin for Visual Studio Code.
With this plugin you can create and manage REST API requests. Docmen supports the
import of Thunder Client files.
----
## Commands
### Commands
### General Parameters
#### General Parameters
The date format for the output can be specified with the parameter `--date-format`.
......@@ -93,7 +104,7 @@ Finally, we look for the configuration in the `/etc/documentations-manager/confi
The parameter `path` specifies the path.
#### Configuration
##### Configuration
```yaml
## DOCMAN_PATH
......@@ -116,7 +127,7 @@ PDF:
```
### Help
#### Help
There is help on the command line for each individual command.
......@@ -124,7 +135,7 @@ There is help on the command line for each individual command.
docman --help
```
### create PDF
#### create PDF
```bash
docman document pdf --config pathto/config.yaml
......@@ -217,13 +228,6 @@ Individual LaTeX commands can be looked up here:
* [www.latex4ei.de/downloads/LaTeX_CheatSheet.pdf](https://www.latex4ei.de/downloads/LaTeX_CheatSheet.pdf)
* [download.schukai.com/tools/docman/](http://download.schukai.com/tools/docman/)
## Change Log
- Version 1.0
- takeover of the code from reqman
## License # Credits
- Unsplash - https://unsplash.com/
......
......@@ -4,6 +4,7 @@ import (
"errors"
"gitlab.schukai.com/oss/utilities/documentation-manager/environment"
"gitlab.schukai.com/oss/utilities/documentation-manager/translations"
"os"
)
const (
......@@ -40,10 +41,10 @@ func checkError(err error) {
return
}
//switch err.(type) {
//case *flags.Error:
// checkFlagsError(err)
//}
//
environment.ExitWithError(1, "Unknown Error: %s", err.Error())
if errors.Is(err, os.ErrNotExist) {
environment.ExitWithError(CodeNoInput, err.Error())
} else {
environment.ExitWithError(1, "Unknown Error: %s", err.Error())
}
}
......@@ -2,7 +2,6 @@ package document
import (
"errors"
"io/ioutil"
"os"
"path"
"path/filepath"
......@@ -56,7 +55,7 @@ func buildFileMap(files []*SourceFile) (SourceFileMap, []string) {
}
func getFiles(sourcePath string) ([]*SourceFile, error) {
func getFiles(tmpl GetComponentsTemplatesInterface, sourcePath string) ([]*SourceFile, error) {
def := []*SourceFile{}
......@@ -77,12 +76,12 @@ func getFiles(sourcePath string) ([]*SourceFile, error) {
cp := path.Clean(current)
c, err := ioutil.ReadFile(cp)
c, err := os.ReadFile(cp)
if err != nil {
return err
}
err, p := evaluateDocumentContent(c)
err, p := evaluateDocumentContent(tmpl, c)
if err != nil {
return errors.New("Error while processing files: " + current + " (" + err.Error() + ")")
......
......@@ -6,16 +6,26 @@ import (
"encoding/base64"
"fmt"
"github.com/PuerkitoBio/goquery"
"github.com/andybalholm/cascadia"
"github.com/gomarkdown/markdown"
"github.com/gomarkdown/markdown/html"
"github.com/gomarkdown/markdown/ast"
markdownHTML "github.com/gomarkdown/markdown/html"
"github.com/gomarkdown/markdown/parser"
"github.com/mattn/go-shellwords"
"github.com/tdewolff/minify/v2"
minHTML "github.com/tdewolff/minify/v2/html"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
goldmarkHTML "github.com/yuin/goldmark/renderer/html"
"gitlab.schukai.com/oss/utilities/documentation-manager/environment"
"gitlab.schukai.com/oss/utilities/documentation-manager/translations"
"gitlab.schukai.com/oss/utilities/documentation-manager/utils"
"golang.org/x/net/html"
"golang.org/x/net/html/atom"
"io"
"io/ioutil"
"log"
"math/rand"
"os"
"path"
"path/filepath"
......@@ -26,6 +36,12 @@ import (
"time"
)
func init() {
rand.Seed(time.Now().UnixNano())
}
const defaultSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
type BuildHtmlEnvironment struct {
SourcePath string
DateFormat string
......@@ -33,10 +49,15 @@ type BuildHtmlEnvironment struct {
Verbose bool
SinglePage bool
Templates struct {
HTML string
HTML string
Components map[string]string
}
}
func (t *BuildHtmlEnvironment) GetComponentsTemplates() map[string]string {
return t.Templates.Components
}
type HtmlDocument struct {
ID string
Content string
......@@ -109,7 +130,16 @@ func renderSinglePageHtml(env BuildHtmlEnvironment) error {
output := getSingleHtmlOutputFile(env)
t := environment.ReadTemplate(env.Templates.HTML)
p, err := template.New("HTML").Parse(t)
doc, err := html.Parse(strings.NewReader(t))
checkError(err)
extractTemplate(&env, doc, "#doc-api-request")
stringBuilder := &strings.Builder{}
err = html.Render(stringBuilder, doc)
p, err := template.New("HTML").Funcs(getFuncMap(&env)).Parse(stringBuilder.String())
checkError(err)
d, err := NewHTMLDataset(env)
......@@ -126,12 +156,49 @@ func renderSinglePageHtml(env BuildHtmlEnvironment) error {
err = m.Minify("text/html", out, buf)
checkError(err)
err = ioutil.WriteFile(output, out.Bytes(), 0644)
err = os.WriteFile(output, out.Bytes(), 0644)
checkError(err)
return nil
}
func extractTemplate(env *BuildHtmlEnvironment, doc *html.Node, id string) {
sel, err := cascadia.Parse(id)
checkError(err)
node := cascadia.Query(doc, sel)
node.Parent.RemoveChild(node)
container := html.Node{
Type: html.ElementNode,
Data: "div",
DataAtom: atom.Div,
}
var nodeList []*html.Node
fn := node.FirstChild
for fn != nil {
nodeList = append(nodeList, fn)
fn = fn.NextSibling
}
for _, n := range nodeList {
n.Parent.RemoveChild(n)
container.AppendChild(n)
}
stringBuilderTemplate := &strings.Builder{}
err = html.Render(stringBuilderTemplate, &container)
checkError(err)
if env.Templates.Components == nil {
env.Templates.Components = make(map[string]string)
}
env.Templates.Components[id] = stringBuilderTemplate.String()
}
func renderMultiPageHtml(env BuildHtmlEnvironment) error {
environment.ExitWithError(2, "not implemented")
return nil
......@@ -192,6 +259,51 @@ func buildTree(body string) *Tree[DocumentNode] {
}
func randomID() string {
var chars = []rune(defaultSet)
s := make([]rune, 5)
for i := range s {
s[i] = chars[rand.Intn(len(chars))]
}
return string(s)
}
func getThunderClientAPI(env GetComponentsTemplatesInterface, content string) (string, map[string]string) {
m := map[string]string{}
regEx := regexp.MustCompile(`\{%\s*thunderClientAPI\s+(?P<args>.*)\%\}`)
matches := regEx.FindAllStringSubmatch(content, -1)
if matches == nil {
return content, m
}
for _, match := range matches {
if len(match) < 2 {
continue
}
fullMatch := match[0]
args, err := shellwords.Parse(match[1])
checkError(err)
if len(args) != 2 {
environment.ExitWithError(2, "thunderClientAPI requires two arguments")
}
path := args[0]
id := args[1]
key := randomID()
m[key] = embedThunderClientAPI(env, path, id)
content = strings.Replace(content, fullMatch, key, -1)
}
return content, m
}
func getHtmlImages(content string, absolute string) (string, map[string]string) {
regEx := regexp.MustCompile(`(?P<match>\!\[(?P<label>[^]]*)\]\((?P<path>[^)]*)\))`)
......@@ -238,6 +350,14 @@ func getHtmlImages(content string, absolute string) (string, map[string]string)
return content, m
}
func replaceThunderClientAPI(content string, boxMap map[string]string) string {
for k, v := range boxMap {
content = strings.Replace(content, k, v, -1)
}
return content
}
func replaceImages(content string, images map[string]string) string {
for k, v := range images {
content = strings.Replace(content, k, v, -1)
......@@ -247,7 +367,7 @@ func replaceImages(content string, images map[string]string) string {
func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) {
files, err := getFiles(env.SourcePath)
files, err := getFiles(&env, env.SourcePath)
if err != nil {
return nil, err
}
......@@ -276,6 +396,7 @@ func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) {
text = convertHeadlines(text, mapFiles[key].level, mapFiles[key].textMeta.meta.Level)
text, boxMap := convertAwesomeBoxesToHTML(text)
text, imgMap := getHtmlImages(text, mapFiles[key].baseDir)
text, thunderApiMap := getThunderClientAPI(&env, text)
text = replaceRelativeLinksToHTML(text, mapFiles[key], mapFiles)
......@@ -286,6 +407,7 @@ func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) {
text = replaceImages(text, imgMap)
text = replaceAwesomeBoxes(text, boxMap)
text = replaceThunderClientAPI(text, thunderApiMap)
id := mapFiles[key].textMeta.meta.ID
if id == "" {
......@@ -395,7 +517,7 @@ func replaceAwesomeBoxes(content string, boxMap map[string]string) string {
func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFileMap) string {
label := "link_" + f.hash
content = "<div id=\"" + label + "\"></div>\n" + strings.TrimSpace(content) + "\n"
content = "\n<div id=\"" + label + "\"></div>\n\n" + strings.TrimSpace(content) + "\n\n"
regEx := regexp.MustCompile(`(?:^|[^!])(?P<match>\[(?P<label>[^]]*)\]\((?P<path>[^)]*)\))`)
matches := regEx.FindAllStringSubmatch(content, -1)
......@@ -425,8 +547,13 @@ func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFil
p = strings.Split(p, "#")[0]
ext := filepath.Ext(p)
if ext == "" {
environment.State.AddWarning(translations.T.Sprintf("No extension, of the link %s, in the file %s is not supported.", p, f.absSourcePath))
continue
}
if ext != ".md" && ext != ".markdown" {
environment.State.AddWarning(translations.T.Sprintf("file extension %s, in file %s, not supported for relative links", ext, f.absSourcePath))
environment.State.AddWarning(translations.T.Sprintf("The extension %s, of the link %s, in the file %s is not supported.", ext, p, f.absSourcePath))
continue
}
......@@ -444,9 +571,38 @@ func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFil
return content
}
func renderHook(w io.Writer, node ast.Node, entering bool) (ast.WalkStatus, bool) {
switch node.(type) {
case *ast.HTMLSpan: // allow the html to be escaped
return ast.GoToNext, true
case *ast.HTMLBlock: // allow the html to be escaped
return ast.GoToNext, true
}
return ast.GoToNext, false
}
func createHtmlFromMarkdown(text string) string {
htmlFlags := html.CommonFlags | html.HrefTargetBlank
opts := html.RendererOptions{
md := goldmark.New(
goldmark.WithExtensions(extension.GFM),
goldmark.WithParserOptions(),
goldmark.WithRendererOptions(
goldmarkHTML.WithUnsafe(),
),
)
var buf bytes.Buffer
err := md.Convert([]byte(text), &buf)
checkError(err)
return buf.String()
}
func c2reateHtmlFromMarkdown(text string) string {
htmlFlags := markdownHTML.CommonFlags | markdownHTML.HrefTargetBlank | markdownHTML.SkipHTML
opts := markdownHTML.RendererOptions{
AbsolutePrefix: "",
FootnoteAnchorPrefix: "",
FootnoteReturnLinkContents: "",
......@@ -458,12 +614,44 @@ func createHtmlFromMarkdown(text string) string {
Icon: "",
Head: nil,
Flags: htmlFlags,
RenderNodeHook: nil,
RenderNodeHook: renderHook,
Comments: nil,
Generator: "",
}
renderer := html.NewRenderer(opts)
renderer := markdownHTML.NewRenderer(opts)
/**
CommonExtensions Extensions = NoIntraEmphasis | Tables | FencedCode |
Autolink | Strikethrough | SpaceHeadings | HeadingIDs |
BackslashLineBreak | DefinitionLists | MathJax
NoIntraEmphasis Extensions = 1 << iota // Ignore emphasis markers inside words
Tables // Parse tables
FencedCode // Parse fenced code blocks
Autolink // Detect embedded URLs that are not explicitly marked
Strikethrough // Strikethrough text using ~~test~~
LaxHTMLBlocks // Loosen up HTML block parsing rules
SpaceHeadings // Be strict about prefix heading rules
HardLineBreak // Translate newlines into line breaks
NonBlockingSpace // Translate backspace spaces into line non-blocking spaces
TabSizeEight // Expand tabs to eight spaces instead of four
Footnotes // Pandoc-style footnotes
NoEmptyLineBeforeBlock // No need to insert an empty line to start a (code, quote, ordered list, unordered list) block
HeadingIDs // specify heading IDs with {#id}
Titleblock // Titleblock ala pandoc
AutoHeadingIDs // Create the heading ID from the text
BackslashLineBreak // Translate trailing backslashes into line breaks
DefinitionLists // Parse definition lists
MathJax // Parse MathJax
OrderedListStart // Keep track of the first number used when starting an ordered list.
Attributes // Block Attributes
SuperSubscript // Super- and subscript support: 2^10^, H~2~O.
EmptyLinesBreakList // 2 empty lines break out of list
Includes // Support including other files.
Mmark // Support Mmark syntax, see https://mmark.nl/syntax
*/
extensions := parser.CommonExtensions | parser.AutoHeadingIDs
parser := parser.NewWithExtensions(extensions)
......
......@@ -26,6 +26,10 @@ type BuildPdfEnvironment struct {
}
}
func (t *BuildPdfEnvironment) GetComponentsTemplates() map[string]string {
return map[string]string{}
}
type PdfDataset struct {
Documents string
CreatedFormat string
......@@ -33,7 +37,7 @@ type PdfDataset struct {
func NewPdfDataset(env BuildPdfEnvironment) (*PdfDataset, error) {
files, err := getFiles(env.SourcePath)
files, err := getFiles(&env, env.SourcePath)
if err != nil {
return nil, err
}
......@@ -113,7 +117,7 @@ func BuildPDF(env BuildPdfEnvironment) error {
}()
content := environment.ReadTemplate(env.Templates.Markdown)
t, err := template.New("pdf").Parse(content)
t, err := template.New("pdf").Funcs(getFuncMap(&env)).Parse(content)
checkError(err)
d, err := NewPdfDataset(env)
......@@ -169,8 +173,13 @@ func replaceRelativeLinksToLatex(content string, f *SourceFile, fileMap SourceFi
p = strings.Split(p, "#")[0]
ext := filepath.Ext(p)
if ext == "" {
environment.State.AddWarning(translations.T.Sprintf("No extension, of the link %s, in the file %s is not supported.", p, f.absSourcePath))
continue
}
if ext != ".md" && ext != ".markdown" {
environment.State.AddWarning(translations.T.Sprintf("file extension %s, in file %s, not supported for relative links", ext, f.absSourcePath))
environment.State.AddWarning(translations.T.Sprintf("The extension %s, of the link %s, in the file %s is not supported.", ext, p, f.absSourcePath))
continue
}
......@@ -271,7 +280,7 @@ func convertAwesomeBoxesMarkdownWithPandoc(content string) string {
// The following characters play a special role in LaTeX and are called special printing characters, or simply special characters.
//
// # $ % & ~ _ ^ \ { }
// # $ % & ~ _ ^ \ { }
//
// Whenever you put one of these special characters into your file, you are doing something special. If you simply want the character
// to be printed just as any other letter, include a \ in front of the character. For example, \$ will produce $ in your output.
......@@ -285,7 +294,9 @@ func convertAwesomeBoxesMarkdownWithPandoc(content string) string {
// _ (underscore) for subscripts in math mode.
// ^ (hat) for superscripts in math mode.
// \ (backslash) starting commands, which extend until the first non-alphanumerical character. The space following the command is swallowed. The following line results in what expected:
// The \TeX nician is an expert in \TeX{} language.
//
// The \TeX nician is an expert in \TeX{} language.
//
// {} (curly brackets) to group and separate commands from its surroundings. Must appear in pairs.
func escapeLatexSpecialChars(content string) string {
......
package document
type GetComponentsTemplatesInterface interface {
GetComponentsTemplates() map[string]string
}
type Dummy struct {
}
func (d *Dummy) GetComponentsTemplates() map[string]string {
return map[string]string{}
}
package document
import (
"html/template"
"math/rand"
"regexp"
)
func getFuncMap(env GetComponentsTemplatesInterface) template.FuncMap {
return template.FuncMap{
//"embedThunderClientAPI": func(path string, id string) template.HTML {
// content := embedThunderClientAPI(env, path, id)
// return template.HTML(content)
//},
"cleanPlaceholder": func(content string) string {
regEx := regexp.MustCompile(`(?P<match>\{\{.*\}\})`)
return regEx.ReplaceAllString(content, "")
},
"mkToHtml": func(content string) template.HTML {
return template.HTML(createHtmlFromMarkdown(content))
},
"toHTML": func(content string) template.HTML {
return template.HTML(content)
},
"randomID": func() string {
var chars = []rune(defaultSet)
s := make([]rune, 5)
for i := range s {
s[i] = chars[rand.Intn(len(chars))]
}
return string(s)
},
}
}
package document
import (
"bytes"
"encoding/json"
"errors"
"html/template"
"os"
"path"
"time"
)
type ThunderClient struct {
Id string `json:"_id"`
ColId string `json:"colId"`
ContainerId string `json:"containerId"`
Name string `json:"name"`
Url string `json:"url"`
Method string `json:"method"`
SortNum int `json:"sortNum"`
Created time.Time `json:"created"`
Modified time.Time `json:"modified"`
Headers []struct {
Name string `json:"name"`
Value string `json:"value"`
} `json:"headers"`
Params []struct {
Name string `json:"name"`
Value string `json:"value"`
isPath bool `json:"isPath"`
} `json:"params"`
Body struct {
Type string `json:"type"`
Raw string `json:"raw"`
Form []interface{} `json:"form"`
} `json:"body"`
Tests []struct {
Type string `json:"type"`
Custom string `json:"custom"`
Action string `json:"action"`
Value string `json:"value"`
} `json:"tests"`
Docs string `json:"docs"`
}
type ThunderCollection struct {
Id string `json:"_id"`
ColName string `json:"colName"`
Created time.Time `json:"created"`
SortNum int `json:"sortNum"`
Folders []struct {
Id string `json:"_id"`
Name string `json:"name"`
ContainerId string `json:"containerId"`
Created time.Time `json:"created"`
SortNum int `json:"sortNum"`
} `json:"folders"`
Settings struct {
Headers []interface{} `json:"headers"`
Auth struct {
Type string `json:"type"`
Bearer string `json:"bearer"`
BearerPrefix string `json:"bearerPrefix"`
} `json:"auth"`
Tests []interface{} `json:"tests"`
Docs string `json:"docs"`
} `json:"settings"`
}
func embedThunderClientAPI(env GetComponentsTemplatesInterface, defPath, id string) string {
thunderStruct := readThunderStructs(defPath)
s, done := renderThunderAPI(env, thunderStruct, id)
if done {
return "\r\n<div>" + s + "\r\n</div>\r\n"
}
return ""
}
func getApiHtmlTemplate() string {
return ""
//environment.State.GetHTMLHTMLTemplatePath(definition.Document.HTML.HTMLTemplate)
//
//templ, err := template.New("api").Funcs(getFuncMap()).Parse(apiTemplate)
//checkError(err)
//
//var buf bytes.Buffer
//err = templ.Execute(&buf, ThunderClient{})
//checkError(err)
//
//fmt.Println(buf.String())
}
func renderThunderAPI(env GetComponentsTemplatesInterface, thunder ThunderStruct, id string) (string, bool) {
tmplMap := env.GetComponentsTemplates()
tmpl, ok := tmplMap["#doc-api-request"]
if !ok {
tmpl = ""
}
for _, client := range thunder.ThunderClient {
if client.Id == id {
templ, err := template.New("api-template").Funcs(getFuncMap(&Dummy{})).Parse(tmpl)
checkError(err)
var buf bytes.Buffer
err = templ.Execute(&buf, client)
checkError(err)
return buf.String(), true
}
}
for _, collection := range thunder.ThunderCollection {
if collection.Id != id {
continue
}
result := ""
found := false
for _, tc := range thunder.ThunderClient {
if tc.ColId == collection.Id {
r, b := renderThunderAPI(env, thunder, tc.Id)
if b {
found = true
result += r
}
}
}
if found {
return result, true
}
}
return "", false
}
type ThunderStruct struct {
ThunderClient []ThunderClient
ThunderCollection []ThunderCollection
}
func readThunderStructs(defPath string) ThunderStruct {
if defPath == "" {
checkError(errors.New("path is empty"))
}
stat, err := os.Stat(defPath)
if errors.Is(err, os.ErrNotExist) {
checkError(err)
}
if !stat.IsDir() {
checkError(errors.New("path is not a directory"))
}
j, err := os.ReadFile(path.Join(defPath, "thunderclient.json"))
checkError(err)
var thunderClient []ThunderClient
err = json.Unmarshal(j, &thunderClient)
checkError(err)
c, err := os.ReadFile(path.Join(defPath, "thunderCollection.json"))
checkError(err)
var thunderCollection []ThunderCollection
err = json.Unmarshal(c, &thunderCollection)
checkError(err)
return ThunderStruct{
ThunderClient: thunderClient,
ThunderCollection: thunderCollection,
}
}
......@@ -40,7 +40,7 @@ func (l *LocaleTime) UnmarshalYAML(unmarshal func(interface{}) error) error {
return nil
}
func evaluateDocumentContent(content []byte) (error, textMetaStruct) {
func evaluateDocumentContent(tmpl GetComponentsTemplatesInterface, content []byte) (error, textMetaStruct) {
origin := string(content)
......@@ -86,7 +86,7 @@ func evaluateDocumentContent(content []byte) (error, textMetaStruct) {
meta = a
text += b
t, err := template.New("overview").Parse(text)
t, err := template.New("overview").Funcs(getFuncMap(tmpl)).Parse(text)
if err != nil {
return err, textMetaStruct{}
}
......
......@@ -4,28 +4,30 @@ go 1.18
require (
github.com/PuerkitoBio/goquery v1.8.0
github.com/andybalholm/cascadia v1.3.1
github.com/evanw/esbuild v0.14.49
github.com/gomarkdown/markdown v0.0.0-20220627144906-e9a81102ebeb
github.com/gookit/color v1.5.1
github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c
github.com/gookit/color v1.5.2
github.com/jessevdk/go-flags v1.5.0
github.com/kelseyhightower/envconfig v1.4.0
github.com/sethvargo/go-envconfig v0.8.0
golang.org/x/text v0.3.7
github.com/sethvargo/go-envconfig v0.8.3
github.com/tdewolff/minify/v2 v2.12.4
golang.org/x/net v0.2.0
golang.org/x/text v0.4.0
gopkg.in/yaml.v3 v3.0.1
)
require (
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/go-chi/chi/v5 v5.0.7 // indirect
github.com/go-chi/docgen v1.2.0 // indirect
github.com/go-chi/httprate v0.5.3 // indirect
github.com/tdewolff/minify/v2 v2.12.0 // indirect
github.com/tdewolff/parse/v2 v2.6.1 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
github.com/mattn/go-shellwords v1.0.12 // indirect
github.com/tdewolff/parse/v2 v2.6.4 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/yuin/goldmark v1.5.3 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.21.0 // indirect
golang.org/x/net v0.0.0-20220708220712-1185a9018129 // indirect
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
golang.org/x/sys v0.2.0 // indirect
)
......@@ -23,8 +23,12 @@ github.com/go-chi/httprate v0.5.3/go.mod h1:kYR4lorHX3It9tTh4eTdHhcF2bzrYnCrRNlv
github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns=
github.com/gomarkdown/markdown v0.0.0-20220627144906-e9a81102ebeb h1:5b/eFaSaKPFG9ygDBaPKkydKU5nFJYk08g9jPIVogMg=
github.com/gomarkdown/markdown v0.0.0-20220627144906-e9a81102ebeb/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c h1:iyaGYbCmcYK0Ja9a3OUa2Fo+EaN0cbLu0eKpBwPFzc8=
github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
github.com/gookit/color v1.5.1 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ=
github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM=
github.com/gookit/color v1.5.2 h1:uLnfXcaFjlrDnQDT+NCBcfhrXqYTx/rcCa6xn01Y8yI=
github.com/gookit/color v1.5.2/go.mod h1:w8h4bGiHeeBpvQVePTutdbERIUf3oJE5lZ8HM0UgXyg=
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
......@@ -33,24 +37,39 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sethvargo/go-envconfig v0.8.0 h1:AcmdAewSFAc7pQ1Ghz+vhZkilUtxX559QlDuLLiSkdI=
github.com/sethvargo/go-envconfig v0.8.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0=
github.com/sethvargo/go-envconfig v0.8.3 h1:dXyUrDCJvCm3ybP7yNpiux93qoSORvuH23bdsgFfiJ0=
github.com/sethvargo/go-envconfig v0.8.3/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/tdewolff/minify/v2 v2.12.0 h1:ZyvMKeciyR3vzJrK/oHyBcSmpttQ/V+ah7qOqTZclaU=
github.com/tdewolff/minify/v2 v2.12.0/go.mod h1:8mvf+KglD7XurfvvFZDUYvVURy6bA/r0oTvmakXMnyg=
github.com/tdewolff/minify/v2 v2.12.4 h1:kejsHQMM17n6/gwdw53qsi6lg0TGddZADVyQOz1KMdE=
github.com/tdewolff/minify/v2 v2.12.4/go.mod h1:h+SRvSIX3kwgwTFOpSckvSxgax3uy8kZTSF1Ojrr3bk=
github.com/tdewolff/parse/v2 v2.6.1 h1:RIfy1erADkO90ynJWvty8VIkqqKYRzf2iLp8ObG174I=
github.com/tdewolff/parse/v2 v2.6.1/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho=
github.com/tdewolff/parse/v2 v2.6.4 h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ=
github.com/tdewolff/parse/v2 v2.6.4/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs=
github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8=
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.5.3 h1:3HUJmBFbQW9fhQOzMgseU134xfi6hU+mjWywx5Ty+/M=
github.com/yuin/goldmark v1.5.3/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
......@@ -72,6 +91,8 @@ golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcx
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220708220712-1185a9018129 h1:vucSRfWwTsoXro7P+3Cjlr6flUMtzCwzlvkxEQtHHB0=
golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
......@@ -92,12 +113,16 @@ golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d h1:/m5NbqQelATgoSPVC2Z23sR4k
golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
......
......@@ -11,8 +11,8 @@
body {
background-color: #ffffff;
}
}
</style>
<title>Download Portal schukai GmbH</title>
</head>
......
......@@ -27,6 +27,7 @@ Lorem ipsum dolor sit amet, consectetur [read sub](sub1/doc1.md) adipiscing elit
!!! note "This is a note"
A-Lorem ipsum dolor sit amet, consectetur adipiscing elit.
B-Lorem ipsum dolor sit amet, consectetur adipiscing elit.
......