diff --git a/CHANGELOG.md b/CHANGELOG.md index 27fe6d0b..b319f158 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- new command `split` to allow break a time entry into others with break points + ## [v0.51.1] - 2024-05-30 ### Fixed diff --git a/pkg/cmd/time-entry/edit/edit.go b/pkg/cmd/time-entry/edit/edit.go index cbc798ee..4436bbc2 100644 --- a/pkg/cmd/time-entry/edit/edit.go +++ b/pkg/cmd/time-entry/edit/edit.go @@ -149,11 +149,7 @@ func NewCmdEdit( return err } - if report != nil { - return report(tei, cmd.OutOrStdout(), of) - } - - return util.PrintTimeEntryImpl(tei, f, cmd.OutOrStdout(), of) + return report(tei, cmd.OutOrStdout(), of) }, } diff --git a/pkg/cmd/time-entry/in/in.go b/pkg/cmd/time-entry/in/in.go index a57c6c4b..0e5f1d40 100644 --- a/pkg/cmd/time-entry/in/in.go +++ b/pkg/cmd/time-entry/in/in.go @@ -136,13 +136,8 @@ func NewCmdIn( return err } - if report != nil { - return report( - util.TimeEntryDTOToImpl(tei), cmd.OutOrStdout(), of) - } - - return util.PrintTimeEntryImpl( - util.TimeEntryDTOToImpl(tei), f, cmd.OutOrStdout(), of) + return report( + util.TimeEntryDTOToImpl(tei), cmd.OutOrStdout(), of) }, } diff --git a/pkg/cmd/time-entry/split/split.go b/pkg/cmd/time-entry/split/split.go new file mode 100644 index 00000000..574c9980 --- /dev/null +++ b/pkg/cmd/time-entry/split/split.go @@ -0,0 +1,206 @@ +package split + +import ( + "errors" + "fmt" + "io" + "time" + + "github.com/MakeNowJust/heredoc" + "github.com/lucassabreu/clockify-cli/api" + "github.com/lucassabreu/clockify-cli/api/dto" + "github.com/lucassabreu/clockify-cli/pkg/cmd/time-entry/util" + "github.com/lucassabreu/clockify-cli/pkg/cmdcompl" + "github.com/lucassabreu/clockify-cli/pkg/cmdutil" + "github.com/lucassabreu/clockify-cli/pkg/timeentryhlp" + "github.com/lucassabreu/clockify-cli/pkg/timehlp" + "github.com/spf13/cobra" + "golang.org/x/sync/errgroup" +) + +func NewCmdSplit( + f cmdutil.Factory, + report func([]dto.TimeEntry, io.Writer, util.OutputFlags) error, +) *cobra.Command { + of := util.OutputFlags{TimeFormat: timehlp.OnlyTimeFormat} + va := cmdcompl.ValidArgsSlide{ + timeentryhlp.AliasCurrent, + timeentryhlp.AliasLast, + timeentryhlp.AliasLatest, + } + + cmd := &cobra.Command{ + Use: "split { | " + va.IntoUseOptions() + " | ^n } " + + "