diff options
Diffstat (limited to 'internal/slackware_com/file_system.go')
-rw-r--r-- | internal/slackware_com/file_system.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/internal/slackware_com/file_system.go b/internal/slackware_com/file_system.go new file mode 100644 index 0000000..18769be --- /dev/null +++ b/internal/slackware_com/file_system.go @@ -0,0 +1,42 @@ +package slackware_com + +import ( + "fmt" + "os" + "path" +) + +const PkgToolsPath = "/var/lib/pkgtools" + +const PkgToolsPackagesPath = "packages" + +type PackageStore struct { + filePath string +} + +func NewPackageStore(filePath string) (*PackageStore, error) { + packageStore := PackageStore{ + filePath: filePath, + } + + return &packageStore, nil +} + +func (p *PackageStore) GetInstalledPackages() ([]PackageName, error) { + var packages []PackageName + + entries, err := os.ReadDir(path.Join(p.filePath, PkgToolsPackagesPath)) + if err != nil { + return nil, err + } + + for _, entry := range entries { + pkg, err := NewPackageName(entry.Name()) + if err != nil { + return nil, fmt.Errorf("corrupted data: %w", err) + } + packages = append(packages, pkg) + } + + return packages, nil +} |