view cmds/multipass-remove/remove.go @ 17:342f63116bfd

Move commands to canonical Go locations, so go install works.
author Paul Fisher <paul@pfish.zone>
date Fri, 30 Oct 2015 00:18:13 -0400
parents multipass-remove.go@e246c8a4d28e
children
line wrap: on
line source

// multipass-remove allows a user to remove an entry from their multipass database.

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"

	"pfish.zone/go/multipass/file"
)

func main() {
	passfile, err := file.ForMe()
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	}
	fmt.Println("Choose a password to remove:")
	reader := bufio.NewReader(os.Stdin)
	entries, err := passfile.AllEntries()
	for i, entry := range entries {
		fmt.Printf("%2d: %s\n", i+1, entry.Description())
	}
	fmt.Print("Enter the number to remove: ")
	text, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	}
	picked, err := strconv.Atoi(text[:len(text)-1])
	if err != nil {
		fmt.Println("Not a valid number")
		os.Exit(1)
	}
	picked -= 1
	if picked < 0 || len(entries) <= picked {
		fmt.Println("Not a valid selection")
		os.Exit(1)
	}

	if err := passfile.Remove(entries[picked].ID()); err != nil {
		fmt.Printf("Couldn't remove password: %s\n", err.Error())
		os.Exit(1)
	}
	fmt.Println("Removed password entry.")
}