Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > db7a4a658d190b3e658423135710c498 > files > 973

ghc-darcs-devel-2.8.3-1.fc18.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>src/Darcs/Arguments.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>--  Copyright (C) 2002-2004 David Roundy</span>
<a name="line-2"></a><span class='hs-comment'>--</span>
<a name="line-3"></a><span class='hs-comment'>--  This program is free software; you can redistribute it and/or modify</span>
<a name="line-4"></a><span class='hs-comment'>--  it under the terms of the GNU General Public License as published by</span>
<a name="line-5"></a><span class='hs-comment'>--  the Free Software Foundation; either version 2, or (at your option)</span>
<a name="line-6"></a><span class='hs-comment'>--  any later version.</span>
<a name="line-7"></a><span class='hs-comment'>--</span>
<a name="line-8"></a><span class='hs-comment'>--  This program is distributed in the hope that it will be useful,</span>
<a name="line-9"></a><span class='hs-comment'>--  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-10"></a><span class='hs-comment'>--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="line-11"></a><span class='hs-comment'>--  GNU General Public License for more details.</span>
<a name="line-12"></a><span class='hs-comment'>--</span>
<a name="line-13"></a><span class='hs-comment'>--  You should have received a copy of the GNU General Public License</span>
<a name="line-14"></a><span class='hs-comment'>--  along with this program; see the file COPYING.  If not, write to</span>
<a name="line-15"></a><span class='hs-comment'>--  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,</span>
<a name="line-16"></a><span class='hs-comment'>--  Boston, MA 02110-1301, USA.</span>
<a name="line-17"></a>
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE CPP, PatternGuards #-}</span>
<a name="line-19"></a>
<a name="line-20"></a><span class='hs-cpp'>#include "gadts.h"</span>
<a name="line-21"></a>
<a name="line-22"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Arguments</span> <span class='hs-layout'>(</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>(</span> <span class='hs-keyglyph'>..</span> <span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>flagToString</span><span class='hs-layout'>,</span> <span class='hs-varid'>applyDefaults</span><span class='hs-layout'>,</span> <span class='hs-varid'>nubOptions</span><span class='hs-layout'>,</span>
<a name="line-23"></a>                         <span class='hs-varid'>maxCount</span><span class='hs-layout'>,</span>
<a name="line-24"></a>                         <span class='hs-varid'>isin</span><span class='hs-layout'>,</span> <span class='hs-varid'>arein</span><span class='hs-layout'>,</span>
<a name="line-25"></a>                         <span class='hs-varid'>setEnvDarcsPatches</span><span class='hs-layout'>,</span> <span class='hs-varid'>setEnvDarcsFiles</span><span class='hs-layout'>,</span>
<a name="line-26"></a>                         <span class='hs-varid'>fixFilePathOrStd</span><span class='hs-layout'>,</span> <span class='hs-varid'>fixUrl</span><span class='hs-layout'>,</span> <span class='hs-varid'>fixUrlFlag</span><span class='hs-layout'>,</span>
<a name="line-27"></a>                         <span class='hs-varid'>fixSubPaths</span><span class='hs-layout'>,</span> <span class='hs-varid'>maybeFixSubPaths</span><span class='hs-layout'>,</span>
<a name="line-28"></a>                         <span class='hs-conid'>DarcsAtomicOption</span><span class='hs-layout'>(</span> <span class='hs-keyglyph'>..</span> <span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>atomicOptions</span><span class='hs-layout'>,</span>
<a name="line-29"></a>                         <span class='hs-conid'>DarcsOption</span><span class='hs-layout'>(</span> <span class='hs-keyglyph'>..</span> <span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>optionFromDarcsOption</span><span class='hs-layout'>,</span>
<a name="line-30"></a>                         <span class='hs-varid'>help</span><span class='hs-layout'>,</span> <span class='hs-varid'>listOptions</span><span class='hs-layout'>,</span> <span class='hs-varid'>listFiles</span><span class='hs-layout'>,</span>
<a name="line-31"></a>                         <span class='hs-varid'>anyVerbosity</span><span class='hs-layout'>,</span> <span class='hs-varid'>disable</span><span class='hs-layout'>,</span> <span class='hs-varid'>restrictPaths</span><span class='hs-layout'>,</span>
<a name="line-32"></a>                         <span class='hs-varid'>notest</span><span class='hs-layout'>,</span> <span class='hs-varid'>test</span><span class='hs-layout'>,</span> <span class='hs-varid'>workingRepoDir</span><span class='hs-layout'>,</span>
<a name="line-33"></a>                         <span class='hs-varid'>remoteRepo</span><span class='hs-layout'>,</span>
<a name="line-34"></a>                         <span class='hs-varid'>leaveTestDir</span><span class='hs-layout'>,</span>
<a name="line-35"></a>                         <span class='hs-varid'>possiblyRemoteRepoDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getRepourl</span><span class='hs-layout'>,</span>
<a name="line-36"></a>                         <span class='hs-varid'>listRegisteredFiles</span><span class='hs-layout'>,</span> <span class='hs-varid'>listUnregisteredFiles</span><span class='hs-layout'>,</span>
<a name="line-37"></a>                         <span class='hs-varid'>author</span><span class='hs-layout'>,</span> <span class='hs-varid'>getAuthor</span><span class='hs-layout'>,</span> <span class='hs-varid'>getEasyAuthor</span><span class='hs-layout'>,</span> <span class='hs-varid'>getSendmailCmd</span><span class='hs-layout'>,</span>
<a name="line-38"></a>                         <span class='hs-varid'>fileHelpAuthor</span><span class='hs-layout'>,</span> <span class='hs-varid'>environmentHelpEmail</span><span class='hs-layout'>,</span>
<a name="line-39"></a>                         <span class='hs-varid'>patchnameOption</span><span class='hs-layout'>,</span> <span class='hs-varid'>distnameOption</span><span class='hs-layout'>,</span>
<a name="line-40"></a>                         <span class='hs-varid'>logfile</span><span class='hs-layout'>,</span> <span class='hs-varid'>rmlogfile</span><span class='hs-layout'>,</span> <span class='hs-varid'>fromOpt</span><span class='hs-layout'>,</span> <span class='hs-varid'>subject</span><span class='hs-layout'>,</span> <span class='hs-varid'>getSubject</span><span class='hs-layout'>,</span>
<a name="line-41"></a>                         <span class='hs-varid'>charset</span><span class='hs-layout'>,</span> <span class='hs-varid'>getCharset</span><span class='hs-layout'>,</span>
<a name="line-42"></a>                         <span class='hs-varid'>inReplyTo</span><span class='hs-layout'>,</span> <span class='hs-varid'>getInReplyTo</span><span class='hs-layout'>,</span>
<a name="line-43"></a>                         <span class='hs-varid'>target</span><span class='hs-layout'>,</span> <span class='hs-varid'>ccSend</span><span class='hs-layout'>,</span> <span class='hs-varid'>ccApply</span><span class='hs-layout'>,</span> <span class='hs-varid'>getCc</span><span class='hs-layout'>,</span> <span class='hs-varid'>output</span><span class='hs-layout'>,</span> <span class='hs-varid'>outputAutoName</span><span class='hs-layout'>,</span>
<a name="line-44"></a>                         <span class='hs-varid'>recursive</span><span class='hs-layout'>,</span> <span class='hs-varid'>patchFormatChoices</span><span class='hs-layout'>,</span>
<a name="line-45"></a>                         <span class='hs-varid'>upgradeFormat</span><span class='hs-layout'>,</span> <span class='hs-varid'>useWorkingDir</span><span class='hs-layout'>,</span>
<a name="line-46"></a>                         <span class='hs-varid'>askdeps</span><span class='hs-layout'>,</span> <span class='hs-varid'>ignoretimes</span><span class='hs-layout'>,</span> <span class='hs-varid'>lookforadds</span><span class='hs-layout'>,</span>
<a name="line-47"></a>                         <span class='hs-varid'>askLongComment</span><span class='hs-layout'>,</span> <span class='hs-varid'>keepDate</span><span class='hs-layout'>,</span> <span class='hs-varid'>sendmailCmd</span><span class='hs-layout'>,</span>
<a name="line-48"></a>                         <span class='hs-varid'>environmentHelpSendmail</span><span class='hs-layout'>,</span>
<a name="line-49"></a>                         <span class='hs-varid'>sign</span><span class='hs-layout'>,</span> <span class='hs-varid'>verify</span><span class='hs-layout'>,</span> <span class='hs-varid'>editDescription</span><span class='hs-layout'>,</span>
<a name="line-50"></a>                         <span class='hs-varid'>reponame</span><span class='hs-layout'>,</span> <span class='hs-varid'>creatorhash</span><span class='hs-layout'>,</span>
<a name="line-51"></a>                         <span class='hs-varid'>applyConflictOptions</span><span class='hs-layout'>,</span> <span class='hs-varid'>reply</span><span class='hs-layout'>,</span>
<a name="line-52"></a>                         <span class='hs-varid'>pullConflictOptions</span><span class='hs-layout'>,</span> <span class='hs-varid'>useExternalMerge</span><span class='hs-layout'>,</span>
<a name="line-53"></a>                         <span class='hs-varid'>depsSel</span><span class='hs-layout'>,</span> <span class='hs-varid'>nocompress</span><span class='hs-layout'>,</span>
<a name="line-54"></a>                         <span class='hs-varid'>uncompressNocompress</span><span class='hs-layout'>,</span> <span class='hs-varid'>repoCombinator</span><span class='hs-layout'>,</span>
<a name="line-55"></a>                         <span class='hs-varid'>optionsLatex</span><span class='hs-layout'>,</span> <span class='hs-varid'>reorderPatches</span><span class='hs-layout'>,</span>
<a name="line-56"></a>                         <span class='hs-varid'>noskipBoring</span><span class='hs-layout'>,</span> <span class='hs-varid'>allowProblematicFilenames</span><span class='hs-layout'>,</span>
<a name="line-57"></a>                         <span class='hs-varid'>applyas</span><span class='hs-layout'>,</span> <span class='hs-varid'>humanReadable</span><span class='hs-layout'>,</span> <span class='hs-varid'>machineReadable</span><span class='hs-layout'>,</span>
<a name="line-58"></a>                         <span class='hs-varid'>changesReverse</span><span class='hs-layout'>,</span> <span class='hs-varid'>onlyToFiles</span><span class='hs-layout'>,</span>
<a name="line-59"></a>                         <span class='hs-varid'>changesFormat</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchOneContext</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchOneNontag</span><span class='hs-layout'>,</span>
<a name="line-60"></a>                         <span class='hs-varid'>matchMaxcount</span><span class='hs-layout'>,</span>
<a name="line-61"></a>                         <span class='hs-varid'>sendToContext</span><span class='hs-layout'>,</span>
<a name="line-62"></a>                         <span class='hs-varid'>getContext</span><span class='hs-layout'>,</span>
<a name="line-63"></a>                         <span class='hs-varid'>pipeInteractive</span><span class='hs-layout'>,</span> <span class='hs-varid'>allInteractive</span><span class='hs-layout'>,</span>
<a name="line-64"></a>                         <span class='hs-varid'>allPipeInteractive</span><span class='hs-layout'>,</span>
<a name="line-65"></a>                         <span class='hs-varid'>summary</span><span class='hs-layout'>,</span> <span class='hs-varid'>unified</span><span class='hs-layout'>,</span> <span class='hs-varid'>tokens</span><span class='hs-layout'>,</span>
<a name="line-66"></a>                         <span class='hs-varid'>partial</span><span class='hs-layout'>,</span>
<a name="line-67"></a>                         <span class='hs-varid'>diffCmdFlag</span><span class='hs-layout'>,</span> <span class='hs-varid'>diffflags</span><span class='hs-layout'>,</span> <span class='hs-varid'>unidiff</span><span class='hs-layout'>,</span> <span class='hs-varid'>xmloutput</span><span class='hs-layout'>,</span>
<a name="line-68"></a>                         <span class='hs-varid'>pauseForGui</span><span class='hs-layout'>,</span>
<a name="line-69"></a>                         <span class='hs-varid'>forceReplace</span><span class='hs-layout'>,</span> <span class='hs-varid'>dryRun</span><span class='hs-layout'>,</span> <span class='hs-varid'>dryRunNoxml</span><span class='hs-layout'>,</span>
<a name="line-70"></a>                         <span class='hs-varid'>printDryRunMessageAndExit</span><span class='hs-layout'>,</span> <span class='hs-varid'>showFriendly</span><span class='hs-layout'>,</span>
<a name="line-71"></a>                         <span class='hs-varid'>matchOne</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchSeveral</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchRange</span><span class='hs-layout'>,</span>
<a name="line-72"></a>                         <span class='hs-varid'>matchSeveralOrRange</span><span class='hs-layout'>,</span> <span class='hs-varid'>happyForwarding</span><span class='hs-layout'>,</span>
<a name="line-73"></a>                         <span class='hs-varid'>matchSeveralOrLast</span><span class='hs-layout'>,</span>
<a name="line-74"></a>                         <span class='hs-varid'>setDefault</span><span class='hs-layout'>,</span>
<a name="line-75"></a>                         <span class='hs-varid'>setScriptsExecutableOption</span><span class='hs-layout'>,</span> <span class='hs-varid'>bisect</span><span class='hs-layout'>,</span>
<a name="line-76"></a>                         <span class='hs-varid'>sibling</span><span class='hs-layout'>,</span> <span class='hs-varid'>flagsToSiblings</span><span class='hs-layout'>,</span> <span class='hs-varid'>relink</span><span class='hs-layout'>,</span>
<a name="line-77"></a>                         <span class='hs-varid'>files</span><span class='hs-layout'>,</span> <span class='hs-varid'>directories</span><span class='hs-layout'>,</span> <span class='hs-varid'>pending</span><span class='hs-layout'>,</span>
<a name="line-78"></a>                         <span class='hs-varid'>posthookCmd</span><span class='hs-layout'>,</span> <span class='hs-varid'>posthookPrompt</span><span class='hs-layout'>,</span>
<a name="line-79"></a>                         <span class='hs-varid'>getPosthookCmd</span><span class='hs-layout'>,</span>
<a name="line-80"></a>                         <span class='hs-varid'>prehookCmd</span><span class='hs-layout'>,</span> <span class='hs-varid'>prehookPrompt</span><span class='hs-layout'>,</span>
<a name="line-81"></a>                         <span class='hs-varid'>getPrehookCmd</span><span class='hs-layout'>,</span> <span class='hs-varid'>nullFlag</span><span class='hs-layout'>,</span>
<a name="line-82"></a>                         <span class='hs-varid'>umaskOption</span><span class='hs-layout'>,</span>
<a name="line-83"></a>                         <span class='hs-varid'>storeInMemory</span><span class='hs-layout'>,</span>
<a name="line-84"></a>                         <span class='hs-varid'>patchSelectFlag</span><span class='hs-layout'>,</span>
<a name="line-85"></a>                         <span class='hs-varid'>networkOptions</span><span class='hs-layout'>,</span> <span class='hs-varid'>noCache</span><span class='hs-layout'>,</span>
<a name="line-86"></a>                         <span class='hs-varid'>allowUnrelatedRepos</span><span class='hs-layout'>,</span>
<a name="line-87"></a>                         <span class='hs-varid'>checkOrRepair</span><span class='hs-layout'>,</span> <span class='hs-varid'>justThisRepo</span><span class='hs-layout'>,</span> <span class='hs-varid'>optimizePristine</span><span class='hs-layout'>,</span>
<a name="line-88"></a>                         <span class='hs-varid'>optimizeHTTP</span><span class='hs-layout'>,</span> <span class='hs-varid'>getOutput</span><span class='hs-layout'>,</span> <span class='hs-varid'>makeScriptsExecutable</span><span class='hs-layout'>,</span>
<a name="line-89"></a>                         <span class='hs-varid'>usePacks</span><span class='hs-layout'>,</span> <span class='hs-varid'>recordRollback</span><span class='hs-layout'>,</span> <span class='hs-varid'>amendUnrecord</span>
<a name="line-90"></a>                      <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-91"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Console</span><span class='hs-varop'>.</span><span class='hs-conid'>GetOpt</span>
<a name="line-92"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span> <span class='hs-layout'>(</span> <span class='hs-varid'>doesDirectoryExist</span> <span class='hs-layout'>)</span>
<a name="line-93"></a>
<a name="line-94"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Storage</span><span class='hs-varop'>.</span><span class='hs-conid'>Hashed</span><span class='hs-varop'>.</span><span class='hs-conid'>AnchoredPath</span><span class='hs-layout'>(</span> <span class='hs-varid'>anchorPath</span> <span class='hs-layout'>)</span>
<a name="line-95"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Storage</span><span class='hs-varop'>.</span><span class='hs-conid'>Hashed</span><span class='hs-varop'>.</span><span class='hs-conid'>Plain</span><span class='hs-layout'>(</span> <span class='hs-varid'>readPlainTree</span> <span class='hs-layout'>)</span>
<a name="line-96"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Storage</span><span class='hs-varop'>.</span><span class='hs-conid'>Hashed</span><span class='hs-varop'>.</span><span class='hs-conid'>Tree</span><span class='hs-layout'>(</span> <span class='hs-varid'>list</span><span class='hs-layout'>,</span> <span class='hs-varid'>expand</span><span class='hs-layout'>,</span> <span class='hs-varid'>emptyTree</span> <span class='hs-layout'>)</span>
<a name="line-97"></a>
<a name="line-98"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span> <span class='hs-layout'>(</span> <span class='hs-layout'>(</span><span class='hs-varop'>\\</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>nub</span><span class='hs-layout'>,</span> <span class='hs-varid'>intercalate</span> <span class='hs-layout'>)</span>
<a name="line-99"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span> <span class='hs-varid'>fromMaybe</span><span class='hs-layout'>,</span> <span class='hs-varid'>listToMaybe</span><span class='hs-layout'>,</span> <span class='hs-varid'>maybeToList</span><span class='hs-layout'>,</span> <span class='hs-varid'>isNothing</span><span class='hs-layout'>,</span> <span class='hs-varid'>catMaybes</span><span class='hs-layout'>,</span>
<a name="line-100"></a>                    <span class='hs-varid'>mapMaybe</span> <span class='hs-layout'>)</span>
<a name="line-101"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Exit</span> <span class='hs-layout'>(</span> <span class='hs-conid'>ExitCode</span><span class='hs-layout'>(</span><span class='hs-conid'>ExitSuccess</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>exitWith</span> <span class='hs-layout'>)</span>
<a name="line-102"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span> <span class='hs-varid'>when</span><span class='hs-layout'>,</span> <span class='hs-varid'>unless</span> <span class='hs-layout'>)</span>
<a name="line-103"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span><span class='hs-layout'>(</span> <span class='hs-layout'>(</span><span class='hs-varop'>&lt;$&gt;</span><span class='hs-layout'>)</span> <span class='hs-layout'>)</span>
<a name="line-104"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span> <span class='hs-varid'>isDigit</span> <span class='hs-layout'>)</span>
<a name="line-105"></a><span class='hs-cpp'>#ifndef WIN32</span>
<a name="line-106"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Printer</span> <span class='hs-layout'>(</span> <span class='hs-varid'>renderString</span> <span class='hs-layout'>)</span>
<a name="line-107"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Env</span> <span class='hs-layout'>(</span> <span class='hs-varid'>setEnv</span> <span class='hs-layout'>)</span>
<a name="line-108"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span> <span class='hs-layout'>(</span> <span class='hs-varid'>listTouchedFiles</span> <span class='hs-layout'>)</span>
<a name="line-109"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Progress</span> <span class='hs-layout'>(</span> <span class='hs-varid'>beginTedious</span><span class='hs-layout'>,</span> <span class='hs-varid'>endTedious</span><span class='hs-layout'>,</span> <span class='hs-varid'>tediousSize</span><span class='hs-layout'>,</span> <span class='hs-varid'>finishedOneIO</span> <span class='hs-layout'>)</span>
<a name="line-110"></a><span class='hs-cpp'>#endif</span>
<a name="line-111"></a>
<a name="line-112"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span><span class='hs-varop'>.</span><span class='hs-conid'>PatchInfoAnd</span> <span class='hs-layout'>(</span> <span class='hs-conid'>PatchInfoAnd</span><span class='hs-layout'>,</span> <span class='hs-varid'>info</span><span class='hs-layout'>,</span> <span class='hs-varid'>hopefullyM</span> <span class='hs-layout'>)</span>
<a name="line-113"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span><span class='hs-varop'>.</span><span class='hs-conid'>Apply</span><span class='hs-layout'>(</span> <span class='hs-conid'>ApplyState</span> <span class='hs-layout'>)</span>
<a name="line-114"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span> <span class='hs-layout'>(</span> <span class='hs-conid'>RepoPatch</span><span class='hs-layout'>,</span> <span class='hs-conid'>Patchy</span><span class='hs-layout'>,</span> <span class='hs-varid'>showNicely</span><span class='hs-layout'>,</span> <span class='hs-varid'>description</span><span class='hs-layout'>,</span> <span class='hs-varid'>xmlSummary</span> <span class='hs-layout'>)</span>
<a name="line-115"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span><span class='hs-varop'>.</span><span class='hs-conid'>Info</span> <span class='hs-layout'>(</span> <span class='hs-varid'>toXml</span> <span class='hs-layout'>)</span>
<a name="line-116"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Witnesses</span><span class='hs-varop'>.</span><span class='hs-conid'>Ordered</span> <span class='hs-layout'>(</span> <span class='hs-conid'>FL</span><span class='hs-layout'>,</span> <span class='hs-varid'>mapFL</span> <span class='hs-layout'>)</span>
<a name="line-117"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span> <span class='hs-layout'>(</span> <span class='hs-varid'>summary</span> <span class='hs-layout'>)</span>
<a name="line-118"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span> <span class='hs-layout'>(</span> <span class='hs-varid'>askUser</span><span class='hs-layout'>,</span> <span class='hs-varid'>askUserListItem</span><span class='hs-layout'>,</span> <span class='hs-varid'>maybeGetEnv</span><span class='hs-layout'>,</span> <span class='hs-varid'>firstJustIO</span><span class='hs-layout'>,</span>
<a name="line-119"></a>                     <span class='hs-varid'>catchall</span><span class='hs-layout'>,</span>
<a name="line-120"></a>                     <span class='hs-varid'>withCurrentDirectory</span> <span class='hs-layout'>)</span>
<a name="line-121"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Repository</span><span class='hs-varop'>.</span><span class='hs-conid'>Prefs</span> <span class='hs-layout'>(</span> <span class='hs-varid'>getPreflist</span><span class='hs-layout'>,</span> <span class='hs-varid'>getGlobal</span><span class='hs-layout'>,</span> <span class='hs-varid'>globalPrefsDirDoc</span> <span class='hs-layout'>)</span>
<a name="line-122"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Repository</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span> <span class='hs-layout'>(</span> <span class='hs-varid'>restrictBoring</span><span class='hs-layout'>,</span> <span class='hs-varid'>applyTreeFilter</span><span class='hs-layout'>,</span> <span class='hs-varid'>readRecordedAndPending</span> <span class='hs-layout'>)</span>
<a name="line-123"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Repository</span><span class='hs-layout'>(</span> <span class='hs-varid'>setScriptsExecutablePatches</span> <span class='hs-layout'>)</span>
<a name="line-124"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>URL</span> <span class='hs-layout'>(</span> <span class='hs-varid'>isFile</span> <span class='hs-layout'>)</span>
<a name="line-125"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>RepoPath</span> <span class='hs-layout'>(</span> <span class='hs-conid'>AbsolutePath</span><span class='hs-layout'>,</span> <span class='hs-conid'>AbsolutePathOrStd</span><span class='hs-layout'>,</span> <span class='hs-conid'>SubPath</span><span class='hs-layout'>,</span> <span class='hs-varid'>toFilePath</span><span class='hs-layout'>,</span>
<a name="line-126"></a>                        <span class='hs-varid'>makeSubPathOf</span><span class='hs-layout'>,</span> <span class='hs-varid'>ioAbsolute</span><span class='hs-layout'>,</span> <span class='hs-varid'>ioAbsoluteOrStd</span><span class='hs-layout'>,</span>
<a name="line-127"></a>                        <span class='hs-varid'>makeAbsolute</span><span class='hs-layout'>,</span> <span class='hs-varid'>makeAbsoluteOrStd</span> <span class='hs-layout'>)</span>
<a name="line-128"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span><span class='hs-varop'>.</span><span class='hs-conid'>MatchData</span> <span class='hs-layout'>(</span> <span class='hs-varid'>patchMatch</span> <span class='hs-layout'>)</span>
<a name="line-129"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Flags</span> <span class='hs-layout'>(</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>maxCount</span><span class='hs-layout'>,</span> <span class='hs-varid'>defaultFlag</span> <span class='hs-layout'>)</span>
<a name="line-130"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Repository</span> <span class='hs-layout'>(</span> <span class='hs-varid'>withRepository</span><span class='hs-layout'>,</span> <span class='hs-conid'>RepoJob</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span> <span class='hs-layout'>)</span>
<a name="line-131"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Global</span> <span class='hs-layout'>(</span> <span class='hs-varid'>darcsdir</span> <span class='hs-layout'>)</span>
<a name="line-132"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Lock</span> <span class='hs-layout'>(</span> <span class='hs-varid'>writeLocaleFile</span> <span class='hs-layout'>)</span>
<a name="line-133"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Printer</span> <span class='hs-layout'>(</span> <span class='hs-conid'>Doc</span><span class='hs-layout'>,</span> <span class='hs-varid'>putDocLn</span><span class='hs-layout'>,</span> <span class='hs-varid'>text</span><span class='hs-layout'>,</span> <span class='hs-varid'>vsep</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>$$</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>vcat</span><span class='hs-layout'>,</span> <span class='hs-varid'>insertBeforeLastline</span><span class='hs-layout'>,</span>
<a name="line-134"></a>                 <span class='hs-varid'>prefix</span> <span class='hs-layout'>)</span>
<a name="line-135"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>ByteStringUtils</span> <span class='hs-layout'>(</span> <span class='hs-varid'>decodeString</span> <span class='hs-layout'>)</span>
<a name="line-136"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Storage</span><span class='hs-varop'>.</span><span class='hs-conid'>Hashed</span><span class='hs-varop'>.</span><span class='hs-conid'>Tree</span><span class='hs-layout'>(</span> <span class='hs-conid'>Tree</span> <span class='hs-layout'>)</span>
<a name="line-137"></a><span class='hs-cpp'>#include "impossible.h"</span>
<a name="line-138"></a>
<a name="line-139"></a><a name="FlagContent"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>FlagContent</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-conid'>AbsolutePath</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AbsoluteOrStdContent</span> <span class='hs-conid'>AbsolutePathOrStd</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>StringContent</span> <span class='hs-conid'>String</span>
<a name="line-140"></a>                   <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>)</span>
<a name="line-141"></a>
<a name="line-142"></a><span class='hs-comment'>-- getContent is very tedious to write, but this is the only way (that</span>
<a name="line-143"></a><span class='hs-comment'>-- I know of) to guarantee that it works for all flags (which then</span>
<a name="line-144"></a><span class='hs-comment'>-- guarantees that isAnAbsolute, isa, flagToString, etc also work</span>
<a name="line-145"></a><span class='hs-comment'>-- properly)</span>
<a name="line-146"></a>
<a name="line-147"></a><a name="getContent"></a><span class='hs-comment'>-- | 'getContentString' returns the content of a flag, if any.</span>
<a name="line-148"></a><span class='hs-comment'>-- For instance, the content of @Author \"Louis Aragon\"@ is @StringContent</span>
<a name="line-149"></a><span class='hs-comment'>-- \"Louis Aragon\"@, while the content of @Pipe@ is @NoContent@</span>
<a name="line-150"></a><span class='hs-definition'>getContent</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>FlagContent</span>
<a name="line-151"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>PatchName</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-152"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteOrStdContent</span> <span class='hs-varid'>s</span>
<a name="line-153"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Verbose</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-154"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Help</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-155"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>ListOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-156"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Test</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-157"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoTest</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-158"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>OnlyChangesToFiles</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-159"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>ChangesToAllFiles</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-160"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>LeaveTestDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-161"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoLeaveTestDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-162"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Timings</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-163"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Debug</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-164"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DebugVerbose</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-165"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DebugHTTP</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-166"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NormalVerbosity</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-167"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Quiet</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-168"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Target</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-169"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Cc</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-170"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Subject</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-171"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Charset</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-172"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>InReplyTo</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-173"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>SendmailCmd</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-174"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Author</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-175"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>OnePatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-176"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>SeveralPatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-177"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>AfterPatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-178"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>UpToPatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-179"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>TagName</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-180"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>LastN</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-181"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>MaxCount</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-182"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>OneTag</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-183"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>AfterTag</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-184"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>UpToTag</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-185"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Context</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span>
<a name="line-186"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>GenContext</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-187"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>LogFile</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span>
<a name="line-188"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>OutputAutoName</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span>
<a name="line-189"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NumberPatches</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-190"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>PatchIndexRange</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-comment'>-- FIXME this doesn't fit into a neat category</span>
<a name="line-191"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Count</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-192"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>All</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-193"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Recursive</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-194"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoRecursive</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-195"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Reorder</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-196"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>RestrictPaths</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-197"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontRestrictPaths</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-198"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AskDeps</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-199"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoAskDeps</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-200"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>RmLogFile</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-201"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontRmLogFile</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-202"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>DistName</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-203"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>CreatorHash</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-204"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>SignAs</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-205"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>SignSSL</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-206"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Verify</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span>
<a name="line-207"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>VerifySSL</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span>
<a name="line-208"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>IgnoreTimes</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-209"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontIgnoreTimes</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-210"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>LookForAdds</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-211"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoLookForAdds</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-212"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AnyOrder</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-213"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Intersection</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-214"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Unified</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-215"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NonUnified</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-216"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Union</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-217"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Complement</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-218"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Sign</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-219"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoSign</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-220"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>HappyForwarding</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-221"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoHappyForwarding</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-222"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>RemoteDarcsOpt</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-223"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Toks</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-224"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>WorkRepoDir</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-225"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>WorkRepoUrl</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-226"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>RemoteRepo</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-227"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>NewRepo</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-228"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Reply</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-229"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>EditDescription</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-230"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoEditDescription</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-231"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>EditLongComment</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-232"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoEditLongComment</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-233"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>PromptLongComment</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-234"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>KeepDate</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-235"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoKeepDate</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-236"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AllowConflicts</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-237"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>MarkConflicts</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-238"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoAllowConflicts</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-239"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>SkipConflicts</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-240"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Boring</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-241"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>SkipBoring</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-242"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AllowCaseOnly</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-243"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontAllowCaseOnly</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-244"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AllowWindowsReserved</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-245"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontAllowWindowsReserved</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-246"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontGrabDeps</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-247"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontPromptForDependencies</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-248"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>PromptForDependencies</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-249"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Compress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-250"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoCompress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-251"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>UnCompress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-252"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>MachineReadable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-253"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>HumanReadable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-254"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Pipe</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-255"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Interactive</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-256"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Summary</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-257"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoSummary</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-258"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>ApplyAs</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-259"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>DiffCmd</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-260"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>ExternalMerge</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-261"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>PauseForGui</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-262"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoPauseForGui</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-263"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>DiffFlags</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-264"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>OnePattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-comment'>-- FIXME!!!</span>
<a name="line-265"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>SeveralPattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-comment'>-- FIXME!!!</span>
<a name="line-266"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>UpToPattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-comment'>-- FIXME!!!</span>
<a name="line-267"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>AfterPattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-comment'>-- FIXME!!!</span>
<a name="line-268"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Reverse</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-269"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Forward</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-270"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Complete</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-271"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Lazy</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-272"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>FixFilePath</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span> <span class='hs-comment'>-- FIXME!!!</span>
<a name="line-273"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>XMLOutput</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-274"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>ForceReplace</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-275"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NonApply</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-276"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NonVerify</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-277"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NonForce</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-278"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DryRun</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-279"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>SetDefault</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-280"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>NoSetDefault</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-281"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Disable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-282"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>SetScriptsExecutable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-283"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>DontSetScriptsExecutable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-284"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Bisect</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-285"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>UseHashedInventory</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-286"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>UseFormat2</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-287"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoUpdateWorking</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-288"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>UpgradeFormat</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-289"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Relink</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-290"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Files</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-291"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoFiles</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-292"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Directories</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-293"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoDirectories</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-294"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Pending</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-295"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoPending</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-296"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoPosthook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-297"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AskPosthook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-298"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>Sibling</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span>
<a name="line-299"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>PosthookCmd</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-300"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>RunPosthook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-301"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoPrehook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-302"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>RunPrehook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-303"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AskPrehook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-304"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>StoreInMemory</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-305"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>ApplyOnDisk</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-306"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoHTTPPipelining</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-307"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Packs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-308"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoPacks</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-309"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoCache</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-310"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NullFlag</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-311"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>PrehookCmd</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-312"></a><span class='hs-definition'>getContent</span> <span class='hs-layout'>(</span><span class='hs-conid'>UMask</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span>
<a name="line-313"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AllowUnrelatedRepos</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-314"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Check</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-315"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>Repair</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-316"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>JustThisRepo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-317"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>OptimizePristine</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-318"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>OptimizeHTTP</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-319"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>RecordRollback</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-320"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoRecordRollback</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-321"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>AmendUnrecord</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-322"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>NoAmendUnrecord</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-323"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>UseWorkingDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-324"></a><span class='hs-definition'>getContent</span> <span class='hs-conid'>UseNoWorkingDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NoContent</span>
<a name="line-325"></a>
<a name="line-326"></a><a name="getContentString"></a><span class='hs-definition'>getContentString</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-327"></a><span class='hs-definition'>getContentString</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span>
<a name="line-328"></a>   <span class='hs-keyword'>do</span> <span class='hs-conid'>StringContent</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getContent</span> <span class='hs-varid'>f</span>
<a name="line-329"></a>      <span class='hs-varid'>return</span> <span class='hs-varid'>s</span>
<a name="line-330"></a>
<a name="line-331"></a><a name="isa"></a><span class='hs-comment'>-- | @a `'isa'` b@ tests whether @a@ is flag @b@ with a string argument.</span>
<a name="line-332"></a><span class='hs-comment'>-- @b@ typically is a Flag constructor expecting a string</span>
<a name="line-333"></a><span class='hs-comment'>-- For example, @(Author \"Ted Hughes\") `isa` Author@ returns true.</span>
<a name="line-334"></a><span class='hs-definition'>isa</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-335"></a><a name="isa"></a><span class='hs-definition'>a</span> <span class='hs-varop'>`isa`</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>getContentString</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>of</span>
<a name="line-336"></a>            <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>False</span>
<a name="line-337"></a>            <span class='hs-conid'>Just</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-varop'>==</span> <span class='hs-varid'>b</span> <span class='hs-varid'>s</span>
<a name="line-338"></a>
<a name="line-339"></a><a name="isAnAbsolute"></a><span class='hs-comment'>-- | @a `'isAnAbsolute'` b@ tests whether @a@ is flag @b@ with an absolute path argument.</span>
<a name="line-340"></a><span class='hs-comment'>-- @b@ typically is a Flag constructor expecting an absolute path argument</span>
<a name="line-341"></a><span class='hs-comment'>-- For example, @(Context contextfile) `isAnAbsolute` Context@ returns true.</span>
<a name="line-342"></a><span class='hs-definition'>isAnAbsolute</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>AbsolutePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-343"></a><span class='hs-definition'>isAnAbsolute</span> <span class='hs-varid'>f</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>getContent</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>of</span>
<a name="line-344"></a>                  <span class='hs-conid'>AbsoluteContent</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>f</span> <span class='hs-varop'>==</span> <span class='hs-varid'>x</span> <span class='hs-varid'>s</span>
<a name="line-345"></a>                  <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>False</span>
<a name="line-346"></a>
<a name="line-347"></a><a name="isAnAbsoluteOrStd"></a><span class='hs-comment'>-- | @a `'isAnAbsoluteOrStd'` b@ tests whether @a@ is flag @b@ with a path argument.</span>
<a name="line-348"></a><span class='hs-comment'>-- @b@ typically is a Flag constructor expecting a path argument</span>
<a name="line-349"></a><span class='hs-comment'>-- For example, @(Output o) `isAnAbsoluteOrStd` @ returns true.</span>
<a name="line-350"></a><span class='hs-definition'>isAnAbsoluteOrStd</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>AbsolutePathOrStd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-351"></a><span class='hs-definition'>isAnAbsoluteOrStd</span> <span class='hs-varid'>f</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>getContent</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>of</span>
<a name="line-352"></a>                          <span class='hs-conid'>AbsoluteOrStdContent</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>f</span> <span class='hs-varop'>==</span> <span class='hs-varid'>x</span> <span class='hs-varid'>s</span>
<a name="line-353"></a>                          <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>False</span>
<a name="line-354"></a>
<a name="line-355"></a><a name="isin"></a><span class='hs-definition'>isin</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-356"></a><a name="isin"></a><span class='hs-layout'>(</span><span class='hs-conid'>DarcsInternalOption</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>             <span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>fs</span>
<a name="line-357"></a><a name="isin"></a><span class='hs-layout'>(</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span>          <span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>fs</span>
<a name="line-358"></a><a name="isin"></a><span class='hs-layout'>(</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span>          <span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>any</span> <span class='hs-layout'>(</span><span class='hs-varop'>`isa`</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>fs</span>
<a name="line-359"></a><a name="isin"></a><span class='hs-layout'>(</span><span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span>      <span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>any</span> <span class='hs-layout'>(</span><span class='hs-varop'>`isAnAbsolute`</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>fs</span>
<a name="line-360"></a><a name="isin"></a><span class='hs-layout'>(</span><span class='hs-conid'>DarcsAbsPathOrStdOption</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>any</span> <span class='hs-layout'>(</span><span class='hs-varop'>`isAnAbsoluteOrStd`</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>fs</span>
<a name="line-361"></a><a name="isin"></a><span class='hs-layout'>(</span><span class='hs-conid'>DarcsOptAbsPathOption</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>any</span> <span class='hs-layout'>(</span><span class='hs-varop'>`isAnAbsolute`</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>fs</span>
<a name="line-362"></a>
<a name="line-363"></a><a name="arein"></a><span class='hs-definition'>arein</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-364"></a><a name="arein"></a><span class='hs-definition'>o</span> <span class='hs-varop'>`arein`</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>any</span> <span class='hs-layout'>(</span><span class='hs-varop'>`isin`</span> <span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>atomicOptions</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span>
<a name="line-365"></a>
<a name="line-366"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- | A type for darcs' options. The value contains the command line</span>
<a name="line-367"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- switch(es) for the option, a help string, and a function to build a</span>
<a name="line-368"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- @DarcsFlag@ from the command line arguments.  for each constructor,</span>
<a name="line-369"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- 'shortSwitches' represents the list of short command line switches</span>
<a name="line-370"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- which invoke the option, longSwitches the list of long command line</span>
<a name="line-371"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- switches, optDescr the description of the option, and argDescr the description</span>
<a name="line-372"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- of its argument, if any. mkFlag is a function which makes a @DarcsFlag@ from</span>
<a name="line-373"></a><a name="DarcsAtomicOption"></a><span class='hs-comment'>-- the arguments of the option.</span>
<a name="line-374"></a><a name="DarcsAtomicOption"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-375"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Char</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span> <span class='hs-layout'>(</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>-&gt;</span><span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-conid'>String</span> <span class='hs-conid'>String</span>
<a name="line-376"></a>    <span class='hs-comment'>-- ^ @DarcsArgOption shortSwitches longSwitches mkFlag ArgDescr OptDescr@</span>
<a name="line-377"></a>    <span class='hs-comment'>-- The constructor for options with a string argument, such as</span>
<a name="line-378"></a>    <span class='hs-comment'>-- @--tag@</span>
<a name="line-379"></a>
<a name="line-380"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Char</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span> <span class='hs-layout'>(</span><span class='hs-conid'>AbsolutePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-conid'>String</span> <span class='hs-conid'>String</span>
<a name="line-381"></a>    <span class='hs-comment'>-- ^ @DarcsAbsPathOption shortSwitches longSwitches mkFlag ArgDescr OptDescr@</span>
<a name="line-382"></a>    <span class='hs-comment'>-- The constructor for options with an absolute path argument, such as</span>
<a name="line-383"></a>    <span class='hs-comment'>-- @--sibling@</span>
<a name="line-384"></a>
<a name="line-385"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsAbsPathOrStdOption</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Char</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span> <span class='hs-layout'>(</span><span class='hs-conid'>AbsolutePathOrStd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-conid'>String</span> <span class='hs-conid'>String</span>
<a name="line-386"></a>    <span class='hs-comment'>-- ^ @DarcsAbsPathOrStdOption shortSwitches longSwitches mkFlag ArgDescr OptDescr@</span>
<a name="line-387"></a>    <span class='hs-comment'>-- The constructor for options with a path argument, such as @-o@</span>
<a name="line-388"></a>
<a name="line-389"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsOptAbsPathOption</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Char</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>AbsolutePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span> <span class='hs-conid'>String</span> <span class='hs-conid'>String</span>
<a name="line-390"></a>    <span class='hs-comment'>-- ^ @DarcsOptAbsPathOrStdOption shortSwitches longSwitches defaultPath</span>
<a name="line-391"></a>    <span class='hs-comment'>-- mkFlag ArgDescr OptDescr@ where defaultPath is a default value</span>
<a name="line-392"></a>    <span class='hs-comment'>-- for the Path, as a string to be parsed as if it had been given</span>
<a name="line-393"></a>    <span class='hs-comment'>-- on the command line.</span>
<a name="line-394"></a>    <span class='hs-comment'>-- The constructor for options with an optional path argument, such as @-O@</span>
<a name="line-395"></a>
<a name="line-396"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Char</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-conid'>String</span>
<a name="line-397"></a>    <span class='hs-comment'>-- ^ @DarcsNoArgOption shortSwitches longSwitches mkFlag optDescr@</span>
<a name="line-398"></a>    <span class='hs-comment'>-- The constructon fon options with no arguments.</span>
<a name="line-399"></a>
<a name="line-400"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsInternalOption</span> <span class='hs-conid'>DarcsFlag</span>
<a name="line-401"></a>    <span class='hs-comment'>-- ^ @DarcsInternalOption@</span>
<a name="line-402"></a>    <span class='hs-comment'>-- An option just for internal use (e.g. defaulting), not directly available to the user.</span>
<a name="line-403"></a>
<a name="line-404"></a>
<a name="line-405"></a><a name="DarcsOption"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-406"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-407"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsAtomicOption</span><span class='hs-keyglyph'>]</span>
<a name="line-408"></a>    <span class='hs-comment'>-- ^ A constructor for grouping related options together, such as</span>
<a name="line-409"></a>    <span class='hs-comment'>-- @--hashed@ and @--darcs-2@.</span>
<a name="line-410"></a>
<a name="line-411"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DarcsMutuallyExclusive</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsAtomicOption</span><span class='hs-keyglyph'>]</span>          <span class='hs-comment'>-- choices</span>
<a name="line-412"></a>                             <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- setter</span>
<a name="line-413"></a>
<a name="line-414"></a><a name="NoArgPieces"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>NoArgPieces</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsAtomicOption</span><span class='hs-layout'>,</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-layout'>,</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-415"></a>
<a name="line-416"></a><a name="mkMutuallyExclusive"></a><span class='hs-definition'>mkMutuallyExclusive</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NoArgPieces</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ before</span>
<a name="line-417"></a>                    <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>NoArgPieces</span>   <span class='hs-comment'>-- ^ default</span>
<a name="line-418"></a>                    <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NoArgPieces</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ after</span>
<a name="line-419"></a>                    <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-420"></a><span class='hs-definition'>mkMutuallyExclusive</span> <span class='hs-varid'>os1</span> <span class='hs-varid'>od_</span> <span class='hs-varid'>os2</span> <span class='hs-keyglyph'>=</span>
<a name="line-421"></a>  <span class='hs-conid'>DarcsMutuallyExclusive</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>option</span> <span class='hs-layout'>(</span><span class='hs-varid'>os1</span> <span class='hs-varop'>++</span> <span class='hs-layout'>(</span><span class='hs-varid'>od</span> <span class='hs-conop'>:</span> <span class='hs-varid'>os2</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-422"></a>                         <span class='hs-layout'>(</span><span class='hs-varid'>defaultFlag</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>flag</span> <span class='hs-layout'>(</span><span class='hs-varid'>os1</span> <span class='hs-varop'>++</span> <span class='hs-varid'>os2</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>flag</span> <span class='hs-varid'>od</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-423"></a> <span class='hs-keyword'>where</span>
<a name="line-424"></a>  <span class='hs-varid'>od</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>third</span> <span class='hs-layout'>(</span><span class='hs-varop'>++</span> <span class='hs-str'>" [DEFAULT]"</span><span class='hs-layout'>)</span> <span class='hs-varid'>od_</span>
<a name="line-425"></a>  <span class='hs-varid'>flag</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span><span class='hs-varid'>f</span><span class='hs-layout'>,</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span>
<a name="line-426"></a>  <span class='hs-varid'>option</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span><span class='hs-varid'>y</span><span class='hs-layout'>,</span><span class='hs-varid'>z</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-varid'>y</span> <span class='hs-varid'>z</span>
<a name="line-427"></a>  <span class='hs-varid'>third</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span><span class='hs-varid'>y</span><span class='hs-layout'>,</span><span class='hs-varid'>z</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span><span class='hs-varid'>y</span><span class='hs-layout'>,</span><span class='hs-varid'>f</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span>
<a name="line-428"></a>
<a name="line-429"></a><a name="nubOptions"></a><span class='hs-definition'>nubOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span>
<a name="line-430"></a><span class='hs-definition'>nubOptions</span> <span class='hs-conid'>[]</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>opts</span>
<a name="line-431"></a><span class='hs-definition'>nubOptions</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsMutuallyExclusive</span> <span class='hs-varid'>ch</span> <span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>options</span><span class='hs-layout'>)</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nubOptions</span> <span class='hs-varid'>options</span> <span class='hs-varop'>$</span> <span class='hs-varid'>collapse</span> <span class='hs-varid'>opts</span>
<a name="line-432"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>collapse</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>x</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>ch</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-conop'>:</span> <span class='hs-varid'>clear</span> <span class='hs-varid'>xs</span>
<a name="line-433"></a>                        <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-conop'>:</span> <span class='hs-varid'>collapse</span> <span class='hs-varid'>xs</span>
<a name="line-434"></a>        <span class='hs-varid'>collapse</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-435"></a>        <span class='hs-varid'>clear</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>x</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>ch</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>clear</span> <span class='hs-varid'>xs</span>
<a name="line-436"></a>                     <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-conop'>:</span> <span class='hs-varid'>clear</span> <span class='hs-varid'>xs</span>
<a name="line-437"></a>        <span class='hs-varid'>clear</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-438"></a>        <span class='hs-varid'>flags</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>fl</span> <span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fl</span> <span class='hs-conop'>:</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>xs</span>
<a name="line-439"></a>        <span class='hs-varid'>flags</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsInternalOption</span> <span class='hs-varid'>fl</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fl</span> <span class='hs-conop'>:</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>xs</span>
<a name="line-440"></a>        <span class='hs-varid'>flags</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>xs</span>
<a name="line-441"></a>        <span class='hs-varid'>flags</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-442"></a><span class='hs-definition'>nubOptions</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>options</span><span class='hs-layout'>)</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nubOptions</span> <span class='hs-varid'>options</span> <span class='hs-varid'>opts</span>
<a name="line-443"></a>
<a name="line-444"></a><a name="applyDefaults"></a><span class='hs-definition'>applyDefaults</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span>
<a name="line-445"></a><span class='hs-definition'>applyDefaults</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldr</span> <span class='hs-layout'>(</span><span class='hs-varop'>.</span><span class='hs-layout'>)</span> <span class='hs-varid'>id</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapMaybe</span> <span class='hs-varid'>getSetter</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span>
<a name="line-446"></a> <span class='hs-keyword'>where</span>
<a name="line-447"></a>  <span class='hs-varid'>getSetter</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsMutuallyExclusive</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>f</span>
<a name="line-448"></a>  <span class='hs-varid'>getSetter</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-449"></a>
<a name="line-450"></a><a name="optionFromDarcsAtomicOption"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>AbsolutePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsAtomicOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>OptDescr</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-layout'>)</span>
<a name="line-451"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsInternalOption</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-452"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-varid'>c</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Option</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-layout'>(</span><span class='hs-conid'>NoArg</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span>
<a name="line-453"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-varid'>c</span> <span class='hs-varid'>n</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Option</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReqArg</span> <span class='hs-varid'>c</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span>
<a name="line-454"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-varid'>wd</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsAbsPathOrStdOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-varid'>c</span> <span class='hs-varid'>n</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-455"></a>  <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Option</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReqArg</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varop'>.</span> <span class='hs-varid'>makeAbsoluteOrStd</span> <span class='hs-varid'>wd</span><span class='hs-layout'>)</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span>
<a name="line-456"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-varid'>wd</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-varid'>c</span> <span class='hs-varid'>n</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-457"></a>  <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Option</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReqArg</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varop'>.</span> <span class='hs-varid'>makeAbsolute</span> <span class='hs-varid'>wd</span><span class='hs-layout'>)</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span>
<a name="line-458"></a><span class='hs-definition'>optionFromDarcsAtomicOption</span> <span class='hs-varid'>wd</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsOptAbsPathOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-varid'>d</span> <span class='hs-varid'>c</span> <span class='hs-varid'>n</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-459"></a>  <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Option</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-layout'>(</span><span class='hs-conid'>OptArg</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varop'>.</span> <span class='hs-varid'>makeAbsolute</span> <span class='hs-varid'>wd</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromMaybe</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span>
<a name="line-460"></a>
<a name="line-461"></a><a name="atomicOptions"></a><span class='hs-definition'>atomicOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsAtomicOption</span><span class='hs-keyglyph'>]</span>
<a name="line-462"></a><span class='hs-definition'>atomicOptions</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>x</span><span class='hs-keyglyph'>]</span>
<a name="line-463"></a><span class='hs-definition'>atomicOptions</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xs</span>
<a name="line-464"></a><span class='hs-definition'>atomicOptions</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsMutuallyExclusive</span> <span class='hs-varid'>xs</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xs</span>
<a name="line-465"></a>
<a name="line-466"></a><a name="optionFromDarcsOption"></a><span class='hs-definition'>optionFromDarcsOption</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>AbsolutePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>OptDescr</span> <span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span>
<a name="line-467"></a><span class='hs-definition'>optionFromDarcsOption</span> <span class='hs-varid'>wd</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapMaybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>optionFromDarcsAtomicOption</span> <span class='hs-varid'>wd</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>atomicOptions</span>
<a name="line-468"></a>
<a name="line-469"></a><a name="concatOptions"></a><span class='hs-comment'>-- | 'concat_option' creates a DarcsMultipleChoiceOption from a list of</span>
<a name="line-470"></a><span class='hs-comment'>-- option, flattening any DarcsMultipleChoiceOption in the list.</span>
<a name="line-471"></a><span class='hs-definition'>concatOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-472"></a><span class='hs-definition'>concatOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-varop'>.</span> <span class='hs-varid'>concatMap</span> <span class='hs-varid'>atomicOptions</span>
<a name="line-473"></a>
<a name="line-474"></a><a name="extractFixPath"></a><span class='hs-definition'>extractFixPath</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>AbsolutePath</span><span class='hs-layout'>,</span> <span class='hs-conid'>AbsolutePath</span><span class='hs-layout'>)</span>
<a name="line-475"></a><span class='hs-definition'>extractFixPath</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-476"></a><span class='hs-definition'>extractFixPath</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>FixFilePath</span> <span class='hs-varid'>repo</span> <span class='hs-varid'>orig</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span>  <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-varid'>repo</span><span class='hs-layout'>,</span> <span class='hs-varid'>orig</span><span class='hs-layout'>)</span>
<a name="line-477"></a><span class='hs-definition'>extractFixPath</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>extractFixPath</span> <span class='hs-varid'>fs</span>
<a name="line-478"></a>
<a name="line-479"></a><a name="fixFilePath"></a><span class='hs-definition'>fixFilePath</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>AbsolutePath</span>
<a name="line-480"></a><span class='hs-definition'>fixFilePath</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>extractFixPath</span> <span class='hs-varid'>opts</span> <span class='hs-keyword'>of</span>
<a name="line-481"></a>                       <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>bug</span> <span class='hs-str'>"Can't fix path in fixFilePath"</span>
<a name="line-482"></a>                       <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span><span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withCurrentDirectory</span> <span class='hs-varid'>o</span> <span class='hs-varop'>$</span> <span class='hs-varid'>ioAbsolute</span> <span class='hs-varid'>f</span>
<a name="line-483"></a>
<a name="line-484"></a><a name="fixFilePathOrStd"></a><span class='hs-definition'>fixFilePathOrStd</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>AbsolutePathOrStd</span>
<a name="line-485"></a><span class='hs-definition'>fixFilePathOrStd</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span>
<a name="line-486"></a>    <span class='hs-keyword'>case</span> <span class='hs-varid'>extractFixPath</span> <span class='hs-varid'>opts</span> <span class='hs-keyword'>of</span>
<a name="line-487"></a>      <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>bug</span> <span class='hs-str'>"Can't fix path in fixFilePathOrStd"</span>
<a name="line-488"></a>      <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span><span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withCurrentDirectory</span> <span class='hs-varid'>o</span> <span class='hs-varop'>$</span> <span class='hs-varid'>ioAbsoluteOrStd</span> <span class='hs-varid'>f</span>
<a name="line-489"></a>
<a name="line-490"></a><a name="fixUrlFlag"></a><span class='hs-definition'>fixUrlFlag</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>DarcsFlag</span>
<a name="line-491"></a><span class='hs-definition'>fixUrlFlag</span> <span class='hs-varid'>opts</span> <span class='hs-layout'>(</span><span class='hs-conid'>RemoteRepo</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>RemoteRepo</span> <span class='hs-varop'>`fmap`</span> <span class='hs-varid'>fixUrl</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>f</span>
<a name="line-492"></a><span class='hs-definition'>fixUrlFlag</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varid'>f</span>
<a name="line-493"></a>
<a name="line-494"></a><a name="fixUrl"></a><span class='hs-definition'>fixUrl</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>String</span>
<a name="line-495"></a><span class='hs-definition'>fixUrl</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>isFile</span> <span class='hs-varid'>f</span>
<a name="line-496"></a>                <span class='hs-keyword'>then</span> <span class='hs-varid'>toFilePath</span> <span class='hs-varop'>`fmap`</span> <span class='hs-varid'>fixFilePath</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>f</span>
<a name="line-497"></a>                <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-varid'>f</span>
<a name="line-498"></a>
<a name="line-499"></a><a name="maybeFixSubPaths"></a><span class='hs-comment'>-- | @maybeFixSubPaths files@ tries to turn the file paths in its argument into</span>
<a name="line-500"></a><span class='hs-comment'>-- @SubPath@s.</span>
<a name="line-501"></a><span class='hs-comment'>--</span>
<a name="line-502"></a><span class='hs-comment'>-- When converting a relative path to an absolute one, this function first tries</span>
<a name="line-503"></a><span class='hs-comment'>-- to interpret the relative path with respect to the current working directory.</span>
<a name="line-504"></a><span class='hs-comment'>-- If that fails, it tries to interpret it with respect to the repository</span>
<a name="line-505"></a><span class='hs-comment'>-- directory. Only when that fails does it put a @Nothing@ in the result at the</span>
<a name="line-506"></a><span class='hs-comment'>-- position of the path that cannot be converted.</span>
<a name="line-507"></a><span class='hs-comment'>--</span>
<a name="line-508"></a><span class='hs-comment'>-- It is intended for validating file arguments to darcs commands.</span>
<a name="line-509"></a><span class='hs-definition'>maybeFixSubPaths</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>FilePath</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>SubPath</span><span class='hs-keyglyph'>]</span>
<a name="line-510"></a><span class='hs-definition'>maybeFixSubPaths</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withCurrentDirectory</span> <span class='hs-varid'>o</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-511"></a>  <span class='hs-varid'>fixedFs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>fixit</span> <span class='hs-varid'>fs</span>
<a name="line-512"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>bads</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>snd</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unzip</span> <span class='hs-varop'>.</span> <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-varid'>isNothing</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fst</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>zip</span> <span class='hs-varid'>fixedFs</span> <span class='hs-varid'>fs</span>
<a name="line-513"></a>  <span class='hs-varid'>unless</span> <span class='hs-layout'>(</span><span class='hs-varid'>null</span> <span class='hs-varid'>bads</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>putStrLn</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Ignoring non-repository paths: "</span> <span class='hs-varop'>++</span>
<a name="line-514"></a>    <span class='hs-varid'>intercalate</span> <span class='hs-str'>", "</span> <span class='hs-varid'>bads</span>
<a name="line-515"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>fixedFs</span>
<a name="line-516"></a> <span class='hs-keyword'>where</span>
<a name="line-517"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span><span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>extractFixPath</span> <span class='hs-varid'>flags</span> <span class='hs-keyword'>of</span>
<a name="line-518"></a>            <span class='hs-conid'>Just</span> <span class='hs-varid'>xxx</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>xxx</span>
<a name="line-519"></a>            <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>bug</span> <span class='hs-str'>"Can't fix path in fixSubPaths"</span>
<a name="line-520"></a>    <span class='hs-varid'>fixit</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span> <span class='hs-varid'>ap</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>ioAbsolute</span> <span class='hs-varid'>p</span>
<a name="line-521"></a>                 <span class='hs-keyword'>case</span> <span class='hs-varid'>makeSubPathOf</span> <span class='hs-varid'>r</span> <span class='hs-varid'>ap</span> <span class='hs-keyword'>of</span>
<a name="line-522"></a>                   <span class='hs-conid'>Just</span> <span class='hs-varid'>sp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>sp</span>
<a name="line-523"></a>                   <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withCurrentDirectory</span> <span class='hs-varid'>r</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-524"></a>                     <span class='hs-varid'>absolutePathByRepodir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>ioAbsolute</span> <span class='hs-varid'>p</span>
<a name="line-525"></a>                     <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>makeSubPathOf</span> <span class='hs-varid'>r</span> <span class='hs-varid'>absolutePathByRepodir</span>
<a name="line-526"></a>
<a name="line-527"></a><a name="fixSubPaths"></a><span class='hs-comment'>-- | @fixSubPaths files@ returns the @SubPath@s for the paths in @files@ that</span>
<a name="line-528"></a><span class='hs-comment'>-- are inside the repository, preserving their order. Paths in @files@ that are</span>
<a name="line-529"></a><span class='hs-comment'>-- outside the repository directory are not in the result.</span>
<a name="line-530"></a><span class='hs-comment'>--</span>
<a name="line-531"></a><span class='hs-comment'>-- When converting a relative path to an absolute one, this function first tries</span>
<a name="line-532"></a><span class='hs-comment'>-- to interpret the relative path with respect to the current working directory.</span>
<a name="line-533"></a><span class='hs-comment'>-- If that fails, it tries to interpret it with respect to the repository</span>
<a name="line-534"></a><span class='hs-comment'>-- directory. Only when that fails does it omit the path from the result.</span>
<a name="line-535"></a><span class='hs-comment'>--</span>
<a name="line-536"></a><span class='hs-comment'>-- It is intended for validating file arguments to darcs commands.</span>
<a name="line-537"></a><span class='hs-definition'>fixSubPaths</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>FilePath</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SubPath</span><span class='hs-keyglyph'>]</span>
<a name="line-538"></a><span class='hs-definition'>fixSubPaths</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nub</span> <span class='hs-varop'>.</span> <span class='hs-varid'>catMaybes</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>maybeFixSubPaths</span> <span class='hs-varid'>flags</span> <span class='hs-varop'>$</span>
<a name="line-539"></a>  <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-varid'>null</span><span class='hs-layout'>)</span> <span class='hs-varid'>fs</span><span class='hs-layout'>)</span>
<a name="line-540"></a>
<a name="line-541"></a><a name="listOptions"></a><span class='hs-comment'>-- | 'list_option' is an option which lists the command's arguments</span>
<a name="line-542"></a><span class='hs-definition'>listOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-543"></a><span class='hs-definition'>listOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"list-options"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>ListOptions</span>
<a name="line-544"></a>               <span class='hs-str'>"simply list the command's arguments"</span>
<a name="line-545"></a>
<a name="line-546"></a><a name="flagToString"></a><span class='hs-definition'>flagToString</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-547"></a><span class='hs-definition'>flagToString</span> <span class='hs-varid'>x</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>listToMaybe</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mapMaybe</span> <span class='hs-varid'>f2o</span> <span class='hs-varop'>$</span> <span class='hs-varid'>concatMap</span> <span class='hs-varid'>atomicOptions</span> <span class='hs-varid'>x</span>
<a name="line-548"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>f2o</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-549"></a>            <span class='hs-keyword'>do</span> <span class='hs-varid'>arg</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getContentString</span> <span class='hs-varid'>f</span>
<a name="line-550"></a>               <span class='hs-keyword'>if</span> <span class='hs-varid'>c</span> <span class='hs-varid'>arg</span> <span class='hs-varop'>==</span> <span class='hs-varid'>f</span>
<a name="line-551"></a>                  <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>unwords</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-chr'>'-'</span><span class='hs-conop'>:</span><span class='hs-chr'>'-'</span><span class='hs-conop'>:</span><span class='hs-varid'>s</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>arg</span><span class='hs-keyglyph'>]</span>
<a name="line-552"></a>                  <span class='hs-keyword'>else</span> <span class='hs-conid'>Nothing</span>
<a name="line-553"></a>          <span class='hs-varid'>f2o</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>f'</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>f</span> <span class='hs-varop'>==</span> <span class='hs-varid'>f'</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-chr'>'-'</span><span class='hs-conop'>:</span><span class='hs-chr'>'-'</span><span class='hs-conop'>:</span><span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-554"></a>          <span class='hs-varid'>f2o</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-555"></a>
<a name="line-556"></a><a name="pipeInteractive"></a><span class='hs-definition'>pipeInteractive</span><span class='hs-layout'>,</span> <span class='hs-varid'>allPipeInteractive</span><span class='hs-layout'>,</span> <span class='hs-varid'>allInteractive</span><span class='hs-layout'>,</span>
<a name="line-557"></a>  <span class='hs-varid'>humanReadable</span><span class='hs-layout'>,</span> <span class='hs-varid'>machineReadable</span><span class='hs-layout'>,</span>
<a name="line-558"></a>  <span class='hs-varid'>diffflags</span><span class='hs-layout'>,</span> <span class='hs-varid'>allowProblematicFilenames</span><span class='hs-layout'>,</span> <span class='hs-varid'>noskipBoring</span><span class='hs-layout'>,</span>
<a name="line-559"></a>  <span class='hs-varid'>askLongComment</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchOneNontag</span><span class='hs-layout'>,</span> <span class='hs-varid'>changesReverse</span><span class='hs-layout'>,</span> <span class='hs-varid'>creatorhash</span><span class='hs-layout'>,</span>
<a name="line-560"></a>  <span class='hs-varid'>changesFormat</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchOneContext</span><span class='hs-layout'>,</span> <span class='hs-varid'>happyForwarding</span><span class='hs-layout'>,</span> <span class='hs-varid'>sendToContext</span><span class='hs-layout'>,</span>
<a name="line-561"></a>  <span class='hs-varid'>diffCmdFlag</span><span class='hs-layout'>,</span> <span class='hs-varid'>storeInMemory</span><span class='hs-layout'>,</span> <span class='hs-varid'>useExternalMerge</span><span class='hs-layout'>,</span>
<a name="line-562"></a>  <span class='hs-varid'>pauseForGui</span><span class='hs-layout'>,</span>
<a name="line-563"></a>  <span class='hs-varid'>pullConflictOptions</span><span class='hs-layout'>,</span> <span class='hs-varid'>target</span><span class='hs-layout'>,</span> <span class='hs-varid'>ccSend</span><span class='hs-layout'>,</span> <span class='hs-varid'>ccApply</span><span class='hs-layout'>,</span> <span class='hs-varid'>applyConflictOptions</span><span class='hs-layout'>,</span> <span class='hs-varid'>reply</span><span class='hs-layout'>,</span> <span class='hs-varid'>xmloutput</span><span class='hs-layout'>,</span>
<a name="line-564"></a>  <span class='hs-varid'>distnameOption</span><span class='hs-layout'>,</span> <span class='hs-varid'>patchnameOption</span><span class='hs-layout'>,</span> <span class='hs-varid'>editDescription</span><span class='hs-layout'>,</span>
<a name="line-565"></a>  <span class='hs-varid'>output</span><span class='hs-layout'>,</span> <span class='hs-varid'>outputAutoName</span><span class='hs-layout'>,</span> <span class='hs-varid'>unidiff</span><span class='hs-layout'>,</span> <span class='hs-varid'>repoCombinator</span><span class='hs-layout'>,</span>
<a name="line-566"></a>  <span class='hs-varid'>unified</span><span class='hs-layout'>,</span> <span class='hs-varid'>summary</span><span class='hs-layout'>,</span> <span class='hs-varid'>uncompressNocompress</span><span class='hs-layout'>,</span> <span class='hs-varid'>subject</span><span class='hs-layout'>,</span> <span class='hs-varid'>charset</span><span class='hs-layout'>,</span> <span class='hs-varid'>inReplyTo</span><span class='hs-layout'>,</span>
<a name="line-567"></a>  <span class='hs-varid'>nocompress</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchSeveralOrRange</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchSeveralOrLast</span><span class='hs-layout'>,</span>
<a name="line-568"></a>  <span class='hs-varid'>author</span><span class='hs-layout'>,</span> <span class='hs-varid'>askdeps</span><span class='hs-layout'>,</span> <span class='hs-varid'>lookforadds</span><span class='hs-layout'>,</span> <span class='hs-varid'>ignoretimes</span><span class='hs-layout'>,</span> <span class='hs-varid'>test</span><span class='hs-layout'>,</span> <span class='hs-varid'>notest</span><span class='hs-layout'>,</span> <span class='hs-varid'>help</span><span class='hs-layout'>,</span> <span class='hs-varid'>forceReplace</span><span class='hs-layout'>,</span>
<a name="line-569"></a>  <span class='hs-varid'>allowUnrelatedRepos</span><span class='hs-layout'>,</span>
<a name="line-570"></a>  <span class='hs-varid'>matchOne</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchRange</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchSeveral</span><span class='hs-layout'>,</span> <span class='hs-varid'>sendmailCmd</span><span class='hs-layout'>,</span>
<a name="line-571"></a>  <span class='hs-varid'>logfile</span><span class='hs-layout'>,</span> <span class='hs-varid'>rmlogfile</span><span class='hs-layout'>,</span> <span class='hs-varid'>leaveTestDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>fromOpt</span><span class='hs-layout'>,</span>  <span class='hs-varid'>recordRollback</span><span class='hs-layout'>,</span> <span class='hs-varid'>amendUnrecord</span>
<a name="line-572"></a>      <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-573"></a>
<a name="line-574"></a><a name="sign"></a><span class='hs-definition'>sign</span><span class='hs-layout'>,</span> <span class='hs-varid'>applyas</span><span class='hs-layout'>,</span> <span class='hs-varid'>verify</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-575"></a>
<a name="line-576"></a><a name="help"></a><span class='hs-definition'>help</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'h'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"help"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Help</span>
<a name="line-577"></a>       <span class='hs-str'>"shows brief description of command and its arguments"</span>
<a name="line-578"></a>
<a name="line-579"></a><a name="disable"></a><span class='hs-definition'>disable</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-580"></a><span class='hs-definition'>disable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"disable"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Disable</span>
<a name="line-581"></a>        <span class='hs-str'>"disable this command"</span>
<a name="line-582"></a>
<a name="line-583"></a><a name="anyVerbosity"></a><span class='hs-definition'>anyVerbosity</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span>
<a name="line-584"></a><span class='hs-definition'>anyVerbosity</span> <span class='hs-keyglyph'>=</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-585"></a>                <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"debug"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Debug</span>
<a name="line-586"></a>                 <span class='hs-str'>"give only debug output"</span><span class='hs-layout'>,</span>
<a name="line-587"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"debug-verbose"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DebugVerbose</span>
<a name="line-588"></a>                 <span class='hs-str'>"give debug and verbose output"</span><span class='hs-layout'>,</span>
<a name="line-589"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"debug-http"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DebugHTTP</span>
<a name="line-590"></a>                 <span class='hs-str'>"give debug output for libcurl"</span><span class='hs-layout'>,</span>
<a name="line-591"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'v'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"verbose"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Verbose</span>
<a name="line-592"></a>                 <span class='hs-str'>"give verbose output"</span><span class='hs-layout'>,</span>
<a name="line-593"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'q'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"quiet"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Quiet</span>
<a name="line-594"></a>                 <span class='hs-str'>"suppress informational output"</span><span class='hs-layout'>,</span>
<a name="line-595"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"standard-verbosity"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NormalVerbosity</span>
<a name="line-596"></a>                 <span class='hs-str'>"neither verbose nor quiet output"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span>
<a name="line-597"></a>               <span class='hs-conid'>DarcsSingleOption</span>
<a name="line-598"></a>                <span class='hs-layout'>(</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"timings"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Timings</span> <span class='hs-str'>"provide debugging timings information"</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-599"></a>
<a name="line-600"></a><a name="workingRepoDir"></a><span class='hs-definition'>workingRepoDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-601"></a><span class='hs-definition'>workingRepoDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"repodir"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>WorkRepoDir</span> <span class='hs-str'>"DIRECTORY"</span>
<a name="line-602"></a>             <span class='hs-str'>"specify the repository directory in which to run"</span>
<a name="line-603"></a>
<a name="line-604"></a><a name="possiblyRemoteRepoDir"></a><span class='hs-definition'>possiblyRemoteRepoDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-605"></a><span class='hs-definition'>possiblyRemoteRepoDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"repo"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>WorkRepoUrl</span> <span class='hs-str'>"URL"</span>
<a name="line-606"></a>             <span class='hs-str'>"specify the repository URL"</span>
<a name="line-607"></a>
<a name="line-608"></a><a name="getRepourl"></a><span class='hs-comment'>-- | 'getRepourl' takes a list of flags and returns the url of the</span>
<a name="line-609"></a><span class='hs-comment'>-- repository specified by @Repodir \"directory\"@ in that list of flags, if any.</span>
<a name="line-610"></a><span class='hs-comment'>-- This flag is present if darcs was invoked with @--repodir=DIRECTORY@</span>
<a name="line-611"></a><span class='hs-definition'>getRepourl</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-612"></a><span class='hs-definition'>getRepourl</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-613"></a><span class='hs-definition'>getRepourl</span> <span class='hs-layout'>(</span><span class='hs-conid'>WorkRepoUrl</span> <span class='hs-varid'>d</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>not</span> <span class='hs-layout'>(</span><span class='hs-varid'>isFile</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>d</span>
<a name="line-614"></a><span class='hs-definition'>getRepourl</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getRepourl</span> <span class='hs-varid'>fs</span>
<a name="line-615"></a>
<a name="line-616"></a><a name="remoteRepo"></a><span class='hs-comment'>-- | 'remoteRepo' is the option used to specify the URL of the remote</span>
<a name="line-617"></a><span class='hs-comment'>-- repository to work with</span>
<a name="line-618"></a><span class='hs-definition'>remoteRepo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-619"></a><span class='hs-definition'>remoteRepo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"remote-repo"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>RemoteRepo</span> <span class='hs-str'>"URL"</span>
<a name="line-620"></a>             <span class='hs-str'>"specify the remote repository URL to work with"</span>
<a name="line-621"></a>
<a name="line-622"></a><a name="patchnameOption"></a><span class='hs-definition'>patchnameOption</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'m'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"name"</span><span class='hs-keyglyph'>]</span>
<a name="line-623"></a>                   <span class='hs-layout'>(</span><span class='hs-conid'>PatchName</span> <span class='hs-varop'>.</span> <span class='hs-varid'>decodeString</span><span class='hs-layout'>)</span> <span class='hs-str'>"PATCHNAME"</span> <span class='hs-str'>"name of patch"</span>
<a name="line-624"></a>
<a name="line-625"></a><a name="sendToContext"></a><span class='hs-definition'>sendToContext</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"context"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Context</span> <span class='hs-str'>"FILENAME"</span>
<a name="line-626"></a>                  <span class='hs-str'>"send to context stored in FILENAME"</span>
<a name="line-627"></a>
<a name="line-628"></a><a name="matchOneContext"></a><span class='hs-definition'>matchOneContext</span> <span class='hs-keyglyph'>=</span>
<a name="line-629"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-630"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"to-match"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>mp</span> <span class='hs-str'>"PATTERN"</span>
<a name="line-631"></a>     <span class='hs-str'>"select changes up to a patch matching PATTERN"</span><span class='hs-layout'>,</span>
<a name="line-632"></a>     <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"to-patch"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OnePatch</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-633"></a>     <span class='hs-str'>"select changes up to a patch matching REGEXP"</span><span class='hs-layout'>,</span>
<a name="line-634"></a>     <span class='hs-sel'>__tag</span><span class='hs-layout'>,</span>
<a name="line-635"></a>     <span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"context"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Context</span> <span class='hs-str'>"FILENAME"</span>
<a name="line-636"></a>     <span class='hs-str'>"version specified by the context in FILENAME"</span>
<a name="line-637"></a>    <span class='hs-keyglyph'>]</span>
<a name="line-638"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>mp</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OnePattern</span> <span class='hs-layout'>(</span><span class='hs-varid'>patchMatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-639"></a>
<a name="line-640"></a><a name="matchOne"></a><span class='hs-definition'>matchOne</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__match</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patch</span><span class='hs-layout'>,</span> <span class='hs-sel'>__tag</span><span class='hs-layout'>,</span> <span class='hs-sel'>__index</span><span class='hs-keyglyph'>]</span>
<a name="line-641"></a>                                            <span class='hs-comment'>-- [NOTE --index removed from matchOneNontag because issue1926]</span>
<a name="line-642"></a>                                            <span class='hs-comment'>-- The --index option was removed for 2.5 release because it isn't handled</span>
<a name="line-643"></a>                                            <span class='hs-comment'>-- by amend-record (see issue1926).</span>
<a name="line-644"></a>                                            <span class='hs-comment'>--</span>
<a name="line-645"></a>                                            <span class='hs-comment'>-- At this moment, amend-record is the only command that uses 'matchOneNontag',</span>
<a name="line-646"></a>                                            <span class='hs-comment'>-- so there is no other command affected.</span>
<a name="line-647"></a><a name="matchOneNontag"></a><span class='hs-definition'>matchOneNontag</span>  <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__match</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patch</span> <span class='hs-comment'>{- , __index -}</span> <span class='hs-keyglyph'>]</span>
<a name="line-648"></a><a name="matchSeveral"></a><span class='hs-definition'>matchSeveral</span>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__matches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__tags</span><span class='hs-keyglyph'>]</span>
<a name="line-649"></a><a name="matchRange"></a><span class='hs-definition'>matchRange</span>      <span class='hs-keyglyph'>=</span> <span class='hs-varid'>concatOptions</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>matchTo</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchFrom</span>
<a name="line-650"></a>                                  <span class='hs-layout'>,</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__match</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patch</span><span class='hs-layout'>,</span> <span class='hs-sel'>__last</span><span class='hs-layout'>,</span> <span class='hs-sel'>__indexes</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>]</span>
<a name="line-651"></a><a name="matchSeveralOrRange"></a><span class='hs-definition'>matchSeveralOrRange</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>concatOptions</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>matchTo</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchFrom</span>
<a name="line-652"></a>                                    <span class='hs-layout'>,</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span> <span class='hs-sel'>__last</span><span class='hs-layout'>,</span> <span class='hs-sel'>__indexes</span><span class='hs-layout'>,</span> <span class='hs-sel'>__matches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__tags</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>]</span>
<a name="line-653"></a><a name="matchSeveralOrLast"></a><span class='hs-definition'>matchSeveralOrLast</span>  <span class='hs-keyglyph'>=</span> <span class='hs-varid'>concatOptions</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>matchFrom</span>
<a name="line-654"></a>                                    <span class='hs-layout'>,</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span> <span class='hs-sel'>__last</span><span class='hs-layout'>,</span> <span class='hs-sel'>__matches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__tags</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>]</span>
<a name="line-655"></a>
<a name="line-656"></a><a name="matchTo"></a><span class='hs-definition'>matchTo</span><span class='hs-layout'>,</span> <span class='hs-varid'>matchFrom</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-657"></a><span class='hs-definition'>matchTo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-658"></a>            <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"to-match"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>uptop</span> <span class='hs-str'>"PATTERN"</span>
<a name="line-659"></a>             <span class='hs-str'>"select changes up to a patch matching PATTERN"</span><span class='hs-layout'>,</span>
<a name="line-660"></a>             <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"to-patch"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UpToPatch</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-661"></a>             <span class='hs-str'>"select changes up to a patch matching REGEXP"</span><span class='hs-layout'>,</span>
<a name="line-662"></a>             <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"to-tag"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UpToTag</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-663"></a>             <span class='hs-str'>"select changes up to a tag matching REGEXP"</span><span class='hs-keyglyph'>]</span>
<a name="line-664"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>uptop</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>UpToPattern</span> <span class='hs-layout'>(</span><span class='hs-varid'>patchMatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-665"></a><a name="matchFrom"></a><span class='hs-definition'>matchFrom</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-666"></a>              <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"from-match"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>fromp</span> <span class='hs-str'>"PATTERN"</span>
<a name="line-667"></a>               <span class='hs-str'>"select changes starting with a patch matching PATTERN"</span><span class='hs-layout'>,</span>
<a name="line-668"></a>               <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"from-patch"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AfterPatch</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-669"></a>               <span class='hs-str'>"select changes starting with a patch matching REGEXP"</span><span class='hs-layout'>,</span>
<a name="line-670"></a>               <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"from-tag"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AfterTag</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-671"></a>               <span class='hs-str'>"select changes starting with a tag matching REGEXP"</span><span class='hs-keyglyph'>]</span>
<a name="line-672"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>fromp</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AfterPattern</span> <span class='hs-layout'>(</span><span class='hs-varid'>patchMatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-673"></a>
<a name="line-674"></a><span class='hs-sel'>__tag</span><span class='hs-layout'>,</span> <span class='hs-sel'>__tags</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patch</span><span class='hs-layout'>,</span> <span class='hs-sel'>__patches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__match</span><span class='hs-layout'>,</span> <span class='hs-sel'>__matches</span><span class='hs-layout'>,</span> <span class='hs-sel'>__last</span><span class='hs-layout'>,</span> <span class='hs-sel'>__index</span><span class='hs-layout'>,</span> <span class='hs-sel'>__indexes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-675"></a>
<a name="line-676"></a><span class='hs-sel'>__tag</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'t'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"tag"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OneTag</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-677"></a>       <span class='hs-str'>"select tag matching REGEXP"</span>
<a name="line-678"></a><span class='hs-sel'>__tags</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'t'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"tags"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OneTag</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-679"></a>        <span class='hs-str'>"select tags matching REGEXP"</span>
<a name="line-680"></a>
<a name="line-681"></a><span class='hs-sel'>__patch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'p'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"patch"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OnePatch</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-682"></a>         <span class='hs-str'>"select a single patch matching REGEXP"</span>
<a name="line-683"></a><span class='hs-sel'>__patches</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'p'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"patches"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>SeveralPatch</span> <span class='hs-str'>"REGEXP"</span>
<a name="line-684"></a>           <span class='hs-str'>"select patches matching REGEXP"</span>
<a name="line-685"></a>
<a name="line-686"></a><span class='hs-sel'>__match</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"match"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>mp</span> <span class='hs-str'>"PATTERN"</span>
<a name="line-687"></a>         <span class='hs-str'>"select a single patch matching PATTERN"</span>
<a name="line-688"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>mp</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OnePattern</span> <span class='hs-layout'>(</span><span class='hs-varid'>patchMatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-689"></a><span class='hs-sel'>__matches</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"matches"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>mp</span> <span class='hs-str'>"PATTERN"</span>
<a name="line-690"></a>           <span class='hs-str'>"select patches matching PATTERN"</span>
<a name="line-691"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>mp</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SeveralPattern</span> <span class='hs-layout'>(</span><span class='hs-varid'>patchMatch</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-692"></a>
<a name="line-693"></a><span class='hs-sel'>__last</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"last"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>lastn</span> <span class='hs-str'>"NUMBER"</span>
<a name="line-694"></a>         <span class='hs-str'>"select the last NUMBER patches"</span>
<a name="line-695"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>lastn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LastN</span> <span class='hs-varop'>.</span> <span class='hs-varid'>numberString</span>
<a name="line-696"></a>
<a name="line-697"></a><span class='hs-sel'>__index</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'n'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"index"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>indexrange</span> <span class='hs-str'>"N"</span> <span class='hs-str'>"select one patch"</span>
<a name="line-698"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>indexrange</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>all</span> <span class='hs-varid'>isDigit</span> <span class='hs-varid'>s</span>
<a name="line-699"></a>                         <span class='hs-keyword'>then</span> <span class='hs-conid'>PatchIndexRange</span> <span class='hs-layout'>(</span><span class='hs-varid'>read</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>read</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-700"></a>                         <span class='hs-keyword'>else</span> <span class='hs-conid'>PatchIndexRange</span> <span class='hs-num'>0</span> <span class='hs-num'>0</span>
<a name="line-701"></a>
<a name="line-702"></a><span class='hs-sel'>__indexes</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'n'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"index"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>indexrange</span> <span class='hs-str'>"N-M"</span> <span class='hs-str'>"select a range of patches"</span>
<a name="line-703"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>indexrange</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>all</span> <span class='hs-varid'>isokay</span> <span class='hs-varid'>s</span>
<a name="line-704"></a>                         <span class='hs-keyword'>then</span> <span class='hs-keyword'>if</span> <span class='hs-chr'>'-'</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>s</span>
<a name="line-705"></a>                              <span class='hs-keyword'>then</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x1</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>takeWhile</span> <span class='hs-layout'>(</span><span class='hs-varop'>/=</span> <span class='hs-chr'>'-'</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
<a name="line-706"></a>                                       <span class='hs-varid'>x2</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>reverse</span> <span class='hs-varop'>$</span> <span class='hs-varid'>takeWhile</span> <span class='hs-layout'>(</span><span class='hs-varop'>/=</span> <span class='hs-chr'>'-'</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>reverse</span> <span class='hs-varid'>s</span>
<a name="line-707"></a>                                   <span class='hs-keyword'>in</span> <span class='hs-conid'>PatchIndexRange</span> <span class='hs-layout'>(</span><span class='hs-varid'>read</span> <span class='hs-varid'>x1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>read</span> <span class='hs-varid'>x2</span><span class='hs-layout'>)</span>
<a name="line-708"></a>                              <span class='hs-keyword'>else</span> <span class='hs-conid'>PatchIndexRange</span> <span class='hs-layout'>(</span><span class='hs-varid'>read</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>read</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
<a name="line-709"></a>                         <span class='hs-keyword'>else</span> <span class='hs-conid'>PatchIndexRange</span> <span class='hs-num'>0</span> <span class='hs-num'>0</span>
<a name="line-710"></a>          <span class='hs-varid'>isokay</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>isDigit</span> <span class='hs-varid'>c</span> <span class='hs-varop'>||</span> <span class='hs-varid'>c</span> <span class='hs-varop'>==</span> <span class='hs-chr'>'-'</span>
<a name="line-711"></a>
<a name="line-712"></a><a name="matchMaxcount"></a><span class='hs-definition'>matchMaxcount</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-713"></a><span class='hs-definition'>matchMaxcount</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"max-count"</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>mc</span> <span class='hs-str'>"NUMBER"</span>
<a name="line-714"></a>         <span class='hs-str'>"return only NUMBER results"</span>
<a name="line-715"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>mc</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>MaxCount</span> <span class='hs-varop'>.</span> <span class='hs-varid'>numberString</span>
<a name="line-716"></a>
<a name="line-717"></a>
<a name="line-718"></a><a name="getContext"></a><span class='hs-comment'>-- | 'getContext' takes a list of flags and returns the context</span>
<a name="line-719"></a><span class='hs-comment'>-- specified by @Context c@ in that list of flags, if any.</span>
<a name="line-720"></a><span class='hs-comment'>-- This flag is present if darcs was invoked with @--context=FILE@</span>
<a name="line-721"></a><span class='hs-definition'>getContext</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>AbsolutePath</span>
<a name="line-722"></a><span class='hs-definition'>getContext</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>listToMaybe</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Context</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>]</span>
<a name="line-723"></a>
<a name="line-724"></a><a name="notest"></a><span class='hs-definition'>notest</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-725"></a>         <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-test"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoTest</span> <span class='hs-str'>"don't run the test script"</span><span class='hs-layout'>,</span>
<a name="line-726"></a>          <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"test"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Test</span> <span class='hs-str'>"run the test script"</span><span class='hs-keyglyph'>]</span>
<a name="line-727"></a><a name="test"></a><span class='hs-definition'>test</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-728"></a>          <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"test"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Test</span> <span class='hs-str'>"run the test script"</span><span class='hs-layout'>,</span>
<a name="line-729"></a>           <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-test"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoTest</span> <span class='hs-str'>"don't run the test script"</span><span class='hs-keyglyph'>]</span>
<a name="line-730"></a><a name="leaveTestDir"></a><span class='hs-definition'>leaveTestDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-731"></a>                 <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"leave-test-directory"</span><span class='hs-keyglyph'>]</span>
<a name="line-732"></a>                  <span class='hs-conid'>LeaveTestDir</span> <span class='hs-str'>"don't remove the test directory"</span><span class='hs-layout'>,</span>
<a name="line-733"></a>                  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"remove-test-directory"</span><span class='hs-keyglyph'>]</span>
<a name="line-734"></a>                  <span class='hs-conid'>NoLeaveTestDir</span> <span class='hs-str'>"remove the test directory"</span><span class='hs-keyglyph'>]</span>
<a name="line-735"></a>
<a name="line-736"></a><a name="recordRollback"></a><span class='hs-definition'>recordRollback</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-737"></a>                 <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"record"</span><span class='hs-keyglyph'>]</span>
<a name="line-738"></a>                  <span class='hs-conid'>RecordRollback</span> <span class='hs-str'>"record the rollback patch (default)"</span><span class='hs-layout'>,</span>
<a name="line-739"></a>                  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-record"</span><span class='hs-keyglyph'>]</span>
<a name="line-740"></a>                  <span class='hs-conid'>NoRecordRollback</span> <span class='hs-str'>"don't record the rollback patch (only roll back in working dir)"</span><span class='hs-keyglyph'>]</span>
<a name="line-741"></a>
<a name="line-742"></a><a name="amendUnrecord"></a><span class='hs-definition'>amendUnrecord</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-743"></a>                <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"add"</span><span class='hs-keyglyph'>]</span>
<a name="line-744"></a>                 <span class='hs-conid'>NoAmendUnrecord</span> <span class='hs-str'>"add the changes to patch (default)"</span><span class='hs-layout'>,</span>
<a name="line-745"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"unrecord"</span><span class='hs-keyglyph'>]</span>
<a name="line-746"></a>                 <span class='hs-conid'>AmendUnrecord</span> <span class='hs-str'>"subtract the changes from patch"</span><span class='hs-keyglyph'>]</span>
<a name="line-747"></a>
<a name="line-748"></a><a name="ignoretimes"></a><span class='hs-definition'>ignoretimes</span> <span class='hs-keyglyph'>=</span>
<a name="line-749"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-750"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"ignore-times"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>IgnoreTimes</span>
<a name="line-751"></a>                         <span class='hs-str'>"don't trust the file modification times"</span>
<a name="line-752"></a>    <span class='hs-layout'>,</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-ignore-times"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontIgnoreTimes</span>
<a name="line-753"></a>                      <span class='hs-str'>"trust modification times to find modified files [DEFAULT]"</span>
<a name="line-754"></a>    <span class='hs-keyglyph'>]</span>
<a name="line-755"></a>
<a name="line-756"></a><a name="lookforadds"></a><span class='hs-definition'>lookforadds</span> <span class='hs-keyglyph'>=</span>
<a name="line-757"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-758"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'l'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"look-for-adds"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>LookForAdds</span>
<a name="line-759"></a>     <span class='hs-str'>"look for (non-boring) files that could be added"</span><span class='hs-layout'>,</span>
<a name="line-760"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-look-for-adds"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-look-for-adds"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoLookForAdds</span>
<a name="line-761"></a>     <span class='hs-str'>"don't look for any files that could be added [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-762"></a>
<a name="line-763"></a><a name="askdeps"></a><span class='hs-definition'>askdeps</span> <span class='hs-keyglyph'>=</span>
<a name="line-764"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-765"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"ask-deps"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AskDeps</span>
<a name="line-766"></a>     <span class='hs-str'>"ask for extra dependencies"</span><span class='hs-layout'>,</span>
<a name="line-767"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-ask-deps"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoAskDeps</span>
<a name="line-768"></a>     <span class='hs-str'>"don't ask for extra dependencies"</span><span class='hs-keyglyph'>]</span>
<a name="line-769"></a>
<a name="line-770"></a><a name="askLongComment"></a><span class='hs-definition'>askLongComment</span> <span class='hs-keyglyph'>=</span>
<a name="line-771"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-772"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"edit-long-comment"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>EditLongComment</span>
<a name="line-773"></a>     <span class='hs-str'>"edit the long comment by default"</span><span class='hs-layout'>,</span>
<a name="line-774"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"skip-long-comment"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoEditLongComment</span>
<a name="line-775"></a>     <span class='hs-str'>"don't give a long comment"</span><span class='hs-layout'>,</span>
<a name="line-776"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"prompt-long-comment"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>PromptLongComment</span>
<a name="line-777"></a>     <span class='hs-str'>"prompt for whether to edit the long comment"</span><span class='hs-keyglyph'>]</span>
<a name="line-778"></a>
<a name="line-779"></a><a name="keepDate"></a><span class='hs-definition'>keepDate</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-780"></a><span class='hs-definition'>keepDate</span> <span class='hs-keyglyph'>=</span>
<a name="line-781"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-782"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"keep-date"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>KeepDate</span>
<a name="line-783"></a>     <span class='hs-str'>"keep the date of the original patch"</span><span class='hs-layout'>,</span>
<a name="line-784"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-keep-date"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoKeepDate</span>
<a name="line-785"></a>     <span class='hs-str'>"use the current date for the amended patch"</span>
<a name="line-786"></a>    <span class='hs-keyglyph'>]</span>
<a name="line-787"></a>
<a name="line-788"></a><a name="logfile"></a><span class='hs-definition'>logfile</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"logfile"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>LogFile</span> <span class='hs-str'>"FILE"</span>
<a name="line-789"></a>          <span class='hs-str'>"give patch name and comment in file"</span>
<a name="line-790"></a>
<a name="line-791"></a><a name="rmlogfile"></a><span class='hs-definition'>rmlogfile</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-792"></a>            <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"delete-logfile"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>RmLogFile</span>
<a name="line-793"></a>            <span class='hs-str'>"delete the logfile when done"</span><span class='hs-layout'>,</span>
<a name="line-794"></a>             <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-delete-logfile"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontRmLogFile</span>
<a name="line-795"></a>            <span class='hs-str'>"keep the logfile when done [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-796"></a>
<a name="line-797"></a><a name="author"></a><span class='hs-definition'>author</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-798"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'A'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"author"</span><span class='hs-keyglyph'>]</span> <span class='hs-layout'>(</span><span class='hs-conid'>Author</span> <span class='hs-varop'>.</span> <span class='hs-varid'>decodeString</span><span class='hs-layout'>)</span> <span class='hs-str'>"EMAIL"</span> <span class='hs-str'>"specify author id"</span>
<a name="line-799"></a><a name="fromOpt"></a><span class='hs-definition'>fromOpt</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-800"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"from"</span><span class='hs-keyglyph'>]</span> <span class='hs-layout'>(</span><span class='hs-conid'>Author</span> <span class='hs-varop'>.</span> <span class='hs-varid'>decodeString</span><span class='hs-layout'>)</span> <span class='hs-str'>"EMAIL"</span> <span class='hs-str'>"specify email address"</span>
<a name="line-801"></a>
<a name="line-802"></a><a name="fileHelpAuthor"></a><span class='hs-definition'>fileHelpAuthor</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span>
<a name="line-803"></a><span class='hs-definition'>fileHelpAuthor</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span>
<a name="line-804"></a> <span class='hs-str'>"Each patch is attributed to its author, usually by email address (for"</span><span class='hs-layout'>,</span>
<a name="line-805"></a> <span class='hs-str'>"example, `Fred Bloggs &lt;fred@example.net&gt;').  Darcs looks in several"</span><span class='hs-layout'>,</span>
<a name="line-806"></a> <span class='hs-str'>"places for this author string: the --author option, the files"</span><span class='hs-layout'>,</span>
<a name="line-807"></a> <span class='hs-str'>"_darcs/prefs/author (in the repository) and "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>globalPrefsDirDoc</span> <span class='hs-varop'>++</span> <span class='hs-str'>"author (in your"</span><span class='hs-layout'>,</span>
<a name="line-808"></a> <span class='hs-str'>"home directory), and the environment variables $DARCS_EMAIL and"</span><span class='hs-layout'>,</span>
<a name="line-809"></a> <span class='hs-str'>"$EMAIL.  If none of those exist, Darcs will prompt you for an author"</span><span class='hs-layout'>,</span>
<a name="line-810"></a> <span class='hs-str'>"string and write it to _darcs/prefs/author.  Note that if if you have more"</span><span class='hs-layout'>,</span>
<a name="line-811"></a> <span class='hs-str'>"than one email address, note that you can put them all in "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>globalPrefsDirDoc</span> <span class='hs-varop'>++</span> <span class='hs-str'>"author,"</span><span class='hs-layout'>,</span>
<a name="line-812"></a> <span class='hs-str'>"one author per line.  Darcs will still prompt you for an author, but it"</span><span class='hs-layout'>,</span>
<a name="line-813"></a> <span class='hs-str'>"allows you to select from the list, or to type in an alternative."</span>
<a name="line-814"></a> <span class='hs-keyglyph'>]</span>
<a name="line-815"></a>
<a name="line-816"></a><a name="environmentHelpEmail"></a><span class='hs-definition'>environmentHelpEmail</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-817"></a><span class='hs-definition'>environmentHelpEmail</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-str'>"DARCS_EMAIL"</span><span class='hs-layout'>,</span><span class='hs-str'>"EMAIL"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-varid'>fileHelpAuthor</span><span class='hs-layout'>)</span>
<a name="line-818"></a>
<a name="line-819"></a><a name="getAuthor"></a><span class='hs-comment'>-- | 'getAuthor' takes a list of flags and returns the author of the</span>
<a name="line-820"></a><span class='hs-comment'>-- change specified by @Author \"Leo Tolstoy\"@ in that list of flags, if any.</span>
<a name="line-821"></a><span class='hs-comment'>-- Otherwise, if @Pipe@ is present, asks the user who is the author and</span>
<a name="line-822"></a><span class='hs-comment'>-- returns the answer. If neither are present, try to guess the author,</span>
<a name="line-823"></a><span class='hs-comment'>-- from @_darcs/prefs@, and if it's not possible, ask the user.</span>
<a name="line-824"></a><span class='hs-definition'>getAuthor</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>String</span>
<a name="line-825"></a><span class='hs-definition'>getAuthor</span> <span class='hs-layout'>(</span><span class='hs-conid'>Author</span> <span class='hs-varid'>a</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varid'>a</span>
<a name="line-826"></a><span class='hs-definition'>getAuthor</span> <span class='hs-layout'>(</span><span class='hs-conid'>Pipe</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>askUser</span> <span class='hs-str'>"Who is the author? "</span>
<a name="line-827"></a><span class='hs-definition'>getAuthor</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>flags</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getAuthor</span> <span class='hs-varid'>flags</span>
<a name="line-828"></a><span class='hs-definition'>getAuthor</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-829"></a>  <span class='hs-varid'>easy_author</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getEasyAuthor</span>
<a name="line-830"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>easy_author</span> <span class='hs-keyword'>of</span>
<a name="line-831"></a>    <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>a</span>
<a name="line-832"></a>    <span class='hs-conid'>[]</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>askForAuthor</span> <span class='hs-varid'>shortPrompt</span> <span class='hs-varid'>longPrompt</span>
<a name="line-833"></a>    <span class='hs-keyword'>as</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>askForAuthor</span> <span class='hs-layout'>(</span><span class='hs-varid'>fancyPrompt</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fancyPrompt</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span>
<a name="line-834"></a> <span class='hs-keyword'>where</span>
<a name="line-835"></a>  <span class='hs-varid'>shortPrompt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>askUser</span> <span class='hs-str'>"What is your email address? "</span>
<a name="line-836"></a>  <span class='hs-varid'>longPrompt</span>  <span class='hs-keyglyph'>=</span> <span class='hs-varid'>askUser</span> <span class='hs-str'>"What is your email address (e.g. Fred Bloggs &lt;fred@example.net&gt;)? "</span>
<a name="line-837"></a>  <span class='hs-varid'>fancyPrompt</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>=</span>
<a name="line-838"></a>    <span class='hs-keyword'>do</span> <span class='hs-varid'>putDocLn</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-str'>""</span> <span class='hs-varop'>$$</span>
<a name="line-839"></a>                  <span class='hs-varid'>text</span> <span class='hs-str'>"You have saved the following email addresses to your global settings:"</span>
<a name="line-840"></a>       <span class='hs-varid'>str</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>askUserListItem</span> <span class='hs-str'>"Please select an email address for this repository: "</span> <span class='hs-layout'>(</span><span class='hs-varid'>xs</span> <span class='hs-varop'>++</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"Other"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-841"></a>       <span class='hs-keyword'>if</span> <span class='hs-varid'>str</span> <span class='hs-varop'>==</span> <span class='hs-str'>"Other"</span>
<a name="line-842"></a>          <span class='hs-keyword'>then</span> <span class='hs-varid'>longPrompt</span>
<a name="line-843"></a>          <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-varid'>str</span>
<a name="line-844"></a>  <span class='hs-varid'>askForAuthor</span> <span class='hs-varid'>askfn1</span> <span class='hs-varid'>askfn2</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-845"></a>      <span class='hs-varid'>aminrepo</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>doesDirectoryExist</span> <span class='hs-layout'>(</span><span class='hs-varid'>darcsdir</span><span class='hs-varop'>++</span><span class='hs-str'>"/prefs"</span><span class='hs-layout'>)</span>
<a name="line-846"></a>      <span class='hs-keyword'>if</span> <span class='hs-varid'>aminrepo</span> <span class='hs-keyword'>then</span> <span class='hs-keyword'>do</span>
<a name="line-847"></a>          <span class='hs-varid'>putDocLn</span> <span class='hs-varop'>$</span>
<a name="line-848"></a>            <span class='hs-varid'>text</span> <span class='hs-str'>"Each patch is attributed to its author, usually by email address (for"</span> <span class='hs-varop'>$$</span>
<a name="line-849"></a>            <span class='hs-varid'>text</span> <span class='hs-str'>"example, `Fred Bloggs &lt;fred@example.net&gt;').  Darcs could not determine"</span> <span class='hs-varop'>$$</span>
<a name="line-850"></a>            <span class='hs-varid'>text</span> <span class='hs-str'>"your email address, so you will be prompted for it."</span> <span class='hs-varop'>$$</span>
<a name="line-851"></a>            <span class='hs-varid'>text</span> <span class='hs-str'>""</span> <span class='hs-varop'>$$</span>
<a name="line-852"></a>            <span class='hs-varid'>text</span> <span class='hs-layout'>(</span><span class='hs-str'>"Your address will be stored in "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>darcsdir</span> <span class='hs-varop'>++</span> <span class='hs-str'>"/prefs/author."</span><span class='hs-layout'>)</span> <span class='hs-varop'>$$</span>
<a name="line-853"></a>            <span class='hs-varid'>text</span> <span class='hs-str'>"It will be used for all patches recorded in this repository."</span> <span class='hs-varop'>$$</span>
<a name="line-854"></a>            <span class='hs-varid'>text</span> <span class='hs-layout'>(</span><span class='hs-str'>"If you move that file to "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>globalPrefsDirDoc</span> <span class='hs-varop'>++</span> <span class='hs-str'>"author, it will be used for patches"</span><span class='hs-layout'>)</span> <span class='hs-varop'>$$</span>
<a name="line-855"></a>            <span class='hs-varid'>text</span> <span class='hs-str'>"you record in ALL repositories."</span>
<a name="line-856"></a>          <span class='hs-varid'>add</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>askfn1</span>
<a name="line-857"></a>          <span class='hs-varid'>writeLocaleFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>darcsdir</span> <span class='hs-varop'>++</span> <span class='hs-str'>"/prefs/author"</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-858"></a>                          <span class='hs-varid'>unlines</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"# "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>line</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>line</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fileHelpAuthor</span><span class='hs-keyglyph'>]</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\n"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>add</span>
<a name="line-859"></a>          <span class='hs-varid'>return</span> <span class='hs-varid'>add</span>
<a name="line-860"></a>        <span class='hs-keyword'>else</span> <span class='hs-varid'>askfn2</span>
<a name="line-861"></a>
<a name="line-862"></a><a name="getEasyAuthor"></a><span class='hs-comment'>-- | 'getEasyAuthor' tries to get the author name first from the repository preferences,</span>
<a name="line-863"></a><span class='hs-comment'>-- then from global preferences, then from environment variables.  Returns @[]@</span>
<a name="line-864"></a><span class='hs-comment'>-- if it could not get it.  Note that it may only return multiple possibilities when</span>
<a name="line-865"></a><span class='hs-comment'>-- reading from global preferences</span>
<a name="line-866"></a><span class='hs-definition'>getEasyAuthor</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span>
<a name="line-867"></a><span class='hs-definition'>getEasyAuthor</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>decodeString</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-868"></a>  <span class='hs-varid'>firstNotNullIO</span> <span class='hs-keyglyph'>[</span> <span class='hs-layout'>(</span><span class='hs-varid'>take</span> <span class='hs-num'>1</span> <span class='hs-varop'>.</span> <span class='hs-varid'>nonblank</span><span class='hs-layout'>)</span> <span class='hs-varop'>`fmap`</span> <span class='hs-varid'>getPreflist</span> <span class='hs-str'>"author"</span>
<a name="line-869"></a>                 <span class='hs-layout'>,</span> <span class='hs-varid'>nonblank</span>    <span class='hs-varop'>`fmap`</span> <span class='hs-varid'>getGlobal</span> <span class='hs-str'>"author"</span>
<a name="line-870"></a>                 <span class='hs-layout'>,</span> <span class='hs-varid'>maybeToList</span> <span class='hs-varop'>`fmap`</span> <span class='hs-varid'>maybeGetEnv</span> <span class='hs-str'>"DARCS_EMAIL"</span>
<a name="line-871"></a>                 <span class='hs-layout'>,</span> <span class='hs-varid'>maybeToList</span> <span class='hs-varop'>`fmap`</span> <span class='hs-varid'>maybeGetEnv</span> <span class='hs-str'>"EMAIL"</span>
<a name="line-872"></a>                 <span class='hs-keyglyph'>]</span>
<a name="line-873"></a> <span class='hs-keyword'>where</span>
<a name="line-874"></a>  <span class='hs-varid'>nonblank</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-varid'>null</span><span class='hs-layout'>)</span>
<a name="line-875"></a>  <span class='hs-comment'>-- this could perhaps be simplified with Control.Monad</span>
<a name="line-876"></a>  <span class='hs-comment'>-- but note that we do NOT want to concatenate the results</span>
<a name="line-877"></a>  <span class='hs-varid'>firstNotNullIO</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-conid'>[]</span>
<a name="line-878"></a>  <span class='hs-varid'>firstNotNullIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span><span class='hs-conop'>:</span><span class='hs-varid'>es</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-879"></a>    <span class='hs-varid'>v</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>e</span> <span class='hs-varop'>`catchall`</span> <span class='hs-varid'>return</span> <span class='hs-conid'>[]</span>
<a name="line-880"></a>    <span class='hs-keyword'>if</span> <span class='hs-varid'>null</span> <span class='hs-varid'>v</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>firstNotNullIO</span> <span class='hs-varid'>es</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-varid'>v</span>
<a name="line-881"></a>
<a name="line-882"></a><a name="nocompress"></a><span class='hs-definition'>nocompress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__compress</span><span class='hs-layout'>,</span> <span class='hs-sel'>__dontCompress</span><span class='hs-keyglyph'>]</span>
<a name="line-883"></a><a name="uncompressNocompress"></a><span class='hs-definition'>uncompressNocompress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__compress</span><span class='hs-layout'>,</span> <span class='hs-sel'>__dontCompress</span><span class='hs-layout'>,</span> <span class='hs-sel'>__uncompress</span><span class='hs-keyglyph'>]</span>
<a name="line-884"></a>
<a name="line-885"></a><span class='hs-sel'>__compress</span><span class='hs-layout'>,</span> <span class='hs-sel'>__dontCompress</span><span class='hs-layout'>,</span> <span class='hs-sel'>__uncompress</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-886"></a><span class='hs-sel'>__compress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"compress"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Compress</span>
<a name="line-887"></a>            <span class='hs-str'>"create compressed patches"</span>
<a name="line-888"></a><span class='hs-sel'>__dontCompress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-compress"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-compress"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoCompress</span>
<a name="line-889"></a>                  <span class='hs-str'>"don't create compressed patches"</span>
<a name="line-890"></a><span class='hs-sel'>__uncompress</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"uncompress"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UnCompress</span>
<a name="line-891"></a>               <span class='hs-str'>"uncompress patches"</span>
<a name="line-892"></a>
<a name="line-893"></a><a name="summary"></a><span class='hs-definition'>summary</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-894"></a>          <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'s'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"summary"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Summary</span> <span class='hs-str'>"summarize changes"</span><span class='hs-layout'>,</span>
<a name="line-895"></a>           <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-summary"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoSummary</span> <span class='hs-str'>"don't summarize changes"</span><span class='hs-keyglyph'>]</span>
<a name="line-896"></a><a name="unified"></a><span class='hs-definition'>unified</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-897"></a>          <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'u'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"unified"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Unified</span>
<a name="line-898"></a>          <span class='hs-str'>"output changes in a darcs-specific format similar to diff -u"</span><span class='hs-layout'>,</span>
<a name="line-899"></a>           <span class='hs-conid'>DarcsNoArgOption</span>  <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-unified"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NonUnified</span>
<a name="line-900"></a>          <span class='hs-str'>"output changes in darcs' usual format"</span><span class='hs-keyglyph'>]</span>
<a name="line-901"></a>
<a name="line-902"></a><a name="unidiff"></a><span class='hs-definition'>unidiff</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-903"></a>          <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'u'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"unified"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Unified</span>
<a name="line-904"></a>          <span class='hs-str'>"pass -u option to diff [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-905"></a>           <span class='hs-conid'>DarcsNoArgOption</span>  <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-unified"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NonUnified</span>
<a name="line-906"></a>          <span class='hs-str'>"output patch in diff's dumb format"</span><span class='hs-keyglyph'>]</span>
<a name="line-907"></a>
<a name="line-908"></a><a name="diffCmdFlag"></a><span class='hs-definition'>diffCmdFlag</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-909"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"diff-command"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DiffCmd</span> <span class='hs-str'>"COMMAND"</span> <span class='hs-str'>"specify diff command (ignores --diff-opts)"</span>
<a name="line-910"></a>
<a name="line-911"></a><a name="pauseForGui"></a><span class='hs-definition'>pauseForGui</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-912"></a>    <span class='hs-keyglyph'>[</span> <span class='hs-conid'>DarcsNoArgOption</span>
<a name="line-913"></a>        <span class='hs-conid'>[]</span>
<a name="line-914"></a>        <span class='hs-keyglyph'>[</span><span class='hs-str'>"pause-for-gui"</span><span class='hs-keyglyph'>]</span>
<a name="line-915"></a>        <span class='hs-conid'>PauseForGui</span>
<a name="line-916"></a>        <span class='hs-str'>"pause for an external diff or merge command to finish [DEFAULT]"</span>
<a name="line-917"></a>    <span class='hs-layout'>,</span> <span class='hs-conid'>DarcsNoArgOption</span>
<a name="line-918"></a>        <span class='hs-conid'>[]</span>
<a name="line-919"></a>        <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-pause-for-gui"</span><span class='hs-keyglyph'>]</span>
<a name="line-920"></a>        <span class='hs-conid'>NoPauseForGui</span>
<a name="line-921"></a>        <span class='hs-str'>"return immediately after external diff or merge command finishes"</span>
<a name="line-922"></a>    <span class='hs-keyglyph'>]</span>
<a name="line-923"></a>
<a name="line-924"></a><a name="storeInMemory"></a><span class='hs-definition'>storeInMemory</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-925"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"store-in-memory"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>StoreInMemory</span>
<a name="line-926"></a>     <span class='hs-str'>"do patch application in memory rather than on disk"</span><span class='hs-layout'>,</span>
<a name="line-927"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-store-in-memory"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>ApplyOnDisk</span>
<a name="line-928"></a>     <span class='hs-str'>"do patch application on disk [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-929"></a>
<a name="line-930"></a><a name="target"></a><span class='hs-definition'>target</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-931"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"to"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Target</span> <span class='hs-str'>"EMAIL"</span> <span class='hs-str'>"specify destination email"</span>
<a name="line-932"></a><a name="ccSend"></a><span class='hs-definition'>ccSend</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-933"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"cc"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Cc</span> <span class='hs-str'>"EMAIL"</span> <span class='hs-str'>"mail results to additional EMAIL(s)"</span>
<a name="line-934"></a><a name="ccApply"></a><span class='hs-definition'>ccApply</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-935"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"cc"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Cc</span> <span class='hs-str'>"EMAIL"</span> <span class='hs-str'>"mail results to additional EMAIL(s). Requires --reply"</span>
<a name="line-936"></a>
<a name="line-937"></a><a name="getCc"></a><span class='hs-comment'>-- |'getCc' takes a list of flags and returns the addresses to send a copy of</span>
<a name="line-938"></a><span class='hs-comment'>-- the patch bundle to when using @darcs send@.</span>
<a name="line-939"></a><span class='hs-comment'>-- looks for a cc address specified by @Cc \"address\"@ in that list of flags.</span>
<a name="line-940"></a><span class='hs-comment'>-- Returns the addresses as a comma separated string.</span>
<a name="line-941"></a><span class='hs-definition'>getCc</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-942"></a><span class='hs-definition'>getCc</span> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lt</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mapMaybe</span> <span class='hs-varid'>whatcc</span> <span class='hs-varid'>fs</span>
<a name="line-943"></a>            <span class='hs-keyword'>where</span> <span class='hs-varid'>whatcc</span> <span class='hs-layout'>(</span><span class='hs-conid'>Cc</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span>
<a name="line-944"></a>                  <span class='hs-varid'>whatcc</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-945"></a>                  <span class='hs-varid'>lt</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>t</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span>
<a name="line-946"></a>                  <span class='hs-varid'>lt</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>t</span><span class='hs-layout'>,</span><span class='hs-str'>""</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span>
<a name="line-947"></a>                  <span class='hs-varid'>lt</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-conop'>:</span><span class='hs-varid'>ts</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span><span class='hs-varop'>++</span><span class='hs-str'>" , "</span><span class='hs-varop'>++</span><span class='hs-varid'>lt</span> <span class='hs-varid'>ts</span>
<a name="line-948"></a>                  <span class='hs-varid'>lt</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>""</span>
<a name="line-949"></a>
<a name="line-950"></a><a name="subject"></a><span class='hs-definition'>subject</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"subject"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Subject</span> <span class='hs-str'>"SUBJECT"</span> <span class='hs-str'>"specify mail subject"</span>
<a name="line-951"></a>
<a name="line-952"></a><a name="getSubject"></a><span class='hs-comment'>-- |'getSubject' takes a list of flags and returns the subject of the mail</span>
<a name="line-953"></a><span class='hs-comment'>-- to be sent by @darcs send@. Looks for a subject specified by</span>
<a name="line-954"></a><span class='hs-comment'>-- @Subject \"subject\"@ in that list of flags, if any.</span>
<a name="line-955"></a><span class='hs-comment'>-- This flag is present if darcs was invoked with @--subject=SUBJECT@</span>
<a name="line-956"></a><span class='hs-definition'>getSubject</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-957"></a><span class='hs-definition'>getSubject</span> <span class='hs-layout'>(</span><span class='hs-conid'>Subject</span> <span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>s</span>
<a name="line-958"></a><span class='hs-definition'>getSubject</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getSubject</span> <span class='hs-varid'>fs</span>
<a name="line-959"></a><span class='hs-definition'>getSubject</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-960"></a>
<a name="line-961"></a><a name="charset"></a><span class='hs-definition'>charset</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"charset"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Charset</span> <span class='hs-str'>"CHARSET"</span> <span class='hs-str'>"specify mail charset"</span>
<a name="line-962"></a>
<a name="line-963"></a><a name="getCharset"></a><span class='hs-definition'>getCharset</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-964"></a><span class='hs-definition'>getCharset</span> <span class='hs-layout'>(</span><span class='hs-conid'>Charset</span> <span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>s</span>
<a name="line-965"></a><span class='hs-definition'>getCharset</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getCharset</span> <span class='hs-varid'>fs</span>
<a name="line-966"></a><span class='hs-definition'>getCharset</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-967"></a>
<a name="line-968"></a><a name="inReplyTo"></a><span class='hs-definition'>inReplyTo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"in-reply-to"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>InReplyTo</span> <span class='hs-str'>"EMAIL"</span> <span class='hs-str'>"specify in-reply-to header"</span>
<a name="line-969"></a><a name="getInReplyTo"></a><span class='hs-definition'>getInReplyTo</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-970"></a><span class='hs-definition'>getInReplyTo</span> <span class='hs-layout'>(</span><span class='hs-conid'>InReplyTo</span> <span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>s</span>
<a name="line-971"></a><span class='hs-definition'>getInReplyTo</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getInReplyTo</span> <span class='hs-varid'>fs</span>
<a name="line-972"></a><span class='hs-definition'>getInReplyTo</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-973"></a>
<a name="line-974"></a><a name="output"></a><span class='hs-definition'>output</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsAbsPathOrStdOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'o'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"output"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Output</span> <span class='hs-str'>"FILE"</span>
<a name="line-975"></a>         <span class='hs-str'>"specify output filename"</span>
<a name="line-976"></a>
<a name="line-977"></a><a name="outputAutoName"></a><span class='hs-definition'>outputAutoName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-978"></a>                   <span class='hs-conid'>DarcsOptAbsPathOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'O'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"output-auto-name"</span><span class='hs-keyglyph'>]</span> <span class='hs-str'>"."</span> <span class='hs-conid'>OutputAutoName</span> <span class='hs-str'>"DIRECTORY"</span>
<a name="line-979"></a>                   <span class='hs-str'>"output to automatically named file in DIRECTORY, default: current directory"</span>
<a name="line-980"></a>
<a name="line-981"></a><a name="getOutput"></a><span class='hs-definition'>getOutput</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>AbsolutePathOrStd</span>
<a name="line-982"></a><span class='hs-definition'>getOutput</span> <span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-varid'>a</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varid'>a</span>
<a name="line-983"></a><span class='hs-definition'>getOutput</span> <span class='hs-layout'>(</span><span class='hs-conid'>OutputAutoName</span> <span class='hs-varid'>a</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>makeAbsoluteOrStd</span> <span class='hs-varid'>a</span> <span class='hs-varid'>f</span>
<a name="line-984"></a><span class='hs-definition'>getOutput</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>flags</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getOutput</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>f</span>
<a name="line-985"></a><span class='hs-definition'>getOutput</span> <span class='hs-conid'>[]</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-986"></a>
<a name="line-987"></a><a name="editDescription"></a><span class='hs-definition'>editDescription</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mkMutuallyExclusive</span> <span class='hs-conid'>[]</span> <span class='hs-varid'>yes</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>no</span><span class='hs-keyglyph'>]</span>
<a name="line-988"></a> <span class='hs-keyword'>where</span>
<a name="line-989"></a>  <span class='hs-varid'>yes</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"edit-description"</span><span class='hs-keyglyph'>]</span>
<a name="line-990"></a>        <span class='hs-layout'>,</span> <span class='hs-conid'>EditDescription</span>
<a name="line-991"></a>        <span class='hs-layout'>,</span> <span class='hs-str'>"edit the patch bundle description"</span> <span class='hs-layout'>)</span>
<a name="line-992"></a>  <span class='hs-varid'>no</span>  <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-edit-description"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-edit-description"</span><span class='hs-keyglyph'>]</span>
<a name="line-993"></a>        <span class='hs-layout'>,</span> <span class='hs-conid'>NoEditDescription</span>
<a name="line-994"></a>        <span class='hs-layout'>,</span> <span class='hs-str'>"don't edit the patch bundle description"</span> <span class='hs-layout'>)</span>
<a name="line-995"></a>
<a name="line-996"></a><a name="distnameOption"></a><span class='hs-definition'>distnameOption</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-997"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'d'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dist-name"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DistName</span> <span class='hs-str'>"DISTNAME"</span> <span class='hs-str'>"name of version"</span>
<a name="line-998"></a>
<a name="line-999"></a><a name="recursive"></a><span class='hs-definition'>recursive</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1000"></a><span class='hs-definition'>recursive</span> <span class='hs-varid'>h</span>
<a name="line-1001"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1002"></a>      <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'r'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"recursive"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Recursive</span> <span class='hs-varid'>h</span><span class='hs-layout'>,</span>
<a name="line-1003"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"not-recursive"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-recursive"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoRecursive</span> <span class='hs-layout'>(</span><span class='hs-str'>"don't "</span><span class='hs-varop'>++</span><span class='hs-varid'>h</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-1004"></a>
<a name="line-1005"></a><a name="patchFormatChoices"></a><span class='hs-definition'>patchFormatChoices</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1006"></a><span class='hs-definition'>patchFormatChoices</span> <span class='hs-keyglyph'>=</span>
<a name="line-1007"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1008"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"hashed"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UseHashedInventory</span>
<a name="line-1009"></a>                          <span class='hs-str'>"Some new features. Compatible with older repos"</span><span class='hs-layout'>,</span>
<a name="line-1010"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"darcs-2"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UseFormat2</span>
<a name="line-1011"></a>                          <span class='hs-str'>"All features. Related repos must use same format [DEFAULT]."</span><span class='hs-keyglyph'>]</span>
<a name="line-1012"></a>
<a name="line-1013"></a><a name="useWorkingDir"></a><span class='hs-definition'>useWorkingDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1014"></a><span class='hs-definition'>useWorkingDir</span> <span class='hs-keyglyph'>=</span>
<a name="line-1015"></a>  <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1016"></a>  <span class='hs-keyglyph'>[</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"with-working-dir"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UseWorkingDir</span>
<a name="line-1017"></a>                         <span class='hs-str'>"Create a working directory (normal repository)"</span><span class='hs-layout'>,</span>
<a name="line-1018"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-working-dir"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UseNoWorkingDir</span>
<a name="line-1019"></a>                           <span class='hs-str'>"Do not create a working directory (bare repository)"</span><span class='hs-keyglyph'>]</span>
<a name="line-1020"></a>
<a name="line-1021"></a><a name="upgradeFormat"></a><span class='hs-definition'>upgradeFormat</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1022"></a><span class='hs-definition'>upgradeFormat</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1023"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"upgrade"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UpgradeFormat</span>
<a name="line-1024"></a>         <span class='hs-str'>"upgrade repository to latest compatible format"</span>
<a name="line-1025"></a>
<a name="line-1026"></a><a name="xmloutput"></a><span class='hs-definition'>xmloutput</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1027"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"xml-output"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>XMLOutput</span> <span class='hs-str'>"generate XML formatted output"</span>
<a name="line-1028"></a>
<a name="line-1029"></a><a name="creatorhash"></a><span class='hs-definition'>creatorhash</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1030"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"creator-hash"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>CreatorHash</span> <span class='hs-str'>"HASH"</span> <span class='hs-str'>"specify hash of creator patch (see docs)"</span>
<a name="line-1031"></a>
<a name="line-1032"></a><span class='hs-definition'>sign</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1033"></a>       <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"sign"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Sign</span>
<a name="line-1034"></a>        <span class='hs-str'>"sign the patch with your gpg key"</span><span class='hs-layout'>,</span>
<a name="line-1035"></a>        <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"sign-as"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>SignAs</span> <span class='hs-str'>"KEYID"</span>
<a name="line-1036"></a>        <span class='hs-str'>"sign the patch with a given keyid"</span><span class='hs-layout'>,</span>
<a name="line-1037"></a>        <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"sign-ssl"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>SignSSL</span> <span class='hs-str'>"IDFILE"</span>
<a name="line-1038"></a>        <span class='hs-str'>"sign the patch using openssl with a given private key"</span><span class='hs-layout'>,</span>
<a name="line-1039"></a>        <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-sign"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-sign"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoSign</span>
<a name="line-1040"></a>        <span class='hs-str'>"don't sign the patch"</span><span class='hs-keyglyph'>]</span>
<a name="line-1041"></a><a name="applyas"></a><span class='hs-definition'>applyas</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1042"></a>           <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"apply-as"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>ApplyAs</span> <span class='hs-str'>"USERNAME"</span>
<a name="line-1043"></a>            <span class='hs-str'>"apply patch as another user using sudo"</span><span class='hs-layout'>,</span>
<a name="line-1044"></a>            <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-apply-as"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NonApply</span>
<a name="line-1045"></a>            <span class='hs-str'>"don't use sudo to apply as another user [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1046"></a>
<a name="line-1047"></a><a name="happyForwarding"></a><span class='hs-definition'>happyForwarding</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1048"></a>                   <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"happy-forwarding"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HappyForwarding</span>
<a name="line-1049"></a>                   <span class='hs-str'>"forward unsigned messages without extra header"</span><span class='hs-layout'>,</span>
<a name="line-1050"></a>                    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-happy-forwarding"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoHappyForwarding</span>
<a name="line-1051"></a>                   <span class='hs-str'>"don't forward unsigned messages without extra header [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1052"></a>
<a name="line-1053"></a><a name="setDefault"></a><span class='hs-definition'>setDefault</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1054"></a><span class='hs-definition'>setDefault</span> <span class='hs-varid'>wantYes</span>
<a name="line-1055"></a>  <span class='hs-keyglyph'>|</span> <span class='hs-varid'>wantYes</span>   <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mkMutuallyExclusive</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>yes</span><span class='hs-layout'>,</span><span class='hs-varid'>no</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>defaultyes</span> <span class='hs-conid'>[]</span>
<a name="line-1056"></a>  <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mkMutuallyExclusive</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>yes</span><span class='hs-layout'>,</span><span class='hs-varid'>no</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>defaultno</span>  <span class='hs-conid'>[]</span>
<a name="line-1057"></a> <span class='hs-keyword'>where</span>
<a name="line-1058"></a>  <span class='hs-varid'>yes</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"set-default"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-conid'>SetDefault</span> <span class='hs-conid'>True</span>
<a name="line-1059"></a>        <span class='hs-layout'>,</span> <span class='hs-str'>"set default repository"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>defaultText</span> <span class='hs-varid'>wantYes</span> <span class='hs-layout'>)</span>
<a name="line-1060"></a>  <span class='hs-varid'>no</span>  <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-set-default"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-conid'>NoSetDefault</span> <span class='hs-conid'>True</span>
<a name="line-1061"></a>        <span class='hs-layout'>,</span> <span class='hs-str'>"don't set default repository"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>defaultText</span> <span class='hs-layout'>(</span><span class='hs-varid'>not</span> <span class='hs-varid'>wantYes</span><span class='hs-layout'>)</span> <span class='hs-layout'>)</span>
<a name="line-1062"></a>  <span class='hs-varid'>defaultyes</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>f</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsInternalOption</span> <span class='hs-varid'>f</span><span class='hs-layout'>,</span> <span class='hs-conid'>SetDefault</span> <span class='hs-conid'>False</span><span class='hs-layout'>,</span> <span class='hs-str'>""</span> <span class='hs-layout'>)</span>
<a name="line-1063"></a>  <span class='hs-varid'>defaultno</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>f</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DarcsInternalOption</span> <span class='hs-varid'>f</span><span class='hs-layout'>,</span> <span class='hs-conid'>NoSetDefault</span> <span class='hs-conid'>False</span><span class='hs-layout'>,</span> <span class='hs-str'>""</span> <span class='hs-layout'>)</span>
<a name="line-1064"></a>  <span class='hs-varid'>defaultText</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>" [DEFAULT]"</span>
<a name="line-1065"></a>  <span class='hs-varid'>defaultText</span> <span class='hs-conid'>False</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>""</span>
<a name="line-1066"></a>
<a name="line-1067"></a><a name="verify"></a><span class='hs-definition'>verify</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1068"></a>         <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"verify"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Verify</span> <span class='hs-str'>"PUBRING"</span>
<a name="line-1069"></a>          <span class='hs-str'>"verify that the patch was signed by a key in PUBRING"</span><span class='hs-layout'>,</span>
<a name="line-1070"></a>          <span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"verify-ssl"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>VerifySSL</span> <span class='hs-str'>"KEYS"</span>
<a name="line-1071"></a>          <span class='hs-str'>"verify using openSSL with authorized keys from file KEYS"</span><span class='hs-layout'>,</span>
<a name="line-1072"></a>          <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-verify"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NonVerify</span>
<a name="line-1073"></a>          <span class='hs-str'>"don't verify patch signature"</span><span class='hs-keyglyph'>]</span>
<a name="line-1074"></a>
<a name="line-1075"></a><a name="reponame"></a><span class='hs-definition'>reponame</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1076"></a><span class='hs-definition'>reponame</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1077"></a>           <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"repo-name"</span><span class='hs-layout'>,</span><span class='hs-str'>"repodir"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NewRepo</span> <span class='hs-str'>"DIRECTORY"</span>
<a name="line-1078"></a>           <span class='hs-str'>"path of output directory"</span> <span class='hs-comment'>--repodir is there for compatibility</span>
<a name="line-1079"></a>                                      <span class='hs-comment'>--should be removed eventually</span>
<a name="line-1080"></a><a name="depsSel"></a><span class='hs-definition'>depsSel</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1081"></a><span class='hs-definition'>depsSel</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1082"></a>       <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-deps"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontGrabDeps</span>
<a name="line-1083"></a>        <span class='hs-str'>"don't automatically fulfill dependencies"</span><span class='hs-layout'>,</span>
<a name="line-1084"></a>        <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-prompt-for-dependencies"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontPromptForDependencies</span>
<a name="line-1085"></a>        <span class='hs-str'>"don't ask about patches that are depended on by matched patches (with --match or --patch)"</span><span class='hs-layout'>,</span>
<a name="line-1086"></a>        <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"prompt-for-dependencies"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>PromptForDependencies</span>
<a name="line-1087"></a>        <span class='hs-str'>"prompt about patches that are depended on by matched patches [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1088"></a>
<a name="line-1089"></a><a name="tokens"></a><span class='hs-definition'>tokens</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1090"></a><span class='hs-definition'>tokens</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1091"></a>         <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"token-chars"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Toks</span> <span class='hs-str'>"\"[CHARS]\""</span>
<a name="line-1092"></a>         <span class='hs-str'>"define token to contain these characters"</span>
<a name="line-1093"></a>
<a name="line-1094"></a><a name="partial"></a><span class='hs-definition'>partial</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1095"></a><span class='hs-definition'>partial</span>       <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-sel'>__lazy</span><span class='hs-layout'>,</span> <span class='hs-sel'>__complete</span><span class='hs-keyglyph'>]</span>
<a name="line-1096"></a>
<a name="line-1097"></a><span class='hs-sel'>__lazy</span><span class='hs-layout'>,</span> <span class='hs-sel'>__complete</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-1098"></a><span class='hs-sel'>__lazy</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"lazy"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Lazy</span>
<a name="line-1099"></a>              <span class='hs-str'>"get patch files only as needed"</span>
<a name="line-1100"></a><span class='hs-sel'>__complete</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"complete"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Complete</span>
<a name="line-1101"></a>             <span class='hs-str'>"get a complete copy of the repository"</span>
<a name="line-1102"></a>
<a name="line-1103"></a><a name="forceReplace"></a><span class='hs-definition'>forceReplace</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1104"></a>                <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'f'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"force"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>ForceReplace</span>
<a name="line-1105"></a>                 <span class='hs-str'>"proceed with replace even if 'new' token already exists"</span><span class='hs-layout'>,</span>
<a name="line-1106"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-force"</span><span class='hs-keyglyph'>]</span>
<a name="line-1107"></a>                 <span class='hs-conid'>NonForce</span> <span class='hs-str'>"don't force the replace if it looks scary"</span><span class='hs-keyglyph'>]</span>
<a name="line-1108"></a>
<a name="line-1109"></a><a name="reply"></a><span class='hs-definition'>reply</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1110"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"reply"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Reply</span> <span class='hs-str'>"FROM"</span> <span class='hs-str'>"reply to email-based patch using FROM address"</span>
<a name="line-1111"></a><a name="applyConflictOptions"></a><span class='hs-definition'>applyConflictOptions</span>
<a name="line-1112"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1113"></a>      <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"mark-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1114"></a>       <span class='hs-conid'>MarkConflicts</span> <span class='hs-str'>"mark conflicts"</span><span class='hs-layout'>,</span>
<a name="line-1115"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"allow-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1116"></a>       <span class='hs-conid'>AllowConflicts</span> <span class='hs-str'>"allow conflicts, but don't mark them"</span><span class='hs-layout'>,</span>
<a name="line-1117"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-resolve-conflicts"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoAllowConflicts</span>
<a name="line-1118"></a>       <span class='hs-str'>"equivalent to --dont-allow-conflicts, for backwards compatibility"</span><span class='hs-layout'>,</span>
<a name="line-1119"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-allow-conflicts"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-allow-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1120"></a>       <span class='hs-conid'>NoAllowConflicts</span> <span class='hs-str'>"fail if there are patches that would create conflicts [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1121"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"skip-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1122"></a>       <span class='hs-conid'>SkipConflicts</span> <span class='hs-str'>"filter out any patches that would create conflicts"</span>
<a name="line-1123"></a>      <span class='hs-keyglyph'>]</span>
<a name="line-1124"></a><a name="pullConflictOptions"></a><span class='hs-definition'>pullConflictOptions</span>
<a name="line-1125"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1126"></a>      <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"mark-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1127"></a>       <span class='hs-conid'>MarkConflicts</span> <span class='hs-str'>"mark conflicts [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1128"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"allow-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1129"></a>       <span class='hs-conid'>AllowConflicts</span> <span class='hs-str'>"allow conflicts, but don't mark them"</span><span class='hs-layout'>,</span>
<a name="line-1130"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-allow-conflicts"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-allow-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1131"></a>       <span class='hs-conid'>NoAllowConflicts</span> <span class='hs-str'>"fail if there are patches that would create conflicts"</span><span class='hs-layout'>,</span>
<a name="line-1132"></a>       <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"skip-conflicts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1133"></a>       <span class='hs-conid'>SkipConflicts</span> <span class='hs-str'>"filter out any patches that would create conflicts"</span>
<a name="line-1134"></a>      <span class='hs-keyglyph'>]</span>
<a name="line-1135"></a><a name="useExternalMerge"></a><span class='hs-definition'>useExternalMerge</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1136"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"external-merge"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>ExternalMerge</span> <span class='hs-str'>"COMMAND"</span>
<a name="line-1137"></a>    <span class='hs-str'>"use external tool to merge conflicts"</span>
<a name="line-1138"></a>
<a name="line-1139"></a><a name="dryRunNoxml"></a><span class='hs-comment'>-- NOTE: I'd rather work to have no uses of dryRunNoxml, so that any time</span>
<a name="line-1140"></a><span class='hs-comment'>-- --dry-run is a possibility, automated users can examine the results more</span>
<a name="line-1141"></a><span class='hs-comment'>-- easily with --xml.</span>
<a name="line-1142"></a><span class='hs-definition'>dryRunNoxml</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1143"></a><span class='hs-definition'>dryRunNoxml</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1144"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dry-run"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DryRun</span> <span class='hs-str'>"don't actually take the action"</span>
<a name="line-1145"></a>
<a name="line-1146"></a><a name="dryRun"></a><span class='hs-definition'>dryRun</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span>
<a name="line-1147"></a><span class='hs-definition'>dryRun</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>dryRunNoxml</span><span class='hs-layout'>,</span> <span class='hs-varid'>xmloutput</span><span class='hs-keyglyph'>]</span>
<a name="line-1148"></a>
<a name="line-1149"></a><a name="showFriendly"></a><span class='hs-comment'>-- | @'showFriendly' flags patch@ returns a 'Doc' representing the right</span>
<a name="line-1150"></a><span class='hs-comment'>-- way to show @patch@ given the list @flags@ of flags darcs was invoked with.</span>
<a name="line-1151"></a><span class='hs-definition'>showFriendly</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Patchy</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>p</span> <span class='hs-conid'>C</span><span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Doc</span>
<a name="line-1152"></a><span class='hs-definition'>showFriendly</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Verbose</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>showNicely</span> <span class='hs-varid'>p</span>
<a name="line-1153"></a>                    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Summary</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span><span class='hs-varop'>.</span><span class='hs-varid'>summary</span> <span class='hs-varid'>p</span>
<a name="line-1154"></a>                    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span>           <span class='hs-keyglyph'>=</span> <span class='hs-varid'>description</span> <span class='hs-varid'>p</span>
<a name="line-1155"></a>
<a name="line-1156"></a><a name="printDryRunMessageAndExit"></a><span class='hs-comment'>-- | @'printDryRunMessageAndExit' action opts patches@ prints a string</span>
<a name="line-1157"></a><span class='hs-comment'>-- representing the action that would be taken if the @--dry-run@ option</span>
<a name="line-1158"></a><span class='hs-comment'>-- had not been passed to darcs. Then darcs exits successfully.</span>
<a name="line-1159"></a><span class='hs-comment'>-- @action@ is the name of the action being taken, like @\"push\"@</span>
<a name="line-1160"></a><span class='hs-comment'>-- @opts@ is the list of flags which were sent to darcs</span>
<a name="line-1161"></a><span class='hs-comment'>-- @patches@ is the sequence of patches which would be touched by @action@.</span>
<a name="line-1162"></a><span class='hs-definition'>printDryRunMessageAndExit</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>RepoPatch</span> <span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-conid'>ApplyState</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>~</span> <span class='hs-conid'>Tree</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>FL</span> <span class='hs-layout'>(</span><span class='hs-conid'>PatchInfoAnd</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-conid'>C</span><span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-1163"></a><span class='hs-definition'>printDryRunMessageAndExit</span> <span class='hs-varid'>action</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>patches</span> <span class='hs-keyglyph'>=</span>
<a name="line-1164"></a>     <span class='hs-keyword'>do</span> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-conid'>DryRun</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-1165"></a>          <span class='hs-varid'>putInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Would "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>action</span> <span class='hs-varop'>++</span> <span class='hs-str'>" the following changes:"</span>
<a name="line-1166"></a>          <span class='hs-varid'>putDocLn</span> <span class='hs-varop'>$</span> <span class='hs-varid'>put_mode</span>
<a name="line-1167"></a>          <span class='hs-varid'>putInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-varop'>$</span> <span class='hs-str'>""</span>
<a name="line-1168"></a>          <span class='hs-varid'>putInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Making no changes:  this is a dry run."</span>
<a name="line-1169"></a>          <span class='hs-varid'>exitWith</span> <span class='hs-conid'>ExitSuccess</span>
<a name="line-1170"></a>        <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-conid'>All</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span> <span class='hs-varop'>&amp;&amp;</span> <span class='hs-conid'>Summary</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-1171"></a>          <span class='hs-varid'>putInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Will "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>action</span> <span class='hs-varop'>++</span> <span class='hs-str'>" the following changes:"</span>
<a name="line-1172"></a>          <span class='hs-varid'>putDocLn</span> <span class='hs-varop'>$</span> <span class='hs-varid'>put_mode</span>
<a name="line-1173"></a>     <span class='hs-keyword'>where</span> <span class='hs-varid'>put_mode</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-conid'>XMLOutput</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span>
<a name="line-1174"></a>                      <span class='hs-keyword'>then</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-str'>"&lt;patches&gt;"</span> <span class='hs-varop'>$$</span>
<a name="line-1175"></a>                            <span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapFL</span> <span class='hs-layout'>(</span><span class='hs-varid'>indent</span> <span class='hs-varop'>.</span> <span class='hs-varid'>xml_info</span><span class='hs-layout'>)</span> <span class='hs-varid'>patches</span><span class='hs-layout'>)</span> <span class='hs-varop'>$$</span>
<a name="line-1176"></a>                            <span class='hs-varid'>text</span> <span class='hs-str'>"&lt;/patches&gt;"</span><span class='hs-layout'>)</span>
<a name="line-1177"></a>                      <span class='hs-keyword'>else</span> <span class='hs-layout'>(</span><span class='hs-varid'>vsep</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mapFL</span> <span class='hs-layout'>(</span><span class='hs-varid'>showFriendly</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span> <span class='hs-varid'>patches</span><span class='hs-layout'>)</span>
<a name="line-1178"></a>           <span class='hs-varid'>putInfo</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-conid'>XMLOutput</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span> <span class='hs-keyword'>then</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>putDocLn</span>
<a name="line-1179"></a>           <span class='hs-varid'>xml_info</span> <span class='hs-varid'>pl</span>
<a name="line-1180"></a>              <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Summary</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xml_with_summary</span> <span class='hs-varid'>pl</span>
<a name="line-1181"></a>              <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>toXml</span> <span class='hs-varop'>.</span> <span class='hs-varid'>info</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-1182"></a>
<a name="line-1183"></a>           <span class='hs-varid'>xml_with_summary</span> <span class='hs-varid'>hp</span>
<a name="line-1184"></a>               <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>hopefullyM</span> <span class='hs-varid'>hp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>insertBeforeLastline</span>
<a name="line-1185"></a>                                            <span class='hs-layout'>(</span><span class='hs-varid'>toXml</span> <span class='hs-varop'>$</span> <span class='hs-varid'>info</span> <span class='hs-varid'>hp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>indent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>xmlSummary</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-1186"></a>           <span class='hs-varid'>xml_with_summary</span> <span class='hs-varid'>hp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toXml</span> <span class='hs-layout'>(</span><span class='hs-varid'>info</span> <span class='hs-varid'>hp</span><span class='hs-layout'>)</span>
<a name="line-1187"></a>           <span class='hs-varid'>indent</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>prefix</span> <span class='hs-str'>"    "</span>
<a name="line-1188"></a>
<a name="line-1189"></a>
<a name="line-1190"></a><a name="noskipBoring"></a><span class='hs-definition'>noskipBoring</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1191"></a>                <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"boring"</span><span class='hs-keyglyph'>]</span>
<a name="line-1192"></a>                 <span class='hs-conid'>Boring</span> <span class='hs-str'>"don't skip boring files"</span><span class='hs-layout'>,</span>
<a name="line-1193"></a>                 <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-boring"</span><span class='hs-keyglyph'>]</span>
<a name="line-1194"></a>                 <span class='hs-conid'>SkipBoring</span> <span class='hs-str'>"skip boring files [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1195"></a>
<a name="line-1196"></a><a name="allowProblematicFilenames"></a><span class='hs-definition'>allowProblematicFilenames</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1197"></a>                <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"case-ok"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AllowCaseOnly</span>
<a name="line-1198"></a>                 <span class='hs-str'>"don't refuse to add files differing only in case"</span>
<a name="line-1199"></a>                <span class='hs-layout'>,</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-case-ok"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontAllowCaseOnly</span>
<a name="line-1200"></a>                 <span class='hs-str'>"refuse to add files whose name differ only in case [DEFAULT]"</span>
<a name="line-1201"></a>                <span class='hs-layout'>,</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"reserved-ok"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AllowWindowsReserved</span>
<a name="line-1202"></a>                 <span class='hs-str'>"don't refuse to add files with Windows-reserved names"</span>
<a name="line-1203"></a>                <span class='hs-layout'>,</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-reserved-ok"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontAllowWindowsReserved</span>
<a name="line-1204"></a>                 <span class='hs-str'>"refuse to add files with Windows-reserved names [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1205"></a>
<a name="line-1206"></a><a name="diffflags"></a><span class='hs-definition'>diffflags</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1207"></a>            <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"diff-opts"</span><span class='hs-keyglyph'>]</span>
<a name="line-1208"></a>            <span class='hs-conid'>DiffFlags</span> <span class='hs-str'>"OPTIONS"</span> <span class='hs-str'>"options to pass to diff"</span>
<a name="line-1209"></a>
<a name="line-1210"></a><a name="changesFormat"></a><span class='hs-definition'>changesFormat</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>concatOptions</span> <span class='hs-varop'>$</span>
<a name="line-1211"></a>                 <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span>
<a name="line-1212"></a>                   <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"context"</span><span class='hs-keyglyph'>]</span>
<a name="line-1213"></a>                    <span class='hs-conid'>GenContext</span> <span class='hs-str'>"give output suitable for get --context"</span> <span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span>
<a name="line-1214"></a>                  <span class='hs-varid'>xmloutput</span><span class='hs-layout'>,</span>
<a name="line-1215"></a>                  <span class='hs-varid'>humanReadable</span><span class='hs-layout'>,</span>
<a name="line-1216"></a>                  <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span>
<a name="line-1217"></a>                  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"number"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NumberPatches</span> <span class='hs-str'>"number the changes"</span><span class='hs-layout'>,</span>
<a name="line-1218"></a>                  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"count"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Count</span> <span class='hs-str'>"output count of changes"</span> <span class='hs-keyglyph'>]</span>
<a name="line-1219"></a>                 <span class='hs-keyglyph'>]</span>
<a name="line-1220"></a><a name="changesReverse"></a><span class='hs-definition'>changesReverse</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1221"></a>                  <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"reverse"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Reverse</span>
<a name="line-1222"></a>                   <span class='hs-str'>"show changes in reverse order"</span>
<a name="line-1223"></a>                  <span class='hs-layout'>,</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-reverse"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Forward</span>
<a name="line-1224"></a>                   <span class='hs-str'>"show changes in the usual order [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1225"></a>
<a name="line-1226"></a><a name="onlyToFiles"></a><span class='hs-definition'>onlyToFiles</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1227"></a><span class='hs-definition'>onlyToFiles</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1228"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"only-to-files"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OnlyChangesToFiles</span>
<a name="line-1229"></a>     <span class='hs-str'>"show only changes to specified files"</span><span class='hs-layout'>,</span>
<a name="line-1230"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-only-to-files"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>ChangesToAllFiles</span>
<a name="line-1231"></a>     <span class='hs-str'>"show changes to all files [DEFAULT]"</span><span class='hs-keyglyph'>]</span>
<a name="line-1232"></a>
<a name="line-1233"></a>
<a name="line-1234"></a><a name="humanReadable"></a><span class='hs-definition'>humanReadable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1235"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"human-readable"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HumanReadable</span> <span class='hs-str'>"give human-readable output"</span>
<a name="line-1236"></a>
<a name="line-1237"></a><a name="machineReadable"></a><span class='hs-definition'>machineReadable</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1238"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"machine-readable"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>MachineReadable</span> <span class='hs-str'>"give machine-readable output"</span>
<a name="line-1239"></a>
<a name="line-1240"></a><a name="pipe"></a><span class='hs-definition'>pipe</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-1241"></a><span class='hs-definition'>pipe</span> <span class='hs-keyglyph'>=</span>
<a name="line-1242"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"pipe"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Pipe</span> <span class='hs-str'>"ask user interactively for the patch metadata"</span>
<a name="line-1243"></a>
<a name="line-1244"></a><a name="interactive"></a><span class='hs-definition'>interactive</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-1245"></a><span class='hs-definition'>interactive</span> <span class='hs-keyglyph'>=</span>
<a name="line-1246"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'i'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"interactive"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Interactive</span>
<a name="line-1247"></a>                         <span class='hs-str'>"prompt user interactively"</span>
<a name="line-1248"></a>
<a name="line-1249"></a><a name="allPatches"></a><span class='hs-definition'>allPatches</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span>
<a name="line-1250"></a><span class='hs-definition'>allPatches</span> <span class='hs-keyglyph'>=</span>
<a name="line-1251"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'a'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"all"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>All</span> <span class='hs-str'>"answer yes to all patches"</span>
<a name="line-1252"></a>
<a name="line-1253"></a><a name="allInteractive"></a><span class='hs-definition'>allInteractive</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>allPatches</span><span class='hs-layout'>,</span> <span class='hs-varid'>interactive</span><span class='hs-keyglyph'>]</span>
<a name="line-1254"></a>
<a name="line-1255"></a><a name="allPipeInteractive"></a><span class='hs-definition'>allPipeInteractive</span>
<a name="line-1256"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>allPatches</span><span class='hs-layout'>,</span><span class='hs-varid'>pipe</span><span class='hs-layout'>,</span><span class='hs-varid'>interactive</span><span class='hs-keyglyph'>]</span>
<a name="line-1257"></a>
<a name="line-1258"></a><span class='hs-definition'>pipeInteractive</span> <span class='hs-keyglyph'>=</span>
<a name="line-1259"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>pipe</span><span class='hs-layout'>,</span> <span class='hs-varid'>interactive</span><span class='hs-keyglyph'>]</span>
<a name="line-1260"></a>
<a name="line-1261"></a><a name="repoCombinator"></a><span class='hs-definition'>repoCombinator</span> <span class='hs-keyglyph'>=</span>
<a name="line-1262"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1263"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"intersection"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Intersection</span>
<a name="line-1264"></a>     <span class='hs-str'>"take intersection of all repositories"</span><span class='hs-layout'>,</span>
<a name="line-1265"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"union"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Union</span>
<a name="line-1266"></a>     <span class='hs-str'>"take union of all repositories [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1267"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"complement"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Complement</span>
<a name="line-1268"></a>     <span class='hs-str'>"take complement of repositories (in order listed)"</span><span class='hs-keyglyph'>]</span>
<a name="line-1269"></a>
<a name="line-1270"></a><a name="listFiles"></a><span class='hs-comment'>-- | Get a list of all non-boring files and directories in the working copy.</span>
<a name="line-1271"></a><span class='hs-definition'>listFiles</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span>
<a name="line-1272"></a><span class='hs-definition'>listFiles</span> <span class='hs-keyglyph'>=</span>  <span class='hs-keyword'>do</span> <span class='hs-varid'>nonboring</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>restrictBoring</span> <span class='hs-varid'>emptyTree</span>
<a name="line-1273"></a>                <span class='hs-varid'>working</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>expand</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>applyTreeFilter</span> <span class='hs-varid'>nonboring</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>readPlainTree</span> <span class='hs-str'>"."</span>
<a name="line-1274"></a>                <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>anchorPath</span> <span class='hs-str'>""</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fst</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>list</span> <span class='hs-varid'>working</span>
<a name="line-1275"></a>
<a name="line-1276"></a><a name="listUnregisteredFiles"></a><span class='hs-comment'>-- | 'listUnregisteredFiles' returns the list of all non-boring unregistered</span>
<a name="line-1277"></a><span class='hs-comment'>-- files in the repository.</span>
<a name="line-1278"></a><span class='hs-definition'>listUnregisteredFiles</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span>
<a name="line-1279"></a><span class='hs-definition'>listUnregisteredFiles</span> <span class='hs-keyglyph'>=</span>
<a name="line-1280"></a>    <span class='hs-keyword'>do</span> <span class='hs-varid'>unregd</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>listFiles</span>
<a name="line-1281"></a>       <span class='hs-varid'>regd</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>listRegisteredFiles</span>
<a name="line-1282"></a>       <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>unregd</span> <span class='hs-varop'>\\</span> <span class='hs-varid'>regd</span> <span class='hs-comment'>-- (inefficient)</span>
<a name="line-1283"></a>
<a name="line-1284"></a><a name="listRegisteredFiles"></a><span class='hs-comment'>-- | 'listRegisteredFiles' returns the list of all registered files in the repository.</span>
<a name="line-1285"></a><span class='hs-definition'>listRegisteredFiles</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span>
<a name="line-1286"></a><span class='hs-definition'>listRegisteredFiles</span> <span class='hs-keyglyph'>=</span>
<a name="line-1287"></a>    <span class='hs-keyword'>do</span> <span class='hs-varid'>recorded</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>expand</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>withRepository</span> <span class='hs-conid'>[]</span> <span class='hs-layout'>(</span><span class='hs-conid'>RepoJob</span> <span class='hs-varid'>readRecordedAndPending</span><span class='hs-layout'>)</span>
<a name="line-1288"></a>       <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>anchorPath</span> <span class='hs-str'>""</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fst</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>list</span> <span class='hs-varid'>recorded</span>
<a name="line-1289"></a>
<a name="line-1290"></a><a name="optionsLatex"></a><span class='hs-definition'>optionsLatex</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-1291"></a><span class='hs-definition'>optionsLatex</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\\begin{tabular}{lll}\n"</span><span class='hs-varop'>++</span>
<a name="line-1292"></a>                     <span class='hs-varid'>unlines</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>optionListLatex</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span><span class='hs-varop'>++</span>
<a name="line-1293"></a>                     <span class='hs-str'>"\\end{tabular}\n"</span>
<a name="line-1294"></a>
<a name="line-1295"></a><a name="latexHelp"></a><span class='hs-definition'>latexHelp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-1296"></a><span class='hs-definition'>latexHelp</span> <span class='hs-varid'>h</span>
<a name="line-1297"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\\begin{minipage}{7cm}\n\\raggedright\n"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>h</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\\end{minipage}\n"</span>
<a name="line-1298"></a>
<a name="line-1299"></a><a name="optionListLatex"></a><span class='hs-definition'>optionListLatex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-1300"></a><span class='hs-definition'>optionListLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>optionLatex</span> <span class='hs-varid'>o</span>
<a name="line-1301"></a><span class='hs-definition'>optionListLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsMultipleChoiceOption</span> <span class='hs-varid'>os</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unlines</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>optionLatex</span> <span class='hs-varid'>os</span><span class='hs-layout'>)</span>
<a name="line-1302"></a><span class='hs-definition'>optionListLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsMutuallyExclusive</span> <span class='hs-varid'>os</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unlines</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>optionLatex</span> <span class='hs-varid'>os</span><span class='hs-layout'>)</span>
<a name="line-1303"></a>
<a name="line-1304"></a><a name="optionLatex"></a><span class='hs-definition'>optionLatex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsAtomicOption</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-1305"></a><span class='hs-definition'>optionLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsInternalOption</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>""</span>
<a name="line-1306"></a><span class='hs-definition'>optionLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-1307"></a>    <span class='hs-varid'>showShortOptions</span> <span class='hs-varid'>a</span> <span class='hs-varop'>++</span> <span class='hs-varid'>showLongOptions</span> <span class='hs-varid'>b</span> <span class='hs-varop'>++</span> <span class='hs-varid'>latexHelp</span> <span class='hs-varid'>h</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\\\\"</span>
<a name="line-1308"></a><span class='hs-definition'>optionLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>arg</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-1309"></a>    <span class='hs-varid'>showShortOptions</span> <span class='hs-varid'>a</span> <span class='hs-varop'>++</span>
<a name="line-1310"></a>    <span class='hs-varid'>showLongOptions</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varop'>++</span><span class='hs-layout'>(</span><span class='hs-str'>" "</span><span class='hs-varop'>++</span><span class='hs-varid'>arg</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-varid'>latexHelp</span> <span class='hs-varid'>h</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\\\\"</span>
<a name="line-1311"></a><span class='hs-definition'>optionLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsAbsPathOrStdOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>arg</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-1312"></a>    <span class='hs-varid'>showShortOptions</span> <span class='hs-varid'>a</span> <span class='hs-varop'>++</span>
<a name="line-1313"></a>    <span class='hs-varid'>showLongOptions</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varop'>++</span><span class='hs-layout'>(</span><span class='hs-str'>" "</span><span class='hs-varop'>++</span><span class='hs-varid'>arg</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-varid'>latexHelp</span> <span class='hs-varid'>h</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\\\\"</span>
<a name="line-1314"></a><span class='hs-definition'>optionLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>arg</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-1315"></a>    <span class='hs-varid'>showShortOptions</span> <span class='hs-varid'>a</span> <span class='hs-varop'>++</span>
<a name="line-1316"></a>    <span class='hs-varid'>showLongOptions</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varop'>++</span><span class='hs-layout'>(</span><span class='hs-str'>" "</span><span class='hs-varop'>++</span><span class='hs-varid'>arg</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-varid'>latexHelp</span> <span class='hs-varid'>h</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\\\\"</span>
<a name="line-1317"></a><span class='hs-definition'>optionLatex</span> <span class='hs-layout'>(</span><span class='hs-conid'>DarcsOptAbsPathOption</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>arg</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-1318"></a>    <span class='hs-varid'>showShortOptions</span> <span class='hs-varid'>a</span> <span class='hs-varop'>++</span>
<a name="line-1319"></a>    <span class='hs-varid'>showLongOptions</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varop'>++</span><span class='hs-layout'>(</span><span class='hs-str'>"[="</span><span class='hs-varop'>++</span><span class='hs-varid'>arg</span><span class='hs-varop'>++</span><span class='hs-str'>"]"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-varid'>latexHelp</span> <span class='hs-varid'>h</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\\\\"</span>
<a name="line-1320"></a>
<a name="line-1321"></a><a name="showShortOptions"></a><span class='hs-definition'>showShortOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Char</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-1322"></a><span class='hs-definition'>showShortOptions</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"&amp;"</span>
<a name="line-1323"></a><span class='hs-definition'>showShortOptions</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>c</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\\verb!-"</span><span class='hs-varop'>++</span><span class='hs-keyglyph'>[</span><span class='hs-varid'>c</span><span class='hs-keyglyph'>]</span><span class='hs-varop'>++</span><span class='hs-str'>"! &amp;"</span>
<a name="line-1324"></a><span class='hs-definition'>showShortOptions</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span><span class='hs-conop'>:</span><span class='hs-varid'>cs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\\verb!-"</span><span class='hs-varop'>++</span><span class='hs-keyglyph'>[</span><span class='hs-varid'>c</span><span class='hs-keyglyph'>]</span><span class='hs-varop'>++</span><span class='hs-str'>"!,"</span><span class='hs-varop'>++</span><span class='hs-varid'>showShortOptions</span> <span class='hs-varid'>cs</span>
<a name="line-1325"></a>
<a name="line-1326"></a><a name="showLongOptions"></a><span class='hs-definition'>showLongOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-1327"></a><span class='hs-definition'>showLongOptions</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>" &amp;"</span>
<a name="line-1328"></a><span class='hs-definition'>showLongOptions</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>s</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\\verb!--"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>s</span> <span class='hs-varop'>++</span> <span class='hs-str'>"! &amp;"</span>
<a name="line-1329"></a><span class='hs-definition'>showLongOptions</span> <span class='hs-layout'>(</span><span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-varid'>ss</span><span class='hs-layout'>)</span>
<a name="line-1330"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\\verb!--"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>s</span> <span class='hs-varop'>++</span> <span class='hs-str'>"!,"</span><span class='hs-varop'>++</span> <span class='hs-varid'>showLongOptions</span> <span class='hs-varid'>ss</span>
<a name="line-1331"></a>
<a name="line-1332"></a><a name="setScriptsExecutableOption"></a><span class='hs-definition'>setScriptsExecutableOption</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1333"></a><span class='hs-definition'>setScriptsExecutableOption</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1334"></a>                              <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"set-scripts-executable"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>SetScriptsExecutable</span>
<a name="line-1335"></a>                               <span class='hs-str'>"make scripts executable"</span><span class='hs-layout'>,</span>
<a name="line-1336"></a>                               <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-set-scripts-executable"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-set-scripts-executable"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontSetScriptsExecutable</span>
<a name="line-1337"></a>                               <span class='hs-str'>"don't make scripts executable"</span><span class='hs-keyglyph'>]</span>
<a name="line-1338"></a>
<a name="line-1339"></a><a name="bisect"></a><span class='hs-definition'>bisect</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1340"></a><span class='hs-definition'>bisect</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"bisect"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Bisect</span>
<a name="line-1341"></a>         <span class='hs-str'>"binary instead of linear search"</span>
<a name="line-1342"></a>
<a name="line-1343"></a><a name="relink"></a><span class='hs-definition'>relink</span><span class='hs-layout'>,</span> <span class='hs-varid'>sibling</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1344"></a><span class='hs-definition'>relink</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"relink"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Relink</span>
<a name="line-1345"></a>         <span class='hs-str'>"relink random internal data to a sibling"</span>
<a name="line-1346"></a>
<a name="line-1347"></a><a name="sibling"></a><span class='hs-definition'>sibling</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1348"></a>  <span class='hs-conid'>DarcsAbsPathOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"sibling"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Sibling</span> <span class='hs-str'>"URL"</span>
<a name="line-1349"></a>          <span class='hs-str'>"specify a sibling directory"</span>
<a name="line-1350"></a>
<a name="line-1351"></a><a name="flagsToSiblings"></a><span class='hs-comment'>-- | 'flagsToSiblings' collects the contents of all @Sibling@ flags in a list of flags.</span>
<a name="line-1352"></a><span class='hs-definition'>flagsToSiblings</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>AbsolutePath</span><span class='hs-keyglyph'>]</span>
<a name="line-1353"></a><span class='hs-definition'>flagsToSiblings</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Sibling</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span> <span class='hs-varid'>l</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>s</span> <span class='hs-conop'>:</span> <span class='hs-layout'>(</span><span class='hs-varid'>flagsToSiblings</span> <span class='hs-varid'>l</span><span class='hs-layout'>)</span>
<a name="line-1354"></a><span class='hs-definition'>flagsToSiblings</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span> <span class='hs-conop'>:</span> <span class='hs-varid'>l</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flagsToSiblings</span> <span class='hs-varid'>l</span>
<a name="line-1355"></a><span class='hs-definition'>flagsToSiblings</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-1356"></a>
<a name="line-1357"></a><a name="reorderPatches"></a><span class='hs-definition'>reorderPatches</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1358"></a><span class='hs-definition'>reorderPatches</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"reorder-patches"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Reorder</span>
<a name="line-1359"></a>                  <span class='hs-str'>"reorder the patches in the repository"</span>
<a name="line-1360"></a>
<a name="line-1361"></a><a name="sendmailCmd"></a><span class='hs-definition'>sendmailCmd</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1362"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"sendmail-command"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>SendmailCmd</span> <span class='hs-str'>"COMMAND"</span> <span class='hs-str'>"specify sendmail command"</span>
<a name="line-1363"></a>
<a name="line-1364"></a><a name="environmentHelpSendmail"></a><span class='hs-definition'>environmentHelpSendmail</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>String</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-1365"></a><span class='hs-definition'>environmentHelpSendmail</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-str'>"SENDMAIL"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-keyglyph'>[</span>
<a name="line-1366"></a> <span class='hs-str'>"On Unix, the `darcs send' command relies on sendmail(8).  The"</span><span class='hs-layout'>,</span>
<a name="line-1367"></a> <span class='hs-str'>"`--sendmail-command' or $SENDMAIL environment variable can be used to"</span><span class='hs-layout'>,</span>
<a name="line-1368"></a> <span class='hs-str'>"provide an explicit path to this program; otherwise the standard"</span><span class='hs-layout'>,</span>
<a name="line-1369"></a> <span class='hs-str'>"locations /usr/sbin/sendmail and /usr/lib/sendmail will be tried."</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-1370"></a><span class='hs-comment'>-- FIXME: mention the following also:</span>
<a name="line-1371"></a><span class='hs-comment'>-- * sendmail(8) is not sendmail-specific;</span>
<a name="line-1372"></a><span class='hs-comment'>-- * nowadays, desktops often have no MTA or an unconfigured MTA --</span>
<a name="line-1373"></a><span class='hs-comment'>--   which is awful, because it accepts mail but doesn't relay it;</span>
<a name="line-1374"></a><span class='hs-comment'>-- * in this case, can be a sendmail(8)-emulating wrapper on top of an</span>
<a name="line-1375"></a><span class='hs-comment'>--   MUA that sends mail directly to a smarthost; and</span>
<a name="line-1376"></a><span class='hs-comment'>-- * on a multi-user system without an MTA and on which you haven't</span>
<a name="line-1377"></a><span class='hs-comment'>--   got root, can be msmtp.</span>
<a name="line-1378"></a>
<a name="line-1379"></a><a name="getSendmailCmd"></a><span class='hs-comment'>-- |'getSendmailCmd' takes a list of flags and returns the sendmail command</span>
<a name="line-1380"></a><span class='hs-comment'>-- to be used by @darcs send@. Looks for a command specified by</span>
<a name="line-1381"></a><span class='hs-comment'>-- @SendmailCmd \"command\"@ in that list of flags, if any.</span>
<a name="line-1382"></a><span class='hs-comment'>-- This flag is present if darcs was invoked with @--sendmail-command=COMMAND@</span>
<a name="line-1383"></a><span class='hs-comment'>-- Alternatively the user can set @$S@@ENDMAIL@ which will be used as a fallback if present.</span>
<a name="line-1384"></a><span class='hs-definition'>getSendmailCmd</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>String</span>
<a name="line-1385"></a><span class='hs-definition'>getSendmailCmd</span> <span class='hs-layout'>(</span><span class='hs-conid'>SendmailCmd</span> <span class='hs-varid'>a</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varid'>a</span>
<a name="line-1386"></a><span class='hs-definition'>getSendmailCmd</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>flags</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getSendmailCmd</span> <span class='hs-varid'>flags</span>
<a name="line-1387"></a><span class='hs-definition'>getSendmailCmd</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span>   <span class='hs-keyword'>do</span> <span class='hs-varid'>easy_sendmail</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>firstJustIO</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>maybeGetEnv</span> <span class='hs-str'>"SENDMAIL"</span> <span class='hs-keyglyph'>]</span>
<a name="line-1388"></a>                         <span class='hs-keyword'>case</span> <span class='hs-varid'>easy_sendmail</span> <span class='hs-keyword'>of</span>
<a name="line-1389"></a>                            <span class='hs-conid'>Just</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>a</span>
<a name="line-1390"></a>                            <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-str'>""</span>
<a name="line-1391"></a>
<a name="line-1392"></a><a name="files"></a><span class='hs-definition'>files</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1393"></a><span class='hs-definition'>files</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1394"></a>        <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"files"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Files</span>
<a name="line-1395"></a>         <span class='hs-str'>"include files in output [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1396"></a>         <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-files"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoFiles</span>
<a name="line-1397"></a>         <span class='hs-str'>"don't include files in output"</span><span class='hs-keyglyph'>]</span>
<a name="line-1398"></a>
<a name="line-1399"></a><a name="directories"></a><span class='hs-definition'>directories</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1400"></a><span class='hs-definition'>directories</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1401"></a>              <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"directories"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Directories</span>
<a name="line-1402"></a>               <span class='hs-str'>"include directories in output [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1403"></a>               <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-directories"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoDirectories</span>
<a name="line-1404"></a>               <span class='hs-str'>"don't include directories in output"</span><span class='hs-keyglyph'>]</span>
<a name="line-1405"></a>
<a name="line-1406"></a><a name="pending"></a><span class='hs-definition'>pending</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1407"></a><span class='hs-definition'>pending</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1408"></a>              <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"pending"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Pending</span>
<a name="line-1409"></a>               <span class='hs-str'>"reflect pending patches in output [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1410"></a>               <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-pending"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoPending</span>
<a name="line-1411"></a>               <span class='hs-str'>"only included recorded patches in output"</span><span class='hs-keyglyph'>]</span>
<a name="line-1412"></a>
<a name="line-1413"></a><a name="nullFlag"></a><span class='hs-definition'>nullFlag</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>        <span class='hs-comment'>-- "null" is already taken</span>
<a name="line-1414"></a><span class='hs-definition'>nullFlag</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-keyglyph'>[</span><span class='hs-chr'>'0'</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"null"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NullFlag</span>
<a name="line-1415"></a>       <span class='hs-str'>"separate file names by NUL characters"</span>
<a name="line-1416"></a>
<a name="line-1417"></a><a name="setEnvDarcsPatches"></a><span class='hs-comment'>-- | Set the DARCS_PATCHES and DARCS_PATCHES_XML environment variables</span>
<a name="line-1418"></a><span class='hs-comment'>-- with info about the given patches, for use in post-hooks.</span>
<a name="line-1419"></a><span class='hs-definition'>setEnvDarcsPatches</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>RepoPatch</span> <span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-conid'>ApplyState</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>~</span> <span class='hs-conid'>Tree</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>FL</span> <span class='hs-layout'>(</span><span class='hs-conid'>PatchInfoAnd</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-conid'>C</span><span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-1420"></a><span class='hs-cpp'>#ifndef WIN32</span>
<a name="line-1421"></a><span class='hs-definition'>setEnvDarcsPatches</span> <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-1422"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Defining set of chosen patches"</span>
<a name="line-1423"></a>  <span class='hs-varid'>beginTedious</span> <span class='hs-varid'>k</span>
<a name="line-1424"></a>  <span class='hs-varid'>tediousSize</span> <span class='hs-varid'>k</span> <span class='hs-num'>3</span>
<a name="line-1425"></a>  <span class='hs-varid'>finishedOneIO</span> <span class='hs-varid'>k</span> <span class='hs-str'>"DARCS_PATCHES"</span>
<a name="line-1426"></a>  <span class='hs-varid'>setEnvCautiously</span> <span class='hs-str'>"DARCS_PATCHES"</span> <span class='hs-layout'>(</span><span class='hs-varid'>renderString</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Darcs</span><span class='hs-varop'>.</span><span class='hs-conid'>Patch</span><span class='hs-varop'>.</span><span class='hs-varid'>summary</span> <span class='hs-varid'>ps</span><span class='hs-layout'>)</span>
<a name="line-1427"></a>  <span class='hs-varid'>finishedOneIO</span> <span class='hs-varid'>k</span> <span class='hs-str'>"DARCS_PATCHES_XML"</span>
<a name="line-1428"></a>  <span class='hs-varid'>setEnvCautiously</span> <span class='hs-str'>"DARCS_PATCHES_XML"</span>
<a name="line-1429"></a>                       <span class='hs-layout'>(</span><span class='hs-varid'>renderString</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-str'>"&lt;patches&gt;"</span> <span class='hs-varop'>$$</span>
<a name="line-1430"></a>                        <span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapFL</span> <span class='hs-layout'>(</span><span class='hs-varid'>toXml</span> <span class='hs-varop'>.</span> <span class='hs-varid'>info</span><span class='hs-layout'>)</span> <span class='hs-varid'>ps</span><span class='hs-layout'>)</span> <span class='hs-varop'>$$</span>
<a name="line-1431"></a>                        <span class='hs-varid'>text</span> <span class='hs-str'>"&lt;/patches&gt;"</span><span class='hs-layout'>)</span>
<a name="line-1432"></a>  <span class='hs-varid'>finishedOneIO</span> <span class='hs-varid'>k</span> <span class='hs-str'>"DARCS_FILES"</span>
<a name="line-1433"></a>  <span class='hs-varid'>setEnvCautiously</span> <span class='hs-str'>"DARCS_FILES"</span> <span class='hs-layout'>(</span><span class='hs-varid'>unlines</span><span class='hs-varop'>$</span> <span class='hs-varid'>listTouchedFiles</span> <span class='hs-varid'>ps</span><span class='hs-layout'>)</span>
<a name="line-1434"></a>  <span class='hs-varid'>endTedious</span> <span class='hs-varid'>k</span>
<a name="line-1435"></a>
<a name="line-1436"></a><a name="setEnvCautiously"></a><span class='hs-comment'>-- | Set some environment variable to the given value, unless said value</span>
<a name="line-1437"></a><span class='hs-comment'>-- is longer than 10K characters, in which case do nothing.</span>
<a name="line-1438"></a><span class='hs-definition'>setEnvCautiously</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-1439"></a><span class='hs-definition'>setEnvCautiously</span> <span class='hs-varid'>e</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>toobig</span> <span class='hs-layout'>(</span><span class='hs-num'>10</span><span class='hs-varop'>*</span><span class='hs-num'>1024</span><span class='hs-layout'>)</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-1440"></a>                     <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>setEnv</span> <span class='hs-varid'>e</span> <span class='hs-varid'>v</span> <span class='hs-conid'>True</span>
<a name="line-1441"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>toobig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1442"></a>          <span class='hs-varid'>toobig</span> <span class='hs-num'>0</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1443"></a>          <span class='hs-varid'>toobig</span> <span class='hs-keyword'>_</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span>
<a name="line-1444"></a>          <span class='hs-varid'>toobig</span> <span class='hs-varid'>n</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toobig</span> <span class='hs-layout'>(</span><span class='hs-varid'>n</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span> <span class='hs-varid'>xs</span>
<a name="line-1445"></a><span class='hs-cpp'>#else</span>
<a name="line-1446"></a><span class='hs-definition'>setEnvDarcsPatches</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-1447"></a><span class='hs-cpp'>#endif</span>
<a name="line-1448"></a>
<a name="line-1449"></a><a name="setEnvDarcsFiles"></a><span class='hs-comment'>-- | Set the DARCS_FILES environment variable to the files touched by the</span>
<a name="line-1450"></a><span class='hs-comment'>-- given patch, one per line, for use in post-hooks.</span>
<a name="line-1451"></a><span class='hs-definition'>setEnvDarcsFiles</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Patchy</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>p</span> <span class='hs-conid'>C</span><span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-1452"></a><span class='hs-cpp'>#ifndef WIN32</span>
<a name="line-1453"></a><span class='hs-definition'>setEnvDarcsFiles</span> <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>setEnvCautiously</span> <span class='hs-str'>"DARCS_FILES"</span> <span class='hs-layout'>(</span><span class='hs-varid'>unlines</span> <span class='hs-varop'>$</span> <span class='hs-varid'>listTouchedFiles</span> <span class='hs-varid'>ps</span><span class='hs-layout'>)</span>
<a name="line-1454"></a><span class='hs-cpp'>#else</span>
<a name="line-1455"></a><span class='hs-definition'>setEnvDarcsFiles</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-1456"></a><span class='hs-cpp'>#endif</span>
<a name="line-1457"></a>
<a name="line-1458"></a><a name="posthookCmd"></a><span class='hs-definition'>posthookCmd</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1459"></a><span class='hs-definition'>posthookCmd</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1460"></a>               <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"posthook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>PosthookCmd</span>
<a name="line-1461"></a>                <span class='hs-str'>"COMMAND"</span> <span class='hs-str'>"specify command to run after this darcs command"</span><span class='hs-layout'>,</span>
<a name="line-1462"></a>                <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-posthook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoPosthook</span>
<a name="line-1463"></a>                <span class='hs-str'>"don't run posthook command"</span><span class='hs-keyglyph'>]</span>
<a name="line-1464"></a>
<a name="line-1465"></a><a name="posthookPrompt"></a><span class='hs-definition'>posthookPrompt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1466"></a><span class='hs-definition'>posthookPrompt</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1467"></a>                  <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"prompt-posthook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AskPosthook</span>
<a name="line-1468"></a>                   <span class='hs-str'>"prompt before running posthook [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1469"></a>                   <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"run-posthook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>RunPosthook</span>
<a name="line-1470"></a>                   <span class='hs-str'>"run posthook command without prompting"</span><span class='hs-keyglyph'>]</span>
<a name="line-1471"></a>
<a name="line-1472"></a><a name="getPosthookCmd"></a><span class='hs-comment'>-- | 'getPosthookCmd' takes a list of flags and returns the posthook command</span>
<a name="line-1473"></a><span class='hs-comment'>--  specified by @PosthookCmd a@ in that list of flags, if any.</span>
<a name="line-1474"></a><span class='hs-definition'>getPosthookCmd</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-1475"></a><span class='hs-definition'>getPosthookCmd</span> <span class='hs-layout'>(</span><span class='hs-conid'>PosthookCmd</span> <span class='hs-varid'>a</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>a</span>
<a name="line-1476"></a><span class='hs-definition'>getPosthookCmd</span> <span class='hs-layout'>(</span><span class='hs-conid'>NoPosthook</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-1477"></a><span class='hs-definition'>getPosthookCmd</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>flags</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getPosthookCmd</span> <span class='hs-varid'>flags</span>
<a name="line-1478"></a><span class='hs-definition'>getPosthookCmd</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-1479"></a>
<a name="line-1480"></a><a name="prehookCmd"></a><span class='hs-definition'>prehookCmd</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1481"></a><span class='hs-definition'>prehookCmd</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1482"></a>               <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"prehook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>PrehookCmd</span>
<a name="line-1483"></a>                <span class='hs-str'>"COMMAND"</span> <span class='hs-str'>"specify command to run before this darcs command"</span><span class='hs-layout'>,</span>
<a name="line-1484"></a>                <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-prehook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoPrehook</span>
<a name="line-1485"></a>                <span class='hs-str'>"don't run prehook command"</span><span class='hs-keyglyph'>]</span>
<a name="line-1486"></a>
<a name="line-1487"></a><a name="prehookPrompt"></a><span class='hs-definition'>prehookPrompt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1488"></a><span class='hs-definition'>prehookPrompt</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1489"></a>                  <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"prompt-prehook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AskPrehook</span>
<a name="line-1490"></a>                   <span class='hs-str'>"prompt before running prehook [DEFAULT]"</span><span class='hs-layout'>,</span>
<a name="line-1491"></a>                   <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"run-prehook"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>RunPrehook</span>
<a name="line-1492"></a>                   <span class='hs-str'>"run prehook command without prompting"</span><span class='hs-keyglyph'>]</span>
<a name="line-1493"></a>
<a name="line-1494"></a><a name="getPrehookCmd"></a><span class='hs-comment'>-- | 'getPrehookCmd' takes a list of flags and returns the prehook command</span>
<a name="line-1495"></a><span class='hs-comment'>--  specified by @PrehookCmd a@ in that list of flags, if any.</span>
<a name="line-1496"></a><span class='hs-definition'>getPrehookCmd</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>String</span>
<a name="line-1497"></a><span class='hs-definition'>getPrehookCmd</span> <span class='hs-layout'>(</span><span class='hs-conid'>PrehookCmd</span> <span class='hs-varid'>a</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>a</span>
<a name="line-1498"></a><span class='hs-definition'>getPrehookCmd</span> <span class='hs-layout'>(</span><span class='hs-conid'>NoPrehook</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-1499"></a><span class='hs-definition'>getPrehookCmd</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-varid'>flags</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getPrehookCmd</span> <span class='hs-varid'>flags</span>
<a name="line-1500"></a><span class='hs-definition'>getPrehookCmd</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-1501"></a>
<a name="line-1502"></a><a name="networkOptions"></a><span class='hs-definition'>networkOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsOption</span><span class='hs-keyglyph'>]</span>
<a name="line-1503"></a><span class='hs-definition'>networkOptions</span> <span class='hs-keyglyph'>=</span>
<a name="line-1504"></a>   <span class='hs-keyglyph'>[</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1505"></a>       <span class='hs-keyglyph'>[</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-http-pipelining"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoHTTPPipelining</span>
<a name="line-1506"></a>                          <span class='hs-str'>"disable HTTP pipelining"</span>
<a name="line-1507"></a>       <span class='hs-keyglyph'>]</span>
<a name="line-1508"></a>   <span class='hs-layout'>,</span> <span class='hs-varid'>remoteDarcs</span> <span class='hs-keyglyph'>]</span>
<a name="line-1509"></a>
<a name="line-1510"></a><a name="remoteDarcs"></a><span class='hs-definition'>remoteDarcs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1511"></a><span class='hs-definition'>remoteDarcs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1512"></a>  <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"remote-darcs"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>RemoteDarcsOpt</span> <span class='hs-str'>"COMMAND"</span>
<a name="line-1513"></a>                <span class='hs-str'>"name of the darcs executable on the remote server"</span>
<a name="line-1514"></a>
<a name="line-1515"></a><a name="noCache"></a><span class='hs-definition'>noCache</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1516"></a><span class='hs-definition'>noCache</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1517"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-cache"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoCache</span>
<a name="line-1518"></a>                          <span class='hs-str'>"don't use patch caches"</span>
<a name="line-1519"></a>
<a name="line-1520"></a><a name="optimizePristine"></a><span class='hs-definition'>optimizePristine</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1521"></a><span class='hs-definition'>optimizePristine</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1522"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"pristine"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OptimizePristine</span>
<a name="line-1523"></a>                          <span class='hs-str'>"optimize hashed pristine layout"</span>
<a name="line-1524"></a>
<a name="line-1525"></a><a name="optimizeHTTP"></a><span class='hs-definition'>optimizeHTTP</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1526"></a><span class='hs-definition'>optimizeHTTP</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1527"></a>  <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"http"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>OptimizeHTTP</span>
<a name="line-1528"></a>                          <span class='hs-str'>"optimize repository for getting over network"</span>
<a name="line-1529"></a>
<a name="line-1530"></a><a name="usePacks"></a><span class='hs-definition'>usePacks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1531"></a><span class='hs-definition'>usePacks</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1532"></a>  <span class='hs-keyglyph'>[</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"packs"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Packs</span> <span class='hs-str'>"use repository packs [DEFAULT]"</span>
<a name="line-1533"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"no-packs"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>NoPacks</span>
<a name="line-1534"></a>      <span class='hs-str'>"don't use repository packs"</span>
<a name="line-1535"></a>  <span class='hs-keyglyph'>]</span>
<a name="line-1536"></a>
<a name="line-1537"></a><a name="umaskOption"></a><span class='hs-definition'>umaskOption</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1538"></a><span class='hs-definition'>umaskOption</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1539"></a>    <span class='hs-conid'>DarcsArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"umask"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>UMask</span> <span class='hs-str'>"UMASK"</span>
<a name="line-1540"></a>        <span class='hs-str'>"specify umask to use when writing"</span>
<a name="line-1541"></a>
<a name="line-1542"></a><a name="restrictPaths"></a><span class='hs-definition'>restrictPaths</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1543"></a><span class='hs-definition'>restrictPaths</span> <span class='hs-keyglyph'>=</span>
<a name="line-1544"></a>    <span class='hs-conid'>DarcsMultipleChoiceOption</span>
<a name="line-1545"></a>    <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"restrict-paths"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>RestrictPaths</span>
<a name="line-1546"></a>     <span class='hs-str'>"don't allow darcs to touch external files or repo metadata"</span><span class='hs-layout'>,</span>
<a name="line-1547"></a>     <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"dont-restrict-paths"</span><span class='hs-layout'>,</span><span class='hs-str'>"no-restrict-paths"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>DontRestrictPaths</span>
<a name="line-1548"></a>     <span class='hs-str'>"allow darcs to modify any file or directory (unsafe)"</span><span class='hs-keyglyph'>]</span>
<a name="line-1549"></a>
<a name="line-1550"></a><a name="allowUnrelatedRepos"></a><span class='hs-definition'>allowUnrelatedRepos</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1551"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"ignore-unrelated-repos"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>AllowUnrelatedRepos</span>
<a name="line-1552"></a>                         <span class='hs-str'>"do not check if repositories are unrelated"</span>
<a name="line-1553"></a>
<a name="line-1554"></a><a name="justThisRepo"></a><span class='hs-definition'>justThisRepo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1555"></a><span class='hs-definition'>justThisRepo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1556"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"just-this-repo"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>JustThisRepo</span>
<a name="line-1557"></a>                        <span class='hs-str'>"Limit the check or repair to the current repo"</span>
<a name="line-1558"></a>
<a name="line-1559"></a><a name="check"></a><span class='hs-definition'>check</span><span class='hs-layout'>,</span> <span class='hs-varid'>repair</span><span class='hs-layout'>,</span> <span class='hs-varid'>checkOrRepair</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsOption</span>
<a name="line-1560"></a><span class='hs-definition'>check</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1561"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"check"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Check</span>
<a name="line-1562"></a>                        <span class='hs-str'>"Specify checking mode"</span>
<a name="line-1563"></a><a name="repair"></a><span class='hs-definition'>repair</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DarcsSingleOption</span> <span class='hs-varop'>$</span>
<a name="line-1564"></a>    <span class='hs-conid'>DarcsNoArgOption</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"repair"</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Repair</span>
<a name="line-1565"></a>                        <span class='hs-str'>"Specify repair mode"</span>
<a name="line-1566"></a><a name="checkOrRepair"></a><span class='hs-definition'>checkOrRepair</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>concatOptions</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>check</span><span class='hs-layout'>,</span> <span class='hs-varid'>repair</span><span class='hs-keyglyph'>]</span>
<a name="line-1567"></a>
<a name="line-1568"></a><a name="patchSelectFlag"></a><span class='hs-comment'>-- | @'patchSelectFlag' f@ holds whenever @f@ is a way of selecting</span>
<a name="line-1569"></a><span class='hs-comment'>-- patches such as @PatchName n@.</span>
<a name="line-1570"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DarcsFlag</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1571"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-conid'>All</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1572"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>PatchName</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1573"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>OnePatch</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1574"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>SeveralPatch</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1575"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>AfterPatch</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1576"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>UpToPatch</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1577"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>TagName</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1578"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>LastN</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1579"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>OneTag</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1580"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>AfterTag</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1581"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>UpToTag</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1582"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>OnePattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1583"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>SeveralPattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1584"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>AfterPattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1585"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-layout'>(</span><span class='hs-conid'>UpToPattern</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-1586"></a><span class='hs-definition'>patchSelectFlag</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span>
<a name="line-1587"></a>
<a name="line-1588"></a><a name="numberString"></a><span class='hs-comment'>-- | The integer corresponding to a string, if it's only composed of digits.</span>
<a name="line-1589"></a><span class='hs-comment'>--   Otherwise, -1.</span>
<a name="line-1590"></a><span class='hs-definition'>numberString</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span>
<a name="line-1591"></a><span class='hs-definition'>numberString</span> <span class='hs-str'>""</span> <span class='hs-keyglyph'>=</span> <span class='hs-comment'>-</span><span class='hs-num'>1</span>
<a name="line-1592"></a><span class='hs-definition'>numberString</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>all</span> <span class='hs-varid'>isDigit</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>read</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>else</span> <span class='hs-layout'>(</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-1593"></a>
<a name="line-1594"></a><a name="makeScriptsExecutable"></a><span class='hs-definition'>makeScriptsExecutable</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Patchy</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DarcsFlag</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>p</span> <span class='hs-conid'>C</span><span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-1595"></a><span class='hs-definition'>makeScriptsExecutable</span> <span class='hs-varid'>opts</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span>
<a name="line-1596"></a>  <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-conid'>SetScriptsExecutable</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>setScriptsExecutablePatches</span> <span class='hs-varid'>p</span>
</pre></body>
</html>