cooperative-computing-lab/cctools — pull request #263 by rampantmonkey (2013-10-24 20:58:16+00:00)
Title: Makeflow Bifurcation

Makeflow has two typical usage patterns: __Run my workflow__ and __Tell me something about my workflow__.

Both patterns require parsing the workflow description and building the dag but have different user expectations. Running the dag is a potentially long, unresponsive process so it is important to output informative messages during run time. On the other hand, interrogating the dag is a short process which the user expects the results to follow a specific format (DAX, Dot, PPM, ...).

These two behaviors are at odds (as evidenced in #257).

The most robust solution is to move the short, interrogative behaviors into a separate program. A separate program clearly shows the user the purpose of each tool. This also frees up many letters for command line switches (an extremely limited resource) and removes the need for parsing hacks ([rampantmonkey:makeflow_display_filename](https://github.com/rampantmonkey/cctools/tree/makeflow_display_filename)).

The workflow description parsing and dag construction are shared between both patterns. In order to enable sharing of the common code Ben suggested that we hard link the `makeflow` executable and choose the correct option based on the executable name (`argv[0]`). This is the method I used for this pull request.