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
Select Git revision
  • master
  • 1.2.0
  • 1.2.1
  • 1.2.2
  • 1.2.3
  • 1.2.4
  • v1.1.0
7 results

Target

Select target project
  • oss/utilities/documentation-manager
1 result
Select Git revision
  • master
  • 1.2.0
  • 1.2.1
  • 1.2.2
  • 1.2.3
  • 1.2.4
  • v1.1.0
7 results
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 @@ ...@@ -3,6 +3,11 @@
<module name="documentation-manager" /> <module name="documentation-manager" />
<working_directory value="$PROJECT_DIR$/development/examples/example3/" /> <working_directory value="$PROJECT_DIR$/development/examples/example3/" />
<parameters value="document html --config=config/web.yaml" /> <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" /> <kind value="DIRECTORY" />
<directory value="$PROJECT_DIR$/application/source" /> <directory value="$PROJECT_DIR$/application/source" />
<filePath value="$PROJECT_DIR$" /> <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)) ...@@ -21,13 +21,14 @@ THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/ PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH) THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH)
# include project.mk only if it exists
-include $(PROJECT_ROOT)project.mk -include $(PROJECT_ROOT)project.mk
## Define the location of Makefiles # Define the location of Makefiles
MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/ MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/
############################################################################################# #############################################################################################
############################################################################################# #############################################################################################
## ##
...@@ -36,43 +37,73 @@ 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)placeholder.mk
include $(MAKEFILE_IMPORT_PATH)directories-standard.mk include $(MAKEFILE_IMPORT_PATH)conan.mk
include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)s3.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)color.mk
include $(MAKEFILE_IMPORT_PATH)terminal.mk
include $(MAKEFILE_IMPORT_PATH)output.mk
include $(MAKEFILE_IMPORT_PATH)version.mk include $(MAKEFILE_IMPORT_PATH)version.mk
include $(MAKEFILE_IMPORT_PATH)target-help.mk #include $(MAKEFILE_IMPORT_PATH)docker.mk
include $(MAKEFILE_IMPORT_PATH)target-variable.mk #include $(MAKEFILE_IMPORT_PATH)node.mk
include $(MAKEFILE_IMPORT_PATH)target-update-makefiles.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-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)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') # include target-project.mk only if it exists
LOCALEFILES := $(shell find $(SOURCE_PATH)translations/locales/ -name '*.json') -include $(MAKEFILE_IMPORT_PATH)target-project.mk
CATALOGFILES := $(SOURCE_PATH)translations/locales/catalog.go
$(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 ...@@ -30,11 +30,15 @@ show font directories
kpsepath mf | sed -e 's/:/\n/g' kpsepath mf | sed -e 's/:/\n/g'
``` ```
### Awsome Boxes ## Usage
### Markdown
#### Awsome Boxes
* [Awesomebox](https://ftp.gwdg.de/pub/ctan/graphics/awesomebox/awesomebox.pdf) * [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) [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. ...@@ -71,15 +75,22 @@ dingbats are not supported in the current version of TikZ.
[](https://ctan.net/fonts/libertine/doc/libertine.pdf) [](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`. 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 ...@@ -93,7 +104,7 @@ Finally, we look for the configuration in the `/etc/documentations-manager/confi
The parameter `path` specifies the path. The parameter `path` specifies the path.
#### Configuration ##### Configuration
```yaml ```yaml
## DOCMAN_PATH ## DOCMAN_PATH
...@@ -116,7 +127,7 @@ PDF: ...@@ -116,7 +127,7 @@ PDF:
``` ```
### Help #### Help
There is help on the command line for each individual command. 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. ...@@ -124,7 +135,7 @@ There is help on the command line for each individual command.
docman --help docman --help
``` ```
### create PDF #### create PDF
```bash ```bash
docman document pdf --config pathto/config.yaml docman document pdf --config pathto/config.yaml
...@@ -217,13 +228,6 @@ Individual LaTeX commands can be looked up here: ...@@ -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) * [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/) * [download.schukai.com/tools/docman/](http://download.schukai.com/tools/docman/)
## Change Log
- Version 1.0
- takeover of the code from reqman
## License # Credits ## License # Credits
- Unsplash - https://unsplash.com/ - Unsplash - https://unsplash.com/
......
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"errors" "errors"
"gitlab.schukai.com/oss/utilities/documentation-manager/environment" "gitlab.schukai.com/oss/utilities/documentation-manager/environment"
"gitlab.schukai.com/oss/utilities/documentation-manager/translations" "gitlab.schukai.com/oss/utilities/documentation-manager/translations"
"os"
) )
const ( const (
...@@ -40,10 +41,10 @@ func checkError(err error) { ...@@ -40,10 +41,10 @@ func checkError(err error) {
return return
} }
//switch err.(type) { if errors.Is(err, os.ErrNotExist) {
//case *flags.Error: environment.ExitWithError(CodeNoInput, err.Error())
// checkFlagsError(err) } else {
//} environment.ExitWithError(1, "Unknown Error: %s", err.Error())
// }
environment.ExitWithError(1, "Unknown Error: %s", err.Error())
} }
...@@ -2,7 +2,6 @@ package document ...@@ -2,7 +2,6 @@ package document
import ( import (
"errors" "errors"
"io/ioutil"
"os" "os"
"path" "path"
"path/filepath" "path/filepath"
...@@ -56,7 +55,7 @@ func buildFileMap(files []*SourceFile) (SourceFileMap, []string) { ...@@ -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{} def := []*SourceFile{}
...@@ -77,12 +76,12 @@ func getFiles(sourcePath string) ([]*SourceFile, error) { ...@@ -77,12 +76,12 @@ func getFiles(sourcePath string) ([]*SourceFile, error) {
cp := path.Clean(current) cp := path.Clean(current)
c, err := ioutil.ReadFile(cp) c, err := os.ReadFile(cp)
if err != nil { if err != nil {
return err return err
} }
err, p := evaluateDocumentContent(c) err, p := evaluateDocumentContent(tmpl, c)
if err != nil { if err != nil {
return errors.New("Error while processing files: " + current + " (" + err.Error() + ")") return errors.New("Error while processing files: " + current + " (" + err.Error() + ")")
......
...@@ -6,16 +6,26 @@ import ( ...@@ -6,16 +6,26 @@ import (
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"github.com/PuerkitoBio/goquery" "github.com/PuerkitoBio/goquery"
"github.com/andybalholm/cascadia"
"github.com/gomarkdown/markdown" "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/gomarkdown/markdown/parser"
"github.com/mattn/go-shellwords"
"github.com/tdewolff/minify/v2" "github.com/tdewolff/minify/v2"
minHTML "github.com/tdewolff/minify/v2/html" 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/environment"
"gitlab.schukai.com/oss/utilities/documentation-manager/translations" "gitlab.schukai.com/oss/utilities/documentation-manager/translations"
"gitlab.schukai.com/oss/utilities/documentation-manager/utils" "gitlab.schukai.com/oss/utilities/documentation-manager/utils"
"golang.org/x/net/html"
"golang.org/x/net/html/atom"
"io"
"io/ioutil" "io/ioutil"
"log" "log"
"math/rand"
"os" "os"
"path" "path"
"path/filepath" "path/filepath"
...@@ -26,6 +36,12 @@ import ( ...@@ -26,6 +36,12 @@ import (
"time" "time"
) )
func init() {
rand.Seed(time.Now().UnixNano())
}
const defaultSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
type BuildHtmlEnvironment struct { type BuildHtmlEnvironment struct {
SourcePath string SourcePath string
DateFormat string DateFormat string
...@@ -33,10 +49,15 @@ type BuildHtmlEnvironment struct { ...@@ -33,10 +49,15 @@ type BuildHtmlEnvironment struct {
Verbose bool Verbose bool
SinglePage bool SinglePage bool
Templates struct { Templates struct {
HTML string HTML string
Components map[string]string
} }
} }
func (t *BuildHtmlEnvironment) GetComponentsTemplates() map[string]string {
return t.Templates.Components
}
type HtmlDocument struct { type HtmlDocument struct {
ID string ID string
Content string Content string
...@@ -109,7 +130,16 @@ func renderSinglePageHtml(env BuildHtmlEnvironment) error { ...@@ -109,7 +130,16 @@ func renderSinglePageHtml(env BuildHtmlEnvironment) error {
output := getSingleHtmlOutputFile(env) output := getSingleHtmlOutputFile(env)
t := environment.ReadTemplate(env.Templates.HTML) 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) checkError(err)
d, err := NewHTMLDataset(env) d, err := NewHTMLDataset(env)
...@@ -126,12 +156,49 @@ func renderSinglePageHtml(env BuildHtmlEnvironment) error { ...@@ -126,12 +156,49 @@ func renderSinglePageHtml(env BuildHtmlEnvironment) error {
err = m.Minify("text/html", out, buf) err = m.Minify("text/html", out, buf)
checkError(err) checkError(err)
err = ioutil.WriteFile(output, out.Bytes(), 0644) err = os.WriteFile(output, out.Bytes(), 0644)
checkError(err) checkError(err)
return nil 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 { func renderMultiPageHtml(env BuildHtmlEnvironment) error {
environment.ExitWithError(2, "not implemented") environment.ExitWithError(2, "not implemented")
return nil return nil
...@@ -192,6 +259,51 @@ func buildTree(body string) *Tree[DocumentNode] { ...@@ -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) { func getHtmlImages(content string, absolute string) (string, map[string]string) {
regEx := regexp.MustCompile(`(?P<match>\!\[(?P<label>[^]]*)\]\((?P<path>[^)]*)\))`) regEx := regexp.MustCompile(`(?P<match>\!\[(?P<label>[^]]*)\]\((?P<path>[^)]*)\))`)
...@@ -238,6 +350,14 @@ func getHtmlImages(content string, absolute string) (string, map[string]string) ...@@ -238,6 +350,14 @@ func getHtmlImages(content string, absolute string) (string, map[string]string)
return content, m 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 { func replaceImages(content string, images map[string]string) string {
for k, v := range images { for k, v := range images {
content = strings.Replace(content, k, v, -1) content = strings.Replace(content, k, v, -1)
...@@ -247,7 +367,7 @@ func replaceImages(content string, images map[string]string) string { ...@@ -247,7 +367,7 @@ func replaceImages(content string, images map[string]string) string {
func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) { func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) {
files, err := getFiles(env.SourcePath) files, err := getFiles(&env, env.SourcePath)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -276,6 +396,7 @@ func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) { ...@@ -276,6 +396,7 @@ func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) {
text = convertHeadlines(text, mapFiles[key].level, mapFiles[key].textMeta.meta.Level) text = convertHeadlines(text, mapFiles[key].level, mapFiles[key].textMeta.meta.Level)
text, boxMap := convertAwesomeBoxesToHTML(text) text, boxMap := convertAwesomeBoxesToHTML(text)
text, imgMap := getHtmlImages(text, mapFiles[key].baseDir) text, imgMap := getHtmlImages(text, mapFiles[key].baseDir)
text, thunderApiMap := getThunderClientAPI(&env, text)
text = replaceRelativeLinksToHTML(text, mapFiles[key], mapFiles) text = replaceRelativeLinksToHTML(text, mapFiles[key], mapFiles)
...@@ -286,6 +407,7 @@ func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) { ...@@ -286,6 +407,7 @@ func NewHTMLDataset(env BuildHtmlEnvironment) (*SinglePageHtmlDataset, error) {
text = replaceImages(text, imgMap) text = replaceImages(text, imgMap)
text = replaceAwesomeBoxes(text, boxMap) text = replaceAwesomeBoxes(text, boxMap)
text = replaceThunderClientAPI(text, thunderApiMap)
id := mapFiles[key].textMeta.meta.ID id := mapFiles[key].textMeta.meta.ID
if id == "" { if id == "" {
...@@ -395,7 +517,7 @@ func replaceAwesomeBoxes(content string, boxMap map[string]string) string { ...@@ -395,7 +517,7 @@ func replaceAwesomeBoxes(content string, boxMap map[string]string) string {
func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFileMap) string { func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFileMap) string {
label := "link_" + f.hash 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>[^)]*)\))`) regEx := regexp.MustCompile(`(?:^|[^!])(?P<match>\[(?P<label>[^]]*)\]\((?P<path>[^)]*)\))`)
matches := regEx.FindAllStringSubmatch(content, -1) matches := regEx.FindAllStringSubmatch(content, -1)
...@@ -425,8 +547,13 @@ func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFil ...@@ -425,8 +547,13 @@ func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFil
p = strings.Split(p, "#")[0] p = strings.Split(p, "#")[0]
ext := filepath.Ext(p) 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" { 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 continue
} }
...@@ -444,9 +571,38 @@ func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFil ...@@ -444,9 +571,38 @@ func replaceRelativeLinksToHTML(content string, f *SourceFile, fileMap SourceFil
return content 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 { func createHtmlFromMarkdown(text string) string {
htmlFlags := html.CommonFlags | html.HrefTargetBlank md := goldmark.New(
opts := html.RendererOptions{ 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: "", AbsolutePrefix: "",
FootnoteAnchorPrefix: "", FootnoteAnchorPrefix: "",
FootnoteReturnLinkContents: "", FootnoteReturnLinkContents: "",
...@@ -458,12 +614,44 @@ func createHtmlFromMarkdown(text string) string { ...@@ -458,12 +614,44 @@ func createHtmlFromMarkdown(text string) string {
Icon: "", Icon: "",
Head: nil, Head: nil,
Flags: htmlFlags, Flags: htmlFlags,
RenderNodeHook: nil, RenderNodeHook: renderHook,
Comments: nil, Comments: nil,
Generator: "", 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 extensions := parser.CommonExtensions | parser.AutoHeadingIDs
parser := parser.NewWithExtensions(extensions) parser := parser.NewWithExtensions(extensions)
......
...@@ -26,6 +26,10 @@ type BuildPdfEnvironment struct { ...@@ -26,6 +26,10 @@ type BuildPdfEnvironment struct {
} }
} }
func (t *BuildPdfEnvironment) GetComponentsTemplates() map[string]string {
return map[string]string{}
}
type PdfDataset struct { type PdfDataset struct {
Documents string Documents string
CreatedFormat string CreatedFormat string
...@@ -33,7 +37,7 @@ type PdfDataset struct { ...@@ -33,7 +37,7 @@ type PdfDataset struct {
func NewPdfDataset(env BuildPdfEnvironment) (*PdfDataset, error) { func NewPdfDataset(env BuildPdfEnvironment) (*PdfDataset, error) {
files, err := getFiles(env.SourcePath) files, err := getFiles(&env, env.SourcePath)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -113,7 +117,7 @@ func BuildPDF(env BuildPdfEnvironment) error { ...@@ -113,7 +117,7 @@ func BuildPDF(env BuildPdfEnvironment) error {
}() }()
content := environment.ReadTemplate(env.Templates.Markdown) 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) checkError(err)
d, err := NewPdfDataset(env) d, err := NewPdfDataset(env)
...@@ -169,8 +173,13 @@ func replaceRelativeLinksToLatex(content string, f *SourceFile, fileMap SourceFi ...@@ -169,8 +173,13 @@ func replaceRelativeLinksToLatex(content string, f *SourceFile, fileMap SourceFi
p = strings.Split(p, "#")[0] p = strings.Split(p, "#")[0]
ext := filepath.Ext(p) 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" { 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 continue
} }
...@@ -271,7 +280,7 @@ func convertAwesomeBoxesMarkdownWithPandoc(content string) string { ...@@ -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. // 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 // 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. // 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 { ...@@ -285,7 +294,9 @@ func convertAwesomeBoxesMarkdownWithPandoc(content string) string {
// _ (underscore) for subscripts in math mode. // _ (underscore) for subscripts in math mode.
// ^ (hat) for superscripts 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: // \ (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. // {} (curly brackets) to group and separate commands from its surroundings. Must appear in pairs.
func escapeLatexSpecialChars(content string) string { 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 { ...@@ -40,7 +40,7 @@ func (l *LocaleTime) UnmarshalYAML(unmarshal func(interface{}) error) error {
return nil return nil
} }
func evaluateDocumentContent(content []byte) (error, textMetaStruct) { func evaluateDocumentContent(tmpl GetComponentsTemplatesInterface, content []byte) (error, textMetaStruct) {
origin := string(content) origin := string(content)
...@@ -86,7 +86,7 @@ func evaluateDocumentContent(content []byte) (error, textMetaStruct) { ...@@ -86,7 +86,7 @@ func evaluateDocumentContent(content []byte) (error, textMetaStruct) {
meta = a meta = a
text += b text += b
t, err := template.New("overview").Parse(text) t, err := template.New("overview").Funcs(getFuncMap(tmpl)).Parse(text)
if err != nil { if err != nil {
return err, textMetaStruct{} return err, textMetaStruct{}
} }
......
...@@ -4,28 +4,30 @@ go 1.18 ...@@ -4,28 +4,30 @@ go 1.18
require ( require (
github.com/PuerkitoBio/goquery v1.8.0 github.com/PuerkitoBio/goquery v1.8.0
github.com/andybalholm/cascadia v1.3.1
github.com/evanw/esbuild v0.14.49 github.com/evanw/esbuild v0.14.49
github.com/gomarkdown/markdown v0.0.0-20220627144906-e9a81102ebeb github.com/gomarkdown/markdown v0.0.0-20221013030248-663e2500819c
github.com/gookit/color v1.5.1 github.com/gookit/color v1.5.2
github.com/jessevdk/go-flags v1.5.0 github.com/jessevdk/go-flags v1.5.0
github.com/kelseyhightower/envconfig v1.4.0 github.com/kelseyhightower/envconfig v1.4.0
github.com/sethvargo/go-envconfig v0.8.0 github.com/sethvargo/go-envconfig v0.8.3
golang.org/x/text v0.3.7 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 gopkg.in/yaml.v3 v3.0.1
) )
require ( require (
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/go-chi/chi/v5 v5.0.7 // indirect github.com/go-chi/chi/v5 v5.0.7 // indirect
github.com/go-chi/docgen v1.2.0 // indirect github.com/go-chi/docgen v1.2.0 // indirect
github.com/go-chi/httprate v0.5.3 // indirect github.com/go-chi/httprate v0.5.3 // indirect
github.com/tdewolff/minify/v2 v2.12.0 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect
github.com/tdewolff/parse/v2 v2.6.1 // indirect github.com/tdewolff/parse/v2 v2.6.4 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // 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/atomic v1.9.0 // indirect
go.uber.org/multierr v1.8.0 // indirect go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.21.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.2.0 // indirect
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
) )
...@@ -23,8 +23,12 @@ github.com/go-chi/httprate v0.5.3/go.mod h1:kYR4lorHX3It9tTh4eTdHhcF2bzrYnCrRNlv ...@@ -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/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 h1:5b/eFaSaKPFG9ygDBaPKkydKU5nFJYk08g9jPIVogMg=
github.com/gomarkdown/markdown v0.0.0-20220627144906-e9a81102ebeb/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ=
github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= 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 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
...@@ -33,24 +37,39 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN ...@@ -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/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/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/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/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/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 h1:AcmdAewSFAc7pQ1Ghz+vhZkilUtxX559QlDuLLiSkdI=
github.com/sethvargo/go-envconfig v0.8.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0= 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/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.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.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.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.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 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.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 h1:RIfy1erADkO90ynJWvty8VIkqqKYRzf2iLp8ObG174I=
github.com/tdewolff/parse/v2 v2.6.1/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho= 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.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tdewolff/test v1.0.7/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 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-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.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.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 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 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 ...@@ -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-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 h1:vucSRfWwTsoXro7P+3Cjlr6flUMtzCwzlvkxEQtHHB0=
golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 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-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/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= 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 ...@@ -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-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 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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/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.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.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/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 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 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-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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
body { body {
background-color: #ffffff; background-color: #ffffff;
} }
</style> </style>
<title>Download Portal schukai GmbH</title> <title>Download Portal schukai GmbH</title>
</head> </head>
......
...@@ -27,6 +27,7 @@ Lorem ipsum dolor sit amet, consectetur [read sub](sub1/doc1.md) adipiscing elit ...@@ -27,6 +27,7 @@ Lorem ipsum dolor sit amet, consectetur [read sub](sub1/doc1.md) adipiscing elit
!!! note "This is a note" !!! note "This is a note"
A-Lorem ipsum dolor sit amet, consectetur adipiscing elit. A-Lorem ipsum dolor sit amet, consectetur adipiscing elit.
B-Lorem ipsum dolor sit amet, consectetur adipiscing elit. B-Lorem ipsum dolor sit amet, consectetur adipiscing elit.
......