aboutsummaryrefslogtreecommitdiff
path: root/docs.md
diff options
context:
space:
mode:
authorLaurence Kedward <laurence.kedward@bristol.ac.uk>2020-12-08 14:20:38 +0000
committerGitHub <noreply@github.com>2020-12-08 14:20:38 +0000
commit67a8168f6e2c483079ad3cbd699d69d5b7a3138e (patch)
treeb7b1067e091ecf7bceb1bd5dd01b11cabcc40728 /docs.md
parent447b4b2a39d69a19ac1a4bcae22e30372a23c859 (diff)
parentf17591bc8f0c1783ea86db080b0260dbefb7b588 (diff)
downloadfpm-67a8168f6e2c483079ad3cbd699d69d5b7a3138e.tar.gz
fpm-67a8168f6e2c483079ad3cbd699d69d5b7a3138e.zip
Merge pull request #273 from awvwgk/dev-docs
Update developer documentation (manifest + command line)
Diffstat (limited to 'docs.md')
-rw-r--r--docs.md47
1 files changed, 47 insertions, 0 deletions
diff --git a/docs.md b/docs.md
index 800cfab..1b4aef1 100644
--- a/docs.md
+++ b/docs.md
@@ -24,9 +24,56 @@ sort: permission-alpha
favicon: doc/media/favicon.ico
print_creation_date: true
extra_mods: iso_fortran_env:https://gcc.gnu.org/onlinedocs/gfortran/ISO_005fFORTRAN_005fENV.html
+ tomlf:https://toml-f.github.io/toml-f
+ M_CLI2:https://github.com/urbanjost/M_CLI2
creation_date: %Y-%m-%d %H:%M %z
md_extensions: markdown.extensions.toc
markdown.extensions.smarty
---
[TOC]
+
+# Fortran package manager developer documentation
+
+This is the main documentation of the Fortran package manager (*fpm*).
+This document serves as developer documentation of *fpm* itself and contains general advice for developing in the *fpm* code base.
+
+
+## The package manifest
+
+The central object describing an *fpm* project is the package manifest ``fpm.toml``.
+The manifest is written in TOML, you can find the TOML specification at the official [TOML homepage](https://toml.io).
+
+The ``fpm.toml`` file targets project developers and maintainers to relieve them from writing build files for their packages.
+With the package manifest a central place to collect information about the project is provided.
+It contains the versioning and licensing meta data, as well as the information on external dependencies and the required build-tools or compiler settings.
+
+The manifest format specific to *fpm* projects is documented in the [manifest reference](page/Manifest.html).
+
+@Note For a more practical but less complete guide on creating *fpm* projects see the [packaging guide](page/Packaging.html).
+
+The details of the TOML parsing are implemented with using the [tomlf](https://toml-f.github.io/toml-f) module.
+Generally, the interface to all TOML related functions for *fpm* is found in the proxy module [[fpm_toml]].
+
+All the manifest types are bundled in [[fpm_manifest]].
+While the specific subtables for the package configuration are found in the ``src/fpm/manifest`` directory, they should be reexported in the [[fpm_manifest]] module if they should be elsewhere in *fpm*.
+
+
+## Command line interface
+
+*fpm* is mainly used as a command line tool.
+To work with an *fpm* project as a user you can completely rely on the command line.
+
+The command line interface is build with the [M_CLI2](https://github.com/urbanjost/M_CLI2) module and can be found in [[fpm_command_line]].
+
+
+## Generating this documentation
+
+This documentation is generated by [FORD](https://github.com/Fortran-FOSS-Programmers/FORD).
+For more details on the [project file](https://github.com/fortran-lang/fpm/docs.md) and the comment markup in the source code visit the [FORD documentation](https://github.com/Fortran-FOSS-Programmers/ford/wiki).
+
+To regenerate this documentation run:
+
+```shell
+ford docs.md
+```