<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Distribution.Simple.Program.Run</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_Distribution-Simple-Program-Run.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">Cabal-1.14.0: A framework for packaging Haskell software</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>portable</td></tr><tr><th>Maintainer</th><td>cabal-devel@haskell.org</td></tr><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Distribution.Simple.Program.Run</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module provides a data type for program invocations and functions to run them. </p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:ProgramInvocation">ProgramInvocation</a> = <a href="#v:ProgramInvocation">ProgramInvocation</a> {<ul class="subs"><li><a href="#v:progInvokePath">progInvokePath</a> :: <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a></li><li><a href="#v:progInvokeArgs">progInvokeArgs</a> :: [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li><a href="#v:progInvokeEnv">progInvokeEnv</a> :: [(<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>, <a href="../base-4.5.1.0/Data-String.html#t:String">String</a>)]</li><li><a href="#v:progInvokeCwd">progInvokeCwd</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a></li><li><a href="#v:progInvokeInput">progInvokeInput</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></li><li><a href="#v:progInvokeInputEncoding">progInvokeInputEncoding</a> :: <a href="Distribution-Simple-Program-Run.html#t:IOEncoding">IOEncoding</a></li><li><a href="#v:progInvokeOutputEncoding">progInvokeOutputEncoding</a> :: <a href="Distribution-Simple-Program-Run.html#t:IOEncoding">IOEncoding</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:IOEncoding">IOEncoding</a> <ul class="subs"><li>= <a href="#v:IOEncodingText">IOEncodingText</a> </li><li>| <a href="#v:IOEncodingUTF8">IOEncodingUTF8</a> </li></ul></li><li class="src short"><a href="#v:emptyProgramInvocation">emptyProgramInvocation</a> :: <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a></li><li class="src short"><a href="#v:simpleProgramInvocation">simpleProgramInvocation</a> :: <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a> -> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>] -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a></li><li class="src short"><a href="#v:programInvocation">programInvocation</a> :: <a href="Distribution-Simple-Program-Types.html#t:ConfiguredProgram">ConfiguredProgram</a> -> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>] -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a></li><li class="src short"><a href="#v:multiStageProgramInvocation">multiStageProgramInvocation</a> :: <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a> -> (<a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>, <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>, <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>) -> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>] -> [<a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>]</li><li class="src short"><a href="#v:runProgramInvocation">runProgramInvocation</a> :: <a href="Distribution-Verbosity.html#t:Verbosity">Verbosity</a> -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:getProgramInvocationOutput">getProgramInvocationOutput</a> :: <a href="Distribution-Verbosity.html#t:Verbosity">Verbosity</a> -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ProgramInvocation" class="def">ProgramInvocation</a> </p><div class="doc"><p>Represents a specific invocation of a specific program. </p><p>This is used as an intermediate type between deciding how to call a program and actually doing it. This provides the opportunity to the caller to adjust how the program will be called. These invocations can either be run directly or turned into shell or batch scripts. </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ProgramInvocation" class="def">ProgramInvocation</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:progInvokePath" class="def">progInvokePath</a> :: <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:progInvokeArgs" class="def">progInvokeArgs</a> :: [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</dt><dd class="doc empty"> </dd><dt class="src"><a name="v:progInvokeEnv" class="def">progInvokeEnv</a> :: [(<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>, <a href="../base-4.5.1.0/Data-String.html#t:String">String</a>)]</dt><dd class="doc empty"> </dd><dt class="src"><a name="v:progInvokeCwd" class="def">progInvokeCwd</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:progInvokeInput" class="def">progInvokeInput</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:progInvokeInputEncoding" class="def">progInvokeInputEncoding</a> :: <a href="Distribution-Simple-Program-Run.html#t:IOEncoding">IOEncoding</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:progInvokeOutputEncoding" class="def">progInvokeOutputEncoding</a> :: <a href="Distribution-Simple-Program-Run.html#t:IOEncoding">IOEncoding</a></dt><dd class="doc empty"> </dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:IOEncoding" class="def">IOEncoding</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:IOEncodingText" class="def">IOEncodingText</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:IOEncodingUTF8" class="def">IOEncodingUTF8</a></td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:emptyProgramInvocation" class="def">emptyProgramInvocation</a> :: <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a></p></div><div class="top"><p class="src"><a name="v:simpleProgramInvocation" class="def">simpleProgramInvocation</a> :: <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a> -> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>] -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a></p></div><div class="top"><p class="src"><a name="v:programInvocation" class="def">programInvocation</a> :: <a href="Distribution-Simple-Program-Types.html#t:ConfiguredProgram">ConfiguredProgram</a> -> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>] -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a></p></div><div class="top"><p class="src"><a name="v:multiStageProgramInvocation" class="def">multiStageProgramInvocation</a> :: <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a> -> (<a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>, <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>, <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>) -> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>] -> [<a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a>]</p><div class="doc"><p>Like the unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in. </p><p>It takes four template invocations corresponding to the simple, initial, middle and last invocations. If the number of args given is small enough that we can get away with just a single invocation then the simple one is used: </p><pre> $ simple args </pre><p>If the number of args given means that we need to use multiple invocations then the templates for the initial, middle and last invocations are used: </p><pre> $ initial args_0 $ middle args_1 $ middle args_2 ... $ final args_n </pre></div></div><div class="top"><p class="src"><a name="v:runProgramInvocation" class="def">runProgramInvocation</a> :: <a href="Distribution-Verbosity.html#t:Verbosity">Verbosity</a> -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> ()</p></div><div class="top"><p class="src"><a name="v:getProgramInvocationOutput" class="def">getProgramInvocationOutput</a> :: <a href="Distribution-Verbosity.html#t:Verbosity">Verbosity</a> -> <a href="Distribution-Simple-Program-Run.html#t:ProgramInvocation">ProgramInvocation</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>