mark/cmd/mark/main.go
Manuel Rüger 9e4c4bde30 Add root library package with Config, Run and ProcessFile
Expose the core mark functionality as an importable Go library.
Library users can now import github.com/kovetskiy/mark and call:

  err := mark.Run(mark.Config{
      BaseURL:  "https://confluence.example.com",
      Username: "user",
      Password: "token",
      Files:    "docs/**/*.md",
      Features: []string{"mermaid", "mention"},
  })

The new package provides:
- Config struct: all options decoupled from the CLI framework
- Run(config Config) error: process all files matching Config.Files
- ProcessFile(file, api, config): process a single markdown file

Also moves the CLI entry point to cmd/mark/main.go following standard
Go convention for projects that serve as both a library and a binary.

Fixes a pre-existing nil-pointer dereference on meta.Attachments,
meta.Layout and related fields when using --target-url with a pageId
(meta was nil in that code path).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 01:05:32 +01:00

40 lines
898 B
Go

package main
import (
"context"
"fmt"
"os"
"github.com/kovetskiy/mark/util"
"github.com/reconquest/pkg/log"
"github.com/urfave/cli/v3"
)
var (
version = "dev"
commit = "none"
)
const (
usage = "A tool for updating Atlassian Confluence pages from markdown."
description = `Mark is a tool to update Atlassian Confluence pages from markdown. Documentation is available here: https://github.com/kovetskiy/mark`
)
func main() {
cmd := &cli.Command{
Name: "mark",
Usage: usage,
Description: description,
Version: fmt.Sprintf("%s@%s", version, commit),
Flags: util.Flags,
EnableShellCompletion: true,
HideHelpCommand: true,
Before: util.CheckFlags,
Action: util.RunMark,
}
if err := cmd.Run(context.TODO(), os.Args); err != nil {
log.Fatal(err)
}
}