-- Copyright (C) 2003 David Roundy
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-- any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; see the file COPYING.  If not, write to
-- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- Boston, MA 02110-1301, USA.

module Darcs.UI.TheCommands ( commandControlList ) where

import Prelude ()

import Darcs.UI.Commands.Add ( add )
import Darcs.UI.Commands.Amend ( amend, amendrecord )
import Darcs.UI.Commands.Annotate ( annotate )
import Darcs.UI.Commands.Apply ( apply )
import Darcs.UI.Commands.Clone ( clone, get, put )
import Darcs.UI.Commands.Convert ( convert )
import Darcs.UI.Commands.Diff ( diffCommand )
import Darcs.UI.Commands.Dist ( dist )
import Darcs.UI.Commands.GZCRCs ( gzcrcs )
import Darcs.UI.Commands.Init ( initialize )
import Darcs.UI.Commands.Log ( log, changes )
import Darcs.UI.Commands.Show ( showCommand )
import Darcs.UI.Commands.MarkConflicts ( markconflicts )
import Darcs.UI.Commands.Move ( move, mv )
import Darcs.UI.Commands.Optimize ( optimize )
import Darcs.UI.Commands.Pull ( pull, fetch )
import Darcs.UI.Commands.Push ( push )
import Darcs.UI.Commands.Rebase ( rebase )
import Darcs.UI.Commands.Record ( record, commit )
import Darcs.UI.Commands.Remove ( remove, rm, unadd )
import Darcs.UI.Commands.Repair ( repair, check )
import Darcs.UI.Commands.Replace ( replace )
import Darcs.UI.Commands.Revert ( revert )
import Darcs.UI.Commands.Rollback ( rollback )
import Darcs.UI.Commands.Send ( send )
import Darcs.UI.Commands.SetPref ( setpref )
import Darcs.UI.Commands.Tag ( tag )
import Darcs.UI.Commands.Test ( test )
import Darcs.UI.Commands.TransferMode ( transferMode )
import Darcs.UI.Commands.Unrecord ( unrecord, unpull, obliterate )
import Darcs.UI.Commands.Unrevert ( unrevert )
import Darcs.UI.Commands.WhatsNew ( whatsnew, status )
import Darcs.UI.Commands ( CommandControl, normalCommand, hiddenCommand, commandGroup )

-- | The commands that darcs knows about (e.g. whatsnew, record),
--   organized into thematic groups.  Note that hidden commands
--   are also listed here.
commandControlList :: [CommandControl]
commandControlList :: [CommandControl]
commandControlList =
    [ String -> CommandControl
commandGroup "Most used/starting out:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
initialize
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
add
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
whatsnew, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
status
    , DarcsCommand RecordConfig -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand RecordConfig
record, DarcsCommand RecordConfig -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand RecordConfig
commit
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
clone, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
get, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
put
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
pull
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
push
    , String -> CommandControl
commandGroup "Preparing patches before recording:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
move, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
mv
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
remove, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
unadd, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
rm
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
replace
    , String -> CommandControl
commandGroup "Querying the repository:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
log, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
changes
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
annotate
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
diffCommand
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
showCommand
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
test
    , String -> CommandControl
commandGroup "Undoing and correcting:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
revert
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
unrevert
    , DarcsCommand AmendConfig -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand AmendConfig
amend, DarcsCommand AmendConfig -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand AmendConfig
amendrecord
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
rebase
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
rollback
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
unrecord
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
obliterate, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
unpull
    , String -> CommandControl
commandGroup "Direct modification of the repository:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
tag
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
setpref
    , String -> CommandControl
commandGroup "Exchanging patches by e-mail:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
send
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
apply
    , String -> CommandControl
commandGroup "Other commands:"
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
optimize
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
dist
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
markconflicts
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
repair, DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
check
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
convert
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
normalCommand DarcsCommand [DarcsFlag]
fetch
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
gzcrcs
    , DarcsCommand [DarcsFlag] -> CommandControl
forall parsedFlags. DarcsCommand parsedFlags -> CommandControl
hiddenCommand DarcsCommand [DarcsFlag]
transferMode
    ]