Skip to content

Commit

Permalink
Changes
Browse files Browse the repository at this point in the history
  • Loading branch information
blaubaer committed Sep 2, 2024
1 parent 09478d5 commit 9e6b07a
Show file tree
Hide file tree
Showing 29 changed files with 894 additions and 119 deletions.
38 changes: 32 additions & 6 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,23 @@ before:
- go generate ./...

builds:
- id: generic
- id: generic-tgz
main: ./cmd/bifroest
binary: bifroest
goos:
- linux
env:
- CGO_ENABLED=0
goarch:
- amd64
- arm64
ldflags:
- "-s -w -X main.edition=generic -X main.version={{.Version}} -X main.revision={{.Commit}} -X main.buildAt={{.Date}} -X main.vendor={{envOrDefault `BIFROEST_VENDOR` `unknown`}}"

- id: generic-zip
main: ./cmd/bifroest
binary: bifroest
goos:
- windows
env:
- CGO_ENABLED=0
Expand All @@ -24,7 +36,7 @@ builds:
ldflags:
- "-s -w -X main.edition=generic -X main.version={{.Version}} -X main.revision={{.Commit}} -X main.buildAt={{.Date}} -X main.vendor={{envOrDefault `BIFROEST_VENDOR` `unknown`}}"

- id: extended
- id: extended-tgz
main: ./cmd/bifroest
binary: bifroest
goos:
Expand All @@ -37,10 +49,24 @@ builds:
- "-s -w -X main.edition=extended -X main.version={{.Version}} -X main.revision={{.Commit}} -X main.buildAt={{.Date}} -X main.vendor={{envOrDefault `BIFROEST_VENDOR` `unknown`}}"

