diff --git a/broker.go b/broker.go index f1fc0ef..0870184 100644 --- a/broker.go +++ b/broker.go @@ -198,12 +198,16 @@ func (b *broker) PostEntry(e *entry, isPage bool) error { return b.Store(newEntry, b.LocalPath(newEntry), "") } -func (b *broker) RemoveEntry(e *entry, p string) error { +func (b *broker) RemoveEntry(e *entry) error { err := b.Client.DeleteEntry(e.EditURL) if err != nil { return err } - return os.Remove(p) + p := b.LocalPath(e) + if _, err := os.Stat(p); err == nil { + return os.Remove(p) + } + return nil } func atomEndpointURLRoot(bc *blogConfig) string { diff --git a/entry.go b/entry.go index 1e65504..4163534 100644 --- a/entry.go +++ b/entry.go @@ -227,6 +227,21 @@ func entryFromReader(source io.Reader) (*entry, error) { return entry, nil } +func entryFromFile(fpath string) (*entry, error) { + f, err := os.Open(fpath) + if err != nil { + return nil, err + } + defer f.Close() + + e, err := entryFromReader(f) + if err != nil { + return nil, err + } + e.localPath = fpath + return e, nil +} + func asEntry(atomEntry *atom.Entry, err error) (*entry, error) { if err != nil { return nil, err diff --git a/main.go b/main.go index 16d58f2..43900f6 100644 --- a/main.go +++ b/main.go @@ -231,14 +231,7 @@ var commandPush = &cli.Command{ return err } } - - f, err := os.Open(path) - if err != nil { - return err - } - defer f.Close() - - entry, err := entryFromReader(f) + entry, err := entryFromFile(path) if err != nil { return err } @@ -248,7 +241,6 @@ var commandPush = &cli.Command{ ti := time.Now() entry.LastModified = &ti } - entry.localPath = path if entry.EditURL == "" { // post new entry @@ -406,13 +398,7 @@ var commandRemove = &cli.Command{ } for _, path := range c.Args().Slice() { - f, err := os.Open(path) - if err != nil { - return err - } - defer f.Close() - - entry, err := entryFromReader(f) + entry, err := entryFromFile(path) if err != nil { return err } @@ -427,7 +413,7 @@ var commandRemove = &cli.Command{ return fmt.Errorf("cannot find blog for %s", path) } - err = newBroker(bc, c.App.Writer).RemoveEntry(entry, path) + err = newBroker(bc, c.App.Writer).RemoveEntry(entry) if err != nil { return err }