code: func manifestAdd(ctx *cli.Context) {
  	args := ctx.Args()
  	if len(args) != 3 {
  		utils.Fatalf("Need exactly three arguments <MHASH> <path> <HASH>")
  	}
  
  	var (
  		mhash = args[0]
  		path  = args[1]
  		hash  = args[2]
  	)
  
  	bzzapi := strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/")
  	client := swarm.NewClient(bzzapi)
  
  	m, _, err := client.DownloadManifest(hash)
  	if err != nil {
  		utils.Fatalf("Error downloading manifest to add: %v", err)
  	}
  	l := len(m.Entries)
  	if l == 0 {
  		utils.Fatalf("No entries in manifest %s", hash)
  	} else if l > 1 {
  		utils.Fatalf("Too many entries in manifest %s", hash)
  	}
  
  	newManifest := addEntryToManifest(client, mhash, path, m.Entries[0])
  	fmt.Println(newManifest)
  }
docs: // manifestAdd adds a new entry to the manifest at the given path.
  // New entry hash, the last argument, must be the hash of a manifest
  // with only one entry, which meta-data will be added to the original manifest.
  // On success, this function will print new (updated) manifest's hash.