summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/distros/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/distros/interface.go')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/distros/interface.go158
1 files changed, 0 insertions, 158 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/distros/interface.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/distros/interface.go
deleted file mode 100644
index f719f1b..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/distros/interface.go
+++ /dev/null
@@ -1,158 +0,0 @@
-package distros
-
-import (
- "context"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
-)
-
-// DistroFamily represents a family of related distributions
-type DistroFamily string
-
-const (
- FamilyArch DistroFamily = "arch"
- FamilyFedora DistroFamily = "fedora"
- FamilySUSE DistroFamily = "suse"
- FamilyUbuntu DistroFamily = "ubuntu"
- FamilyDebian DistroFamily = "debian"
- FamilyNix DistroFamily = "nix"
- FamilyGentoo DistroFamily = "gentoo"
-)
-
-// PackageManagerType defines the package manager a distro uses
-type PackageManagerType string
-
-const (
- PackageManagerPacman PackageManagerType = "pacman"
- PackageManagerDNF PackageManagerType = "dnf"
- PackageManagerAPT PackageManagerType = "apt"
- PackageManagerZypper PackageManagerType = "zypper"
- PackageManagerNix PackageManagerType = "nix"
- PackageManagerPortage PackageManagerType = "portage"
-)
-
-// RepositoryType defines the type of repository for a package
-type RepositoryType string
-
-const (
- RepoTypeSystem RepositoryType = "system" // Standard system repo (pacman, dnf, apt)
- RepoTypeAUR RepositoryType = "aur" // Arch User Repository
- RepoTypeCOPR RepositoryType = "copr" // Fedora COPR
- RepoTypePPA RepositoryType = "ppa" // Ubuntu PPA
- RepoTypeOBS RepositoryType = "obs" // OpenBuild Service (Debian/OpenSUSE)
- RepoTypeFlake RepositoryType = "flake" // Nix flake
- RepoTypeGURU RepositoryType = "guru" // Gentoo GURU
- RepoTypeManual RepositoryType = "manual" // Manual build from source
-)
-
-// InstallPhase represents the current phase of installation
-type InstallPhase int
-
-const (
- PhasePrerequisites InstallPhase = iota
- PhaseAURHelper
- PhaseSystemPackages
- PhaseAURPackages
- PhaseCursorTheme
- PhaseConfiguration
- PhaseGreeterSetup
- PhaseComplete
-)
-
-// InstallProgressMsg represents progress during package installation
-type InstallProgressMsg struct {
- Phase InstallPhase
- Progress float64
- Step string
- IsComplete bool
- NeedsSudo bool
- CommandInfo string
- LogOutput string
- Error error
-}
-
-// PackageMapping defines how to install a package on a specific distro
-type PackageMapping struct {
- Name string // Package name to install
- Repository RepositoryType // Repository type
- RepoURL string // Repository URL if needed (e.g., COPR repo, PPA)
- BuildFunc string // Name of manual build function if RepoTypeManual
- UseFlags string // USE flags for Gentoo packages
- AcceptKeywords string // Accept keywords for Gentoo packages (e.g., "~amd64")
-}
-
-// Distribution defines a Linux distribution with all its specific configurations
-type Distribution interface {
- // Metadata
- GetID() string
- GetColorHex() string
- GetFamily() DistroFamily
- GetPackageManager() PackageManagerType
-
- // Dependency Detection
- DetectDependencies(ctx context.Context, wm deps.WindowManager) ([]deps.Dependency, error)
- DetectDependenciesWithTerminal(ctx context.Context, wm deps.WindowManager, terminal deps.Terminal) ([]deps.Dependency, error)
-
- // Package Installation
- InstallPackages(ctx context.Context, dependencies []deps.Dependency, wm deps.WindowManager, sudoPassword string, reinstallFlags map[string]bool, disabledFlags map[string]bool, skipGlobalUseFlags bool, progressChan chan<- InstallProgressMsg) error
-
- // Package Mapping
- GetPackageMapping(wm deps.WindowManager) map[string]PackageMapping
-
- // Prerequisites
- InstallPrerequisites(ctx context.Context, sudoPassword string, progressChan chan<- InstallProgressMsg) error
-}
-
-// DistroConfig holds configuration for a distribution
-type DistroConfig struct {
- ID string
- ColorHex string
- Family DistroFamily
- Constructor func(config DistroConfig, logChan chan<- string) Distribution
-}
-
-// Registry holds all supported distributions
-var Registry = make(map[string]DistroConfig)
-
-// Register adds a distribution to the registry
-func Register(id, colorHex string, family DistroFamily, constructor func(config DistroConfig, logChan chan<- string) Distribution) {
- Registry[id] = DistroConfig{
- ID: id,
- ColorHex: colorHex,
- Family: family,
- Constructor: constructor,
- }
-}
-
-// GetSupportedDistros returns a list of all supported distribution IDs
-func GetSupportedDistros() []string {
- ids := make([]string, 0, len(Registry))
- for id := range Registry {
- ids = append(ids, id)
- }
- return ids
-}
-
-// IsDistroSupported checks if a distribution ID is supported
-func IsDistroSupported(id string) bool {
- _, exists := Registry[id]
- return exists
-}
-
-// NewDistribution creates a distribution instance by ID
-func NewDistribution(id string, logChan chan<- string) (Distribution, error) {
- config, exists := Registry[id]
- if !exists {
- return nil, &UnsupportedDistributionError{ID: id}
- }
- return config.Constructor(config, logChan), nil
-}
-
-// UnsupportedDistributionError is returned when a distribution is not supported
-type UnsupportedDistributionError struct {
- ID string
-}
-
-func (e *UnsupportedDistributionError) Error() string {
- return "unsupported distribution: " + e.ID
-}