Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ kos:
- "{{.Tag}}"
- latest
base_image: alpine:latest
user: "1001:1001"
user: "1000:1000"
bare: true
preserve_import_paths: false
platforms:
Expand Down
34 changes: 18 additions & 16 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ const (
defaultScheduleTime = "30m"
)

var logger *slog.Logger

var logLevels = map[string]slog.Level{
"debug": slog.LevelDebug,
"info": slog.LevelInfo,
Expand All @@ -39,35 +37,37 @@ func main() {
}

// Initialize logger with the determined log level
logger = slog.New(prettylog.NewHandler(&slog.HandlerOptions{Level: logLevel}))
logger := slog.New(prettylog.NewHandler(&slog.HandlerOptions{Level: logLevel}))

slog.SetDefault(logger)

// Handle signals for graceful shutdown
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() {
sig := <-sigChan
logger.Info("Received signal, shutting down", "signal", sig)
slog.Info("Received signal, shutting down", "signal", sig)
os.Exit(0)
}()

pocketConsumerKey := os.Getenv("POCKET_CONSUMER_KEY")
if pocketConsumerKey == "" {
logger.Error("POCKET_CONSUMER_KEY is not set")
slog.Error("POCKET_CONSUMER_KEY is not set")
os.Exit(1)
}
pocketAccessToken := os.Getenv("POCKET_ACCESS_TOKEN")
if pocketAccessToken == "" {
logger.Error("POCKET_ACCESS_TOKEN is not set")
slog.Error("POCKET_ACCESS_TOKEN is not set")
os.Exit(1)
}
linkdingAccessToken := os.Getenv("LINKDING_ACCESS_TOKEN")
if linkdingAccessToken == "" {
logger.Error("LINKDING_ACCESS_TOKEN is not set")
slog.Error("LINKDING_ACCESS_TOKEN is not set")
os.Exit(1)
}
linkdingURL := os.Getenv("LINKDING_URL")
if linkdingURL == "" {
logger.Error("LINKDING_URL is not set")
slog.Error("LINKDING_URL is not set")
os.Exit(1)
}

Expand All @@ -79,37 +79,39 @@ func main() {

pocketClient, err := pocket.New(pocketConsumerKey, pocketAccessToken)
if err != nil {
logger.Error("Failed to create Pocket client", "error", err)
slog.Error("Failed to create Pocket client", "error", err)
os.Exit(1)
}
linkdingClient, err := linkding.New(linkdingURL, linkdingAccessToken)
if err != nil {
logger.Error("Failed to create Linkding client", "error", err)
slog.Error("Failed to create Linkding client", "error", err)
os.Exit(1)
}

// Start
logger.Info("Starting")
slog.Info("Starting")

runProcess := func(since int64) int64 {
logger.Debug("Processing", "since", time.Unix(since, 0).Format(time.RFC3339))
slog.Debug("Processing", "since", time.Unix(since, 0).Format(time.RFC3339))
newSince := time.Now().Unix()
links, err := pocketClient.Retrive(since)
if err == pocket.ErrEmptyList {
logger.Info("No new links")
slog.Info("No new data from Pocket")
return newSince
}
if err != nil {
logger.Error("Failed to retrieve Pocket data", "error", err)
slog.Error("Failed to retrieve Pocket data", "error", err)
return since
}
for _, link := range links {
slog.Info("Processing", "resolved_url", link)
if err := linkdingClient.Add(link); err != nil {
logger.Error("Failed to save bookmark", "error", err)
slog.Error("Failed to save bookmark", "error", err, "resolved_url", link)
return since
}
slog.Info("Added", "url", link)
}
logger.Info("Processed", "count", len(links))
slog.Info("Processed", "count", len(links))
return newSince
}

Expand Down
Loading