A lot more polish, showing summaries
continuous-integration/drone/push Build is failing Details

drafts
Nick Dumas 5 months ago
parent de6cf5fb2a
commit 7ca576976c

@ -51,7 +51,7 @@ smartTOC = true
showViews = false showViews = false
showLikes = false showLikes = false
showDateOnlyInArticle = false showDateOnlyInArticle = false
showDateUpdated = false showDateUpdated = true
showAuthor = true showAuthor = true
# showAuthorBottom = false # showAuthorBottom = false
showHero = false showHero = false
@ -68,14 +68,14 @@ smartTOC = true
showPagination = true showPagination = true
invertPagination = false invertPagination = false
showReadingTime = true showReadingTime = true
showTableOfContents = false showTableOfContents = true
showRelatedContent = true showRelatedContent = true
relatedContentLimit = 3 relatedContentLimit = 3
showTaxonomies = false showTaxonomies = false
showAuthorsBadges = false showAuthorsBadges = false
showWordCount = true showWordCount = true
# sharingLinks = [ "linkedin", "twitter", "reddit", "pinterest", "facebook", "email", "whatsapp", "telegram"] # sharingLinks = [ "linkedin", "twitter", "reddit", "pinterest", "facebook", "email", "whatsapp", "telegram"]
showZenMode = false showZenMode = true
[list] [list]
showHero = false showHero = false
@ -83,7 +83,7 @@ smartTOC = true
layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
layoutBackgroundHeaderSpace = true # only used when heroStyle equals background layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
showBreadcrumbs = true showBreadcrumbs = true
showSummary = false showSummary = true
showViews = false showViews = false
showLikes = false showLikes = false
showTableOfContents = false showTableOfContents = false

