[pm publish] remove unused flags
The flags / modes being removed here are being removed prior to the
introduction of a new manifest format for publishing a set of packages that
will eventually supersede most other modes.
This cleanup will reduce the size of that future change.
Test: build still builds, sdk use case (-a) still works
Bug: PKG-381 #comment cleanup pm publish
Change-Id: I0c244c38f3e546eda734c5c83693c70acacf4b81
diff --git a/go/src/pm/cmd/pm/publish/publish.go b/go/src/pm/cmd/pm/publish/publish.go
index dc39a1c..6d55a15 100644
--- a/go/src/pm/cmd/pm/publish/publish.go
+++ b/go/src/pm/cmd/pm/publish/publish.go
@@ -10,7 +10,6 @@
"encoding/json"
"flag"
"fmt"
- "io"
"log"
"os"
"path/filepath"
@@ -24,8 +23,8 @@
)
const (
- usage = `Usage: %s publish (-a|-p|-ps|-b|-bs|-m) -f file [-k <keys_dir>] [-r <repo_path>]
- Pass any one of the mode flags (-a|-p|-ps|-b|-bs|-m), and at least one file to pubish.
+ usage = `Usage: %s publish (-a|-ps) -f file [-k <keys_dir>] [-r <repo_path>]
+ Pass any one of the mode flags (-a|-ps), and at least one file to pubish.
`
serverBase = "amber-files"
metaFar = "meta.far"
@@ -51,15 +50,8 @@
fs := flag.NewFlagSet("serve", flag.ExitOnError)
archiveMode := fs.Bool("a", false, "(mode) Publish an archived package.")
- packageMode := fs.Bool("p", false, "(mode) Publish a package.")
packageSetMode := fs.Bool("ps", false, "(mode) Publish a set of packages from a manifest.")
- blobMode := fs.Bool("b", false, "(mode) Publish a content blob.")
- blobSetMode := fs.Bool("bs", false, "(mode) Publish a set of blobs from a manifest.")
- manifestMode := fs.Bool("m", false, "(mode) Publish a the contents of a manifest as as content blobs.")
- commitMode := fs.Bool("po", false, "(mode) Publish only, commit any staged updates to the update repo.")
- modeFlags := []*bool{archiveMode, packageMode, packageSetMode, blobMode, blobSetMode, manifestMode, commitMode}
-
- name := fs.String("n", "", "Name/path used for the published file. This only applies to '-p', package files If not supplied, the relative path supplied to '-f' will be used.")
+ modeFlags := []*bool{archiveMode, packageSetMode}
// TODO(raggi): cleanup args...
config := &repo.Config{}
@@ -97,7 +89,7 @@
return fmt.Errorf("at least one mode flag must be passed")
}
- if !*commitMode && len(filePaths) == 0 {
+ if len(filePaths) == 0 {
return fmt.Errorf("no file path supplied")
}
@@ -159,28 +151,25 @@
return fmt.Errorf("open %s from %s: %s", metaFar, f.Name(), err)
}
- if len(*name) == 0 {
- mf, err := far.NewReader(bytes.NewReader(b))
- if err != nil {
- return err
- }
- pb, err := mf.ReadFile("meta/package")
- if err != nil {
- return fmt.Errorf("open meta/package from %s from %s: %s", metaFar, f.Name(), err)
- }
- var p pkg.Package
- if err := json.Unmarshal(pb, &p); err != nil {
- return err
- }
-
- s := p.Name + "/" + p.Version
- name = &s
+ mf, err := far.NewReader(bytes.NewReader(b))
+ if err != nil {
+ return err
}
+ pb, err := mf.ReadFile("meta/package")
+ if err != nil {
+ return fmt.Errorf("open meta/package from %s from %s: %s", metaFar, f.Name(), err)
+ }
+ var p pkg.Package
+ if err := json.Unmarshal(pb, &p); err != nil {
+ return err
+ }
+
+ name := p.Name + "/" + p.Version
if *verbose {
- fmt.Printf("adding package %s\n", *name)
+ fmt.Printf("adding package %s\n", name)
}
- if err := repo.AddPackage(*name, bytes.NewReader(b)); err != nil {
+ if err := repo.AddPackage(name, bytes.NewReader(b)); err != nil {
return err
}
@@ -232,181 +221,9 @@
log.Fatalf("error committing repository updates: %s", err)
}
- case *blobSetMode:
- if len(filePaths) != 1 {
- log.Fatalf("too many file paths supplied.")
- }
- f, err := os.Open(filePaths[0])
- if err != nil {
- return fmt.Errorf("error reading package set manifest: %s", err)
- }
- defer f.Close()
- s := bufio.NewScanner(f)
- for s.Scan() {
- if err := s.Err(); err != nil {
- log.Fatalf("error reading package set manifest: %s", err)
- }
-
- line := s.Text()
- parts := strings.SplitN(line, "=", 2)
- root := parts[1]
- f, err := os.Open(parts[0])
- if err != nil {
- return err
- }
- _, err = repo.AddBlob(root, f)
- f.Close()
- if err != nil && err != os.ErrExist {
- return fmt.Errorf("Error adding regular file: %s", err)
- }
- }
-
- case *packageMode:
- if len(filePaths) != 1 {
- return fmt.Errorf("too many file paths supplied")
- }
- if len(*name) == 0 {
- name = &filePaths[0]
- }
- f, err := os.Open(filePaths[0])
- if err != nil {
- return err
- }
- err = repo.AddPackage(*name, f)
- f.Close()
- if err != nil {
- return fmt.Errorf("problem adding signed file: %s", err)
- }
- if err = repo.CommitUpdates(*verTime); err != nil {
- return fmt.Errorf("error signing added file: %s", err)
- }
-
- case *blobMode:
- if len(*name) > 0 {
- return fmt.Errorf("name is not a valid argument for content addressed files")
- }
- for _, path := range filePaths {
- f, err := os.Open(path)
- if err != nil {
- return err
- }
- *name, err = repo.AddBlob("", f)
- f.Close()
- if err != nil && err != os.ErrExist {
- return fmt.Errorf("Error adding regular file: %s %s", path, err)
- }
- }
-
- case *commitMode:
- if err := repo.CommitUpdates(*verTime); err != nil {
- fmt.Printf("error committing updates: %s", err)
- }
-
- case *manifestMode:
- if len(filePaths) != 1 {
- return fmt.Errorf("too many file paths supplied")
- }
- if err = publishManifest(filePaths[0], repo, *verbose); err != nil {
- return fmt.Errorf("error processing manifest: %s", err)
- }
-
default:
panic("unhandled mode")
}
return nil
}
-
-func publishManifest(manifestPath string, repo *publish.UpdateRepo, verbose bool) error {
- manifest, err := readManifest(manifestPath)
- if err != nil {
- return err
- }
-
- addedBlobs, blobIndex, err := publishPkgUpdates(repo, manifest)
- if err != nil {
- return err
- }
-
- dupes := make(map[string]string, len(blobIndex))
- if verbose {
- for p, m := range blobIndex {
- fmt.Printf("File %q stored as %s\n", p, m)
- dupes[m] = p
- }
-
- fmt.Printf("Blobs\n examined: %d\n added: %d\n duplicates: %d\n",
- len(manifest), len(addedBlobs), len(manifest)-len(dupes))
- }
- return nil
-}
-
-func publishPkgUpdates(repo *publish.UpdateRepo, manifest []manifestEntry) ([]string, map[string]string, error) {
- // if we encounter an error, remove any added blobs
- addedBlobs := []string{}
- defer func() {
- for _, p := range addedBlobs {
- repo.RemoveContentBlob(p)
- }
- }()
-
- blobIndex := make(map[string]string)
- // read the manifest content
- for _, entry := range manifest {
- f, err := os.Open(entry.localPath)
- if err != nil {
- return nil, nil, fmt.Errorf("publish: error adding blob %s", err)
- }
-
- merkle, err := repo.AddBlob("", f)
- f.Close()
-
- if err == nil {
- addedBlobs = append(addedBlobs, merkle)
- } else if !os.IsExist(err) {
- return nil, nil, fmt.Errorf("publish: error adding blob %s", err)
- }
- blobIndex[entry.localPath] = merkle
- }
-
- // no error so we don't want to remove any of the blobs we just added
- defer func() {
- addedBlobs = []string{}
- }()
-
- return addedBlobs, blobIndex, nil
-}
-
-func readManifest(manifestPath string) ([]manifestEntry, error) {
- f, err := os.Open(manifestPath)
- if err != nil {
- return nil, fmt.Errorf("publish: couldn't read manifest: %s", err)
- }
-
- defer f.Close()
- entries := []manifestEntry{}
- rdr := bufio.NewReader(f)
-
- for {
- l, err := rdr.ReadString('\n')
- if err != nil && err != io.EOF {
- return entries, err
- }
-
- l = strings.TrimSpace(l)
- parts := strings.Split(l, "=")
- if len(parts) == 2 {
- entries = append(entries,
- manifestEntry{remotePath: parts[0], localPath: parts[1]})
- } else if len(parts) > 2 {
- fmt.Printf("Line %q had unexpected token count %d, expected 2\n", l,
- len(parts))
- }
-
- if err == io.EOF {
- break
- }
- }
-
- return entries, nil
-}