github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/core/commands/publish.go (about) 1 package commands 2 3 import ( 4 "errors" 5 "fmt" 6 "io" 7 8 "github.com/jbenet/go-ipfs/core" 9 u "github.com/jbenet/go-ipfs/util" 10 11 nsys "github.com/jbenet/go-ipfs/namesys" 12 ) 13 14 func Publish(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error { 15 log.Debug("Begin Publish") 16 17 if n.Identity == nil { 18 return errors.New("Identity not loaded!") 19 } 20 21 // name := "" 22 ref := "" 23 24 switch len(args) { 25 case 2: 26 // name = args[0] 27 ref = args[1] 28 return errors.New("keychains not yet implemented") 29 case 1: 30 // name = n.Identity.ID.String() 31 ref = args[0] 32 33 default: 34 return fmt.Errorf("Publish expects 1 or 2 args; got %d.", len(args)) 35 } 36 37 // later, n.Keychain.Get(name).PrivKey 38 k := n.Identity.PrivKey() 39 40 pub := nsys.NewRoutingPublisher(n.Routing) 41 err := pub.Publish(k, ref) 42 if err != nil { 43 return err 44 } 45 46 hash, err := k.GetPublic().Hash() 47 if err != nil { 48 return err 49 } 50 fmt.Fprintf(out, "published name %s to %s\n", u.Key(hash), ref) 51 52 return nil 53 }