module Unison.Codebase.Editor.HandleInput.Cancel
  ( handleCancel,
  )
where

import U.Codebase.Sqlite.ProjectBranch (ProjectBranch (..))
import Unison.Cli.Monad (Cli)
import Unison.Cli.Monad qualified as Cli
import Unison.Cli.MonadUtils qualified as Cli
import Unison.Codebase.Editor.HandleInput.DeleteBranch (handleDeleteBranch2)
import Unison.Codebase.Editor.Output qualified as Output
import Unison.Codebase.ProjectPath (ProjectPathG (..))
import Unison.Prelude
import Unison.Project (ProjectAndBranch (..))

handleCancel :: Cli ()
handleCancel :: Cli ()
handleCancel = do
  current <- Cli ProjectPath
Cli.getCurrentProjectPath

  when (not (current.branch.isUpdate || current.branch.isUpgrade || current.branch.isMerge)) do
    Cli.returnEarly (Output.Literal "There's no merge, update, or upgrade in progress.")

  handleDeleteBranch2 (ProjectAndBranch current.project current.branch)