Skip to content

Commit 9fdd5fe

Browse files
authored
Add CLI flag to configure checkpoint file location (#47)
1 parent 83d71bb commit 9fdd5fe

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

aw-sync-agent/checkpoint/checkpoint.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,15 @@ import (
55
"log"
66
"os"
77
"time"
8+
"aw-sync-agent/settings"
89
)
910

10-
var checkpointFile = "checkpoint.json"
11+
var checkpointFile = "checkpoint.json" // Default checkpoint file
12+
13+
// InitializeCheckpoint sets up the checkpoint file from configuration
14+
func InitializeCheckpoint(config *settings.Configuration) {
15+
checkpointFile = config.Settings.CheckpointFile
16+
}
1117

1218
// Read reads the checkpoint for the given watcher
1319
func Read(watcher string) *time.Time {

aw-sync-agent/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"aw-sync-agent/activitywatch"
5+
"aw-sync-agent/checkpoint"
56
"aw-sync-agent/cron"
67
internalErrors "aw-sync-agent/errors"
78
"aw-sync-agent/prometheus"
@@ -23,6 +24,9 @@ func main() {
2324
Configs := settings.InitConfigurations()
2425
Configs.Settings.UserID = util.GetUserID(Configs.Settings.UserID)
2526

27+
// Initialize checkpoint with the configuration
28+
checkpoint.InitializeCheckpoint(Configs)
29+
2630
// Here abstract init of the plugins. In init we will load the plugins,load their configs if exists and do the checks like below.
2731

2832
Plugins := plugins.Select(plugins.Initialize(), Configs.Settings.Plugins)

aw-sync-agent/settings/settings.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const (
2929
TestConfigs SettingsKey = "testConfig"
3030
Plugins SettingsKey = "plugins"
3131
PluginsStrictOrder SettingsKey = "pluginsStrictOrder"
32+
checkpointFile SettingsKey = "checkpoint"
3233
)
3334
const configFile = "aw-sync-settings.yaml"
3435
const configDir = "./config"
@@ -47,6 +48,7 @@ type Setts struct {
4748
AsService bool `yaml:"-"`
4849
Immediate bool `yaml:"-"`
4950
TestConfigs bool `yaml:"-"` // TestConfigs is a flag to test the configurations/filters
51+
CheckpointFile string `yaml:"checkpoint"`
5052
}
5153

5254
// Configuration struct
@@ -136,7 +138,7 @@ func loadFlags(config *Configuration) {
136138
flag.Var(&plugins, string(Plugins), "Plugins to load")
137139

138140
flag.BoolVar(&config.Settings.PluginsStrictOrder, string(PluginsStrictOrder), config.Settings.PluginsStrictOrder, "Plugins strict order")
139-
141+
flag.StringVar(&config.Settings.CheckpointFile, string(checkpointFile), config.Settings.CheckpointFile, "Checkpoint File found")
140142
flag.StringVar(&config.Settings.Cron, string(Cron), config.Settings.Cron, "Cron expression")
141143
flag.StringVar(&config.Settings.PrometheusSecretKey, string(PrometheusSecretKey), config.Settings.PrometheusSecretKey, "Prometheus Secret Key")
142144
flag.BoolVar(&config.Settings.AsService, string(AsService), config.Settings.AsService, "Run as service")
@@ -185,6 +187,7 @@ func printSettings(config *Configuration) {
185187
Plugins: strings.Join(config.Settings.Plugins, ","),
186188
PluginsStrictOrder: fmt.Sprintf("%t", config.Settings.PluginsStrictOrder),
187189
Cron: config.Settings.Cron,
190+
checkpointFile: config.Settings.CheckpointFile,
188191
}
189192

190193
// Define the order of the settings
@@ -198,6 +201,7 @@ func printSettings(config *Configuration) {
198201
Plugins,
199202
PluginsStrictOrder,
200203
Cron,
204+
checkpointFile,
201205
}
202206

203207
maxKeyLength := 0

0 commit comments

Comments
 (0)