Store filename in pointer link, display during push
This commit is contained in:
parent
e9092a89a5
commit
53aaad1344
@ -69,7 +69,7 @@ func cleanCommand(cmd *cobra.Command, args []string) {
|
||||
Debug("Writing %s", mediafile)
|
||||
}
|
||||
|
||||
err = cleaned.CreateLink()
|
||||
err = cleaned.CreateLink(filename)
|
||||
if err != nil {
|
||||
Panic(err, "Unable to write link file %s", err)
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"github.com/github/git-media/gitmedia"
|
||||
"github.com/github/git-media/gitmediaclient"
|
||||
"github.com/github/git-media/pointer"
|
||||
"github.com/spf13/cobra"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
@ -57,29 +58,33 @@ func pushCommand(cmd *cobra.Command, args []string) {
|
||||
}
|
||||
|
||||
scanner := bufio.NewScanner(bytes.NewBuffer(output))
|
||||
blobOids := make([]string, 0)
|
||||
links := make([]*pointer.Link, 0)
|
||||
|
||||
for scanner.Scan() {
|
||||
line := strings.Split(scanner.Text(), " ")
|
||||
sha1 := line[0]
|
||||
|
||||
linkPath := filepath.Join(gitmedia.LocalLinkDir, sha1[0:2], sha1[2:len(sha1)])
|
||||
if _, err := os.Stat(linkPath); err == nil {
|
||||
oid, err := ioutil.ReadFile(linkPath)
|
||||
if err != nil {
|
||||
Panic(err, "Error reading link file")
|
||||
}
|
||||
blobOids = append(blobOids, string(oid))
|
||||
}
|
||||
}
|
||||
|
||||
// TODO - filename
|
||||
for i, oid := range blobOids {
|
||||
if dryRun {
|
||||
fmt.Println("push", oid)
|
||||
linkFile, err := os.Open(linkPath)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if wErr := pushAsset(oid, "", i+1, len(blobOids)); wErr != nil {
|
||||
|
||||
link, err := pointer.DecodeLink(linkFile)
|
||||
if err != nil {
|
||||
Panic(err, "Error decoding link file") // don't panic
|
||||
}
|
||||
|
||||
links = append(links, link)
|
||||
}
|
||||
|
||||
for i, link := range links {
|
||||
if dryRun {
|
||||
fmt.Println("push", link.Oid, link.Name)
|
||||
continue
|
||||
}
|
||||
if wErr := pushAsset(link.Oid, link.Name, i+1, len(links)); wErr != nil {
|
||||
Panic(wErr.Err, wErr.Error())
|
||||
}
|
||||
fmt.Printf("\n")
|
||||
|
@ -23,8 +23,11 @@ var (
|
||||
oid sha256:%s
|
||||
size %d
|
||||
`
|
||||
matcher = []byte("git-media")
|
||||
pointerKeys = []string{"version", "oid", "size"}
|
||||
matcher = []byte("git-media")
|
||||
pointerKeys = []string{"version", "oid", "size"}
|
||||
linkTemplate = `oid %s
|
||||
name %s
|
||||
`
|
||||
)
|
||||
|
||||
type Pointer struct {
|
||||
@ -34,6 +37,11 @@ type Pointer struct {
|
||||
OidType string
|
||||
}
|
||||
|
||||
type Link struct {
|
||||
Oid string
|
||||
Name string
|
||||
}
|
||||
|
||||
func NewPointer(oid string, size int64) *Pointer {
|
||||
return &Pointer{latest, oid, size, oidType}
|
||||
}
|
||||
@ -50,7 +58,7 @@ func (p *Pointer) Encoded() string {
|
||||
return fmt.Sprintf(template, latest, p.Oid, p.Size)
|
||||
}
|
||||
|
||||
func (p *Pointer) CreateLink() error {
|
||||
func (p *Pointer) CreateLink(filename string) error {
|
||||
gitHash, err := gitmedia.NewGitHash()
|
||||
if err != nil {
|
||||
return err
|
||||
@ -65,7 +73,7 @@ func (p *Pointer) CreateLink() error {
|
||||
return err
|
||||
}
|
||||
|
||||
return ioutil.WriteFile(linkFile, []byte(p.Oid), 0644)
|
||||
return ioutil.WriteFile(linkFile, []byte(fmt.Sprintf(linkTemplate, latest, p.Oid, filename)), 0644)
|
||||
}
|
||||
|
||||
func Encode(writer io.Writer, pointer *Pointer) (int, error) {
|
||||
@ -88,6 +96,32 @@ func Decode(reader io.Reader) (*Pointer, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func DecodeLink(reader io.Reader) (*Link, error) {
|
||||
link := &Link{}
|
||||
|
||||
m := make(map[string]string)
|
||||
scanner := bufio.NewScanner(reader)
|
||||
for scanner.Scan() {
|
||||
text := scanner.Text()
|
||||
if len(text) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
parts := strings.SplitN(text, " ", 2)
|
||||
key := parts[0]
|
||||
m[key] = parts[1]
|
||||
}
|
||||
|
||||
oid, ok := m["oid"]
|
||||
if !ok {
|
||||
return nil, errors.New("No Oid in link file")
|
||||
}
|
||||
|
||||
link.Oid = oid
|
||||
link.Name = m["name"]
|
||||
return link, nil
|
||||
}
|
||||
|
||||
func decodeKV(data []byte) (*Pointer, error) {
|
||||
parsed, err := decodeKVData(data)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user