// FindSnapshot takes a string and tries to find a snapshot whose ID matches // the string as closely as possible. func FindSnapshot(repo *repository.Repository, s string) (backend.ID, error) { // find snapshot id with prefix name, err := backend.Find(repo.Backend(), backend.Snapshot, s) if err != nil { return backend.ID{}, err } return backend.ParseID(name) }
func (cmd CmdKey) Execute(args []string) error { if len(args) < 1 || (args[0] == "rm" && len(args) != 2) { return fmt.Errorf("wrong number of arguments, Usage: %s", cmd.Usage()) } repo, err := cmd.global.OpenRepository() if err != nil { return err } switch args[0] { case "list": lock, err := lockRepo(repo) defer unlockRepo(lock) if err != nil { return err } return cmd.listKeys(repo) case "add": lock, err := lockRepo(repo) defer unlockRepo(lock) if err != nil { return err } return cmd.addKey(repo) case "rm": lock, err := lockRepoExclusive(repo) defer unlockRepo(lock) if err != nil { return err } id, err := backend.Find(repo.Backend(), backend.Key, args[1]) if err != nil { return err } return cmd.deleteKey(repo, id) case "passwd": lock, err := lockRepoExclusive(repo) defer unlockRepo(lock) if err != nil { return err } return cmd.changePassword(repo) } return nil }
// Find loads the list of all blobs of type t and searches for names which start // with prefix. If none is found, nil and ErrNoIDPrefixFound is returned. If // more than one is found, nil and ErrMultipleIDMatches is returned. func (r *Repository) Find(t backend.Type, prefix string) (string, error) { return backend.Find(r.be, t, prefix) }