26 |
rodolico |
1 |
### Programming
|
|
|
2 |
|
|
|
3 |
This document is for programmers who want to make changes to the code, or
|
|
|
4 |
just want to know how it all works. If you find something you want to fix,
|
|
|
5 |
we will be glad to add it to the system if you supply a diff.
|
|
|
6 |
svn diff filename > filename.diff
|
|
|
7 |
You can contact us by going to https://www.dailydata.net/contactus
|
|
|
8 |
|
|
|
9 |
### Overview
|
|
|
10 |
|
|
|
11 |
havirt is a complicated file in that I did a bunch of weird stuff in, and it
|
|
|
12 |
should be explained in the internal documentation. The basic idea is you
|
|
|
13 |
call havirt with two positional parameters, which is translated internally
|
|
|
14 |
to a module name and a sub (function) in that module.
|
|
|
15 |
|
|
|
16 |
Command line flags are processed first, and any additional parameters are
|
|
|
17 |
passed on the stack to the called function.
|
|
|
18 |
|
|
|
19 |
The function does something, then returns a string which is displayed on the
|
|
|
20 |
screen (unless the --quiet flag was passed).
|
|
|
21 |
|
|
|
22 |
So, for example.
|
|
|
23 |
havirt domain list
|
|
|
24 |
loads domain.pm, and executes the list function inside, displaying whatever
|
|
|
25 |
is returned by sub list.
|
|
|
26 |
havirt node scan node1 node2
|
|
|
27 |
loads node.pm, calls the scan function, with two parameters (node1, node2)
|
|
|
28 |
on the stack (@_)
|
|
|
29 |
|
|
|
30 |
havirt.pm is loaded in the **main** namespace, so it contains functions
|
|
|
31 |
which are common to all modules.
|
|
|
32 |
|