archives:
- id: generic
- id: generic-tgz
format: tgz
builds:
- generic
- generic-tgz
name_template: "bifroest-{{ .Os }}-{{ .Arch }}-generic"
files:
- LICENSE
- README.md
- SECURITY.md
- contrib/*
builds_info:
group: root
owner: root

- id: generic-zip
format: zip
builds:
- generic-zip
name_template: "bifroest-{{ .Os }}-{{ .Arch }}-generic"
files:
- LICENSE
Expand All @@ -51,10 +77,10 @@ archives:
group: root
owner: root

- id: extended
- id: extended-tgz
format: tgz
builds:
- extended
- extended-tgz
name_template: "bifroest-{{ .Os }}-{{ .Arch }}-extended"
files:
- LICENSE
Expand Down
177 changes: 133 additions & 44 deletions docs/.theme/marcos/main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import json
import os
import os.path
from typing import Sequence

repo = "engity-com/bifroest"
repo_http_url = "https://github.com/" + repo
Expand All @@ -10,93 +12,180 @@
release = raw_version if raw_version is not None else "latest"


class TypeRefT:
@property
def title(self) -> str:
pass

@property
def ref(self) -> str | None:
pass

@property
def markdown(self) -> str:
pass


class TypeRef:
def __init__(
self,
title: str,
ref: str | None = None,
args: Sequence[TypeRefT] | None = None,
):
self.title = title
self.ref = ref
self.args = args

@property
def markdown(self) -> str:
result = self.title
if isinstance(self.ref, str):
result = f"[{result}]({self.ref})"

if isinstance(self.args, Sequence) and len(self.args) > 0:
result += "<"
first = True
for arg in self.args:
if first:
first = False
else:
result += ","
result += arg.markdown
result += ">"

return result


def define_env(env):
@env.macro
def property_extended(name, data_type, default="", required=False, id_prefix="", heading=3, requirement=False):
def property_extended(
name: str,
data_type: TypeRefT | TypeRef,
default=None,
required: bool = False,
id_prefix: str | None = None,
heading: int = 3,
requirement: bool | str = False,
optional: bool = False,
):
if id_prefix is None:
id_prefix = ""
id = f"{id_prefix}property-{name.replace("*", "any")}"

result = "#" * heading
result += f" [`{name}`](#{id_prefix}property-{name})"
result += f" {{ #{id_prefix}property-{name} class=property-title }}\n"
result += f" [`{name}`](#{id})"
result += f" {{ #{id} class=property-title }}\n"
result += "/// html | div.property-description\n"
result += data_type
result += data_type.markdown
if required:
result += " :material-asterisk-circle-outline:{ title=\"Required\" data-hint-type=\"required\" }"
if optional:
result += " :material-radiobox-indeterminate-variant:{ title=\"Optional\" data-hint-type=\"optional\" }"
if isinstance(requirement, str):
result += f" [:material-lock-check-outline:{{ title=\"Requirement\" data-hint-type=\"requirement\" }}](#{requirement})"
if isinstance(requirement, bool) and required:
if isinstance(requirement, bool) and requirement:
result += " :material-lock-check-outline:{ title=\"Requirement\" data-hint-type=\"requirement\" }"

if default:
if isinstance(default, str) and len(default) > 50:
if default is not None:
default_str = json.dumps(default, ensure_ascii=False)
if len(default_str) > 25:
result += f""" = :material-keyboard-return:\n///\n
```{{.text .property-description-default-block linenums=0}}
{default}
{default_str}
```
"""
else:
result += f" = `{default}`" + "\n///"
result += f" = `{default_str}`" + "\n///"
else:
result += "\n///"
return result

@env.macro
def property(name, data_type_title, data_type_reference=None, default="", required=False, id_prefix="", heading=3, requirement=False):
if data_type_reference is None or data_type_reference == "":
return property_extended(name, data_type_title, default, required, id_prefix, heading, requirement)

return property_extended(name, f"[`{data_type_title}`]({data_type_reference})", default, required, id_prefix,
heading, requirement)
def property(
name: str,
data_type_title: str,
data_type_reference: str | None = None,
default=None,
required: bool = False,
id_prefix: str | None = "",
heading: int = 3,
requirement: bool = False,
optional: bool = False,
):
return property_extended(
name=name,
data_type=TypeRef(data_type_title, data_type_reference),
default=default,
required=required,
id_prefix=id_prefix,
heading=heading,
requirement=requirement,
optional=optional
)

@env.macro
def property_with_holder(name,
data_holder_title, data_holder_reference,
data_type_title, data_type_reference=None,
default="", required=False, id_prefix="", heading=3, requirement=False):
holder_content = None
if data_holder_title is not None and data_type_reference != "":
if data_holder_reference is not None and data_holder_reference != "":
holder_content = f"[`{data_holder_title}`]({data_holder_reference})"
else:
holder_content = f"`{data_holder_title}`"

if holder_content is None:
return property(name, data_type_title, data_type_reference, default, required, id_prefix, requirement)

if data_type_title is None or data_type_title == "":
raise ValueError("empty data_type_title")

if data_type_reference is not None and data_type_reference != "":
type_content = f"[`{data_type_title}`]({data_type_reference})"
else:
type_content = f"`{data_type_title}`"

return property_extended(name, f"{holder_content}&lt;{type_content}&gt;", default, required, id_prefix, heading, requirement)
def property_with_holder(
name: str,
data_holder_title: str, data_holder_reference: str | None,
data_type_title: str, data_type_reference: str | None = None,
default=None,
required: bool = False,
id_prefix: str = "",
heading: int = 3,
requirement: bool = False,
optional: bool = False,
) -> str:
# noinspection PyTypeChecker
return property_extended(
name=name,
data_type=TypeRef(
data_holder_title, data_holder_reference,
[
TypeRef(data_type_title, data_type_reference)
] if data_type_title is not None and data_type_title != "" else []
),
default=default,
required=required,
id_prefix=id_prefix,
heading=heading,
requirement=requirement,
optional=optional
)

@env.macro
def asset_url(file, raw=False):
def asset_url(file: str, raw: bool = False) -> str:
if raw:
return f"{repo_raw_url}/{branch}/{file}"

return f"{repo_http_url}/blob/{branch}/{file}"

@env.macro
def asset_link(file, title=None, raw=False):
def asset_link(file: str, title: str | None = None, raw: bool = False) -> str:
url = asset_url(file, raw)
title = title if title is not None else os.path.basename(file)

return f"<a href={url}>{title}</a>"

@env.macro
def release_name(target=release):
def release_name(target: str = release) -> str:
return target

@env.macro
def release_url(target = release):
def release_url(target: str = release) -> str:
return f"{repo_http_url}/releases/{target}"

@env.macro
def release_asset_url(asset, target = release):
def release_asset_url(asset: str, target: str = release) -> str:
return f"{repo_http_url}/releases/download/{target}/{asset}"

@env.macro
def rel_file_path(path, start):
def rel_file_path(path: str, start: str) -> str:
return os.path.relpath(path, os.path.dirname(start))

@env.macro
def compatibility(supported: bool = False) -> str:
if supported:
return ":octicons-check-circle-24:{. data-supported=true} `*`"

return ":octicons-x-circle-24:{. data-supported=false}"
8 changes: 8 additions & 0 deletions docs/assets/extra.css
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
}

[data-hint-type="required"],
[data-hint-type="optional"],
[data-hint-type="requirement"] {
font-size: 0.75em;
}
Expand All @@ -26,6 +27,13 @@
color: #b69237;
}

[data-supported=true] {
color: #309c30;
}
[data-supported=false] {
color: #dc6a43;
}

.md-typeset > p:not(.subtitle),
.md-typeset > ol:not(.subtitle),
.md-typeset > ul:not(.subtitle),
Expand Down
Loading

0 comments on commit 9e6b07a

Please sign in to comment.