diff --git a/EXAMPLE/prometheus-advanced.html b/EXAMPLE/prometheus-advanced.html index c269008..ca8e877 100644 --- a/EXAMPLE/prometheus-advanced.html +++ b/EXAMPLE/prometheus-advanced.html @@ -5,113 +5,248 @@ prometheus - helm chart documentation diff --git a/EXAMPLE/prometheus.html b/EXAMPLE/prometheus.html index 80d708b..56fe7e3 100644 --- a/EXAMPLE/prometheus.html +++ b/EXAMPLE/prometheus.html @@ -6,41 +6,247 @@ prometheus - helm chart documentation diff --git a/EXAMPLE/style.css b/EXAMPLE/style.css index cd2131f..706d3bd 100644 --- a/EXAMPLE/style.css +++ b/EXAMPLE/style.css @@ -1,36 +1,242 @@ -body { - font-family: sans-serif; - margin: auto; - padding: 10px; - max-width: 80%; +html { + --blue: #A8DADC; /* Pastel Cyan */ + --dark-blue: #457B9D; /* Steel Blue */ + --light-blue: #F1FAEE; /* Honeydew */ + --light-gray: #F8F9FA; /* Light Gray */ + --gray: #D8E2DC; /* Soft Gray */ + --dark-gray: #264653; /* Deep Green */ + --dark-bg: #343A40; /* Charcoal */ + --dark-card-bg: #495057; /* Granite */ + --dark-text: #E9ECEF; /* Light Gray Text for Dark Mode */ + --darker-text: #121212; /* Dark text for Dark Mode */ + --dark-gray-text: #264653; /* Deep Green for Dark Mode Text */ + --dark-link: #A8DADC; /* Pastel Cyan for Links */ + --dark-link-hover: #81B1BD; /* Steel Blue for Hover */ + --primary-gradient: linear-gradient(135deg, #A8DADC, #F1FAEE); /* Cyan to Honeydew */ + --secondary-gradient: linear-gradient(135deg, #457B9D, #A8DADC); /* Steel Blue to Cyan */ + --margin-top: 3em; + --border-radius: 15px; +} + +body, html { + height: 100%; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + background-color: var(--light-gray); + color: var(--dark-gray); + transition: all 0.3s; +} + +#navbar-outer { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: auto; + background: var(--secondary-gradient); + overflow-x: hidden; + margin-top: 0; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + z-index: 1000; + transition: all 0.3s; +} + +#navbar, .container { + max-width: 80%; + margin: auto; +} + +#navbar a { + padding: 1em; + text-decoration: none; + color: var(--light-gray); + display: inline-block; + transition: background-color 0.3s, transform 0.3s; + border-radius: var(--border-radius); +} + +#navbar a:first-child { + background: var(--primary-gradient); + font-weight: bold; + color: var(--dark-gray); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +#navbar a:hover { + background: var(--primary-gradient); + transform: translateY(-2px); + color: var(--dark-gray); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); +} + +#search { + position: relative; + padding: 15px; + width: 98%; + margin: 20px auto; + display: block; + font-size: medium; + color: var(--dark-gray); + border: none; + border-radius: var(--border-radius); + background: var(--light-gray); + box-shadow: inset 6px 6px 12px #ccc, inset -6px -6px 12px #fff; + transition: all 0.3s; +} + +#search:focus { + box-shadow: inset 6px 6px 12px #bbb, inset -6px -6px 12px #eee, 0 0 8px 2px rgba(248, 241, 225, 0.5); + outline: none; +} + +.content { + padding: 25px; + margin-top: var(--margin-top); + background-color: white; + border-radius: var(--border-radius); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + transition: all 0.3s; + background: var(--light-gray); +} + +.container { + padding: 25px; + border-radius: var(--border-radius); + box-shadow: 4px 4px 8px #ccc, -4px -4px 8px #fff; + background-color: var(--light-gray); + transition: all 0.3s; +} + +.table-container { + padding: 0 1em; + overflow: auto; } table { - font-family: Arial, Helvetica, sans-serif; - border-collapse: collapse; - display: block; - overflow-x: auto; + border-collapse: collapse; + width: 100%; + background-color: white; + border-radius: var(--border-radius); + box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); + margin-bottom: 20px; + overflow: hidden; + transition: all 0.3s; } td, th { - border: 1px solid #ddd; - padding: 8px; + border: 1px solid var(--gray); + padding: 12px; + transition: background-color 0.3s; } -tr:nth-child(even){background-color: #f2f2f2;} +tr:nth-child(even) { + background-color: #E9ECEF; /* Soft Light Gray */ +} -tr:hover {background-color: #E0F2FF;} +tr:hover { + background-color: #D8E2DC; /* Very Soft Gray */ +} th { - padding-top: 12px; - padding-bottom: 12px; - text-align: left; - background-color: #0288d1; - color: white; + padding-top: 14px; + padding-bottom: 14px; + text-align: left; + background: var(--secondary-gradient); + color: var(--light-gray); } pre { background-color: #E4E4E4; - padding: 0.5em; - border-radius: 5px; + padding: 15px; + border-radius: var(--border-radius); + overflow-x: auto; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + transition: all 0.3s; +} + +h1, h2, h3, h4, h5, h6 { + scroll-margin-top: var(--margin-top); + color: var(--dark-gray); + transition: color 0.3s; +} + +/* Dark Mode */ +@media (prefers-color-scheme: dark) { + body, html { + background-color: var(--dark-bg); + color: var(--dark-text); + } + + #navbar-outer { + background: var(--primary-gradient); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5); + } + + #navbar a { + color: var(--dark-gray-text); /* Make navbar links text darker */ + } + + #navbar a:first-child { + background: var(--secondary-gradient); + color: var(--light-gray); + } + + #navbar a:hover { + background: var(--secondary-gradient); + color: var(--light-gray); + } + + #search { + background: var(--dark-card-bg); + color: var(--dark-text); + box-shadow: inset 6px 6px 12px #292d31, inset -6px -6px 12px #5a616a; + } + + #search:focus { + box-shadow: inset 6px 6px 12px #292d31, inset -6px -6px 12px #5a616a, 0 0 8px 2px rgba(168, 218, 220, 0.5); + } + + .content, .container { + background: var(--dark-card-bg); + box-shadow: 4px 4px 8px #292d31, -4px -4px 8px #5a616a; + } + + table { + background-color: var(--dark-card-bg); + box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); + } + + td, th { + border: 1px solid #555; + } + + tr:nth-child(even) { + background-color: #42474d; /* Dark Granite */ + } + + tr:hover { + background-color: #3c3f41; /* Slightly lighter dark granite */ + } + + th { + background: var(--primary-gradient); + color: var(--dark-gray-text); /* Make table header text darker */ + } + + pre { + background-color: #333; + } + + h1, h2, h3, h4, h5, h6 { + color: var(--light-blue); + } + + a { + color: var(--dark-link); + transition: color 0.3s; + } + + a:hover { + color: var(--dark-link-hover); + } } diff --git a/README.md b/README.md index 481eb92..7f632f5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ It supports simple templating, so custom templates for output can be used as well. Will read metadata such as `Chart.yaml`, `values.yaml` or the present templates and generate a Markdown or HTML documentation from that data. -## Example +## Example For an example output when running `stella` for the [prometheus](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus) @@ -30,7 +30,7 @@ helm chart, follow these links: ## Usage -### Docker Image +### 🐳 Docker Image | | Note | @@ -46,7 +46,7 @@ docker run -v ${full_path_to_host_chart_dir}:/tmp/chart ghcr.io/very-doge-wow/st ``` -### Installation +### 🛠 Installation To run it natively on your machine using pipenv: @@ -66,7 +66,7 @@ pip install pyyaml markdown python stella.py --help ``` -### General Usage +### 📚 General Usage ```text @@ -94,7 +94,7 @@ additional functionality which would break when using custom CSS. It will create a static html site with dynamic navbar and a search for the chart's values. -## Adding `stella` Docstrings to your Chart +## ⎈ Adding `stella` Docstrings to your Chart Metadata is read from the present files of your chart. Additionally, you should also document the options given @@ -155,7 +155,7 @@ Will yield the output: -## Custom Templating +## 📄 Custom Templating To specify a custom template, create a text/markdown file, then pass it to stella using the config parameter. @@ -172,14 +172,14 @@ You can use the following fields inside your template: * `{{ stella.objects }}` * `{{ stella.values }}` -## Contributing to `stella` +## 💫 Contributing to `stella` You want to contribute? Awesome! Feel free to propose changes, report bugs or request features and improvements. But first, please read the [contribution guidelines](https://github.com/very-doge-wow/stella/blob/main/CONTRIBUTING.md). -## Why `stella`? +## 💭 Why `stella`? `stella` is named after [Tilemann Stella](https://de.wikipedia.org/wiki/Tilemann_Stella), @@ -187,3 +187,24 @@ a scholar from the Renaissance era. He is most famously known for being a cartographer and for creating multiple waterways, which is fitting when considering the tool should create helm chart docs. + +## 🧑‍💻 Development +
+Expand for more info + +### Running Unit Tests + +```shell +pipenv install -d +pipenv run pytest -vv --cov --cov-report=xml +``` + +### Updating Example Outputs + +``` +pipenv install +pipenv run python stella.py -fh -css EXAMPLE/style.css -hcp EXAMPLE/prometheus -o EXAMPLE/prometheus.html +pipenv run python stella.py -fh --advanced-html -hcp EXAMPLE/prometheus -o EXAMPLE/prometheus-advanced.html +``` + +
\ No newline at end of file diff --git a/writer/doc_writer.py b/writer/doc_writer.py index cf309eb..fe705c5 100644 --- a/writer/doc_writer.py +++ b/writer/doc_writer.py @@ -113,113 +113,248 @@ def write(output: str, doc: dict, template: str, format_html: bool, advanced_htm REPLACE_STRING_TITLE diff --git a/writer/doc_writer_test.py b/writer/doc_writer_test.py index 3352022..d990cb7 100644 --- a/writer/doc_writer_test.py +++ b/writer/doc_writer_test.py @@ -487,113 +487,248 @@ def test_writer_advanced_html(): unittest - helm chart documentation