func runCommand(name string, args []string, dir string, insecure bool) error { argv := make([]string, 1, 1+len(args)) argv[0] = name argv = append(argv, args...) cmd, ok := commands[name] if !ok { return fmt.Errorf("%s is not a tuf command. See 'tuf help'", name) } parsedArgs, err := docopt.Parse(cmd.usage, argv, true, "", true) if err != nil { return err } var p utils.PassphraseFunc if !insecure { p = getPassphrase } signer := signed.Ed25519{} repo, err := tuf.NewRepo(&signer, store.FileSystemStore(dir, p), "sha256") if err != nil { return err } return cmd.f(parsedArgs, repo) }
func tufClient(args *docopt.Args) (*client.Client, error) { storePath, ok := args.String["--store"] if !ok { storePath = args.String["-s"] } local := store.FileSystemStore(storePath, nil) remote, err := client.HTTPRemoteStore(args.String["<url>"], nil) if err != nil { return nil, err } return client.NewClient(local, remote), nil }