MCPcopy Create free account
hub / github.com/caarlos0/tasktimer / newFromJSONCmd

Function newFromJSONCmd

internal/cmd/fromjson.go:19–62  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

17}
18
19func newFromJSONCmd() *fromJSONCmd {
20 cmd := &cobra.Command{
21 Use: "from-json",
22 Short: "Imports a JSON into a project - WARNING: it will wipe the project first, use with care!",
23 Args: cobra.ExactArgs(1),
24 RunE: func(cmd *cobra.Command, args []string) error {
25 project := cmd.Parent().Flag("project").Value.String()
26 db, f, err := setup(project)
27 if err != nil {
28 return err
29 }
30 defer db.Close()
31 defer f.Close()
32
33 input, err := os.ReadFile(args[0])
34 if err != nil {
35 return fmt.Errorf("failed to read %s: %w", args[0], err)
36 }
37
38 var tasks []model.ExportedTask
39 if err := json.Unmarshal(input, &tasks); err != nil {
40 return fmt.Errorf("input json is not in the correct format: %w", err)
41 }
42
43 tmp, err := ioutil.TempFile("", "tasktimer-"+project)
44 if err != nil {
45 return fmt.Errorf("failed to create backup file: %w", err)
46 }
47 if _, err := db.Backup(tmp, 0); err != nil {
48 return fmt.Errorf("failed to backup to %s: %w", tmp.Name(), err)
49 }
50
51 log.Printf("backup made to %s\n", tmp.Name())
52
53 if err := db.DropAll(); err != nil {
54 return fmt.Errorf("failed to clear database: %w", err)
55 }
56
57 return store.LoadTasks(db, tasks)
58 },
59 }
60
61 return &fromJSONCmd{cmd: cmd}
62}

Callers 2

newEditCmdFunction · 0.85
newRootCmdFunction · 0.85

Calls 3

LoadTasksFunction · 0.92
setupFunction · 0.85
ErrorfMethod · 0.80

Tested by

no test coverage detected