From 2f6d7e4d1cc2e8381179afa1a42f9aa855c06a81 Mon Sep 17 00:00:00 2001 From: Tom Dudley Date: Sun, 18 Nov 2018 21:24:16 +0000 Subject: [PATCH] Allow cleaning of workouts --- .../com.github.mgifos.workouts/Main.scala | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/scala/com.github.mgifos.workouts/Main.scala b/src/main/scala/com.github.mgifos.workouts/Main.scala index 030a385..1d8d31c 100644 --- a/src/main/scala/com.github.mgifos.workouts/Main.scala +++ b/src/main/scala/com.github.mgifos.workouts/Main.scala @@ -26,6 +26,7 @@ case class Config( system: MeasurementSystems.MeasurementSystem = MeasurementSystems.metric, csv: String = "", delete: Boolean = false, + `import`: Boolean = true, email: String = "", password: String = "", start: LocalDate = LocalDate.MIN, @@ -93,6 +94,14 @@ object Main extends App { failure("Either start or end date must be entered!") else success)) + note("") + + cmd("clean"). + action((_, c) => c.copy(`import` = false, delete = true)).text( + "Delete all existing workouts with same names as the ones defined in the CSV file.") + + note("") + note("EXAMPLES").text("EXAMPLES\n\nSchedules ultra 80k plan targeting 28-4-2018 for a race day (also deletes existing workouts with the same names)" + "\n\nquick-plan schedule -n 2018-04-29 -x -e your-mail-address@example.com ultra-80k-runnersworld.csv") @@ -123,7 +132,7 @@ object Main extends App { for { maybeDeleteMessage <- deleteWorkoutsTask(workouts.map(_.name)) - garminWorkouts <- garmin.createWorkouts(workouts) + garminWorkouts <- createWorkoutsTask(workouts) maybeScheduleMessage <- scheduleTask(garminWorkouts) } yield { log.info("\nStatistics:") @@ -143,6 +152,13 @@ object Main extends App { Future.successful(None) } + private def createWorkoutsTask(workouts: Seq[WorkoutDef])(implicit config: Config, garmin: GarminConnect): Future[Seq[GarminWorkout]] = { + if (config.`import`) + garmin.createWorkouts(workouts) + else + Future.successful(Seq[GarminWorkout]()) + } + private def scheduleTask(workouts: Seq[GarminWorkout])(implicit config: Config, garmin: GarminConnect, plan: WeeklyPlan): Future[Option[String]] = { if (config.mode == Modes.schedule) {