diff --git a/cmd/fitbit-sync/cli.go b/cmd/fitbit-sync/cli.go index a387195a..dd9c78c5 100644 --- a/cmd/fitbit-sync/cli.go +++ b/cmd/fitbit-sync/cli.go @@ -13,7 +13,11 @@ import ( type WorkoutConfig struct { URL, APIKey string - persist bool + + syncWeight, syncHeight bool + syncSteps, syncActivities bool + + persist bool } func (c *WorkoutConfig) CopyFrom(o *WorkoutConfig) { diff --git a/cmd/fitbit-sync/commands.go b/cmd/fitbit-sync/commands.go index b3eb70f0..dccca790 100644 --- a/cmd/fitbit-sync/commands.go +++ b/cmd/fitbit-sync/commands.go @@ -121,6 +121,11 @@ func (fs *fitbitSync) syncCmd() *cobra.Command { cmd.Flags().IntVarP(&days, "days", "d", 7, "Number of days to show") cmd.Flags().StringVarP(&fs.WorkoutConfig.URL, "url", "u", "", "Workout Tracker root URL") cmd.Flags().StringVarP(&fs.WorkoutConfig.APIKey, "key", "k", "", "Workout Tracker API key") + cmd.Flags().BoolVar(&fs.WorkoutConfig.syncWeight, "weight", true, "Sync weight from Fitbit") + cmd.Flags().BoolVar(&fs.WorkoutConfig.syncHeight, "height", true, "Sync height from Fitbit") + cmd.Flags().BoolVar(&fs.WorkoutConfig.syncSteps, "steps", true, "Sync steps from Fitbit") + cmd.Flags().BoolVar(&fs.WorkoutConfig.syncActivities, "activities", true, "Sync activities from Fitbit") + cmd.Flags().BoolVarP(&fs.WorkoutConfig.persist, "persist", "p", false, "Persist Workout Tracker configuration") return cmd diff --git a/cmd/fitbit-sync/sync.go b/cmd/fitbit-sync/sync.go index 5f995e0c..93d96a91 100644 --- a/cmd/fitbit-sync/sync.go +++ b/cmd/fitbit-sync/sync.go @@ -43,14 +43,16 @@ func (fs *fitbitSync) syncActivities(days int) { continue } - for _, a := range act.Activities { - if !a.HasStartTime { - continue - } - - if err := fs.uploadActivity(a); err != nil { - log.Printf("could not sync activity TCX: %v", err) - continue + if fs.WorkoutConfig.syncActivities { + for _, a := range act.Activities { + if !a.HasStartTime { + continue + } + + if err := fs.uploadActivity(a); err != nil { + log.Printf("could not sync activity TCX: %v", err) + continue + } } } @@ -68,18 +70,25 @@ func (fs *fitbitSync) buildMeasurement(date string, final bool, units *fitbit.Un Date: date, } - if act.Summary != nil { - mw.Steps = float64(act.Summary.Steps) + if fs.WorkoutConfig.syncSteps { + if act.Summary != nil { + mw.Steps = float64(act.Summary.Steps) + } } if !final { return mw } - mw.Height = fs.profile.Height - mw.HeightUnit = units.Height - mw.Weight = fs.profile.Weight - mw.WeightUnit = units.Weight + if fs.WorkoutConfig.syncHeight { + mw.Height = fs.profile.Height + mw.HeightUnit = units.Height + } + + if fs.WorkoutConfig.syncWeight { + mw.Weight = fs.profile.Weight + mw.WeightUnit = units.Weight + } return mw }