fix(cmd): improve editor selection logic in edit command

* Enhance the editor selection to check for nvim and nano before defaulting to vi.
* Return an error if no suitable editor is found.
fix(cmd): track unchanged units in syncup command
* Add tracking for unchanged units during syncup process.
* Update completion message to include count of unchanged units.
fix(runtime): change command type to slice in podman container
* Update command field in podmanContainer struct to be a slice of strings.
* Adjust ListRunning method to join command slice into a single string for output.
fix(ci): enhance release notes generation in workflow
* Collect commit messages since the last tag for release notes.
* Format release body to include detailed change log.
This commit is contained in:
Hein
2026-04-08 13:21:53 +02:00
parent e6743e12fd
commit cb9187bfbd
4 changed files with 29 additions and 5 deletions

View File

@@ -58,10 +58,23 @@ jobs:
TAG="${{ github.event.inputs.tag || github.ref_name }}" TAG="${{ github.event.inputs.tag || github.ref_name }}"
API="${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases" API="${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases"
# Collect commits since the previous tag (or last 20 if no prior tag)
PREV_TAG=$(git tag --sort=-version:refname | grep -v "^${TAG}$" | head -1)
if [ -n "$PREV_TAG" ]; then
RANGE="${PREV_TAG}..${TAG}"
else
RANGE="HEAD~20..HEAD"
fi
NOTES=$(git log "$RANGE" --pretty=format:"- %s" --no-merges)
BODY="## What's changed"$'\n'"${NOTES}"
# Escape for JSON
BODY_JSON=$(printf '%s' "$BODY" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))')
RELEASE=$(curl -s -X POST "$API" \ RELEASE=$(curl -s -X POST "$API" \
-H "Authorization: token ${GITHUB_TOKEN}" \ -H "Authorization: token ${GITHUB_TOKEN}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "{\"tag_name\":\"${TAG}\",\"name\":\"${TAG}\",\"body\":\"Release ${TAG}\"}") -d "{\"tag_name\":\"${TAG}\",\"name\":\"${TAG}\",\"body\":${BODY_JSON}}")
UPLOAD_URL=$(echo "$RELEASE" | grep -o '"upload_url":"[^"]*"' | cut -d'"' -f4) UPLOAD_URL=$(echo "$RELEASE" | grep -o '"upload_url":"[^"]*"' | cut -d'"' -f4)
if [ -z "$UPLOAD_URL" ]; then if [ -z "$UPLOAD_URL" ]; then

View File

@@ -21,7 +21,15 @@ func init() {
func runEdit(cmd *cobra.Command, args []string) error { func runEdit(cmd *cobra.Command, args []string) error {
editor := os.Getenv("EDITOR") editor := os.Getenv("EDITOR")
if editor == "" { if editor == "" {
editor = "vi" for _, e := range []string{"nvim", "nano", "vi"} {
if _, err := exec.LookPath(e); err == nil {
editor = e
break
}
}
}
if editor == "" {
return fmt.Errorf("no editor found; set $EDITOR")
} }
c := exec.Command(editor, configPath) c := exec.Command(editor, configPath)
c.Stdin = os.Stdin c.Stdin = os.Stdin

View File

@@ -31,6 +31,7 @@ func runSyncup(cmd *cobra.Command, args []string) error {
} }
added := 0 added := 0
unchanged := 0
discovered := map[string]bool{} discovered := map[string]bool{}
// Discover running containers across all runtimes // Discover running containers across all runtimes
@@ -51,6 +52,8 @@ func runSyncup(cmd *cobra.Command, args []string) error {
if cfg.AddUnit(unit) { if cfg.AddUnit(unit) {
fmt.Printf(" + added: %s (%s)\n", c.Name, c.Runtime) fmt.Printf(" + added: %s (%s)\n", c.Name, c.Runtime)
added++ added++
} else {
unchanged++
} }
} }
} }
@@ -86,6 +89,6 @@ func runSyncup(cmd *cobra.Command, args []string) error {
return err return err
} }
fmt.Printf("\nDone. Added: %d Disabled: %d Re-enabled: %d\n", added, disabled, reenabled) fmt.Printf("\nDone. Added: %d Unchanged: %d Disabled: %d Re-enabled: %d\n", added, unchanged, disabled, reenabled)
return nil return nil
} }

View File

@@ -15,7 +15,7 @@ type podmanContainer struct {
ID string `json:"Id"` ID string `json:"Id"`
Names []string `json:"Names"` Names []string `json:"Names"`
Image string `json:"Image"` Image string `json:"Image"`
Command string `json:"Command"` Command []string `json:"Command"`
State string `json:"State"` State string `json:"State"`
} }
@@ -55,7 +55,7 @@ func (p *Podman) ListRunning() ([]Container, error) {
containers = append(containers, Container{ containers = append(containers, Container{
Name: name, Name: name,
Image: c.Image, Image: c.Image,
Command: c.Command, Command: strings.Join(c.Command, " "),
Runtime: "podman", Runtime: "podman",
}) })
} }