view cmd_edit.go @ 5:af840bc25791

impl edit cmd
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 04 Dec 2020 18:27:09 +0900
parents cmd_new.go@3032e9f78e4b
children 0b9932242273
line wrap: on
line source

package growsync

import (
	"context"
	"flag"
	"fmt"
	"io"
	"path/filepath"
	"time"
)

type editCmd struct{}

const layout string = "2006/01/02"

func (pc *editCmd) name() string {
	return "edit"
}

func (pc *editCmd) description() string {
	return "edit from growi web app"
}

func (pc *editCmd) run(ctx context.Context, argv []string, config *growiConfig, stdWriter io.Writer, errorWriter io.Writer) error {
	fs := flag.NewFlagSet("growsync edit", flag.ContinueOnError)
	fs.SetOutput(errorWriter)

	if err := fs.Parse(argv); err != nil {
		return nil
	}

	var growiPATH string

	if fs.NArg() < 1 {
		growiPATH = createNewDailyMarkdownPATH(config.DailyPATH)
	} else {
		growiPATH = convertGrowiSystemPath(fs.Arg(0))
	}

	localFilePATH := filepath.Join(config.LocalRoot, growiPATH+".md")

	client, err := NewGrowiClient(config.URL, config.TOKEN)
	if err != nil {
		return err
	}

	err = doEdit(localFilePATH)
	if err != nil {
		return fmt.Errorf("failed edit mardkwodn file %+v", err)
	}

	return client.UpdatePage(growiPATH, localFilePATH)
}

func createNewDailyMarkdownPATH(dailyPATH string) string {
	now := time.Now()
	return filepath.Join(dailyPATH, now.Format(layout))
}