Documentation ¶
Overview ¶
Package packages contains utilities and manager to sync Viam packages defined in the RDK config from the Viam app to the local robot.
Index ¶
Constants ¶
const SubtypeName = "packagemanager"
SubtypeName is a constant that identifies the internal package manager resource subtype string.
Variables ¶
var API = resource.APINamespaceRDKInternal.WithServiceType(SubtypeName)
API is the fully qualified API for the internal package manager service.
var ErrInvalidPackageRef = errors.New("invalid package reference")
ErrInvalidPackageRef is an error when a invalid package reference syntax.
var ErrPackageMissing = errors.New("package missing")
ErrPackageMissing is an error when a package cannot be found.
var InternalServiceName = resource.NewName(API, "builtin")
InternalServiceName is used to refer to/depend on this service internally.
Functions ¶
This section is empty.
Types ¶
type Manager ¶
type Manager interface { resource.Resource // PackagePath returns the package if it exists and is already downloaded. If it does not exist it returns a ErrPackageMissing error. PackagePath(name PackageName) (string, error) }
Manager provides a managed interface for looking up package paths. This is separated from ManagerSyncer to avoid passing the full sync interface to all components.
type ManagerSyncer ¶
type ManagerSyncer interface { Manager // Sync will download and create the symbolic logic links to all the given PackageConfig. Sync will not remove any unused // data packages. You must call Cleanup() to remove leftovers. Sync will block until all packages are loaded to the file system. // Sync should only be used by one goroutine at once. // If errors occur during sync the manager should continue trying to download all packages and then return any errors that occurred. // If the context is canceled the manager will stop syncing and return an interrupted error. Sync(ctx context.Context, packages []config.PackageConfig) error // Cleanup removes any unused packages known to the Manager that are no longer used. It removes the packages from the file system. // Returns any errors during the cleanup process. Cleanup(ctx context.Context) error }
ManagerSyncer provides a managed interface for both reading package paths and syncing packages from the RDK config.
func NewCloudManager ¶
func NewCloudManager( cloudConfig *config.Cloud, client pb.PackageServiceClient, packagesDir string, logger logging.Logger, ) (ManagerSyncer, error)
NewCloudManager creates a new manager with the given package service client and directory to sync to.
func NewNoopManager ¶
func NewNoopManager() ManagerSyncer
NewNoopManager returns a noop package manager that does nothing. On path requests it returns the name of the package.
type PackageName ¶
type PackageName string
PackageName is the logical name of the package on the local rdk. Can point to ID/Version of an actual package.
type PackageVersion ¶
type PackageVersion string
PackageVersion is an immutable package version for a given package id.