From d9d3887e8104161c2123c017df4ec572c6f6b29a Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Wed, 8 Apr 2026 07:39:58 +0000 Subject: [PATCH] chore: update Go 1.26.2, document all helpers in README, use prepareArgs consistently - Bump go.mod from 1.26.1 to 1.26.2 - Add all helper functions to README (GetUnits, GetMaskedUnits, GetSocketsForServiceUnit, IsSystemd, IsMasked, IsRunning, HasValidUnitSuffix) - Remove unused fmt import from README example - Refactor GetSocketsForServiceUnit, GetUnits, GetMaskedUnits to use prepareArgs instead of manual arg construction - Add Go 1.26.2 to CI test matrix --- .github/workflows/ci.yml | 4 ++-- README.md | 8 +++++++- go.mod | 2 +- helpers.go | 15 +++------------ 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b7f84e..676c6ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: ["1.26"] + go-version: ["1.26", "1.26.2"] steps: - uses: actions/checkout@v4 @@ -39,7 +39,7 @@ jobs: run: sudo go test -race -coverprofile=coverage-root.out -covermode=atomic ./... - name: Upload coverage to Codecov - if: matrix.go-version == '1.26' + if: matrix.go-version == '1.26.2' uses: codecov/codecov-action@v5 with: files: coverage-user.out,coverage-root.out diff --git a/README.md b/README.md index aa14588..3e362ef 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,13 @@ If your system isn't running (or targeting another system running) `systemctl`, - [x] Get current memory in bytes (`MemoryCurrent`) as an int - [x] Get the PID of the main process (`MainPID`) as an int - [x] Get the restart count of a unit (`NRestarts`) as an int +- [x] List all loaded units and their states (`list-units`) +- [x] List masked units (`list-unit-files --state=masked`) +- [x] Get sockets associated with a service unit (`list-sockets`) +- [x] Check if a unit is masked +- [x] Check if a unit is running (sub-state) +- [x] Check if systemd is the init system (`/proc/1/comm`) +- [x] Validate unit name suffixes against known systemd unit types ## Useful errors @@ -55,7 +62,6 @@ package main import ( "context" - "fmt" "log" "time" diff --git a/go.mod b/go.mod index d172535..e8696a5 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ module github.com/taigrr/systemctl -go 1.26.1 +go 1.26.2 diff --git a/helpers.go b/helpers.go index 51285f7..a23526f 100644 --- a/helpers.go +++ b/helpers.go @@ -74,10 +74,7 @@ func GetPID(ctx context.Context, unit string, opts Options) (int, error) { // GetSocketsForServiceUnit returns the socket units associated with a given service unit. func GetSocketsForServiceUnit(ctx context.Context, unit string, opts Options) ([]string, error) { - args := []string{"list-sockets", "--all", "--no-legend", "--no-pager"} - if opts.UserMode { - args = append(args, "--user") - } + args := prepareArgs("list-sockets", opts, "--all", "--no-legend", "--no-pager") stdout, _, _, err := execute(ctx, args) if err != nil { return []string{}, err @@ -100,10 +97,7 @@ func GetSocketsForServiceUnit(ctx context.Context, unit string, opts Options) ([ // GetUnits returns a list of all loaded units and their states. func GetUnits(ctx context.Context, opts Options) ([]Unit, error) { - args := []string{"list-units", "--all", "--no-legend", "--full", "--no-pager"} - if opts.UserMode { - args = append(args, "--user") - } + args := prepareArgs("list-units", opts, "--all", "--no-legend", "--full", "--no-pager") stdout, stderr, _, err := execute(ctx, args) if err != nil { return []Unit{}, errors.Join(err, filterErr(stderr)) @@ -129,10 +123,7 @@ func GetUnits(ctx context.Context, opts Options) ([]Unit, error) { // GetMaskedUnits returns a list of all masked unit names. func GetMaskedUnits(ctx context.Context, opts Options) ([]string, error) { - args := []string{"list-unit-files", "--state=masked"} - if opts.UserMode { - args = append(args, "--user") - } + args := prepareArgs("list-unit-files", opts, "--state=masked") stdout, stderr, _, err := execute(ctx, args) if err != nil { return []string{}, errors.Join(err, filterErr(stderr))