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
|
# this is in pod format (try `perldoc HACKING.pod`)
=pod
=head1 NAME
HACKING.pod - contributing to Munin
=head1 SYNOPSIS
This is the guide for Munin internals contributors (developers,
testers, documenters.)
If you are looking for more information on how to I<use> Munin you
probably want L<http://munin.projects.linpro.no/wiki/Documentation>
instead.
The munin code is marked by years on the battle front. You will
therefore find code that deviates from the guidelines defined
here. However, all new code should be made to comply.
These guidelines is an RFC for the time being and are of course
negotiable.
=head1 GETTING STARTED
In the dev_script directory you will find scripts that are meant to be
useful for developing. Most of them are tools for creating and using
munin in a sandbox.
=head2 THE SANDBOX
=over
=item B<install>
To make a clean rebuild of the sandbox
./dev_scripts/install 1
To just install the latest changes
./dev_scripts/install
=item B<enable/disable tls>
To test TLS, you can enable a paranoid TLS configuration by running:
./dev_scripts/enable_tls
And disable it with:
./dev_scripts/disable_tls
=item B<start/stop munin-node>
./dev_scripts/start_munin-node [munin-node params ...]
And
./dev_scripts/stop_munin-node
To do both:
./dev_scripts/restart_munin-node [munin-node params ...]
=item B<query_munin_node>
Use this command to query the munin-node directly:
./dev_scripts/query_munin_node list
=item B<run>
To run Munin master programs (munin-update, munin-html, munin-cron,
etc) use the run command.
./dev_scripts/run CMD [CMD args ...]
=back
=head1 PUNCTUATION VARIABLES
Don't use punctuation variables (see PBP page 79.)
use English qw(-no_match_vars);
We'll add an exception for $_, and $! as they should be fairly widely
recognized.
=head1 FORMATTING
=head2 perltidy
FIX
=head1 TESTS AND COVERAGE
Use TDD.
In node, server, or common:
perl Build.PL
./Build test
=head1 EXCEPTION HANDLING
Currently there is no unified approach to handling exceptions. Use
L<Carp>?
use Carp;
croak("Foo happened!");
confess("Foo happened!"); # With stack trace
Exceptions are caught with an eval
eval {
# Exceptionally scary code
};
if ($EVAL_ERROR) {
# Handle exception
}
=head1 DOCUMENTATION
The API documentation is embedded as POD in the code. See L<perlpod>
for more on POD.
More is on L<http://munin.projects.linpro.no/wiki/Documentation>
=head2 WRITING
The POD should be defined all in one place. For plugins you place it at
the top, else at the bottom.
=cut
|