Class: RosettAi::PackageManager::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/package_manager/base.rb

Overview

Abstract base class for system package management.

Concrete implementations handle apt (Debian) and gem backends. All backends use array-form system() for security.

Author:

  • hugo

  • claude

Direct Known Subclasses

Apt, GemBackend

Defined Under Namespace

Classes: PackageManagerError

Instance Method Summary collapse

Instance Method Details

#available?Boolean

Returns true if this backend is available on the system.

Returns:

  • (Boolean)

    true if this backend is available on the system

Raises:

  • (NotImplementedError)


64
65
66
# File 'lib/rosett_ai/package_manager/base.rb', line 64

def available?
  raise NotImplementedError, "#{self.class}#available? must be implemented"
end

#available_packages(pattern) ⇒ Array<Hash>

Search for available packages matching a pattern.

Parameters:

  • pattern (String)

    search pattern

Returns:

  • (Array<Hash>)

    matching packages with :name and :version keys

Raises:

  • (NotImplementedError)


47
48
49
# File 'lib/rosett_ai/package_manager/base.rb', line 47

def available_packages(pattern)
  raise NotImplementedError, "#{self.class}#available_packages must be implemented"
end

#backend_nameString

Returns backend identifier.

Returns:

  • (String)

    backend identifier

Raises:

  • (NotImplementedError)


59
60
61
# File 'lib/rosett_ai/package_manager/base.rb', line 59

def backend_name
  raise NotImplementedError, "#{self.class}#backend_name must be implemented"
end

#install(package_name) ⇒ Boolean

Install a package by name.

Parameters:

  • package_name (String)

    package to install

Returns:

  • (Boolean)

    true if installed successfully

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/rosett_ai/package_manager/base.rb', line 23

def install(package_name)
  raise NotImplementedError, "#{self.class}#install must be implemented"
end

#installed?(package_name) ⇒ Boolean

Check if a package is installed.

Parameters:

  • package_name (String)

    package to check

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


39
40
41
# File 'lib/rosett_ai/package_manager/base.rb', line 39

def installed?(package_name)
  raise NotImplementedError, "#{self.class}#installed? must be implemented"
end

#remove(package_name) ⇒ Boolean

Remove a package by name.

Parameters:

  • package_name (String)

    package to remove

Returns:

  • (Boolean)

    true if removed successfully

Raises:

  • (NotImplementedError)


31
32
33
# File 'lib/rosett_ai/package_manager/base.rb', line 31

def remove(package_name)
  raise NotImplementedError, "#{self.class}#remove must be implemented"
end

#update_indexBoolean

Update the package index.

Returns:

  • (Boolean)

    true if updated successfully

Raises:

  • (NotImplementedError)


54
55
56
# File 'lib/rosett_ai/package_manager/base.rb', line 54

def update_index
  raise NotImplementedError, "#{self.class}#update_index must be implemented"
end