MCPcopy
hub / github.com/nikivdev/go / openDoc

Function openDoc

cli/flow/main.go:1602–1645  ·  view source on GitHub ↗
(ctx *snap.Context, spec docSpec)

Source from the content-addressed store, hash-verified

1600}
1601
1602func openDoc(ctx *snap.Context, spec docSpec) error {
1603 now := time.Now()
1604 if spec.fileName == nil {
1605 return reportError(ctx, fmt.Errorf("missing file name generator for doc"))
1606 }
1607 fileName := spec.fileName(now)
1608 if fileName = strings.TrimSpace(fileName); fileName == "" {
1609 return reportError(ctx, fmt.Errorf("empty file name for doc"))
1610 }
1611
1612 homeDir, err := os.UserHomeDir()
1613 if err != nil {
1614 return reportError(ctx, fmt.Errorf("determine home directory: %w", err))
1615 }
1616
1617 baseDir := filepath.Join(append([]string{homeDir}, spec.dirSegments...)...)
1618 if err := os.MkdirAll(baseDir, 0o755); err != nil {
1619 return reportError(ctx, fmt.Errorf("create directory %s: %w", baseDir, err))
1620 }
1621
1622 targetFile := filepath.Join(baseDir, fileName)
1623
1624 created := false
1625 if _, err := os.Stat(targetFile); err != nil {
1626 if errors.Is(err, os.ErrNotExist) {
1627 if err := os.WriteFile(targetFile, []byte{}, 0o644); err != nil {
1628 return reportError(ctx, fmt.Errorf("create file %s: %w", targetFile, err))
1629 }
1630 created = true
1631 } else {
1632 return reportError(ctx, fmt.Errorf("stat %s: %w", targetFile, err))
1633 }
1634 }
1635
1636 if err := openInCursor(ctx, targetFile); err != nil {
1637 return reportError(ctx, err)
1638 }
1639
1640 if created {
1641 fmt.Fprintf(ctx.Stdout(), "✔️ Created %s\n", targetFile)
1642 }
1643 fmt.Fprintf(ctx.Stdout(), "✔️ Opened %s in Cursor\n", targetFile)
1644 return nil
1645}
1646
1647func runOpenDoc(ctx *snap.Context) error {
1648 if ctx.NArgs() != 1 {

Callers 5

runOpenDocFunction · 0.85
runOpenChangesFunction · 0.85
runOpenMetricsFunction · 0.85
runOpenLogFunction · 0.85
runOpenLookingBackFunction · 0.85

Calls 2

reportErrorFunction · 0.85
openInCursorFunction · 0.85

Tested by

no test coverage detected