Skip to content

Commit d6b73fc

Browse files
author
David Noble
committed
Merge develop: the output convention, and the devlore-test rewrite (#740)
This branch was cut from f3c8769, a develop from before #744. Bringing it current picks up the whole output convention, and one part of it matters to #712 directly: #738 is closed, so devlore-test now persists an execution trace. That is what a test needs to observe a resource's Pending to Active transition, which this plan's Blocked-on section named as a blocker. No overlap is expected. #744 changed pkg/result, cmd/internal/cli, cmd/devlore-test, cmd/writ, and docs; this branch changes pkg/op and its own plan. The tree here is RED and stays that way: three executor tests fail on $resource ... has no catalog to name it, pending the encodeResource fix ruled in decision 8.
2 parents 5d8f8a7 + 18dedc6 commit d6b73fc

42 files changed

Lines changed: 2539 additions & 873 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.goreleaser.yaml‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,30 @@ builds:
5353
- -X github.com/NobleFactor/devlore-cli/pkg/application.Commit={{.ShortCommit}}
5454
- -X github.com/NobleFactor/devlore-cli/pkg/application.BuildDate={{.Date}}
5555

56+
- id: star
57+
binary: star
58+
main: ./cmd/star
59+
env:
60+
- CGO_ENABLED=0
61+
goos:
62+
- linux
63+
- darwin
64+
- windows
65+
goarch:
66+
- amd64
67+
- arm64
68+
ldflags:
69+
- -s -w
70+
- -X github.com/NobleFactor/devlore-cli/pkg/application.Version={{.Version}}
71+
- -X github.com/NobleFactor/devlore-cli/pkg/application.Commit={{.ShortCommit}}
72+
- -X github.com/NobleFactor/devlore-cli/pkg/application.BuildDate={{.Date}}
73+
5674
archives:
5775
- id: default
5876
builds:
5977
- writ
6078
- lore
79+
- star
6180
format: tar.gz
6281
format_overrides:
6382
- goos: windows
@@ -67,6 +86,17 @@ archives:
6786
- README.md
6887
- LICENSE
6988

89+
# star's extensions travel with the binary. //go:embed covers cmd/star/extensions -- the
90+
# com.noblefactor.star.* lint and hook commands -- and NOT star/extensions, where the
91+
# com.noblefactor.devlore.* commands live, so a binary alone answers `unknown command
92+
# "devlore"`.
93+
#
94+
# share/star/extensions rather than beside the binaries: install.sh unpacks to <prefix>/bin
95+
# and the loader probes XDG_DATA_HOME, which is <prefix>/share only when prefix is the default
96+
# ~/.local. That coincidence is load-bearing -- see docs/plans/release-path.md.
97+
- src: star/extensions/**/*
98+
dst: share/star/extensions
99+
70100
checksum:
71101
name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"
72102
algorithm: sha256
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright Noble Factor. All rights reserved.
3+
4+
# Darwin additions, over noblefactor.Unix.
5+
6+
packages:
7+
# GNU make. The Makefile requires 3.82+ for .ONESHELL:, and macOS ships 3.81 -- the last GPLv2
8+
# release, so it will never advance. Without this the multi-line recipes are split into one shell
9+
# per line and die as `syntax error: unexpected end of file`. ci.yaml installs it on every macOS
10+
# leg for the same reason.
11+
- make
12+
13+
# Compilers and build tools the platform expects for anything cgo-adjacent. The registry carries
14+
# a lore package for it.
15+
- xcode-clt
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright Noble Factor. All rights reserved.
3+
4+
# Linux additions, over noblefactor.Unix.
5+
#
6+
# Deliberately thin: the distributions we build on ship a GNU userland already, so the tools that
7+
# need naming on Darwin need no mention here.
8+
9+
packages: []
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright Noble Factor. All rights reserved.
3+
4+
# Unix additions, over the suffix-less noblefactor layer.
5+
#
6+
# Selected on Darwin and Linux, because writ's OSFamily maps both to Unix. Windows has no family and
7+
# never draws this layer -- the two are siblings, not base and override.
8+
9+
packages:
10+
# markdownlint-cli2 is npm-delivered and gocyclo is `go install`ed; both are named here rather than
11+
# in the base because neither has a settled Windows delivery in our tooling.
12+
- markdownlint-cli2
13+
- gocyclo
14+
15+
# Code metrics, the quality-gate's last step.
16+
- scc
17+
18+
# Git hooks. The Makefile installs them through it.
19+
- pre-commit
20+
21+
# Secrets. pkg/op/provider/encryption shells out to sops, and age is the backend the writ layer
22+
# encrypts with. Both are needed to deploy a layer carrying .sops files.
23+
- sops
24+
- age
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright Noble Factor. All rights reserved.
3+
4+
# Windows additions, over the suffix-less noblefactor layer.
5+
#
6+
# Windows has no OS family in writ's segment model, so it never draws noblefactor.Unix. Anything
7+
# shared with Darwin and Linux belongs in the base layer, not repeated here.
8+
9+
packages:
10+
# PowerShell 7. pkg/op/provider/powershell shells out to pwsh, pkg/platform's Windows manager
11+
# detection expects it, and it is what sshd's DefaultShell is set to on our Windows hosts.
12+
- pwsh
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright Noble Factor. All rights reserved.
3+
4+
# The tools a devlore-cli working environment needs on every platform.
5+
#
6+
# This layer has no suffix, so writ's Segments.Match selects it everywhere -- "no suffixes means it
7+
# always matches". Platform layers add to it: Darwin and Linux also draw noblefactor.Unix, because
8+
# OSFamily maps both to Unix; Windows has no family and draws only noblefactor.Windows.
9+
#
10+
# Every entry is one this repository demonstrably uses -- a Makefile target, a CI step, a star
11+
# extension, or a provider that shells out to it. Nothing is here because it happens to be installed
12+
# on someone's laptop.
13+
#
14+
# This file is not symlinked. writ recognizes the name and routes it through manifest.resolve, which
15+
# hands it to the lore planner as package-installation nodes.
16+
17+
packages:
18+
# Version control, and the only external command the codebase calls directly (7 call sites).
19+
- git
20+
21+
# The toolchain. go.mod requires 1.27.
22+
- go
23+
24+
# Linting. golangci-lint runs from `make lint-all` against a pinned version; shellcheck and shfmt
25+
# are what `star lint shell` invokes, the latter as `shfmt -d -i 4 -ci`.
26+
- golangci-lint
27+
- shellcheck
28+
- shfmt
29+
30+
# The pull-request workflow: release.yaml, lkg-tag.yaml, and every PR script.
31+
- gh
32+
33+
# JSON handling in docs-publish.yaml.
34+
- jq

0 commit comments

Comments
 (0)