mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-10 14:34:24 +08:00
54 lines
979 B
Go
54 lines
979 B
Go
package commands
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
|
|
"github.com/jbenet/go-ipfs/core"
|
|
u "github.com/jbenet/go-ipfs/util"
|
|
|
|
nsys "github.com/jbenet/go-ipfs/namesys"
|
|
)
|
|
|
|
func Publish(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
|
|
log.Debug("Begin Publish")
|
|
|
|
if n.Identity == nil {
|
|
return errors.New("Identity not loaded!")
|
|
}
|
|
|
|
// name := ""
|
|
ref := ""
|
|
|
|
switch len(args) {
|
|
case 2:
|
|
// name = args[0]
|
|
ref = args[1]
|
|
return errors.New("keychains not yet implemented")
|
|
case 1:
|
|
// name = n.Identity.ID.String()
|
|
ref = args[0]
|
|
|
|
default:
|
|
return fmt.Errorf("Publish expects 1 or 2 args; got %d.", len(args))
|
|
}
|
|
|
|
// later, n.Keychain.Get(name).PrivKey
|
|
k := n.Identity.PrivKey()
|
|
|
|
pub := nsys.NewRoutingPublisher(n.Routing)
|
|
err := pub.Publish(k, ref)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
hash, err := k.GetPublic().Hash()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fmt.Fprintf(out, "published name %s to %s\n", u.Key(hash), ref)
|
|
|
|
return nil
|
|
}
|