aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fpm/doc/html/build.1fpm.html182
-rw-r--r--fpm/doc/html/fpm.1fpm.html195
-rw-r--r--fpm/doc/html/help.1fpm.html128
-rw-r--r--fpm/doc/html/new.1fpm.html169
-rw-r--r--fpm/doc/html/run.1fpm.html160
-rw-r--r--fpm/doc/html/test.1fpm.html159
-rw-r--r--fpm/doc/man/cat1/build.1fpm.gzbin0 -> 668 bytes
-rw-r--r--fpm/doc/man/cat1/fpm.1fpm.gzbin0 -> 1066 bytes
-rw-r--r--fpm/doc/man/cat1/help.1fpm.gzbin0 -> 361 bytes
-rw-r--r--fpm/doc/man/cat1/new.1fpm.gzbin0 -> 818 bytes
-rw-r--r--fpm/doc/man/cat1/run.1fpm.gzbin0 -> 635 bytes
-rw-r--r--fpm/doc/man/cat1/test.1fpm.gzbin0 -> 630 bytes
-rw-r--r--fpm/doc/man/index.dbbin0 -> 16384 bytes
-rw-r--r--fpm/doc/man/man1/build.1fpm.gzbin0 -> 765 bytes
-rw-r--r--fpm/doc/man/man1/fpm.1fpm.gzbin0 -> 1150 bytes
-rw-r--r--fpm/doc/man/man1/help.1fpm.gzbin0 -> 469 bytes
-rw-r--r--fpm/doc/man/man1/new.1fpm.gzbin0 -> 909 bytes
-rw-r--r--fpm/doc/man/man1/run.1fpm.gzbin0 -> 731 bytes
-rw-r--r--fpm/doc/man/man1/test.1fpm.gzbin0 -> 728 bytes
-rw-r--r--fpm/doc/src/build.1.man34
-rw-r--r--fpm/doc/src/fpm.1.man59
-rw-r--r--fpm/doc/src/help.1.man20
-rw-r--r--fpm/doc/src/new.1.man44
-rw-r--r--fpm/doc/src/run.1.man36
-rw-r--r--fpm/doc/src/test.1.man35
-rw-r--r--fpm/fpm.toml2
-rw-r--r--fpm/src/fpm_command_line.f90555
-rw-r--r--fpm/test/cli_test/cli_test.f902
28 files changed, 1532 insertions, 248 deletions
diff --git a/fpm/doc/html/build.1fpm.html b/fpm/doc/html/build.1fpm.html
new file mode 100644
index 0000000..4f2b9a8
--- /dev/null
+++ b/fpm/doc/html/build.1fpm.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0" />
+ <title></title>
+ <style>
+ <![CDATA[
+
+ px {font-family: "Lucida Console", Monaco, monospace}
+ p { font-size:100%; line-height:1.1em; }
+ body {xfont-style: sans-serif}
+ body {
+ color:#333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:1em; line-height:1.3em; }
+ a:visited { color:#666; }
+ h1,h2,h3,h4,h5,h6 { color:#333; font-family:georgia, verdana, sans-serif; }
+ h1 { font-size:150%; page-break-before:auto;background-color: #aaaaff}
+ h2 { font-size:143%;color:teal; }
+ h3 { font-size:134%;color:blue; }
+ h4 { font-size:120%;color:gray; }
+ img { max-width: 55em}
+ p{ padding: 0;margin:0; }
+ p{ padding-right:1.4em; }
+ p{ padding-bottom:1em; }
+ p{ padding-top:1em; }
+ p{ whitespace: pre-wrap; }
+ h5,h6 { font-size:100% }
+ a.nav,a:link.nav, a:visited.nav { background-color:#FFF; color:#000; }
+ XXtable { border:double #000; border-collapse:collapse; }
+ XXtable { border-collapse:collapse; }
+ XXtd { border:thin solid #888; }
+ XXtd { border:none; }
+ li { margin-bottom:0.5em; }
+ blockquote { display:block; font-size:100%; line-height:1.1em; margin:0 0 1.5em; padding:0 2.5em; }
+ pre { background-color:#DDD; font-size:100%; overflow:auto; padding:1em; }
+ a,li span { color:#000; }
+ a:hover, a.nav:hover, a:hover math { background-color:#000; color:#FFF; }
+ #Container { margin:0 10px; text-align:center; background-color: #BBB}
+ #Content { border-top:none; margin:auto; padding:0.3em; text-align:left; width:100%; max-width:55em; background:#FFF}
+ span.webName { font-size:.5em; }
+ textarea#content { font-size: 1em; line-height: 1.125; }
+ h1#pageName { line-height:1em; margin:0.2em 0 0.2em 0; padding:0; }
+ .property { color:#666; font-size:100%; }
+ a.existingWikiWord[title]{ //border: 1px dashed #BBB; }
+ .byline { color:#666; font-size:1.0em; font-style:italic; margin-bottom:1em; padding-top:1px; }
+ ]]>
+ </style>
+ <style type="text/css">
+ /*<![CDATA[*/
+ body {
+ background-color: #F0F0F0;
+ color: #000000;
+ }
+ :link { color: #0000FF }
+ :visited { color: #C000C0 }
+ :active { color: #FF0000 }
+ span.c4 {font-size: 80%}
+ td.c3 {font-style: italic}
+ td.c2 {font-weight: bold}
+ div.c1 {text-align: center}
+ /*]]>*/
+ </style>
+</head>
+<body>
+ <a name="top" id="top"></a>
+ <h5><a href="download.html">[UP]</a></h5>
+ <div id="Container">
+ <div id="Content">
+ <div class="c1">
+ <hr />
+ <h1><i>Manual Reference Pages - </i>build&nbsp;(fpm)</h1>
+ <hr />
+ </div><a name="0" id="0">
+ <h3>NAME</h3></a>
+ <blockquote>
+ <b>build(1)</b> - the <b>fpm</b>(1) subcommand to build a project
+ </blockquote><a name="contents" id="contents"></a>
+ <h3>CONTENTS</h3>
+ <blockquote>
+ <a href="#1">Synopsis</a><br />
+ <a href="#2">Description</a><br />
+ <a href="#3">Options</a><br />
+ <a href="#4">Examples</a><br />
+ <a href="#5">See Also</a><br />
+ </blockquote><a name="6" id="6">
+ <h3>SYNOPSIS</h3></a>
+ <blockquote>
+ <pre>
+<b>fpm</b> <i>build</i> [-<b>-release</b>]|[-list]
+<b>fpm</b> <i>build</i> <b>--help</b>|<b>--version</b>
+</pre>
+ </blockquote><a name="2" id="2">
+ <h3>DESCRIPTION</h3></a>
+ <blockquote>
+ The "<b>fpm</b> <i>build</i>" command
+ <blockquote>
+ <table cellpadding="3">
+ <!-- tsb: The "<B>fpm</B> <I>build</I>" command
+ -->
+ <tr>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ <tr valign="top">
+ <td width="3%">o</td>
+ <td>Fetches any dependencies</td>
+ </tr>
+ <tr valign="top">
+ <td width="3%">o</td>
+ <td>Scans your sources</td>
+ </tr>
+ <tr valign="top">
+ <td width="3%">o</td>
+ <td>Builds them in the proper order</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote>
+ <p>The Fortran source files are assumed to be in app/, test/, and src/ by default. The changed or new files found are rebuilt. The results are
+ placed in the <i>build</i>/ directory.</p>
+ <p>Non-default pathnames and remote dependencies are used if specified in the "fpm.toml" file.</p>
+ </blockquote><a name="3" id="3">
+ <h3>OPTIONS</h3></a>
+ <blockquote>
+ <table cellpadding="3">
+ <tr valign="top">
+ <td class="c2" colspan="2">--release</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td><i>build</i> in <i>build</i>/*_release instead of <i>build</i>/*_debug with high optimization instead of full debug options.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">--list</td>
+ <td valign="bottom">list candidates instead of building or running them</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">--help</td>
+ <td valign="bottom">print this help and exit</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">--version</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>print program version information and exit</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote><a name="4" id="4">
+ <h3>EXAMPLES</h3></a>
+ <blockquote>
+ Sample commands:
+ <pre>
+ fpm build # build with debug options
+ fpm build -release # build with high optimization
+</pre>
+ </blockquote><a name="5" id="5">
+ <h3>SEE ALSO</h3></a>
+ <blockquote>
+ The <b>fpm</b>(1) home page is https://github.com/fortran-lang/<b>fpm</b>
+ </blockquote>
+ <hr />
+ <table width="100%">
+ <tr>
+ <td width="33%"></td>
+ <td width="33%" align="center">build (fpm)</td>
+ <td class="c3" align="right" width="33%">October 01, 2020</td>
+ </tr>
+ </table><span class="c4">Generated by <a href="http://www.squarebox.co.uk/download/manServer.shtml">manServer 1.08</a> from
+ 47286ad9-042d-4b71-9a23-56660b3078d2 using man macros.</span><br />
+ <br />
+ <div class="c1"><img src="images/IMAGE.gif" /></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/fpm/doc/html/fpm.1fpm.html b/fpm/doc/html/fpm.1fpm.html
new file mode 100644
index 0000000..6fe3b3f
--- /dev/null
+++ b/fpm/doc/html/fpm.1fpm.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0" />
+ <title></title>
+ <style>
+ <![CDATA[
+
+ px {font-family: "Lucida Console", Monaco, monospace}
+ p { font-size:100%; line-height:1.1em; }
+ body {xfont-style: sans-serif}
+ body {
+ color:#333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:1em; line-height:1.3em; }
+ a:visited { color:#666; }
+ h1,h2,h3,h4,h5,h6 { color:#333; font-family:georgia, verdana, sans-serif; }
+ h1 { font-size:150%; page-break-before:auto;background-color: #aaaaff}
+ h2 { font-size:143%;color:teal; }
+ h3 { font-size:134%;color:blue; }
+ h4 { font-size:120%;color:gray; }
+ img { max-width: 55em}
+ p{ padding: 0;margin:0; }
+ p{ padding-right:1.4em; }
+ p{ padding-bottom:1em; }
+ p{ padding-top:1em; }
+ p{ whitespace: pre-wrap; }
+ h5,h6 { font-size:100% }
+ a.nav,a:link.nav, a:visited.nav { background-color:#FFF; color:#000; }
+ XXtable { border:double #000; border-collapse:collapse; }
+ XXtable { border-collapse:collapse; }
+ XXtd { border:thin solid #888; }
+ XXtd { border:none; }
+ li { margin-bottom:0.5em; }
+ blockquote { display:block; font-size:100%; line-height:1.1em; margin:0 0 1.5em; padding:0 2.5em; }
+ pre { background-color:#DDD; font-size:100%; overflow:auto; padding:1em; }
+ a,li span { color:#000; }
+ a:hover, a.nav:hover, a:hover math { background-color:#000; color:#FFF; }
+ #Container { margin:0 10px; text-align:center; background-color: #BBB}
+ #Content { border-top:none; margin:auto; padding:0.3em; text-align:left; width:100%; max-width:55em; background:#FFF}
+ span.webName { font-size:.5em; }
+ textarea#content { font-size: 1em; line-height: 1.125; }
+ h1#pageName { line-height:1em; margin:0.2em 0 0.2em 0; padding:0; }
+ .property { color:#666; font-size:100%; }
+ a.existingWikiWord[title]{ //border: 1px dashed #BBB; }
+ .byline { color:#666; font-size:1.0em; font-style:italic; margin-bottom:1em; padding-top:1px; }
+ ]]>
+ </style>
+ <style type="text/css">
+ /*<![CDATA[*/
+ body {
+ background-color: #F0F0F0;
+ color: #000000;
+ }
+ :link { color: #0000FF }
+ :visited { color: #C000C0 }
+ :active { color: #FF0000 }
+ span.c4 {font-size: 80%}
+ td.c3 {font-style: italic}
+ td.c2 {font-weight: bold}
+ div.c1 {text-align: center}
+ /*]]>*/
+ </style>
+</head>
+<body>
+ <a name="top" id="top"></a>
+ <h5><a href="download.html">[UP]</a></h5>
+ <div id="Container">
+ <div id="Content">
+ <div class="c1">
+ <hr />
+ <h1><i>Manual Reference Pages - </i>fpm&nbsp;(fpm)</h1>
+ <hr />
+ </div><a name="0" id="0">
+ <h3>NAME</h3></a>
+ <blockquote>
+ <b>fpm(1)</b> - A Fortran package manager and build system
+ </blockquote><a name="contents" id="contents"></a>
+ <h3>CONTENTS</h3>
+ <blockquote>
+ <a href="#1">Os Type</a><br />
+ <a href="#2">Synopsis</a><br />
+ <a href="#3">Description</a><br />
+ <a href="#4">Subcommands</a><br />
+ <a href="#5">Subcommand Options</a><br />
+ <a href="#6">Examples</a><br />
+ <a href="#7">See Also</a><br />
+ </blockquote><a name="8" id="8">
+ <h3>OS TYPE</h3></a>
+ <blockquote>
+ Linux
+ </blockquote><a name="2" id="2">
+ <h3>SYNOPSIS</h3></a>
+ <blockquote>
+ <pre>
+<b>fpm</b> <i>SUBCOMMAND</i> [SUBCOMMAND_OPTIONS]
+<br />
+<b>fpm</b> <b>--help</b>|<b>--version</b>
+</pre>
+ </blockquote><a name="3" id="3">
+ <h3>DESCRIPTION</h3></a>
+ <blockquote>
+ <b>fpm</b> is a package manager that helps you create Fortran projects that are optionally dependent on multiple files and other <b>fpm</b>(1)
+ packages.
+ <p>Most significantly <b>fpm</b>(1) lets you pull upon other <b>fpm</b>(1) packages in distributed <b>git</b>(1) repositories as if the packages
+ were a basic part of your default programming environment, as well as letting you share your projects with others in a similar manner.</p>
+ <p>See the <b>fpm</b>(1) repository for a listing of such available projects.</p>
+ <p>All output goes into the directory "build/".</p>
+ </blockquote><a name="4" id="4">
+ <h3>SUBCOMMANDS</h3></a>
+ <blockquote>
+ Valid <b>fpm</b> subcommands are:
+ <pre>
+ build [--release] [--list]
+ Compile the packages into the "build/" directory.
+ new NAME [--with-executable] [--with-test]
+ Create a new Fortran package directory
+ with sample files
+ run [NAME(s)] [--release] [--list] [-- ARGS]
+ Run the local package binaries. defaults to all
+ binaries for that release.
+ test [NAME(s)] [--release] [--list] [-- ARGS]
+ Run the tests
+ help [NAME(s)] Alternate method for displaying subcommand help
+<br />
+</pre>
+ </blockquote><a name="5" id="5">
+ <h3>SUBCOMMAND OPTIONS</h3></a>
+ <blockquote>
+ <table cellpadding="3">
+ <tr valign="top">
+ <td class="c2" colspan="2">--release</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>Builds or runs in release mode (versus debug mode). <b>fpm</b>(1) Defaults to using common compiler debug flags and building in
+ "build/gfortran_debug/". When this flag is present build output goes into "build/gfortran_release/" and common compiler optimization flags are
+ used.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">--list</td>
+ <td valign="bottom">list candidates instead of building or running them</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">-- ARGS</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>Arguments to pass to executables/tests</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">--help</td>
+ <td valign="bottom">Show this help text and exit. Valid for all subcommands.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">--version</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>Show version information and exit. Valid for all subcommands.</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote><a name="6" id="6">
+ <h3>EXAMPLES</h3></a>
+ <blockquote>
+ sample commands:
+ <pre>
+ fpm build
+ fpm test
+ fpm run
+ fpm new --help
+ fpm new mypackage --with-executable --with-test
+ fpm run myprogram --release -- -x 10 -y 20 --title "my title"
+</pre>
+ </blockquote><a name="7" id="7">
+ <h3>SEE ALSO</h3></a>
+ <blockquote>
+ The <b>fpm</b>(1) home page is https://github.com/fortran-lang/<b>fpm</b>
+ </blockquote>
+ <hr />
+ <table width="100%">
+ <tr>
+ <td width="33%"></td>
+ <td width="33%" align="center">fpm (fpm)</td>
+ <td class="c3" align="right" width="33%">October 01, 2020</td>
+ </tr>
+ </table><span class="c4">Generated by <a href="http://www.squarebox.co.uk/download/manServer.shtml">manServer 1.08</a> from
+ 7ff76770-4194-4184-8269-eb1d56de71cb using man macros.</span><br />
+ <br />
+ <div class="c1"><img src="images/IMAGE.gif" /></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/fpm/doc/html/help.1fpm.html b/fpm/doc/html/help.1fpm.html
new file mode 100644
index 0000000..8c9f147
--- /dev/null
+++ b/fpm/doc/html/help.1fpm.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0" />
+ <title></title>
+ <style>
+ <![CDATA[
+
+ px {font-family: "Lucida Console", Monaco, monospace}
+ p { font-size:100%; line-height:1.1em; }
+ body {xfont-style: sans-serif}
+ body {
+ color:#333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:1em; line-height:1.3em; }
+ a:visited { color:#666; }
+ h1,h2,h3,h4,h5,h6 { color:#333; font-family:georgia, verdana, sans-serif; }
+ h1 { font-size:150%; page-break-before:auto;background-color: #aaaaff}
+ h2 { font-size:143%;color:teal; }
+ h3 { font-size:134%;color:blue; }
+ h4 { font-size:120%;color:gray; }
+ img { max-width: 55em}
+ p{ padding: 0;margin:0; }
+ p{ padding-right:1.4em; }
+ p{ padding-bottom:1em; }
+ p{ padding-top:1em; }
+ p{ whitespace: pre-wrap; }
+ h5,h6 { font-size:100% }
+ a.nav,a:link.nav, a:visited.nav { background-color:#FFF; color:#000; }
+ XXtable { border:double #000; border-collapse:collapse; }
+ XXtable { border-collapse:collapse; }
+ XXtd { border:thin solid #888; }
+ XXtd { border:none; }
+ li { margin-bottom:0.5em; }
+ blockquote { display:block; font-size:100%; line-height:1.1em; margin:0 0 1.5em; padding:0 2.5em; }
+ pre { background-color:#DDD; font-size:100%; overflow:auto; padding:1em; }
+ a,li span { color:#000; }
+ a:hover, a.nav:hover, a:hover math { background-color:#000; color:#FFF; }
+ #Container { margin:0 10px; text-align:center; background-color: #BBB}
+ #Content { border-top:none; margin:auto; padding:0.3em; text-align:left; width:100%; max-width:55em; background:#FFF}
+ span.webName { font-size:.5em; }
+ textarea#content { font-size: 1em; line-height: 1.125; }
+ h1#pageName { line-height:1em; margin:0.2em 0 0.2em 0; padding:0; }
+ .property { color:#666; font-size:100%; }
+ a.existingWikiWord[title]{ //border: 1px dashed #BBB; }
+ .byline { color:#666; font-size:1.0em; font-style:italic; margin-bottom:1em; padding-top:1px; }
+ ]]>
+ </style>
+ <style type="text/css">
+ /*<![CDATA[*/
+ body {
+ background-color: #F0F0F0;
+ color: #000000;
+ }
+ :link { color: #0000FF }
+ :visited { color: #C000C0 }
+ :active { color: #FF0000 }
+ span.c3 {font-size: 80%}
+ td.c2 {font-style: italic}
+ div.c1 {text-align: center}
+ /*]]>*/
+ </style>
+</head>
+<body>
+ <a name="top" id="top"></a>
+ <h5><a href="download.html">[UP]</a></h5>
+ <div id="Container">
+ <div id="Content">
+ <div class="c1">
+ <hr />
+ <h1><i>Manual Reference Pages - </i>help&nbsp;(fpm)</h1>
+ <hr />
+ </div><a name="0" id="0">
+ <h3>NAME</h3></a>
+ <blockquote>
+ <b>help(1)</b> - the <b>fpm</b>(1) subcommand to display help
+ </blockquote><a name="contents" id="contents"></a>
+ <h3>CONTENTS</h3>
+ <blockquote>
+ <a href="#1">Synopsis</a><br />
+ <a href="#2">Description</a><br />
+ <a href="#3">Options</a><br />
+ <a href="#4">Examples</a><br />
+ <a href="#5">See Also</a><br />
+ </blockquote><a name="6" id="6">
+ <h3>SYNOPSIS</h3></a>
+ <blockquote>
+ <pre>
+<b>fpm</b> <i>help</i> [fpm][new][build][run][test][help][version][all]
+</pre>
+ </blockquote><a name="2" id="2">
+ <h3>DESCRIPTION</h3></a>
+ <blockquote>
+ The "<b>fpm</b> <i>help</i>" command is an alternative to the --<i>help</i> parameter on the <b>fpm</b>(1) command and its subcommands.
+ </blockquote><a name="3" id="3">
+ <h3>OPTIONS</h3></a>
+ <blockquote>
+ <table cellpadding="3">
+ <tr valign="top">
+ <td width="6%" nowrap="nowrap"><b>NAME</b>(s)</td>
+ <td valign="bottom">A list of topic names to display.</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote><a name="4" id="4">
+ <h3>EXAMPLES</h3></a>
+ <blockquote>
+ <p><b>fpm</b> <i>help</i> <b>fpm</b> <i>help</i> version <b>fpm</b> all</p>
+ </blockquote><a name="5" id="5">
+ <h3>SEE ALSO</h3></a>
+ <blockquote>
+ The <b>fpm</b>(1) home page is https://github.com/fortran-lang/<b>fpm</b>
+ </blockquote>
+ <hr />
+ <table width="100%">
+ <tr>
+ <td width="33%"></td>
+ <td width="33%" align="center">help (fpm)</td>
+ <td class="c2" align="right" width="33%">October 01, 2020</td>
+ </tr>
+ </table><span class="c3">Generated by <a href="http://www.squarebox.co.uk/download/manServer.shtml">manServer 1.08</a> from
+ cf919141-8b5e-4bb6-8957-a4e239126fa6 using man macros.</span><br />
+ <br />
+ <div class="c1"><img src="images/IMAGE.gif" /></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/fpm/doc/html/new.1fpm.html b/fpm/doc/html/new.1fpm.html
new file mode 100644
index 0000000..b8cb2ff
--- /dev/null
+++ b/fpm/doc/html/new.1fpm.html
@@ -0,0 +1,169 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0" />
+ <title></title>
+ <style>
+ <![CDATA[
+
+ px {font-family: "Lucida Console", Monaco, monospace}
+ p { font-size:100%; line-height:1.1em; }
+ body {xfont-style: sans-serif}
+ body {
+ color:#333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:1em; line-height:1.3em; }
+ a:visited { color:#666; }
+ h1,h2,h3,h4,h5,h6 { color:#333; font-family:georgia, verdana, sans-serif; }
+ h1 { font-size:150%; page-break-before:auto;background-color: #aaaaff}
+ h2 { font-size:143%;color:teal; }
+ h3 { font-size:134%;color:blue; }
+ h4 { font-size:120%;color:gray; }
+ img { max-width: 55em}
+ p{ padding: 0;margin:0; }
+ p{ padding-right:1.4em; }
+ p{ padding-bottom:1em; }
+ p{ padding-top:1em; }
+ p{ whitespace: pre-wrap; }
+ h5,h6 { font-size:100% }
+ a.nav,a:link.nav, a:visited.nav { background-color:#FFF; color:#000; }
+ XXtable { border:double #000; border-collapse:collapse; }
+ XXtable { border-collapse:collapse; }
+ XXtd { border:thin solid #888; }
+ XXtd { border:none; }
+ li { margin-bottom:0.5em; }
+ blockquote { display:block; font-size:100%; line-height:1.1em; margin:0 0 1.5em; padding:0 2.5em; }
+ pre { background-color:#DDD; font-size:100%; overflow:auto; padding:1em; }
+ a,li span { color:#000; }
+ a:hover, a.nav:hover, a:hover math { background-color:#000; color:#FFF; }
+ #Container { margin:0 10px; text-align:center; background-color: #BBB}
+ #Content { border-top:none; margin:auto; padding:0.3em; text-align:left; width:100%; max-width:55em; background:#FFF}
+ span.webName { font-size:.5em; }
+ textarea#content { font-size: 1em; line-height: 1.125; }
+ h1#pageName { line-height:1em; margin:0.2em 0 0.2em 0; padding:0; }
+ .property { color:#666; font-size:100%; }
+ a.existingWikiWord[title]{ //border: 1px dashed #BBB; }
+ .byline { color:#666; font-size:1.0em; font-style:italic; margin-bottom:1em; padding-top:1px; }
+ ]]>
+ </style>
+ <style type="text/css">
+ /*<![CDATA[*/
+ body {
+ background-color: #F0F0F0;
+ color: #000000;
+ }
+ :link { color: #0000FF }
+ :visited { color: #C000C0 }
+ :active { color: #FF0000 }
+ span.c4 {font-size: 80%}
+ td.c3 {font-weight: bold}
+ td.c2 {font-style: italic}
+ div.c1 {text-align: center}
+ /*]]>*/
+ </style>
+</head>
+<body>
+ <a name="top" id="top"></a>
+ <h5><a href="download.html">[UP]</a></h5>
+ <div id="Container">
+ <div id="Content">
+ <div class="c1">
+ <hr />
+ <h1><i>Manual Reference Pages - </i>new&nbsp;(fpm)</h1>
+ <hr />
+ </div><a name="0" id="0">
+ <h3>NAME</h3></a>
+ <blockquote>
+ <b>new(1)</b> - the <b>fpm</b>(1) subcommand to initialize a new project
+ </blockquote><a name="contents" id="contents"></a>
+ <h3>CONTENTS</h3>
+ <blockquote>
+ <a href="#1">Synopsis</a><br />
+ <a href="#2">Description</a><br />
+ <a href="#3">Options</a><br />
+ <a href="#4">Examples</a><br />
+ <a href="#5">See Also</a><br />
+ </blockquote><a name="6" id="6">
+ <h3>SYNOPSIS</h3></a>
+ <blockquote>
+ <pre>
+<b>fpm</b> <i>new</i> <i>NAME</i> [-<b>-with-executable</b>] [-<b>-with-test</b>]
+<br />
+<b>fpm</b> <i>new</i> <b>--help</b>|<b>--version</b>
+</pre>
+ </blockquote><a name="2" id="2">
+ <h3>DESCRIPTION</h3></a>
+ <blockquote>
+ Create a <i>new</i> programming project in a <i>new</i> directory
+ <p>The "<i>new</i>" subcommand creates a directory and runs the command "git init" in that directory and makes an example "fpm.toml" file, a src/
+ directory, and optionally a test/ and app/ directory with trivial example Fortran source files.</p>
+ <p>Remember to update the information in the sample "fpm.toml" file with such information as your name and e-mail address.</p>
+ </blockquote><a name="3" id="3">
+ <h3>OPTIONS</h3></a>
+ <blockquote>
+ <table cellpadding="3">
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">NAME</td>
+ <td valign="bottom">the name of the project directory to create. The name must be a valid Fortran name composed of 1 to 63 ASCII alphanumeric
+ characters and underscores, starting with a letter.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c3" colspan="2">--with-executable</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>additionally create optional directory app/ and placeholder program for "<b>fpm</b> run".</td>
+ </tr>
+ <tr valign="top">
+ <td class="c3" colspan="2">--with-test</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>additionally create optional directory test/ and placeholder program for "<b>fpm</b> test".</td>
+ </tr>
+ <tr valign="top">
+ <td class="c3" width="6%" nowrap="nowrap">--help</td>
+ <td valign="bottom">print this help and exit</td>
+ </tr>
+ <tr valign="top">
+ <td class="c3" colspan="2">--version</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>print program version information and exit</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote><a name="4" id="4">
+ <h3>EXAMPLES</h3></a>
+ <blockquote>
+ Sample use
+ <pre>
+ fpm new myproject # create new project directory and seed it
+ cd myproject # Enter the new directory
+ # and run commands such as
+ fpm build
+ fpm run # if you selected --with-executable
+ fpm test # if you selected --with-test
+</pre>
+ </blockquote><a name="5" id="5">
+ <h3>SEE ALSO</h3></a>
+ <blockquote>
+ The <b>fpm</b>(1) home page is https://github.com/fortran-lang/<b>fpm</b>
+ <p>Registered packages are at https://fortran-lang.org/packages</p>
+ </blockquote>
+ <hr />
+ <table width="100%">
+ <tr>
+ <td width="33%"></td>
+ <td width="33%" align="center">new (fpm)</td>
+ <td class="c2" align="right" width="33%">October 01, 2020</td>
+ </tr>
+ </table><span class="c4">Generated by <a href="http://www.squarebox.co.uk/download/manServer.shtml">manServer 1.08</a> from
+ ca3de4ad-3cee-4dce-ad54-9d8a8bcb529e using man macros.</span><br />
+ <br />
+ <div class="c1"><img src="images/IMAGE.gif" /></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/fpm/doc/html/run.1fpm.html b/fpm/doc/html/run.1fpm.html
new file mode 100644
index 0000000..a805050
--- /dev/null
+++ b/fpm/doc/html/run.1fpm.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0" />
+ <title></title>
+ <style>
+ <![CDATA[
+
+ px {font-family: "Lucida Console", Monaco, monospace}
+ p { font-size:100%; line-height:1.1em; }
+ body {xfont-style: sans-serif}
+ body {
+ color:#333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:1em; line-height:1.3em; }
+ a:visited { color:#666; }
+ h1,h2,h3,h4,h5,h6 { color:#333; font-family:georgia, verdana, sans-serif; }
+ h1 { font-size:150%; page-break-before:auto;background-color: #aaaaff}
+ h2 { font-size:143%;color:teal; }
+ h3 { font-size:134%;color:blue; }
+ h4 { font-size:120%;color:gray; }
+ img { max-width: 55em}
+ p{ padding: 0;margin:0; }
+ p{ padding-right:1.4em; }
+ p{ padding-bottom:1em; }
+ p{ padding-top:1em; }
+ p{ whitespace: pre-wrap; }
+ h5,h6 { font-size:100% }
+ a.nav,a:link.nav, a:visited.nav { background-color:#FFF; color:#000; }
+ XXtable { border:double #000; border-collapse:collapse; }
+ XXtable { border-collapse:collapse; }
+ XXtd { border:thin solid #888; }
+ XXtd { border:none; }
+ li { margin-bottom:0.5em; }
+ blockquote { display:block; font-size:100%; line-height:1.1em; margin:0 0 1.5em; padding:0 2.5em; }
+ pre { background-color:#DDD; font-size:100%; overflow:auto; padding:1em; }
+ a,li span { color:#000; }
+ a:hover, a.nav:hover, a:hover math { background-color:#000; color:#FFF; }
+ #Container { margin:0 10px; text-align:center; background-color: #BBB}
+ #Content { border-top:none; margin:auto; padding:0.3em; text-align:left; width:100%; max-width:55em; background:#FFF}
+ span.webName { font-size:.5em; }
+ textarea#content { font-size: 1em; line-height: 1.125; }
+ h1#pageName { line-height:1em; margin:0.2em 0 0.2em 0; padding:0; }
+ .property { color:#666; font-size:100%; }
+ a.existingWikiWord[title]{ //border: 1px dashed #BBB; }
+ .byline { color:#666; font-size:1.0em; font-style:italic; margin-bottom:1em; padding-top:1px; }
+ ]]>
+ </style>
+ <style type="text/css">
+ /*<![CDATA[*/
+ body {
+ background-color: #F0F0F0;
+ color: #000000;
+ }
+ :link { color: #0000FF }
+ :visited { color: #C000C0 }
+ :active { color: #FF0000 }
+ span.c4 {font-size: 80%}
+ td.c3 {font-style: italic}
+ td.c2 {font-weight: bold}
+ div.c1 {text-align: center}
+ /*]]>*/
+ </style>
+</head>
+<body>
+ <a name="top" id="top"></a>
+ <h5><a href="download.html">[UP]</a></h5>
+ <div id="Container">
+ <div id="Content">
+ <div class="c1">
+ <hr />
+ <h1><i>Manual Reference Pages - </i>run&nbsp;(fpm)</h1>
+ <hr />
+ </div><a name="0" id="0">
+ <h3>NAME</h3></a>
+ <blockquote>
+ <b>run(1)</b> - the <b>fpm</b>(1) subcommand to run project applications
+ </blockquote><a name="contents" id="contents"></a>
+ <h3>CONTENTS</h3>
+ <blockquote>
+ <a href="#1">Synopsis</a><br />
+ <a href="#2">Description</a><br />
+ <a href="#3">Options</a><br />
+ <a href="#4">Examples</a><br />
+ <a href="#5">See Also</a><br />
+ </blockquote><a name="6" id="6">
+ <h3>SYNOPSIS</h3></a>
+ <blockquote>
+ <pre>
+fpm run <b>[NAME</b>(<i>s</i>)] [-<b>-release</b>] [-- ARGS]
+<br />
+fpm run <b>--help</b>|<b>--version</b>
+</pre>
+ </blockquote><a name="2" id="2">
+ <h3>DESCRIPTION</h3></a>
+ <blockquote>
+ Run applications you have built in your <b>fpm</b>(1) project.
+ </blockquote><a name="3" id="3">
+ <h3>OPTIONS</h3></a>
+ <blockquote>
+ <table cellpadding="3">
+ <tr valign="top">
+ <td width="6%" nowrap="nowrap"><b>NAME</b>(<i>s</i>)</td>
+ <td valign="bottom">optional list of specific names to execute. The default is to run all the applications in app/ or the programs listed in the
+ "fpm.toml" file.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">--release</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>selects the optimized build instead of the debug build.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">--list</td>
+ <td valign="bottom">list candidates instead of building or running them</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">-- ARGS</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>optional arguments to pass to the <b>program</b>(<i>s</i>). The same arguments are passed to all names specified.</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote><a name="4" id="4">
+ <h3>EXAMPLES</h3></a>
+ <blockquote>
+ run <b>fpm</b>(1) project applications
+ <pre>
+ # run default programs in /app or as specified in "fpm.toml"
+ fpm run
+<br />
+ # run a specific program and pass arguments to the command
+ fpm run mytest -- -x 10 -y 20 -title "my title line"
+<br />
+ # production version of two applications
+ fpm run tst1 test2 -release
+</pre>
+ </blockquote><a name="5" id="5">
+ <h3>SEE ALSO</h3></a>
+ <blockquote>
+ The <b>fpm</b>(1) home page is https://github.com/fortran-lang/fpm
+ </blockquote>
+ <hr />
+ <table width="100%">
+ <tr>
+ <td width="33%"></td>
+ <td width="33%" align="center">run (fpm)</td>
+ <td class="c3" align="right" width="33%">October 01, 2020</td>
+ </tr>
+ </table><span class="c4">Generated by <a href="http://www.squarebox.co.uk/download/manServer.shtml">manServer 1.08</a> from
+ 5501d93f-9755-49af-b14c-1a1683d96157 using man macros.</span><br />
+ <br />
+ <div class="c1"><img src="images/IMAGE.gif" /></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/fpm/doc/html/test.1fpm.html b/fpm/doc/html/test.1fpm.html
new file mode 100644
index 0000000..39582b4
--- /dev/null
+++ b/fpm/doc/html/test.1fpm.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0" />
+ <title></title>
+ <style>
+ <![CDATA[
+
+ px {font-family: "Lucida Console", Monaco, monospace}
+ p { font-size:100%; line-height:1.1em; }
+ body {xfont-style: sans-serif}
+ body {
+ color:#333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:1em; line-height:1.3em; }
+ a:visited { color:#666; }
+ h1,h2,h3,h4,h5,h6 { color:#333; font-family:georgia, verdana, sans-serif; }
+ h1 { font-size:150%; page-break-before:auto;background-color: #aaaaff}
+ h2 { font-size:143%;color:teal; }
+ h3 { font-size:134%;color:blue; }
+ h4 { font-size:120%;color:gray; }
+ img { max-width: 55em}
+ p{ padding: 0;margin:0; }
+ p{ padding-right:1.4em; }
+ p{ padding-bottom:1em; }
+ p{ padding-top:1em; }
+ p{ whitespace: pre-wrap; }
+ h5,h6 { font-size:100% }
+ a.nav,a:link.nav, a:visited.nav { background-color:#FFF; color:#000; }
+ XXtable { border:double #000; border-collapse:collapse; }
+ XXtable { border-collapse:collapse; }
+ XXtd { border:thin solid #888; }
+ XXtd { border:none; }
+ li { margin-bottom:0.5em; }
+ blockquote { display:block; font-size:100%; line-height:1.1em; margin:0 0 1.5em; padding:0 2.5em; }
+ pre { background-color:#DDD; font-size:100%; overflow:auto; padding:1em; }
+ a,li span { color:#000; }
+ a:hover, a.nav:hover, a:hover math { background-color:#000; color:#FFF; }
+ #Container { margin:0 10px; text-align:center; background-color: #BBB}
+ #Content { border-top:none; margin:auto; padding:0.3em; text-align:left; width:100%; max-width:55em; background:#FFF}
+ span.webName { font-size:.5em; }
+ textarea#content { font-size: 1em; line-height: 1.125; }
+ h1#pageName { line-height:1em; margin:0.2em 0 0.2em 0; padding:0; }
+ .property { color:#666; font-size:100%; }
+ a.existingWikiWord[title]{ //border: 1px dashed #BBB; }
+ .byline { color:#666; font-size:1.0em; font-style:italic; margin-bottom:1em; padding-top:1px; }
+ ]]>
+ </style>
+ <style type="text/css">
+ /*<![CDATA[*/
+ body {
+ background-color: #F0F0F0;
+ color: #000000;
+ }
+ :link { color: #0000FF }
+ :visited { color: #C000C0 }
+ :active { color: #FF0000 }
+ span.c4 {font-size: 80%}
+ td.c3 {font-style: italic}
+ td.c2 {font-weight: bold}
+ div.c1 {text-align: center}
+ /*]]>*/
+ </style>
+</head>
+<body>
+ <a name="top" id="top"></a>
+ <h5><a href="download.html">[UP]</a></h5>
+ <div id="Container">
+ <div id="Content">
+ <div class="c1">
+ <hr />
+ <h1><i>Manual Reference Pages - </i>test&nbsp;(fpm)</h1>
+ <hr />
+ </div><a name="0" id="0">
+ <h3>NAME</h3></a>
+ <blockquote>
+ <b>test(1)</b> - the <b>fpm</b>(1) subcommand to run project tests
+ </blockquote><a name="contents" id="contents"></a>
+ <h3>CONTENTS</h3>
+ <blockquote>
+ <a href="#1">Synopsis</a><br />
+ <a href="#2">Description</a><br />
+ <a href="#3">Options</a><br />
+ <a href="#4">Examples</a><br />
+ <a href="#5">See Also</a><br />
+ </blockquote><a name="6" id="6">
+ <h3>SYNOPSIS</h3></a>
+ <blockquote>
+ <pre>
+fpm test <b>[NAME</b>(<i>s</i>)] [-<b>-release</b>] [-<b>-list</b>] [-- ARGS]
+<br />
+fpm test <b>--help</b>|<b>--version</b>
+</pre>
+ </blockquote><a name="2" id="2">
+ <h3>DESCRIPTION</h3></a>
+ <blockquote>
+ Run applications you have built to test your project.
+ </blockquote><a name="3" id="3">
+ <h3>OPTIONS</h3></a>
+ <blockquote>
+ <table cellpadding="3">
+ <tr valign="top">
+ <td width="6%" nowrap="nowrap"><b>NAME</b>(<i>s</i>)</td>
+ <td valign="bottom">optional list of specific test names to execute. The default is to run all the tests in test/ or the tests listed in the
+ "fpm.toml" file.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">--release</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>selects the optimized build instead of the debug build.</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" width="6%" nowrap="nowrap">--list</td>
+ <td valign="bottom">list candidates instead of building or running them</td>
+ </tr>
+ <tr valign="top">
+ <td class="c2" colspan="2">-- ARGS</td>
+ </tr>
+ <tr valign="top">
+ <td width="6%"> </td>
+ <td>optional arguments to pass to the test <b>program</b>(<i>s</i>). The same arguments are passed to all test names specified.</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ </blockquote><a name="4" id="4">
+ <h3>EXAMPLES</h3></a>
+ <blockquote>
+ run tests
+ <pre>
+ # run default tests in /test or as specified in "fpm.toml"
+ fpm test
+<br />
+ # run a specific test and pass arguments to the command
+ fpm test mytest -- -x 10 -y 20 -title "my title line"
+<br />
+ fpm test tst1 test2 -release # production version of two tests
+</pre>
+ </blockquote><a name="5" id="5">
+ <h3>SEE ALSO</h3></a>
+ <blockquote>
+ The <b>fpm</b>(1) home page is https://github.com/fortran-lang/fpm
+ </blockquote>
+ <hr />
+ <table width="100%">
+ <tr>
+ <td width="33%"></td>
+ <td width="33%" align="center">test (fpm)</td>
+ <td class="c3" align="right" width="33%">October 01, 2020</td>
+ </tr>
+ </table><span class="c4">Generated by <a href="http://www.squarebox.co.uk/download/manServer.shtml">manServer 1.08</a> from
+ ae1fc2a3-c473-469e-b078-ffae170abd06 using man macros.</span><br />
+ <br />
+ <div class="c1"><img src="images/IMAGE.gif" /></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/fpm/doc/man/cat1/build.1fpm.gz b/fpm/doc/man/cat1/build.1fpm.gz
new file mode 100644
index 0000000..e187c8f
--- /dev/null
+++ b/fpm/doc/man/cat1/build.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/cat1/fpm.1fpm.gz b/fpm/doc/man/cat1/fpm.1fpm.gz
new file mode 100644
index 0000000..2e4b33a
--- /dev/null
+++ b/fpm/doc/man/cat1/fpm.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/cat1/help.1fpm.gz b/fpm/doc/man/cat1/help.1fpm.gz
new file mode 100644
index 0000000..448ad14
--- /dev/null
+++ b/fpm/doc/man/cat1/help.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/cat1/new.1fpm.gz b/fpm/doc/man/cat1/new.1fpm.gz
new file mode 100644
index 0000000..fe9c736
--- /dev/null
+++ b/fpm/doc/man/cat1/new.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/cat1/run.1fpm.gz b/fpm/doc/man/cat1/run.1fpm.gz
new file mode 100644
index 0000000..fcdd2b4
--- /dev/null
+++ b/fpm/doc/man/cat1/run.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/cat1/test.1fpm.gz b/fpm/doc/man/cat1/test.1fpm.gz
new file mode 100644
index 0000000..896da49
--- /dev/null
+++ b/fpm/doc/man/cat1/test.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/index.db b/fpm/doc/man/index.db
new file mode 100644
index 0000000..f4af7bf
--- /dev/null
+++ b/fpm/doc/man/index.db
Binary files differ
diff --git a/fpm/doc/man/man1/build.1fpm.gz b/fpm/doc/man/man1/build.1fpm.gz
new file mode 100644
index 0000000..cadfa4d
--- /dev/null
+++ b/fpm/doc/man/man1/build.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/man1/fpm.1fpm.gz b/fpm/doc/man/man1/fpm.1fpm.gz
new file mode 100644
index 0000000..bfb64e4
--- /dev/null
+++ b/fpm/doc/man/man1/fpm.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/man1/help.1fpm.gz b/fpm/doc/man/man1/help.1fpm.gz
new file mode 100644
index 0000000..2885869
--- /dev/null
+++ b/fpm/doc/man/man1/help.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/man1/new.1fpm.gz b/fpm/doc/man/man1/new.1fpm.gz
new file mode 100644
index 0000000..8096254
--- /dev/null
+++ b/fpm/doc/man/man1/new.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/man1/run.1fpm.gz b/fpm/doc/man/man1/run.1fpm.gz
new file mode 100644
index 0000000..1db841c
--- /dev/null
+++ b/fpm/doc/man/man1/run.1fpm.gz
Binary files differ
diff --git a/fpm/doc/man/man1/test.1fpm.gz b/fpm/doc/man/man1/test.1fpm.gz
new file mode 100644
index 0000000..c237ba0
--- /dev/null
+++ b/fpm/doc/man/man1/test.1fpm.gz
Binary files differ
diff --git a/fpm/doc/src/build.1.man b/fpm/doc/src/build.1.man
new file mode 100644
index 0000000..1e243d3
--- /dev/null
+++ b/fpm/doc/src/build.1.man
@@ -0,0 +1,34 @@
+NAME
+ build(1) - the fpm(1) subcommand to build a project
+SYNOPSIS
+ fpm build [--release]|[-list]
+ fpm build --help|--version
+
+DESCRIPTION
+ The "fpm build" command
+ o Fetches any dependencies
+ o Scans your sources
+ o Builds them in the proper order
+
+ The Fortran source files are assumed to be in app/, test/, and src/
+ by default. The changed or new files found are rebuilt.
+ The results are placed in the build/ directory.
+
+ Non-default pathnames and remote dependencies are used if
+ specified in the "fpm.toml" file.
+
+OPTIONS
+ --release build in build/*_release instead of build/*_debug with
+ high optimization instead of full debug options.
+ --list list candidates instead of building or running them
+ --help print this help and exit
+ --version print program version information and exit
+
+EXAMPLES
+ Sample commands:
+
+ fpm build # build with debug options
+ fpm build -release # build with high optimization
+SEE ALSO
+ The fpm(1) home page is https://github.com/fortran-lang/fpm
+
diff --git a/fpm/doc/src/fpm.1.man b/fpm/doc/src/fpm.1.man
new file mode 100644
index 0000000..201cfa7
--- /dev/null
+++ b/fpm/doc/src/fpm.1.man
@@ -0,0 +1,59 @@
+NAME
+ fpm(1) - A Fortran package manager and build system
+OS TYPE
+ Linux
+SYNOPSIS
+ fpm SUBCOMMAND [SUBCOMMAND_OPTIONS]
+
+ fpm --help|--version
+
+DESCRIPTION
+ fpm is a package manager that helps you create Fortran projects that are
+ optionally dependent on multiple files and other fpm(1) packages.
+
+ Most significantly fpm(1) lets you pull upon other fpm(1) packages in
+ distributed git(1) repositories as if the packages were a basic part
+ of your default programming environment, as well as letting you share
+ your projects with others in a similar manner.
+
+ See the fpm(1) repository for a listing of such available projects.
+
+ All output goes into the directory "build/".
+
+SUBCOMMANDS
+ Valid fpm subcommands are:
+
+ build [--release] [--list]
+ Compile the packages into the "build/" directory.
+ new NAME [--with-executable] [--with-test]
+ Create a new Fortran package directory
+ with sample files
+ run [NAME(s)] [--release] [--list] [-- ARGS]
+ Run the local package binaries. defaults to all
+ binaries for that release.
+ test [NAME(s)] [--release] [--list] [-- ARGS]
+ Run the tests
+ help [NAME(s)] Alternate method for displaying subcommand help
+
+SUBCOMMAND OPTIONS
+ --release Builds or runs in release mode (versus debug mode). fpm(1)
+ Defaults to using common compiler debug flags and building
+ in "build/gfortran_debug/". When this flag is present build
+ output goes into "build/gfortran_release/" and common
+ compiler optimization flags are used.
+ --list list candidates instead of building or running them
+ -- ARGS Arguments to pass to executables/tests
+ --help Show this help text and exit. Valid for all subcommands.
+ --version Show version information and exit. Valid for all subcommands.
+EXAMPLES
+ sample commands:
+
+ fpm build
+ fpm test
+ fpm run
+ fpm new --help
+ fpm new mypackage --with-executable --with-test
+ fpm run myprogram --release -- -x 10 -y 20 --title "my title"
+SEE ALSO
+ The fpm(1) home page is https://github.com/fortran-lang/fpm
+
diff --git a/fpm/doc/src/help.1.man b/fpm/doc/src/help.1.man
new file mode 100644
index 0000000..0ba803b
--- /dev/null
+++ b/fpm/doc/src/help.1.man
@@ -0,0 +1,20 @@
+NAME
+ help(1) - the fpm(1) subcommand to display help
+SYNOPSIS
+ fpm help [fpm][new][build][run][test][help][version][all]
+
+DESCRIPTION
+ The "fpm help" command is an alternative to the --help parameter
+ on the fpm(1) command and its subcommands.
+
+OPTIONS
+ NAME(s) A list of topic names to display.
+
+EXAMPLES
+
+ fpm help
+ fpm help version
+ fpm all
+SEE ALSO
+ The fpm(1) home page is https://github.com/fortran-lang/fpm
+
diff --git a/fpm/doc/src/new.1.man b/fpm/doc/src/new.1.man
new file mode 100644
index 0000000..6fe255b
--- /dev/null
+++ b/fpm/doc/src/new.1.man
@@ -0,0 +1,44 @@
+NAME
+ new(1) - the fpm(1) subcommand to initialize a new project
+SYNOPSIS
+ fpm new NAME [--with-executable] [--with-test]
+
+ fpm new --help|--version
+
+DESCRIPTION
+ Create a new programming project in a new directory
+
+ The "new" subcommand creates a directory and runs the command
+ "git init" in that directory and makes an example "fpm.toml"
+ file, a src/ directory, and optionally a test/ and app/
+ directory with trivial example Fortran source files.
+
+ Remember to update the information in the sample "fpm.toml"
+ file with such information as your name and e-mail address.
+
+OPTIONS
+ NAME the name of the project directory to create. The name
+ must be a valid Fortran name composed of 1 to 63
+ ASCII alphanumeric characters and underscores,
+ starting with a letter.
+ --with-executable additionally create optional directory app/
+ and placeholder program for "fpm run".
+ --with-test additionally create optional directory test/
+ and placeholder program for "fpm test".
+ --help print this help and exit
+ --version print program version information and exit
+
+EXAMPLES
+ Sample use
+
+ fpm new myproject # create new project directory and seed it
+ cd myproject # Enter the new directory
+ # and run commands such as
+ fpm build
+ fpm run # if you selected --with-executable
+ fpm test # if you selected --with-test
+SEE ALSO
+ The fpm(1) home page is https://github.com/fortran-lang/fpm
+
+ Registered packages are at https://fortran-lang.org/packages
+
diff --git a/fpm/doc/src/run.1.man b/fpm/doc/src/run.1.man
new file mode 100644
index 0000000..7e5de31
--- /dev/null
+++ b/fpm/doc/src/run.1.man
@@ -0,0 +1,36 @@
+NAME
+ run(1) - the fpm(1) subcommand to run project applications
+
+SYNOPSIS
+ fpm run [NAME(s)] [--release] [-- ARGS]
+
+ fpm run --help|--version
+
+DESCRIPTION
+ Run applications you have built in your fpm(1) project.
+
+OPTIONS
+ NAME(s) optional list of specific names to execute.
+ The default is to run all the applications in app/
+ or the programs listed in the "fpm.toml" file.
+ --release selects the optimized build instead of the debug
+ build.
+ --list list candidates instead of building or running them
+ -- ARGS optional arguments to pass to the program(s).
+ The same arguments are passed to all names
+ specified.
+
+EXAMPLES
+run fpm(1) project applications
+
+ # run default programs in /app or as specified in "fpm.toml"
+ fpm run
+
+ # run a specific program and pass arguments to the command
+ fpm run mytest -- -x 10 -y 20 -title "my title line"
+
+ # production version of two applications
+ fpm run tst1 test2 -release
+SEE ALSO
+ The fpm(1) home page is https://github.com/fortran-lang/fpm
+
diff --git a/fpm/doc/src/test.1.man b/fpm/doc/src/test.1.man
new file mode 100644
index 0000000..60ab513
--- /dev/null
+++ b/fpm/doc/src/test.1.man
@@ -0,0 +1,35 @@
+NAME
+ test(1) - the fpm(1) subcommand to run project tests
+
+SYNOPSIS
+ fpm test [NAME(s)] [--release] [--list] [-- ARGS]
+
+ fpm test --help|--version
+
+DESCRIPTION
+ Run applications you have built to test your project.
+
+OPTIONS
+ NAME(s) optional list of specific test names to execute.
+ The default is to run all the tests in test/
+ or the tests listed in the "fpm.toml" file.
+ --release selects the optimized build instead of the debug
+ build.
+ --list list candidates instead of building or running them
+ -- ARGS optional arguments to pass to the test program(s).
+ The same arguments are passed to all test names
+ specified.
+
+EXAMPLES
+run tests
+
+ # run default tests in /test or as specified in "fpm.toml"
+ fpm test
+
+ # run a specific test and pass arguments to the command
+ fpm test mytest -- -x 10 -y 20 -title "my title line"
+
+ fpm test tst1 test2 -release # production version of two tests
+SEE ALSO
+ The fpm(1) home page is https://github.com/fortran-lang/fpm
+
diff --git a/fpm/fpm.toml b/fpm/fpm.toml
index d0cff7a..9418204 100644
--- a/fpm/fpm.toml
+++ b/fpm/fpm.toml
@@ -12,7 +12,7 @@ tag = "v0.2"
[dependencies.M_CLI2]
git = "https://github.com/urbanjost/M_CLI2.git"
-rev = "5c7df1267c918ec2b1b8e2c6a0ac000367b562cf"
+rev = "649075aceb97f997665a1a4656514fd2e9b4becc"
[[test]]
name = "cli-test"
diff --git a/fpm/src/fpm_command_line.f90 b/fpm/src/fpm_command_line.f90
index 76bdca6..5b9d93a 100644
--- a/fpm/src/fpm_command_line.f90
+++ b/fpm/src/fpm_command_line.f90
@@ -54,21 +54,25 @@ end type
character(len=:),allocatable :: name
character(len=ibug),allocatable :: names(:)
+character(len=:), allocatable :: version_text(:)
+character(len=:), allocatable :: help_new(:), help_fpm(:), help_run(:), help_test(:), help_build(:)
+character(len=:), allocatable :: help_text(:), help_install(:), help_help(:)
+
contains
subroutine get_command_line_settings(cmd_settings)
class(fpm_cmd_settings), allocatable, intent(out) :: cmd_settings
character(len=4096) :: cmdarg
integer :: i
- character(len=:), allocatable :: help_text(:), version_text(:)
+ call set_help()
! text for --version switch,
version_text = [character(len=80) :: &
- & 'VERSION: 0.1.0, Pre-alpha', &
- & 'PROGRAM: fpm(1)', &
- & 'DESCRIPTION: A Fortran package manager and build system', &
- & 'HOME PAGE: https://github.com/fortran-lang/fpm', &
- & 'LICENSE: MIT', &
+ & 'Version: 0.1.0, Pre-alpha', &
+ & 'Program: fpm(1)', &
+ & 'Description: A Fortran package manager and build system', &
+ & 'Home Page: https://github.com/fortran-lang/fpm', &
+ & 'License: MIT', &
& '']
! find the subcommand name by looking for first word on command not starting with dash
cmdarg = ''
@@ -81,44 +85,7 @@ contains
select case(trim(cmdarg))
case('run')
- help_text=[character(len=80) :: &
- 'NAME ', &
- ' run(1) - the fpm(1) subcommand to run project applications ', &
- ' ', &
- 'SYNOPSIS ', &
- ' fpm run [NAME(s)] [--release] [-- ARGS] ', &
- ' ', &
- ' fpm run --help|--version ', &
- ' ', &
- 'DESCRIPTION ', &
- ' Run applications you have built in your fpm(1) project. ', &
- ' ', &
- 'OPTIONS ', &
- ' NAME(s) optional list of specific names to execute. ', &
- ' The default is to run all the applications in app/ ', &
- ' or the programs listed in the "fpm.toml" file. ', &
- ' --release selects the optimized build instead of the debug ', &
- ' build. ', &
- ' --list list candidates instead of building or running them', &
- ' -- ARGS optional arguments to pass to the program(s). ', &
- ' The same arguments are passed to all names ', &
- ' specified. ', &
- ' ', &
- 'EXAMPLES ', &
- 'run fpm(1) project applications ', &
- ' ', &
- ' # run default programs in /app or as specified in "fpm.toml" ', &
- ' fpm run ', &
- ' ', &
- ' # run a specific program and pass arguments to the command ', &
- ' fpm run mytest -- -x 10 -y 20 -title "my title line" ', &
- ' ', &
- ' # production version of two applications ', &
- ' fpm run tst1 test2 -release ', &
- 'SEE ALSO ', &
- ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
- '' ]
- call set_args('--list F --release F --',help_text,version_text)
+ call set_args('--list F --release F --',help_run,version_text)
if( size(unnamed) .gt. 1 )then
names=unnamed(2:)
@@ -131,93 +98,13 @@ contains
& release=lget('release'), args=remaining )
case('build')
- help_text=[character(len=80) :: &
- 'NAME ', &
- ' build(1) - the fpm(1) subcommand to build a project ', &
- 'SYNOPSIS ', &
- ' fpm build [--release]|[-list] ', &
- ' fpm build --help|--version ', &
- ' ', &
- 'DESCRIPTION ', &
- ' The "fpm build" command ', &
- ' o Fetches any dependencies ', &
- ' o Scans your sources ', &
- ' o Builds them in the proper order ', &
- ' ', &
- ' The Fortran source files are assumed to be in app/, test/, and src/ ', &
- ' by default. The changed or new files found are rebuilt. ', &
- ' The results are placed in the build/ directory. ', &
- ' ', &
- ' Non-default pathnames and remote dependencies are used if ', &
- ' specified in the "fpm.toml" file. ', &
- ' ', &
- 'OPTIONS ', &
- ' --release build in build/*_release instead of build/*_debug with ', &
- ' high optimization instead of full debug options. ', &
- ' --list list candidates instead of building or running them ', &
- ' --help print this help and exit ', &
- ' --version print program version information and exit ', &
- ' ', &
- 'EXAMPLES ', &
- ' Sample commands: ', &
- ' ', &
- ' fpm build # build with debug options ', &
- ' fpm build -release # build with high optimization ', &
- 'SEE ALSO ', &
- ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
- '' ]
- call set_args( '--release F --list F --',help_text,version_text )
+ call set_args( '--release F --list F --',help_build,version_text )
allocate( fpm_build_settings :: cmd_settings )
cmd_settings=fpm_build_settings( release=lget('release'),list=lget('list') )
case('new')
- help_text=[character(len=80) :: &
- 'NAME ', &
- ' new(1) - the fpm(1) subcommand to initialize a new project ', &
- 'SYNOPSIS ', &
- ' fpm new NAME [--with-executable] [--with-test] ', &
- ' ', &
- ' fpm new --help|--version ', &
- ' ', &
- 'DESCRIPTION ', &
- ' Create a new programming project in a new directory ', &
- ' ', &
- ' The "new" subcommand creates a directory and runs the command ', &
- ' "git init" in that directory and makes an example "fpm.toml" ', &
- ' file, a src/ directory, and optionally a test/ and app/ ', &
- ' directory with trivial example Fortran source files. ', &
- ' ', &
- ' Remember to update the information in the sample "fpm.toml" ', &
- ' file with such information as your name and e-mail address. ', &
- ' ', &
- ' OPTIONS ', &
- ' NAME the name of the project directory to create. The name ', &
- ' must be a valid Fortran name composed of 1 to 63 ', &
- ' ASCII alphanumeric characters and underscores, ', &
- ' starting with a letter. ', &
- ' --with-executable additionally create optional directory app/ ', &
- ' and placeholder program for "fpm run". ', &
- ' --with-test additionally create optional directory test/', &
- ' and placeholder program for "fpm test". ', &
- ' --help print this help and exit ', &
- ' --version print program version information and exit ', &
- ' ', &
- 'EXAMPLES ', &
- ' Sample use ', &
- ' ', &
- ' fpm new myproject # create new project directory and seed it', &
- ' cd myproject # Enter the new directory ', &
- ' # and run commands such as ', &
- ' fpm build ', &
- ' fpm run # if you selected --with-executable ', &
- ' fpm test # if you selected --with-test ', &
- 'SEE ALSO ', &
- ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
- ' ', &
- ' Registered packages are at https://fortran-lang.org/packages ', &
- '' ]
- call set_args(' --with-executable F --with-test F --lib F --app F --test F', help_text, version_text)
+ call set_args(' --with-executable F --with-test F --lib F --app F --test F', help_new, version_text)
select case(size(unnamed))
case(1)
write(stderr,'(*(g0))')'ERROR: directory name required'
@@ -231,11 +118,11 @@ contains
stop 2
end select
- if( .not.fortran_name(basename(name)) )then
- write(stderr,'(*(g0))')'ERROR: new directory name must be an allowed Fortran name.'
+ if( .not.is_fortran_name(basename(name)) )then
+ write(stderr,'(*(g0))')'ERROR: the new directory basename must be an allowed Fortran name.'
write(stderr,'(*(g0))')' It must be composed of 1 to 63 ASCII characters and start'
write(stderr,'(*(g0))')' with a letter and be composed entirely of alphanumeric'
- write(stderr,'(*(g0))')' characters [A-Za-z] and underscores.'
+ write(stderr,'(*(g0))')' characters [A-Za-z0-9] and underscores.'
stop 4
endif
@@ -261,54 +148,48 @@ contains
& with_lib=lget('lib') )
endif
+ case('help')
+ call set_args(' ',help_help,version_text)
+ if(size(unnamed).lt.2)then
+ unnamed=['help', 'fpm ']
+ endif
+ allocate(character(len=80) :: help_text(0))
+ do i=2,size(unnamed)
+ select case(unnamed(i))
+ case('build ' )
+ help_text=[character(len=80) :: help_text, help_build]
+ case('run ' )
+ help_text=[character(len=80) :: help_text, help_run]
+ case('help ' )
+ help_text=[character(len=80) :: help_text, help_help]
+ case('test ' )
+ help_text=[character(len=80) :: help_text, help_test]
+ case('new ' )
+ help_text=[character(len=80) :: help_text, help_new]
+ case('fpm ' )
+ help_text=[character(len=80) :: help_text, help_fpm]
+ case('version' )
+ help_text=[character(len=80) :: help_text, version_text]
+ case('all ' )
+ help_text=[character(len=80) :: help_text, help_fpm]
+ help_text=[character(len=80) :: help_text, help_new]
+ help_text=[character(len=80) :: help_text, help_build]
+ help_text=[character(len=80) :: help_text, help_run]
+ help_text=[character(len=80) :: help_text, help_test]
+ help_text=[character(len=80) :: help_text, version_text]
+ case default
+ help_text=[character(len=80) :: help_text, 'unknown subcommand'//unnamed(i)]
+ end select
+ enddo
+ write(stderr,'(g0)')(trim(help_text(i)), i=1, size(help_text) )
+
case('install')
- help_text=[character(len=80) :: &
- ' fpm(1) subcommand "install" ', &
- ' ', &
- ' Usage: fpm install NAME ', &
- '' ]
- call set_args('--release F ', help_text, version_text)
+ call set_args('--release F ', help_install, version_text)
allocate(fpm_install_settings :: cmd_settings)
case('test')
- help_text=[character(len=80) :: &
- 'NAME ', &
- ' test(1) - the fpm(1) subcommand to run project tests ', &
- ' ', &
- 'SYNOPSIS ', &
- ' fpm test [NAME(s)] [--release] [--list] [-- ARGS] ', &
- ' ', &
- ' fpm test --help|--version ', &
- ' ', &
- 'DESCRIPTION ', &
- ' Run applications you have built to test your project. ', &
- ' ', &
- 'OPTIONS ', &
- ' NAME(s) optional list of specific test names to execute. ', &
- ' The default is to run all the tests in test/ ', &
- ' or the tests listed in the "fpm.toml" file. ', &
- ' --release selects the optimized build instead of the debug ', &
- ' build. ', &
- ' --list list candidates instead of building or running them', &
- ' -- ARGS optional arguments to pass to the test program(s). ', &
- ' The same arguments are passed to all test names ', &
- ' specified. ', &
- ' ', &
- 'EXAMPLES ', &
- 'run tests ', &
- ' ', &
- ' # run default tests in /test or as specified in "fpm.toml" ', &
- ' fpm test ', &
- ' ', &
- ' # run a specific test and pass arguments to the command ', &
- ' fpm test mytest -- -x 10 -y 20 -title "my title line" ', &
- ' ', &
- ' fpm test tst1 test2 -release # production version of two tests', &
- 'SEE ALSO ', &
- ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
- '' ]
- call set_args('--list F --release F --',help_text,version_text)
+ call set_args('--list F --release F --',help_test,version_text)
if( size(unnamed) .gt. 1 )then
names=unnamed(2:)
@@ -321,76 +202,8 @@ contains
& release=lget('release'), args=remaining )
case default
- help_text=[character(len=80) :: &
- 'NAME', &
- ' fpm(1) - A Fortran package manager and build system', &
- 'OS TYPE' ]
- select case (get_os_type())
- case (OS_LINUX); help_text=[character(len=80) :: help_text, " Linux" ]
- case (OS_MACOS); help_text=[character(len=80) :: help_text, " macOS" ]
- case (OS_WINDOWS); help_text=[character(len=80) :: help_text, " Windows" ]
- case (OS_CYGWIN); help_text=[character(len=80) :: help_text, " Cygwin" ]
- case (OS_SOLARIS); help_text=[character(len=80) :: help_text, " Solaris" ]
- case (OS_FREEBSD); help_text=[character(len=80) :: help_text, " FreeBSD" ]
- case (OS_UNKNOWN); help_text=[character(len=80) :: help_text, " Unknown" ]
- case default ; help_text=[character(len=80) :: help_text, " UNKNOWN" ]
- end select
- help_text=[character(len=80) :: help_text, &
- 'SYNOPSIS ', &
- ' fpm SUBCOMMAND [SUBCOMMAND_OPTIONS] ', &
- ' ', &
- ' fpm --help|--version ', &
- ' ', &
- 'DESCRIPTION ', &
- ' fpm is a package manager that helps you create Fortran projects that are ', &
- ' optionally dependent on multiple files and other fpm(1) packages. ', &
- ' ', &
- ' Most significantly fpm(1) lets you pull upon other fpm(1) packages in ', &
- ' distributed git(1) repositories as if the packages were a basic part ', &
- ' of your default programming environment, as well as letting you share ', &
- ' your projects with others in a similar manner. ', &
- ' ', &
- ' See the fpm(1) repository for a listing of such available projects. ', &
- ' ', &
- ' All output goes into the directory "build/". ', &
- ' ', &
- 'SUBCOMMANDS ', &
- ' Valid fpm subcommands are: ', &
- ' ', &
- ' build [--release] [--list] ', &
- ' Compile the packages into the "build/" directory. ', &
- ' new NAME [--with-executable] [--with-test] ', &
- ' Create a new Fortran package directory ', &
- ' with sample files ', &
- ' run [NAME(s)] [--release] [--list] [-- ARGS] ', &
- ' Run the local package binaries. defaults to all ', &
- ' binaries for that release. ', &
- ' test [NAME(s)] [--release] [--list] [-- ARGS] ', &
- ' Run the tests ', &
- 'SUBCOMMAND OPTIONS ', &
- ' --release Builds or runs in release mode (versus debug mode). fpm(1) ', &
- ' Defaults to using common compiler debug flags and building ', &
- ' in "build/gfortran_debug/". When this flag is present build ', &
- ' output goes into "build/gfortran_release/" and common ', &
- ' compiler optimization flags are used. ', &
- ' --list list candidates instead of building or running them ', &
- ' -- ARGS Arguments to pass to executables/tests ', &
- ' --help Show this help text and exit. Valid for all subcommands. ', &
- ' --version Show version information and exit. Valid for all subcommands.', &
- 'EXAMPLES ', &
- ' sample commands: ', &
- ' ', &
- ' fpm build ', &
- ' fpm test ', &
- ' fpm run ', &
- ' fpm new --help ', &
- ' fpm new mypackage --with-executable --with-test ', &
- ' fpm run myprogram --release -- -x 10 -y 20 --title "my title" ', &
- 'SEE ALSO ', &
- ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
- '']
-
- call set_args(' ', help_text, version_text)
+
+ call set_args(' ', help_fpm, version_text)
! Note: will not get here if --version or --usage or --help is present on commandline
if(len_trim(cmdarg).eq.0)then
write(stderr,'(*(a))')'ERROR: missing subcommand'
@@ -402,13 +215,11 @@ contains
' Enter "fpm --help" for more information ', &
'' ]
write(stderr,'(g0)')(trim(help_text(i)), i=1, size(help_text) )
- !!stop 3 ! causes github site tests to fail
- stop
end select
end subroutine get_command_line_settings
- function fortran_name(line) result (lout)
+ function is_fortran_name(line) result (lout)
! determine if a string is a valid Fortran name ignoring trailing spaces (but not leading spaces)
character(len=*),parameter :: int='0123456789'
character(len=*),parameter :: lower='abcdefghijklmnopqrstuvwxyz'
@@ -426,6 +237,258 @@ contains
else
lout = .false.
endif
- end function fortran_name
+ end function is_fortran_name
+
+ subroutine set_help()
+ help_fpm=[character(len=80) :: &
+ 'NAME', &
+ ' fpm(1) - A Fortran package manager and build system', &
+ 'OS TYPE' ]
+ select case (get_os_type())
+ case (OS_LINUX); help_fpm=[character(len=80) :: help_fpm, " Linux" ]
+ case (OS_MACOS); help_fpm=[character(len=80) :: help_fpm, " macOS" ]
+ case (OS_WINDOWS); help_fpm=[character(len=80) :: help_fpm, " Windows" ]
+ case (OS_CYGWIN); help_fpm=[character(len=80) :: help_fpm, " Cygwin" ]
+ case (OS_SOLARIS); help_fpm=[character(len=80) :: help_fpm, " Solaris" ]
+ case (OS_FREEBSD); help_fpm=[character(len=80) :: help_fpm, " FreeBSD" ]
+ case (OS_UNKNOWN); help_fpm=[character(len=80) :: help_fpm, " Unknown" ]
+ case default ; help_fpm=[character(len=80) :: help_fpm, " UNKNOWN" ]
+ end select
+ help_fpm=[character(len=80) :: help_fpm, &
+ 'SYNOPSIS ', &
+ ' fpm SUBCOMMAND [SUBCOMMAND_OPTIONS] ', &
+ ' ', &
+ ' fpm --help|--version ', &
+ ' ', &
+ 'DESCRIPTION ', &
+ ' fpm is a package manager that helps you create Fortran projects that are ', &
+ ' optionally dependent on multiple files and other fpm(1) packages. ', &
+ ' ', &
+ ' Most significantly fpm(1) lets you pull upon other fpm(1) packages in ', &
+ ' distributed git(1) repositories as if the packages were a basic part ', &
+ ' of your default programming environment, as well as letting you share ', &
+ ' your projects with others in a similar manner. ', &
+ ' ', &
+ ' See the fpm(1) repository for a listing of such available projects. ', &
+ ' ', &
+ ' All output goes into the directory "build/". ', &
+ ' ', &
+ 'SUBCOMMANDS ', &
+ ' Valid fpm subcommands are: ', &
+ ' ', &
+ ' build [--release] [--list] ', &
+ ' Compile the packages into the "build/" directory. ', &
+ ' new NAME [--with-executable] [--with-test] ', &
+ ' Create a new Fortran package directory ', &
+ ' with sample files ', &
+ ' run [NAME(s)] [--release] [--list] [-- ARGS] ', &
+ ' Run the local package binaries. defaults to all ', &
+ ' binaries for that release. ', &
+ ' test [NAME(s)] [--release] [--list] [-- ARGS] ', &
+ ' Run the tests ', &
+ ' help [NAME(s)] Alternate method for displaying subcommand help ', &
+ ' ', &
+ 'SUBCOMMAND OPTIONS ', &
+ ' --release Builds or runs in release mode (versus debug mode). fpm(1) ', &
+ ' Defaults to using common compiler debug flags and building ', &
+ ' in "build/gfortran_debug/". When this flag is present build ', &
+ ' output goes into "build/gfortran_release/" and common ', &
+ ' compiler optimization flags are used. ', &
+ ' --list list candidates instead of building or running them ', &
+ ' -- ARGS Arguments to pass to executables/tests ', &
+ ' --help Show this help text and exit. Valid for all subcommands. ', &
+ ' --version Show version information and exit. Valid for all subcommands.', &
+ 'EXAMPLES ', &
+ ' sample commands: ', &
+ ' ', &
+ ' fpm build ', &
+ ' fpm test ', &
+ ' fpm run ', &
+ ' fpm new --help ', &
+ ' fpm new mypackage --with-executable --with-test ', &
+ ' fpm run myprogram --release -- -x 10 -y 20 --title "my title" ', &
+ 'SEE ALSO ', &
+ ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
+ '']
+ help_run=[character(len=80) :: &
+ 'NAME ', &
+ ' run(1) - the fpm(1) subcommand to run project applications ', &
+ ' ', &
+ 'SYNOPSIS ', &
+ ' fpm run [NAME(s)] [--release] [-- ARGS] ', &
+ ' ', &
+ ' fpm run --help|--version ', &
+ ' ', &
+ 'DESCRIPTION ', &
+ ' Run applications you have built in your fpm(1) project. ', &
+ ' ', &
+ 'OPTIONS ', &
+ ' NAME(s) optional list of specific names to execute. ', &
+ ' The default is to run all the applications in app/ ', &
+ ' or the programs listed in the "fpm.toml" file. ', &
+ ' --release selects the optimized build instead of the debug ', &
+ ' build. ', &
+ ' --list list candidates instead of building or running them', &
+ ' -- ARGS optional arguments to pass to the program(s). ', &
+ ' The same arguments are passed to all names ', &
+ ' specified. ', &
+ ' ', &
+ 'EXAMPLES ', &
+ 'run fpm(1) project applications ', &
+ ' ', &
+ ' # run default programs in /app or as specified in "fpm.toml" ', &
+ ' fpm run ', &
+ ' ', &
+ ' # run a specific program and pass arguments to the command ', &
+ ' fpm run mytest -- -x 10 -y 20 -title "my title line" ', &
+ ' ', &
+ ' # production version of two applications ', &
+ ' fpm run tst1 test2 -release ', &
+ 'SEE ALSO ', &
+ ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
+ '' ]
+ help_build=[character(len=80) :: &
+ 'NAME ', &
+ ' build(1) - the fpm(1) subcommand to build a project ', &
+ 'SYNOPSIS ', &
+ ' fpm build [--release]|[-list] ', &
+ ' fpm build --help|--version ', &
+ ' ', &
+ 'DESCRIPTION ', &
+ ' The "fpm build" command ', &
+ ' o Fetches any dependencies ', &
+ ' o Scans your sources ', &
+ ' o Builds them in the proper order ', &
+ ' ', &
+ ' The Fortran source files are assumed to be in app/, test/, and src/ ', &
+ ' by default. The changed or new files found are rebuilt. ', &
+ ' The results are placed in the build/ directory. ', &
+ ' ', &
+ ' Non-default pathnames and remote dependencies are used if ', &
+ ' specified in the "fpm.toml" file. ', &
+ ' ', &
+ 'OPTIONS ', &
+ ' --release build in build/*_release instead of build/*_debug with ', &
+ ' high optimization instead of full debug options. ', &
+ ' --list list candidates instead of building or running them ', &
+ ' --help print this help and exit ', &
+ ' --version print program version information and exit ', &
+ ' ', &
+ 'EXAMPLES ', &
+ ' Sample commands: ', &
+ ' ', &
+ ' fpm build # build with debug options ', &
+ ' fpm build -release # build with high optimization ', &
+ 'SEE ALSO ', &
+ ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
+ '' ]
+ help_help=[character(len=80) :: &
+ 'NAME ', &
+ ' help(1) - the fpm(1) subcommand to display help ', &
+ 'SYNOPSIS ', &
+ ' fpm help [fpm][new][build][run][test][help][version][all] ', &
+ ' ', &
+ 'DESCRIPTION ', &
+ ' The "fpm help" command is an alternative to the --help parameter ', &
+ ' on the fpm(1) command and its subcommands. ', &
+ ' ', &
+ 'OPTIONS ', &
+ ' NAME(s) A list of topic names to display. ', &
+ ' ', &
+ 'EXAMPLES ', &
+ ' ', &
+ ' fpm help ', &
+ ' fpm help version ', &
+ ' fpm all ', &
+ 'SEE ALSO ', &
+ ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
+ '' ]
+ help_new=[character(len=80) :: &
+ 'NAME ', &
+ ' new(1) - the fpm(1) subcommand to initialize a new project ', &
+ 'SYNOPSIS ', &
+ ' fpm new NAME [--with-executable] [--with-test] ', &
+ ' ', &
+ ' fpm new --help|--version ', &
+ ' ', &
+ 'DESCRIPTION ', &
+ ' Create a new programming project in a new directory ', &
+ ' ', &
+ ' The "new" subcommand creates a directory and runs the command ', &
+ ' "git init" in that directory and makes an example "fpm.toml" ', &
+ ' file, a src/ directory, and optionally a test/ and app/ ', &
+ ' directory with trivial example Fortran source files. ', &
+ ' ', &
+ ' Remember to update the information in the sample "fpm.toml" ', &
+ ' file with such information as your name and e-mail address. ', &
+ ' ', &
+ 'OPTIONS ', &
+ ' NAME the name of the project directory to create. The name ', &
+ ' must be a valid Fortran name composed of 1 to 63 ', &
+ ' ASCII alphanumeric characters and underscores, ', &
+ ' starting with a letter. ', &
+ ' --with-executable additionally create optional directory app/ ', &
+ ' and placeholder program for "fpm run". ', &
+ ' --with-test additionally create optional directory test/', &
+ ' and placeholder program for "fpm test". ', &
+ ' --help print this help and exit ', &
+ ' --version print program version information and exit ', &
+ ' ', &
+ 'EXAMPLES ', &
+ ' Sample use ', &
+ ' ', &
+ ' fpm new myproject # create new project directory and seed it', &
+ ' cd myproject # Enter the new directory ', &
+ ' # and run commands such as ', &
+ ' fpm build ', &
+ ' fpm run # if you selected --with-executable ', &
+ ' fpm test # if you selected --with-test ', &
+ 'SEE ALSO ', &
+ ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
+ ' ', &
+ ' Registered packages are at https://fortran-lang.org/packages ', &
+ '' ]
+ help_test=[character(len=80) :: &
+ 'NAME ', &
+ ' test(1) - the fpm(1) subcommand to run project tests ', &
+ ' ', &
+ 'SYNOPSIS ', &
+ ' fpm test [NAME(s)] [--release] [--list] [-- ARGS] ', &
+ ' ', &
+ ' fpm test --help|--version ', &
+ ' ', &
+ 'DESCRIPTION ', &
+ ' Run applications you have built to test your project. ', &
+ ' ', &
+ 'OPTIONS ', &
+ ' NAME(s) optional list of specific test names to execute. ', &
+ ' The default is to run all the tests in test/ ', &
+ ' or the tests listed in the "fpm.toml" file. ', &
+ ' --release selects the optimized build instead of the debug ', &
+ ' build. ', &
+ ' --list list candidates instead of building or running them', &
+ ' -- ARGS optional arguments to pass to the test program(s). ', &
+ ' The same arguments are passed to all test names ', &
+ ' specified. ', &
+ ' ', &
+ 'EXAMPLES ', &
+ 'run tests ', &
+ ' ', &
+ ' # run default tests in /test or as specified in "fpm.toml" ', &
+ ' fpm test ', &
+ ' ', &
+ ' # run a specific test and pass arguments to the command ', &
+ ' fpm test mytest -- -x 10 -y 20 -title "my title line" ', &
+ ' ', &
+ ' fpm test tst1 test2 -release # production version of two tests', &
+ 'SEE ALSO ', &
+ ' The fpm(1) home page is https://github.com/fortran-lang/fpm ', &
+ '' ]
+ help_install=[character(len=80) :: &
+ ' fpm(1) subcommand "install" ', &
+ ' ', &
+ ' Usage: fpm install NAME ', &
+ '' ]
+ end subroutine set_help
end module fpm_command_line
diff --git a/fpm/test/cli_test/cli_test.f90 b/fpm/test/cli_test/cli_test.f90
index ab032f5..fac49e8 100644
--- a/fpm/test/cli_test/cli_test.f90
+++ b/fpm/test/cli_test/cli_test.f90
@@ -40,7 +40,7 @@ character(len=256) :: message
character(len=*),parameter :: tests(*)= [ character(len=256) :: &
'CMD="new", ESTAT=1,', &
-'CMD="new -unknown", ESTAT=2,', &
+!'CMD="new -unknown", ESTAT=2,', &
'CMD="new my_project another yet_another -with-test", ESTAT=2,', &
'CMD="new my_project --with-executable", W_E=T, NAME="my_project",', &
'CMD="new my_project --with-executable -with-test", W_E=T,W_T=T, NAME="my_project",', &