comparison relmon.1.xml @ 4:f28486666a4f

Add manpages for relmon and relmon_watchlist
author Guido Berhoerster <guido+relmon@berhoerster.name>
date Fri, 24 Oct 2014 22:44:39 +0200
parents
children 86a0c5d11f05
comparison
equal deleted inserted replaced
3:6d87242c537e 4:f28486666a4f
1 <?xml version="1.0"?>
2 <!--
3
4 Copyright (C) 2014 Guido Berhoerster <guido+relmon@berhoerster.name>
5
6 Permission is hereby granted, free of charge, to any person obtaining
7 a copy of this software and associated documentation files (the
8 "Software"), to deal in the Software without restriction, including
9 without limitation the rights to use, copy, modify, merge, publish,
10 distribute, sublicense, and/or sell copies of the Software, and to
11 permit persons to whom the Software is furnished to do so, subject to
12 the following conditions:
13
14 The above copyright notice and this permission notice shall be included
15 in all copies or substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
25 -->
26 <refentry xmlns="http://docbook.org/ns/docbook" xml:lang="en">
27 <info>
28 <author>
29 <personname>
30 <firstname>Guido</firstname>
31 <surname>Berhoerster</surname>
32 </personname>
33 <email>guido+relmon@berhoerster.name</email>
34 <personblurb/>
35 </author>
36 <date>24 October, 2014</date>
37 </info>
38 <refmeta>
39 <refentrytitle>relmon</refentrytitle>
40 <manvolnum>1</manvolnum>
41 <refmiscinfo class="source"/>
42 <refmiscinfo class="version"/>
43 <refmiscinfo class="manual">User Commands</refmiscinfo>
44 </refmeta>
45 <refnamediv>
46 <refname>relmon</refname>
47 <refpurpose>monitor websites of software projects for releases</refpurpose>
48 </refnamediv>
49 <refsynopsisdiv>
50 <cmdsynopsis>
51 <command>relmon list</command>
52 <arg choice="opt">
53 <option>-H</option>
54 </arg>
55 <arg choice="opt">
56 <option>-f</option>
57 <group choice="plain">
58 <arg choice="plain">html</arg>
59 <arg choice="plain">parseable</arg>
60 <arg choice="plain">text</arg>
61 </group>
62 </arg>
63 <arg choice="opt">
64 <option>-F</option>
65 <replaceable>url</replaceable>
66 </arg>
67 <arg choice="opt">
68 <option>-n</option>
69 <replaceable>number_items</replaceable>
70 </arg>
71 <arg choice="plain">
72 <replaceable>statefile</replaceable>
73 </arg>
74 </cmdsynopsis>
75 <cmdsynopsis>
76 <command>relmon list</command>
77 <arg choice="plain">
78 <option>-f</option>
79 <arg choice="plain">atom</arg>
80 </arg>
81 <arg choice="plain">
82 <option>-F</option>
83 <arg choice="plain">url</arg>
84 </arg>
85 <arg choice="opt">
86 <option>-n</option>
87 <replaceable>number_items</replaceable>
88 </arg>
89 <arg choice="plain">
90 <replaceable>statefile</replaceable>
91 </arg>
92 </cmdsynopsis>
93 <cmdsynopsis>
94 <command>relmon show</command>
95 <arg choice="plain">
96 <replaceable>statefile</replaceable>
97 </arg>
98 <arg choice="plain" rep="repeat">
99 <replaceable>name</replaceable>
100 </arg>
101 </cmdsynopsis>
102 <cmdsynopsis>
103 <command>relmon update</command>
104 <arg choice="opt">
105 <option>-d</option>
106 </arg>
107 <arg choice="opt">
108 <option>-e</option>
109 </arg>
110 <arg choice="opt">
111 <option>-v</option>
112 </arg>
113 <arg choice="opt">
114 <option>-c</option>
115 <replaceable>max_connections</replaceable>
116 </arg>
117 <arg choice="opt">
118 <option>-C</option>
119 <replaceable>ca_dir</replaceable>
120 </arg>
121 <arg choice="opt">
122 <option>-D</option>
123 <replaceable>delay</replaceable>
124 </arg>
125 <arg choice="opt">
126 <option>-H</option>
127 <replaceable>max_host_connections</replaceable>
128 </arg>
129 <arg choice="opt"><option>-i</option>
130 <arg choice="plain"><replaceable>item</replaceable></arg>
131 <arg choice="opt" rep="repeat"><replaceable>,</replaceable></arg>
132 </arg>
133 <arg choice="opt">
134 <option>-l</option>
135 <replaceable>logfile</replaceable>
136 </arg>
137 <arg choice="opt">
138 <option>-r</option>
139 <replaceable>retries</replaceable>
140 </arg>
141 <arg choice="opt">
142 <option>-t</option>
143 <replaceable>min_time</replaceable>
144 </arg>
145 <arg choice="plain">
146 <replaceable>watchlist</replaceable>
147 </arg>
148 <arg choice="plain">
149 <replaceable>statefile</replaceable>
150 </arg>
151 </cmdsynopsis>
152 <cmdsynopsis>
153 <command>relmon help</command>
154 <arg choice="opt">
155 <replaceable>subcommand</replaceable>
156 </arg>
157 </cmdsynopsis>
158 </refsynopsisdiv>
159 <refsect1>
160 <title>Description</title>
161 <para><command>relmon</command> is a utility for monitoring websites of
162 software projects for new releases. It can crawl websites via HTTP or
163 HTTPS using a configurable number of simultaneous connections and parse
164 HTML and XHTML documents as well as RSS 2.0 and Atom feeds. Software
165 releases are detected by extracting the version numbers from links to
166 distribution files from the parsed documents or feeds and comparing them
167 to previously extracted version numbers.</para>
168 <para>The crawling of the website of a software projects and the extraction
169 of version numbers are controlled by an entry with directions in a
170 watchlist file, see
171 <citerefentry><refentrytitle>relmon_watchlist</refentrytitle>
172 <manvolnum>4</manvolnum></citerefentry> for the exact format of
173 watchlist entries and further details on the operation of
174 <command>relmon</command>. In addition to the version numbers, the
175 history of releases consisting of the times new release were initially
176 discovered, any encountered errors and the time the version information
177 was last updated are recorded in a statefile. <command>relmon</command>
178 can selectively update explicitly specified items or on the basis of the
179 time an item was last updated or whether any errors were encountered
180 during the previous update of an item.</para>
181 <para>The recorded information on each software project can be output in
182 several different formats, including formatted text, machine-parseable
183 text, and HTML, optionally with the history of releases in Atom feed
184 format.</para>
185 </refsect1>
186 <refsect1>
187 <title>Subcommands</title>
188 <variablelist>
189 <para><command>relmon</command> has the following subcommands:</para>
190 <varlistentry>
191 <term>
192 <command>list</command>
193 </term>
194 <listitem>
195 <para>List version information for each software project in the
196 statefile in a tabular form and/or the history of releases in the
197 specified output format</para>
198 <variablelist>
199 <para>The following options are supported:</para>
200 <varlistentry>
201 <term>
202 <option>-f</option>
203 <replaceable>format</replaceable>
204 </term>
205 <listitem>
206 <para>Emit output in the specified format. Possible values for
207 <replaceable>format</replaceable> are html, atom, parseable
208 and text, the default output format is text. The parseable
209 format consist of one line per software project with four
210 fields seperated by a single tab containing the name,
211 version, timestamp and status. If the atom format is
212 selected, an Atom feed which only contains the history of
213 releases is emitted. Otherwise version information for each
214 software project in the statefile is emitted in a tabular
215 form.
216 </para>
217 </listitem>
218 </varlistentry>
219 <varlistentry>
220 <term>
221 <option>-F</option>
222 <replaceable>url</replaceable>
223 </term>
224 <listitem>
225 <para>If the output format is set to html, add a link to an
226 Atom feed with the specified URL. If the output format is
227 atom, use the specified URL as the URL where the Atom feed is
228 published. This option is mandatory if the atom ouput format
229 is selected.</para>
230 </listitem>
231 </varlistentry>
232 <varlistentry>
233 <term>
234 <option>-H</option>
235 </term>
236 <listitem>
237 <para>Include the history of released versions in the output.
238 If the parseable ouput format was selected, the history is
239 separated with a single blank line from the version
240 information and consists of one line per history entry with
241 three fields seperated by a single tab containing the times,
242 name and version.</para>
243 </listitem>
244 </varlistentry>
245 <varlistentry>
246 <term>
247 <option>-n</option>
248 <replaceable>number_items</replaceable>
249 </term>
250 <listitem>
251 <para>If used in combination with the <option>-H</option>
252 option or if the atom ouput format was selected, limit the
253 output to the specified number of recent history
254 entries.</para>
255 </listitem>
256 </varlistentry>
257 </variablelist>
258 </listitem>
259 </varlistentry>
260 <varlistentry>
261 <term>
262 <command>show</command>
263 </term>
264 <listitem>
265 <para>The <command>show</command> subcommand shows the name, latest
266 version, time of the last update, all known version nubers and
267 links to the corresponding distribution files, any errors
268 encountered during the last update operation, as well as the
269 release history for each specified software project from the
270 specified statefile.</para>
271 </listitem>
272 </varlistentry>
273 <varlistentry>
274 <term>
275 <command>update</command>
276 </term>
277 <listitem>
278 <para>The <command>update</command> subcommand gathers information
279 on all or a specified subset of the software projects specified in
280 the watchlist and updates or creates a new statefile. Before
281 updating the statefile a backup copy is created using the current
282 filename with a <literal>~</literal> suffix added to it.</para>
283 <para>The following options are supported:</para>
284 <variablelist>
285 <varlistentry>
286 <term>
287 <option>-d</option>
288 </term>
289 <listitem>
290 <para>Trace and log all transfers and parsing. This option is
291 used for debugging purposes.</para>
292 </listitem>
293 </varlistentry>
294 <varlistentry>
295 <term>
296 <option>-e</option>
297 </term>
298 <listitem>
299 <para>Only update version information for projects from the
300 watchlist which were not successfully updated during the last
301 update due to errors.</para>
302 </listitem>
303 </varlistentry>
304 <varlistentry>
305 <term>
306 <option>-v</option>
307 </term>
308 <listitem>
309 <para>Increase logging verbosity and log information about each
310 transfer.</para>
311 </listitem>
312 </varlistentry>
313 <varlistentry>
314 <term>
315 <option>-c</option>
316 <replaceable>max_connections</replaceable>
317 </term>
318 <listitem>
319 <para>Limit the number of simultaneous connections to the
320 specified number. The default value is 16.</para>
321 </listitem>
322 </varlistentry>
323 <varlistentry>
324 <term>
325 <option>-C</option>
326 <replaceable>ca_dir</replaceable>
327 </term>
328 <listitem>
329 <para>Verify the validity of TLS certificates using the CA
330 certificates in the specified directory.</para>
331 </listitem>
332 </varlistentry>
333 <varlistentry>
334 <term>
335 <option>-D</option>
336 <replaceable>delay</replaceable>
337 </term>
338 <listitem>
339 <para>Wait at least the specified number of seconds before
340 making subsequent connections to the same host. The default
341 value is 0.</para>
342 </listitem>
343 </varlistentry>
344 <varlistentry>
345 <term>
346 <option>-H</option>
347 <replaceable>max_host_connections</replaceable>
348 </term>
349 <listitem>
350 <para>Limit the number of simultaneous connections to a single
351 host to the specified number. The default value is 4.</para>
352 </listitem>
353 </varlistentry>
354 <varlistentry>
355 <term>
356 <option>-i</option>
357 <replaceable>items</replaceable>
358 </term>
359 <listitem>
360 <para>Update only the specified items. Multiple items can be
361 specifed in the form of a comma-sperated list.</para>
362 </listitem>
363 </varlistentry>
364 <varlistentry>
365 <term>
366 <option>-l</option>
367 <replaceable>logfile</replaceable>
368 </term>
369 <listitem>
370 <para>Log to the specified logfile instead of stderr.</para>
371 </listitem>
372 </varlistentry>
373 <varlistentry>
374 <term>
375 <option>-r</option>
376 <replaceable>retries</replaceable>
377 </term>
378 <listitem>
379 <para>Limit the number of retries in case of connection
380 failures. The default value is 3.</para>
381 </listitem>
382 </varlistentry>
383 <varlistentry>
384 <term>
385 <option>-t</option>
386 <replaceable>min_time</replaceable>
387 </term>
388 <listitem>
389 <para>Only update version information for projects from the
390 watchlist which have not been updated for the specified
391 number of seconds.</para>
392 </listitem>
393 </varlistentry>
394 </variablelist>
395 </listitem>
396 </varlistentry>
397 <varlistentry>
398 <term>
399 <command>help</command>
400 </term>
401 <listitem>
402 <para>The <command>help</command> subcommand displays usage
403 information about the specified subcommand or all subcommands and
404 exits.</para>
405 </listitem>
406 </varlistentry>
407 </variablelist>
408 </refsect1>
409 <refsect1>
410 <title>Examples</title>
411 <example>
412 <title>Updating version information</title>
413 <para>The following command retrieves the version information for the
414 entries in the watchlist <filename>foo.watchlist</filename> and stores
415 the results in the statefile <filename>foo.json</filename> using using
416 up to 100 simultaneous connections and logging all output to
417 <filename>relmon.log</filename>:</para>
418 <screen>
419 $ relmon update -c 100 foo.watchlist foo.json
420 </screen>
421 </example>
422 <example>
423 <title>Conditionally updating version information</title>
424 <para>The following command updates version information in the statefile
425 <filename>bar.json</filename> only for those entries in the watchlist
426 <filename>foo.watchlist</filename> which either have not been updated
427 for at least 48 hours or which could not be sucessfully updated during
428 the last update operation due to errors:</para>
429 <screen>
430 $ relmon update -v -t 172800 -e -l relmon.log watchlist relmon.json
431 </screen>
432 </example>
433 <example>
434 <title>Displaying detailed information on a monitored project</title>
435 <para>The following command displays all recorded information for the
436 monitored project named foo from the statefile
437 <filename>foo.json</filename>:</para>
438 <screen>
439 $ relmon show foo.json baz
440 </screen>
441 </example>
442 <example>
443 <title>Creating a HTML document with the version information on each
444 of the monitored projects</title>
445 <para>The following command sequence creates a HTML document containing a
446 table with the version information of each monitored project as well as
447 an associated Atom feed with the URL
448 <uri>http://example.net/releases.xml</uri> containing the 100 most
449 recently discovered releases from the statefile
450 <filename>foo.json</filename>:</para>
451 <screen>
452 $ relmon list -f html -F 'http://example.net/releases.xml' foo.json > releases.html
453 $ relmon list -f atom -F 'http://example.net/releases.xml' -n 100 foo.json
454 </screen>
455 </example>
456 </refsect1>
457 <refsect1>
458 <title>Exit Status</title>
459 <para>The following exit values are returned:</para>
460 <variablelist>
461 <varlistentry>
462 <term>0</term>
463 <listitem>
464 <para>Command successfully executed.</para>
465 </listitem>
466 </varlistentry>
467 <varlistentry>
468 <term>&gt; 0</term>
469 <listitem>
470 <para>An error has occured.</para>
471 </listitem>
472 </varlistentry>
473 </variablelist>
474 </refsect1>
475 <refsect1>
476 <title>See Also</title>
477 <para><citerefentry><refentrytitle>relmon_format</refentrytitle>
478 <manvolnum>4</manvolnum></citerefentry></para>
479 </refsect1>
480 </refentry>