@ -8,7 +8,7 @@ date: "2023-04-09"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "" summary: ""
showFullContent: false showFullContent: false
tags: tags:
- hugo - hugo
@ -65,7 +65,7 @@ The other half of this setup is modifying the term template at `layouts/_default
<article> <article>
<h1>{{ i18n "tag" }}: {{ .Title }}</h1> <h1>{{ i18n "tag" }}: {{ .Title }}</h1>
{{ .Content }} {{ .Content }}
{{with .Params.description}} {{with .Params.summary}}
<p>{{.}}</p> <p>{{.}}</p>
{{end}} {{end}}
{{partial "page-list.html" .Paginator.Pages}} {{partial "page-list.html" .Paginator.Pages}}
@ -101,7 +101,7 @@ The final template looks like this.
<article> <article>
<h1>{{ i18n "interactive_graph" }}: {{ .Title }}</h1> <h1>{{ i18n "interactive_graph" }}: {{ .Title }}</h1>
{{ .Content }} {{ .Content }}
{{with .Params.description}} {{with .Params.summary}}
<p>{{.}}</p> <p>{{.}}</p>
{{end}} {{end}}
{{partial "page-list.html" .Paginator.Pages}} {{partial "page-list.html" .Paginator.Pages}}

@ -7,7 +7,7 @@ authorTwitter: "" #do not include @
cover: "" cover: ""
tags: ["webdev", "devops"] tags: ["webdev", "devops"]
keywords: ["", ""] keywords: ["", ""]
description: "Automation ambitions fall flat" summary: "Automation ambitions fall flat"
showFullContent: false showFullContent: false
--- ---

@ -7,7 +7,7 @@ series_order: 1
date: "2023-08-25" date: "2023-08-25"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "bzlmod makes bazel extremely appealing and isn't hard to grasp for anyone already familiar with go modules. My frustration with make for complex builds led me to bazel." summary: "bzlmod makes bazel extremely appealing and isn't hard to grasp for anyone already familiar with go modules. My frustration with make for complex builds led me to bazel."
showFullContent: false showFullContent: false
tags: tags:
- bazel - bazel

@ -5,7 +5,7 @@ aliases: ["Data Interfaces in Go"]
series: [] series: []
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Playing with interfaces" summary: "Playing with interfaces"
showFullContent: false showFullContent: false
tags: tags:
- genesis - genesis

@ -9,7 +9,7 @@ authorTwitter: ""
cover: "" cover: ""
tags: ["drone", "gitea", "obsidian", "devops"] tags: ["drone", "gitea", "obsidian", "devops"]
keywords: ["drone", "gitea", "obsidian", "devops"] keywords: ["drone", "gitea", "obsidian", "devops"]
description: "How I built a drone instance and pipeline to publish my blog" summary: "How I built a drone instance and pipeline to publish my blog"
showFullContent: false showFullContent: false
--- ---

@ -8,7 +8,7 @@ date: "2023-04-08"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "More complex Hugo sites sometimes require creating markdown files you don't want displayed in specific listings." summary: "More complex Hugo sites sometimes require creating markdown files you don't want displayed in specific listings."
showFullContent: false showFullContent: false
tags: tags:
- hugo - hugo

@ -10,7 +10,7 @@ author: "Nick Dumas"
cover: "" cover: ""
tags: ["games", "aardwolf"] tags: ["games", "aardwolf"]
keywords: ["games", "aardwolf"] keywords: ["games", "aardwolf"]
description: "MUDding, reflection" summary: "MUDding, reflection"
showFullContent: false showFullContent: false
--- ---

@ -4,7 +4,7 @@ aliases: ["First Post"]
series: [] series: []
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "" summary: ""
showFullContent: false showFullContent: false
title: "First Post" title: "First Post"
date: "2018-02-10" date: "2018-02-10"

@ -10,7 +10,7 @@ authorTwitter : ""
cover : "" cover : ""
tags : ["drone", "hugo", "devops", "obsidian", "quartz"] tags : ["drone", "hugo", "devops", "obsidian", "quartz"]
keywords : ["drone", "hugo", "devops", "obsidian", "quartz"] keywords : ["drone", "hugo", "devops", "obsidian", "quartz"]
description : "When you want a container built right, you have to do it yourself." summary : "When you want a container built right, you have to do it yourself."
showFullContent : false showFullContent : false
--- ---

@ -6,7 +6,7 @@ series: ["genesis-development"]
series_order: 2 series_order: 2
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Using Cobra to accept a huge amount of inputs" summary: "Using Cobra to accept a huge amount of inputs"
tags: tags:
- genesis - genesis
- golang - golang

@ -6,7 +6,7 @@ series: ["genesis-development"]
series_order: 1 series_order: 1
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Planning out a creative asset creation toolkit" summary: "Planning out a creative asset creation toolkit"
showFullContent: false showFullContent: false
tags: tags:
- genesis - genesis

@ -7,7 +7,7 @@ author: "Nick Dumas"
cover: "" cover: ""
tags: ["obsidian", "git", "gitea"] tags: ["obsidian", "git", "gitea"]
keywords: ["obsidian", "git", "gitea"] keywords: ["obsidian", "git", "gitea"]
description: "A brief overview of how I stood up a gitea instance for the purpose of backing up and syncing my Obsidian vault." summary: "A brief overview of how I stood up a gitea instance for the purpose of backing up and syncing my Obsidian vault."
showFullContent: false showFullContent: false
--- ---

@ -6,7 +6,7 @@ series: ["genesis-development"]
series_order: 3 series_order: 3
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Implementing float interpolation for fun and profit" summary: "Implementing float interpolation for fun and profit"
showFullContent: false showFullContent: false
tags: tags:
- genesis - genesis

@ -7,7 +7,7 @@ date: "2023-05-08"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "Using lipgloss to abstract away the specifics of nice terminal output." summary: "Using lipgloss to abstract away the specifics of nice terminal output."
showFullContent: false showFullContent: false
tags: tags:
- golang - golang

@ -6,7 +6,7 @@ series: ["genesis-development"]
series_order: 4 series_order: 4
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Pseudorandom noise and making it fit your domain." summary: "Pseudorandom noise and making it fit your domain."
showFullContent: false showFullContent: false
date: "2019-02-28" date: "2019-02-28"
images: images:

@ -8,7 +8,7 @@ date: "2023-04-06"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: [""] keywords: [""]
description: "Maxing out your CPU for fun and profit with dense graphs, or how I'm attempting to follow through on my plan to work on projects with more visual outputs" summary: "Maxing out your CPU for fun and profit with dense graphs, or how I'm attempting to follow through on my plan to work on projects with more visual outputs"
showFullContent: false showFullContent: false
tags: tags:
- graphviz - graphviz

@ -7,7 +7,7 @@ date: "2024-04-24"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "A non-exhaustive list of tips and rules that elevate my tabletop gaming." summary: "A non-exhaustive list of tips and rules that elevate my tabletop gaming."
showFullContent: false showFullContent: false
tags: tags:
- dnd - dnd

@ -7,7 +7,7 @@ date: "2024-04-24"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "Note-taking and the tools we use to do it can present an overwhelming abundance of possibility. Explicitly modelling your notes as tools can grant clarity when creating and organizing your knowledge." summary: "Note-taking and the tools we use to do it can present an overwhelming abundance of possibility. Explicitly modelling your notes as tools can grant clarity when creating and organizing your knowledge."
showFullContent: false showFullContent: false
tags: tags:
- obsidian - obsidian

@ -7,7 +7,7 @@ date: "2024-04-11"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "" summary: ""
showFullContent: false showFullContent: false
tags: tags:
- golang - golang

@ -7,7 +7,7 @@ date: "2023-03-05"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "Making sure PagerDuty leaves you alone" summary: "Making sure PagerDuty leaves you alone"
showFullContent: false showFullContent: false
tags: tags:
- pagerduty - pagerduty

@ -6,7 +6,7 @@ series: ["path-of-market"]
series_order: 1 series_order: 1
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Tracking market trends in Path of Exile with Prometheus" summary: "Tracking market trends in Path of Exile with Prometheus"
showFullContent: false showFullContent: false
date: "2019-07-08" date: "2019-07-08"
tags: tags:

@ -7,7 +7,7 @@ date: "2024-04-15"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "Projections are abstract, but abstractions are a powerful tool for helping us model the world." summary: "Projections are abstract, but abstractions are a powerful tool for helping us model the world."
showFullContent: false showFullContent: false
tags: tags:
- note-taking - note-taking

@ -5,7 +5,7 @@ aliases: ["Prometheus Primer: the first few pages of the documentation"]
series: [] series: []
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "I'm trying to teach myself Prometheus, so I'm writing about it." summary: "I'm trying to teach myself Prometheus, so I'm writing about it."
showFullContent: false showFullContent: false
date: "2019-07-04" date: "2019-07-04"
tags: tags:

@ -5,7 +5,7 @@ aliases: ["Fighting with SELinux yet again"]
series: [] series: []
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Extending Quartz's single.html to link between posts." summary: "Extending Quartz's single.html to link between posts."
showFullContent: false showFullContent: false
date: "2018-04-13" date: "2018-04-13"
tags: tags:

@ -7,7 +7,7 @@ series_order: 3
date: "2023-03-07" date: "2023-03-07"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
description: "Extending Quartz's single.html to link between posts." summary: "Extending Quartz's single.html to link between posts."
showFullContent: false showFullContent: false
keywords: keywords:
- quartz - quartz

@ -8,7 +8,8 @@ date: "2024-05-15"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "Versioning is a critical part of delivering software to users. With bazel, you can derive per-build values and inject them anywhere in your build process." summary: "Versioning is a critical part of delivering software to users. With bazel, you can derive per-build values and inject them anywhere in your build process."
summary: "Versioning is a critical part of delivering software to users. With bazel, you can derive per-build values and inject them anywhere in your build process."
showFullContent: false showFullContent: false
tags: tags:
- bazel - bazel
@ -20,22 +21,22 @@ In my [last post](/2024/09/the-joy-of-versioning/) I spent some time talking abo
That post was pretty light on direct `bazel` usage but I promise, it'll pay off. Here, we're going to cover how to use these tags *in* your builds to tag docker images or inject build information into compiled binaries. That post was pretty light on direct `bazel` usage but I promise, it'll pay off. Here, we're going to cover how to use these tags *in* your builds to tag docker images or inject build information into compiled binaries.
I'm assuming that you've read the [first bazel post](/2023/08/beautiful-builds-with-bazel/) in this series, or that you've already got your bazel + bzlmod setup going. I'm assuming that you've read the [first bazel post](/2023/08/beautiful-builds-with-bazel/) in this series, or that you've already got your bazel + bzlmod setup going.
## Stamping and you ## Stamping and you
Bazel includes functionality that it calls "stamping". Bazel has to separate this into its own conceptual space because one of the core design principles is build reproducibility: for bazel's caching to work, inputs have to be deterministic and ideally change infrequently between runs. Bazel includes functionality that it calls "stamping". Bazel has to separate this into its own conceptual space because one of the core design principles is build reproducibility: for bazel's caching to work, inputs have to be deterministic and ideally change infrequently between runs.
Bazel's [documentation](https://bazel.build/docs/user-manual#workspace-status) covers the bare essentials, with a small caveat. Stamping requires a script , the "workplace status" script, that emits space-separated key-value pairs, e.g. `STABLE_KEY_NAME VALUE`. An example script is included below. Bazel's [documentation](https://bazel.build/docs/user-manual#workspace-status) covers the bare essentials, with a small caveat. Stamping requires a script , the "workplace status" script, that emits space-separated key-value pairs, e.g. `STABLE_KEY_NAME VALUE`. An example script is included below.
```bash {title="tools/workspace_status.sh"} ```bash {title="tools/workspace_status.sh"}
#! /usr/bin/env bash #! /usr/bin/env bash
set -o errexit set -o errexit
set -o nounset set -o nounset
set -o pipefail set -o pipefail
echo "STABLE_STAMP_VERSION $(git describe --tags --dirty=-dev)" echo "STABLE_STAMP_VERSION $(git describe --tags --dirty=-dev)"
echo "STABLE_STAMP_COMMIT $(git rev-parse HEAD)" echo "STABLE_STAMP_COMMIT $(git rev-parse HEAD)"
echo "STABLE_STAMP_BRANCH $(git rev-parse --abbrev-ref HEAD)" echo "STABLE_STAMP_BRANCH $(git rev-parse --abbrev-ref HEAD)"
``` ```
@ -46,52 +47,52 @@ One important detail that the documentation doesn't cover is that your workspace
Still not sure why, but if you simply do `bazel --workplace_status_command=status.sh`, `bazel` will *only* look for it in your `$PATH`. Still not sure why, but if you simply do `bazel --workplace_status_command=status.sh`, `bazel` will *only* look for it in your `$PATH`.
## Build Injection ## Build Injection
Using the variables created by your workspace status script ends up being incredibly simple, if you're using `rules_go`. the `x_defs` parameter lets you override values at compile-time, exactly for cases like this. Using the variables created by your workspace status script ends up being incredibly simple, if you're using `rules_go`. the `x_defs` parameter lets you override values at compile-time, exactly for cases like this.
``` ```
x_defs = { x_defs = {
       "Version": "{STABLE_STAMP_VERSION}",        "Version": "{STABLE_STAMP_VERSION}",
       "Build": "{STABLE_STAMP_COMMIT}",        "Build": "{STABLE_STAMP_COMMIT}",
   },    },
``` ```
This is equivalent to the Go build flag `-ldflags "-X PACKAGENAME.Version=whatever -X PACKAGENAME.BUILD=whatever"`. It's important to note that the raw Go flags require a fully qualified package name be specified. Bazel is smart enough to derive the necessary package name on its own, all you have to do is tell it which variable needs to be overriden with what value. This is equivalent to the Go build flag `-ldflags "-X PACKAGENAME.Version=whatever -X PACKAGENAME.BUILD=whatever"`. It's important to note that the raw Go flags require a fully qualified package name be specified. Bazel is smart enough to derive the necessary package name on its own, all you have to do is tell it which variable needs to be overriden with what value.
## Putting it all together ## Putting it all together
The final, full invocation for stamping your builds should look something like this. The final, full invocation for stamping your builds should look something like this.
``` ```
wikilink-obsidian-resolver on  main [⇡] via 🐹 v1.22.2 wikilink-obsidian-resolver on  main [⇡] via 🐹 v1.22.2
bazel run --stamp --workspace_status_command=tools/workspace_status.sh //cmd/version bazel run --stamp --workspace_status_command=tools/workspace_status.sh //cmd/version
INFO: Analyzed target //cmd/version:version (0 packages loaded, 0 targets configured). INFO: Analyzed target //cmd/version:version (0 packages loaded, 0 targets configured).
INFO: Found 1 target... INFO: Found 1 target...
Target //cmd/version:version up-to-date: Target //cmd/version:version up-to-date:
dist/bin/cmd/version/version_/version dist/bin/cmd/version/version_/version
INFO: Elapsed time: 1.262s, Critical Path: 1.10s INFO: Elapsed time: 1.262s, Critical Path: 1.10s
INFO: 2 processes: 1 internal, 1 darwin-sandbox. INFO: 2 processes: 1 internal, 1 darwin-sandbox.
INFO: Build completed successfully, 2 total actions INFO: Build completed successfully, 2 total actions
INFO: Running command line: dist/bin/cmd/version/version_/version INFO: Running command line: dist/bin/cmd/version/version_/version
Version: v0.1.4-1-g5792d62 Version: v0.1.4-1-g5792d62
Build: 5792d623fc9fc1852aeb09dd008eabb640cb6711 Build: 5792d623fc9fc1852aeb09dd008eabb640cb6711
``` ```
Bazel runs your binary, injects variables generated by your workspace_status script, and it all finally comes together. Bazel runs your binary, injects variables generated by your workspace_status script, and it all finally comes together.
The stamping also works for builds: The stamping also works for builds:
``` ```
wikilink-obsidian-resolver on  main [⇡] via 🐹 v1.22.2 wikilink-obsidian-resolver on  main [⇡] via 🐹 v1.22.2
bazel build --stamp --workspace_status_command=tools/workspace_status.sh //cmd/version bazel build --stamp --workspace_status_command=tools/workspace_status.sh //cmd/version
INFO: Analyzed target //cmd/version:version (0 packages loaded, 0 targets configured). INFO: Analyzed target //cmd/version:version (0 packages loaded, 0 targets configured).
INFO: Found 1 target... INFO: Found 1 target...
Target //cmd/version:version up-to-date: Target //cmd/version:version up-to-date:
dist/bin/cmd/version/version_/version dist/bin/cmd/version/version_/version
INFO: Elapsed time: 0.246s, Critical Path: 0.06s INFO: Elapsed time: 0.246s, Critical Path: 0.06s
INFO: 1 process: 1 internal. INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action INFO: Build completed successfully, 1 total action
wikilink-obsidian-resolver on  main [⇡] via 🐹 v1.22.2 wikilink-obsidian-resolver on  main [⇡] via 🐹 v1.22.2
./dist/bin/cmd/version/version_/version ./dist/bin/cmd/version/version_/version
Version: v0.1.4-1-g5792d62 Version: v0.1.4-1-g5792d62
Build: 5792d623fc9fc1852aeb09dd008eabb640cb6711 Build: 5792d623fc9fc1852aeb09dd008eabb640cb6711
``` ```
@ -100,5 +101,5 @@ Stamping is not going to accomplish any of my goals on its own, but it was an im
## Notes, Warnings, Caveats ## Notes, Warnings, Caveats
- Important: the `workspace-status-script` *cannot* live in the root of the bazel project. It has to be in a subdirectory for some reason. - Important: the `workspace-status-script` *cannot* live in the root of the bazel project. It has to be in a subdirectory for some reason.
- If you're defining `x_defs` on a `rules_go` `go_library`, you cannot fully qualify the variable names. - If you're defining `x_defs` on a `rules_go` `go_library`, you cannot fully qualify the variable names.
- To find where bazel places artifacts, use `bazel cquery --output=files` - To find where bazel places artifacts, use `bazel cquery --output=files`

@ -5,7 +5,7 @@ aliases: ["Standing up Gogs and fighting with SELinux"]
author: "Nick Dumas" author: "Nick Dumas"
series: [] series: []
cover: "" cover: ""
description: "SELinux like all security tools end up getting in the way of users who know what they're doing." summary: "SELinux like all security tools end up getting in the way of users who know what they're doing."
showFullContent: false showFullContent: false
date: "2018-02-20" date: "2018-02-20"
tags: tags:

@ -10,7 +10,7 @@ date: "2023-09-02"
author: Nick Dumas author: Nick Dumas
cover: "" cover: ""
keywords: [] keywords: []
description: "Investing in tooling makes adhering to good practices almost easy enough to be joyful." summary: "Investing in tooling makes adhering to good practices almost easy enough to be joyful."
showFullContent: false showFullContent: false
tags: tags:
- bazel - bazel

@ -7,7 +7,7 @@ date: "2023-06-01"
author: "Nick Dumas" author: "Nick Dumas"
cover: "" cover: ""
keywords: ["", ""] keywords: ["", ""]
description: "As a collection of Markdown documents grows organically, maintaining consistency is important. JSONSchema offers a way to automatically ensure frontmatter stays up to spec." summary: "As a collection of Markdown documents grows organically, maintaining consistency is important. JSONSchema offers a way to automatically ensure frontmatter stays up to spec."
showFullContent: false showFullContent: false
tags: tags:
- yaml - yaml
@ -21,7 +21,7 @@ Over my time using Obsidian, I've independently authored around 400 notes. Over
```markdown ```markdown
--- ---
publish: false publish: false
description: "" summary: ""
aliases: [] aliases: []
title: "" title: ""
source: [] source: []
@ -90,12 +90,12 @@ func Validate(schemaURL string, r io.Reader) error {
go run cmd/obp/*.go validate -s https://schemas.ndumas.com/obsidian/note.schema.json -t Resources/blog/published/ go run cmd/obp/*.go validate -s https://schemas.ndumas.com/obsidian/note.schema.json -t Resources/blog/published/
2023/06/01 10:31:27 scanning "mapping-aardwolf.md" 2023/06/01 10:31:27 scanning "mapping-aardwolf.md"
2023/06/01 10:31:27 scanning "schema-bad.md" 2023/06/01 10:31:27 scanning "schema-bad.md"
2023/06/01 10:31:27 validation error: &fmt.wrapError{msg:"error validating target: jsonschema: '' does not validate with https://schemas.ndumas.com/obsidian/note.schema.json#/required: missing properties: 'title', 'description', 'tags'", err:(*jsonschema.ValidationError)(0xc0000b3740)} 2023/06/01 10:31:27 validation error: &fmt.wrapError{msg:"error validating target: jsonschema: '' does not validate with https://schemas.ndumas.com/obsidian/note.schema.json#/required: missing properties: 'title', 'summary', 'tags'", err:(*jsonschema.ValidationError)(0xc0000b3740)}
2023/06/01 10:31:27 error count for "schema-bad.md": 1 2023/06/01 10:31:27 error count for "schema-bad.md": 1
2023/06/01 10:31:27 scanning "schema-good.md" 2023/06/01 10:31:27 scanning "schema-good.md"
``` ```
You get a relatively detailed description of why validation failed and a non-zero exit code, exactly what you need to prevent malformed data from entering your pipeline. You get a relatively detailed summary of why validation failed and a non-zero exit code, exactly what you need to prevent malformed data from entering your pipeline.
### how to schema library? ### how to schema library?
You might notice that when I specify a schema, it's hosted at `schemas.ndumas.com`. [Here](https://code.ndumas.com/ndumas/json-schemas) you can find the repository powering that domain. You might notice that when I specify a schema, it's hosted at `schemas.ndumas.com`. [Here](https://code.ndumas.com/ndumas/json-schemas) you can find the repository powering that domain.

Loading…
Cancel
Save