This program is licensed under GPL version 3 or later.
-Copyright (C) 2021-2024 Simon Ruderich
+Copyright (C) 2021-2025 Simon Ruderich
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#!/bin/sh
# SPDX-License-Identifier: GPL-3.0-or-later
-# Copyright (C) 2021-2024 Simon Ruderich
+# Copyright (C) 2021-2025 Simon Ruderich
set -eu
set -x
# supported as target hosts
# SPDX-License-Identifier: GPL-3.0-or-later
-# Copyright (C) 2021-2024 Simon Ruderich
+# Copyright (C) 2021-2025 Simon Ruderich
set -eu
// Helper copied to the remote host to run commands and deploy configuration
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// Config: parse commands.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse config.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: load files/ directory tree
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse groups.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse hosts.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse packages.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse permissions.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse services.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse templates.yaml and expand templates
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// Config: parse triggers.yaml
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package config
// "fixperms" sub-command: apply proper permissions in files/ directories
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// Command line tool to manage remote hosts
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main_test
// Embed remote helper binaries
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// "sync" sub-command: sync data to remote hosts
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// "sync" sub-command: collect information from remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// "sync" sub-command: sync files
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// "version" sub-command: display version information
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package main
// Frontend: Format changes
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// Frontend: Connection functions for programs using the safcm library
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// Frontend: Logging functions for programs using the safcm library
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// the safcm library
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// Frontend: Functions for terminal output
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package frontend
// RPC primitives for safcm: basic connection implementation
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package safcm
// RPC primitives for safcm: logging constants
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package safcm
// FAI: https://fai-project.org
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package ainsl
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package ainsl
// MsgInfoReq: collect information about the remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package info
// Logging helpers
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package log
// Helper copied to the remote host to run commands and deploy configuration
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package remote
// Helper type to run and log commands
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package run
// Interface to run commands
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package run
// MsgSyncReq: run commands on the remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// MsgSyncReq: copy files to the remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
//go:build !windows
// +build !windows
// MsgSyncReq: copy files to the remote host; Windows compatibility
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// Utility functions useful for file-related tests
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package filetest
// MsgSyncReq: install packages on the remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// MsgSyncReq: install packages on the remote host (Debian)
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// MsgSyncReq: enable and start services on the remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// MsgSyncReq: enable and start services on the remote host (systemd)
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// MsgSyncReq: sync data on the remote host
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// MsgSyncReq: run triggers for changed files
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package sync
// Simple RPC-like protocol: implementation of connection and basic actions
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package rpc
// Simple RPC-like protocol: establish new connection and upload helper
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package rpc
// Utility functions useful for tests
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package testutil
// RPC primitives for safcm: message and additional types
// SPDX-License-Identifier: GPL-3.0-or-later
-// Copyright (C) 2021-2024 Simon Ruderich
+// Copyright (C) 2021-2025 Simon Ruderich
package safcm