/usr/share/doc/fcm/user_guide/api.html is in fcm 2016.12.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | <!DOCTYPE html>
<html>
<head>
<title>FCM: User Guide: A Brief Introduction to the FCM Perl API</title>
<meta name="author" content="FCM team" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="../etc/fcm-icon.png" type="image/png" />
<link rel="shortcut icon" href="../etc/fcm-icon.png" type="image/png" />
<link href="../etc/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
<link href="../etc/fcm.css" rel="stylesheet" media="screen" />
</head>
<body>
<div class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href=".."><span class="fcm-version">FCM</span></a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="../installation/">Installation</a></li>
<li><a class="active" href="#">User Guide</a></li>
</ul>
</div>
</div>
</div>
<div class="page-header">
<div class="fcm-page-content pull-right well well-sm"></div>
<h1>FCM: User Guide: A Brief Introduction to the FCM Perl API</h1>
</div>
<div class="container">
<div class="row">
<div class="col-md-12">
<p>The majority of FCM functionalities are provided by a set of Perl modules.
Old modules developed prior to <a href="../release_notes/2-0.html">release
2-0</a> reside in the <code>FCM1::*</code> name-space. Modules developed
thereafter reside in the <code>FCM::*</code> name-space. These are
sub-divided into the following name-spaces:</p>
<dl>
<dt><code>FCM::Class</code></dt>
<dd>
<p>Provides an internal object class framework.</p>
<p>The majority of the classes in the <code>FCM::*</code> name-space are
sub-classes of either <code>FCM::Class::CODE</code> or
<code>FCM::Class::HASH</code>. The former creates classes that are
blessed <code>CODE</code> references, and is intended for configurable
functional (i.e. mostly <em>stateless</em>) objects. The latter creates
classes that are blessed <code>HASH</code> references, and is intended
for data objects.</p>
<p>Note: In theory, we could use the standard module <code><a href=
"http://search.cpan.org/~rjbs/perl-5.12.3/lib/Class/Struct.pm">Class::Struct</a></code>
or the modern <a href="http://www.iinteractive.com/moose/">MOOSE</a>
framework. The problem is that the former is not powerful enough to give
us what we need, and the latter is not a standard module and is too heavy
weight for our intends and purposes. Instead, the developer decides that
it is easier to go for a light weight and in house solution.</p>
</dd>
<dt><code>FCM::CLI</code></dt>
<dd>
<p>Provides the logic and configuration of the command line interface
(CLI).</p>
<p>It is made up of the following components:</p>
<dl>
<dt><code>FCM::CLI</code></dt>
<dd>Logic to provide help and invoke functions of
<code>FCM::System</code>.</dd>
<dt><code>FCM::CLI::Exception</code></dt>
<dd>CLI exception.</dd>
<dt><code>FCM::CLI::Parser</code></dt>
<dd>CLI option parser and configuration.</dd>
<dt><samp>fcm-*.pod</samp></dt>
<dd>Help files for the CLI commands.</dd>
</dl>
</dd>
<dt><code>FCM::Context::*</code></dt>
<dd>
<p>Provides the data structures for storing the run time contexts.</p>
<p>The objects of these classes do very little, but they provide the data
structures that define the <em>states</em> of the program at run
time.</p>
</dd>
<dt><code>FCM::Exception</code></dt>
<dd>
<p>Provides the base class for exceptions.</p>
</dd>
<dt><code>FCM::System</code></dt>
<dd>
<p>Provides a façade to the functionalities of the FCM system.</p>
<p>The actual implementation is delegated to the following:</p>
<dl>
<dt><code>FCM::System::CM</code></dt>
<dd>The code management system. Currently a thin adapter to
<code>FCM1::Cm</code>.</dd>
<dt><code>FCM::System::Misc</code></dt>
<dd>Miscellaneous functions, e.g. <code>browse</code>,
<code>cfg-print</code>, <code>keyword-print</code>.</dd>
<dt><code>FCM::System::Old</code></dt>
<dd>Thin adapter to the old extract and build systems.</dd>
<dt><code>FCM::System::Make</code></dt>
<dd>The logic of the FCM make system.</dd>
<dt><code>FCM::System::Make::Build</code></dt>
<dd>FCM make: build system logic.</dd>
<dt><code>FCM::System::Make::Build::*</code></dt>
<dd>FCM make: build system components: File type and task specific
logic.</dd>
<dt><code>FCM::System::Make::Extract</code></dt>
<dd>FCM make: extract system logic.</dd>
<dt><code>FCM::System::Make::Mirror</code></dt>
<dd>FCM make: mirror system logic.</dd>
<dt><code>FCM::System::Make::Preprocess</code></dt>
<dd>FCM make: preprocess system logic, actually a configuration of
<code>FCM::System::Make::Build</code>.</dd>
<dt><code>FCM::System::Make::Share::*</code></dt>
<dd>Shared logic between all subsystems in
<code>FCM::System::Make::*</code>.</dd>
</dl>
</dd>
<dt><code>FCM::Util</code></dt>
<dd>
<p>Provides supporting utilities.</p>
<p>Functionalities include:</p>
<ul>
<li>abstract utilities for SVN URLs and file system paths.</li>
<li>configuration file reader.</li>
<li>event handler.</li>
<li>file utilities.</li>
<li>message report.</li>
<li>name space utilities.</li>
<li>shell invocation.</li>
<li>multi-process task runner.</li>
<li>timer.</li>
</ul>
<p>The logic of the more complex utilities are delegated to modules in
the <code>FCM::Util::*</code> name space.</p>
</dd>
</dl>
<p>Note: The majority of modules in the old <code>FCM1::*</code> name space
are considered deprecated, with the exception of <code>FCM1::Cm</code> and
those providing support functionalities for it. The functionalities of these
modules will eventually be absorbed into the <code>FCM::System::CM</code>
framework.</p>
</div>
</div>
</div>
<hr/>
<div class="container-fluid text-center">
<div class="row"><div class="col-md-12">
<address><small>
© British Crown Copyright 2006-16
<a href="http://www.metoffice.gov.uk">Met Office</a>.
See <a href="../etc/fcm-terms-of-use.html">Terms of Use</a>.<br />
This document is released under the British <a href=
"http://www.nationalarchives.gov.uk/doc/open-government-licence/" rel=
"license">Open Government Licence</a>.<br />
</small></address>
</div></div>
</div>
<script type="text/javascript" src="../etc/jquery.min.js"></script>
<script type="text/javascript" src="../etc/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../etc/fcm.js"></script>
<script type="text/javascript" src="../etc/fcm-version.js"></script>
</body>
</html>
|