From 10b19a3df0499e90aada1ad423c8e5dd059646d4 Mon Sep 17 00:00:00 2001 From: Piotr Icikowski Date: Mon, 19 Dec 2022 00:39:59 +0100 Subject: [PATCH] docs(goosymock): add base for documentation --- docs/hooks/links.py | 8 +++ docs/mkdocs.yml | 99 +++++++++++++++++++++++++++++ docs/sources/assets/css/extra.css | 8 +++ docs/sources/assets/img/logo.png | Bin 0 -> 34699 bytes docs/sources/examples/index.md | 0 docs/sources/index.md | 37 +++++++++++ docs/sources/installation/index.md | 0 docs/sources/usage/index.md | 0 8 files changed, 152 insertions(+) create mode 100644 docs/hooks/links.py create mode 100644 docs/mkdocs.yml create mode 100644 docs/sources/assets/css/extra.css create mode 100644 docs/sources/assets/img/logo.png create mode 100644 docs/sources/examples/index.md create mode 100644 docs/sources/index.md create mode 100644 docs/sources/installation/index.md create mode 100644 docs/sources/usage/index.md diff --git a/docs/hooks/links.py b/docs/hooks/links.py new file mode 100644 index 0000000..654179d --- /dev/null +++ b/docs/hooks/links.py @@ -0,0 +1,8 @@ +import re + +def on_page_markdown(markdown: str, **kwargs): + links = [el[0] for el in re.findall(r"((?Piotr Icikowski" + +repo_url: https://github.com/Icikowski/GoosyMock +repo_name: Icikowski/GoosyMock +edit_uri: "" + +docs_dir: sources + +theme: + name: material + logo: assets/img/logo.png + favicon: assets/img/logo.png + palette: + - scheme: default + media: "(prefers-color-scheme: light)" + toggle: + icon: material/weather-night + name: Switch to dark mode + - scheme: slate + media: "(prefers-color-scheme: dark)" + toggle: + icon: material/weather-sunny + name: Switch to light mode + font: + code: Fira Code + text: Roboto + features: + - navigation.tracking + - navigation.tabs + - navigation.tabs.sticky + - navigation.indexes + - toc.follow + - toc.integrate + - navigation.top + - search.suggest + - search.highlight + - search.share + +plugins: + - search + - social: + cards_dir: assets/img/social + cards_color: + fill: "#547AA5" + text: "#FFFFFF" + - git-revision-date + +markdown_extensions: + - admonition + - footnotes + - toc: + permalink: true + toc_depth: 3 + - tables + - pymdownx.betterem + - pymdownx.caret + - pymdownx.mark + - pymdownx.tilde + - pymdownx.details + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.superfences + - pymdownx.highlight + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.smartsymbols + - pymdownx.tabbed: + alternate_style: true + - pymdownx.tasklist: + custom_checkbox: true + - attr_list + +extra: + generator: false + social: + - icon: fontawesome/brands/github + link: https://github.com/Icikowski + - icon: fontawesome/brands/linkedin + link: https://linkedin.com/in/piotr-icikowski + +extra_css: + - assets/css/extra.css + +hooks: + - hooks/links.py + +nav: + - Home: + - index.md + - Installation: + - installation/index.md + - Usage: + - usage/index.md + - Examples: + - examples/index.md diff --git a/docs/sources/assets/css/extra.css b/docs/sources/assets/css/extra.css new file mode 100644 index 0000000..04c2adc --- /dev/null +++ b/docs/sources/assets/css/extra.css @@ -0,0 +1,8 @@ +:root > * { + --md-primary-fg-color: #547AA5; + --md-primary-fg-color--light: #547AA5; + --md-primary-fg-color--dark: #22223B; + + --md-accent-fg-color: #FED766; + --md-accent-fg-color--transparent: rgba(254, 215, 102, 0.1); +} diff --git a/docs/sources/assets/img/logo.png b/docs/sources/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e407259885dd58af10e74c5dd2565376454eea5e GIT binary patch literal 34699 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 literal 0 HcmV?d00001 diff --git a/docs/sources/examples/index.md b/docs/sources/examples/index.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/sources/index.md b/docs/sources/index.md new file mode 100644 index 0000000..de83275 --- /dev/null +++ b/docs/sources/index.md @@ -0,0 +1,37 @@ +--- +title: "About project" +hide: ["navigation"] +--- + +# GoosyMock + +**GoosyMock** is a configurable test service for mocking HTTP responses, +featuring SSL support, dedicated administration API and custom payloads +(binary files that can be served on particular routes). It's also prepared +for Kubernetes deployments (Helm chart), making it easy to adapt and use. + +This project is successor to [**GPTS**](https://github.com/Icikowski/GPTS) +and was initially meant to be an improvement over existing solution by +introducing new internal architecture, better approach for serving custom +content and overall improvements to both code's and repository's structure. +Changes turned out to be hard to apply, which led to rewriting whole source +code from scratch. + +## Features + +- [X] Default response for +- [X] Declarative configuration + - [X] Support `YAML` and `JSON` configuration formats + - [X] Support per-method response definitions (`GET`, `POST`, `PUT`, `PATCH`, `DELETE`) + - [X] Support default response definition (for not configured methods) + - [X] Support sub paths handling + - [X] Well-documented administration API +- [X] Docker support + - [X] Based on latest [Google's "distroless"](https://github.com/GoogleContainerTools/distroless) image + - [X] Small size (≈ 20MB) + - [X] Running in rootless mode +- [X] Kubernetes support + - [X] Helm chart available + - [X] Image running as non-root + - [X] All settings can be configured via chart values + - [X] Support Ingress controllers diff --git a/docs/sources/installation/index.md b/docs/sources/installation/index.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/sources/usage/index.md b/docs/sources/usage/index.md new file mode 100644 index 0000000..e69de29