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)


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

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)


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

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)


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

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)


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

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)


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

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)


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

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)


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

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