Skip to content
/ syspkg Public

SysPkg: a unified Go library and CLI tool for managing system packages across different package managers (apt, snap, flatpak, yum, dnf, and more).

License

Notifications You must be signed in to change notification settings

bluet/syspkg

Repository files navigation

SysPkg

Go Reference Go Report Card License

SysPkg is a unified CLI tool and Golang library for managing system packages across different package managers (apt, snap, flatpak, yum, dnf, and more). It simplifies the process of working with various package managers by providing a consistent interface and API through an abstraction layer.

Features

  • A unified package management interface for various package managers
  • Supports popular package managers such as APT, Snap, Flatpak, and more
  • Easy-to-use API for package installation, removal, search, listing, and system upgrades
  • Expandable architecture to support more package managers in the future

API Documentation

See the Go Reference for the full API documentation.

Getting Started

Prerequisites

  • Go 1.16 or later (1.20+ preferred)

Installation (as CLI tool)

Install the CLI tool using the go install command:

go install github.com/bluet/syspkg/cmd/syspkg@latest

Installation (as Go library)

Install the library using the go get command:

go get github.com/bluet/syspkg

Usage

CLI Tool

SysPkg provides a unified CLI tool for managing system packages across different package managers. It simplifies the process of working with various package managers by providing a consistent interface through an abstraction layer.

Here's an example demonstrating how to use SysPkg as a CLI tool:

# Install a package using APT
syspkg --apt install vim

# Remove a package using APT
syspkg --apt remove vim

# Search for a package using Snap
syspkg --snap search vim

# Show all upgradable packages using Flatpak
syspkg --flatpak show upgradable

Or, you can do operations without knowing the package manager:

# Install a package using all available package managers
syspkg install vim

# Remove a package using all available package manager
syspkg remove vim

# Search for a package using all available package manager
syspkg search vim

# Upgrade all packages using all available package manager
syspkg upgrade

For more examples and real use cases, see the cmd/syspkg/ directory.

Go Library

Here's an example demonstrating how to use SysPkg as a Go library:

package main

import (
 "fmt"
 "github.com/bluet/syspkg"
)

func main() {
 // Initialize SysPkg with all available package managers on current system
 includeOptions := syspkg.IncludeOptions{
  AllAvailable: true,
 }
 syspkgManager, err := syspkg.New(includeOptions)
 if err != nil {
  fmt.Printf("Error initializing SysPkg: %v\n", err)
  return
 }

 // List installed packages using APT
 aptManager := syspkgManager.GetPackageManager("apt")
 installedPackages, err := aptManager.ListInstalled(nil)
 if err != nil {
  fmt.Printf("Error listing installed packages: %v\n", err)
  return
 }

 fmt.Println("Installed packages:")
 for _, pkg := range installedPackages {
  fmt.Printf("- %s (%s)\n", pkg.Name, pkg.Version)
 }
}

For more examples and real use cases, see the cmd/syspkg/ directory.

Supported Package Managers

Package Manager Install Remove Search Upgrade List Installed List Upgradable Get Package Info
APT
SNAP
Flatpak
Your favorite package manager here! 🚀 🚀 🚀 🚀 🚀 🚀 🚀

Please open an issue (or PR ❤️) if you'd like to see support for any unlisted specific package manager.

TODO

  • Add support for more package managers
  • Improve error handling
  • Enhance return values and status codes

Contributing

We welcome contributions to Go-SysPkg! Please read our CONTRIBUTING.md for more information on how to contribute.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

SysPkg: a unified Go library and CLI tool for managing system packages across different package managers (apt, snap, flatpak, yum, dnf, and more).

Resources

License

Stars

Watchers

Forks

Packages

No packages published