Commit graph

690 commits

Author SHA1 Message Date
Hiroaki Nakamura
557c25a794 Add a hostname module, which sets system's hostname. 2013-08-25 00:49:15 +09:00
Marcin Płonka
4a43bb3b00 Skipping facts not available on AIX WPARs 2013-08-24 07:24:05 +02:00
shirou
26e6ac4340 supports nested values of ohai. 2013-08-23 17:00:56 +09:00
Michael DeHaan
003c86e250 Merge branch 'fix_service_with_initscript' of git://github.com/psvo/ansible into devel 2013-08-10 18:05:35 -04:00
Andy Wilson
85e34cc107 docfix: grammar in docstring for sysctl module 2013-08-08 12:23:30 -05:00
Petr Svoboda
48b064b55b Fix traceback in service module when svc_cmd is None
When service module is used on unsupported Linux system where init
script is used directly, LinuxService.svc_cmd is None so .endswith()
fails.

Fixes issue #3533
2013-08-08 14:24:20 +02:00
Michael Scherer
bb9d0a9493 Add urpmi as a package manager for mandriva-based distribution 2013-08-04 00:03:50 +02:00
James Cammarata
494030aa6c Removing skipped=True so the task is just marked as not-changed 2013-08-03 12:15:09 -05:00
James Cammarata
f3384374b9 Set result to skipped when vol group is missing and lv state=absent
Fixes issue #3714 - lvol module state=absent fails (with error) if
the volume group doesn't exist
2013-08-02 20:32:56 -05:00
rishid
fea38f44ac Verify groups string is not empty before trying add user to groups 2013-08-01 21:19:11 -04:00
Brian Coca
e8e8779dfa fixed bug from prev update
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-08-01 00:24:34 -04:00
Brian Coca
2c06418f6d whitespace updates on new lines
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-07-31 23:26:28 -04:00
Brian Coca
fe57037f84 now uses get_bin_path for lvg executables
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-07-31 22:32:41 -04:00
Michael DeHaan
5b80299231 Make exceptions handling python 2.4 compatible. 2013-07-29 13:27:16 -04:00
Michael DeHaan
ecf074865f Continue on mount errors, don't fail the setup module. 2013-07-22 13:57:35 -04:00
Brian Coca
220fe24d39 use global to fail as its not in self
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-07-22 10:54:20 -04:00
Michael DeHaan
3f4c6affa3 Update CHANGELOG 2013-07-21 10:12:28 -04:00
Michael DeHaan
9ebde16e3a Merge branch 'iss_cron' of git://github.com/dirtyharrycallahan/ansible into dh_cron 2013-07-21 10:00:11 -04:00
Michael DeHaan
4281f773bb Merge pull request #3602 from bcoca/fine_tune_stat_exception
narrowed down exception
2013-07-20 09:45:31 -07:00
Michael DeHaan
517c318989 Merge pull request #3470 from langemeijer/devel
Only append non_unique parameter if a uid is provided as well to user module
2013-07-20 09:11:52 -07:00
Brian Coca
7132f7e792 narrowed down exception we ignore and fail if any other unexpected one
crops up.
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-07-20 11:51:52 -04:00
Florian Tham
865a663d05 fix fatal error when removing logical volumes 2013-07-19 10:59:11 +02:00
Antti Rasinen
f9e9286b2c Make zfs set_property accept values with embedded spaces
Converting the argument list to a string with ' '.join causes
the shell interpreter to misparse spaces in property values.
Since the zfs command does not need shell anywhere, using
a list instead of a string works just as well with run_command. 

Fixes #3545.
2013-07-16 14:01:14 +03:00
Antti Rasinen
8bfe9f6942 Fix zfs property parsing
Current property parser breaks when values contain spaces. Since
zfs get -H returns tab separated lines,  it is better to explicitly
split on tabs than on whitespace.
2013-07-16 13:49:19 +03:00
trbs
98b284159f fix missing json module for issue #3363 print JSON error as string instead 2013-07-15 16:50:31 +02:00
Brian Coca
dd1ffce0a0 now won't throw exception if we don't have permission to stat a mtab
entry on linux (weird chromebook issue)
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-07-14 22:59:24 -04:00
Michael DeHaan
b22428d87e Merge pull request #3426 from trbs/services_sleep_option
sleep option for service module which adds a pauze between stopping and ...
2013-07-12 08:18:22 -07:00
Michael DeHaan
7dfafc6ec4 Merge pull request #3496 from johanwiren/bsd-ipv6-facts
Fix for populating default_ipv6 on BSD systems
2013-07-11 05:55:53 -07:00
Michael DeHaan
38ac6c9abd Merge pull request #3497 from johanwiren/bsd-gateway
Updated setup module to collect gateway fact for BSD systems
2013-07-11 05:55:26 -07:00
Michael DeHaan
03605484f8 Merge pull request #3388 from bcoca/fixed_user_create_doc
updated module docs to reflect 'correct' on_create vs on_creation
2013-07-11 05:34:37 -07:00
Johan Wirén
3e765f7775 Updated GenericBsdIfconfigNetwork to collect gateway 2013-07-11 00:05:53 +02:00
Johan Wirén
a03125e0cf Fix for populating default_ipv6 on BSD systems 2013-07-10 22:54:33 +02:00
Joshua Lund
d75f73fffe Added a new with_file example to the authorized_key documentation 2013-07-10 14:09:03 -06:00
Patrick Callahan
f37becb94a Bug fixes and enhancements.
Bugs:
(1) no longer allow empty jobs
(2) strip the header added by crontab package used in openSuSE and SuSE
(3) try not to leak temp files when things go wrong
(4) issue returning job names under certain conditions

Enhancements:
(1) Allow all special times not just reboot.
(2) Fail earlier by performing more input validation
(3) Add feature to allow removing cron file under /etc/cron.d

ToDo:
(1) Validate times (minute, hour, ...)
(2) Strip white space from fields such as name and job such that name=foo equals name=' foo'.
(3) More testing
2013-07-09 03:21:40 +00:00
Brian Coca
e0e50b5936 fixed check mode
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-07-08 15:41:39 -04:00
Casper Langemeijer
8727f0ce11 Only append non_unique parameter if a uid is provided as well 2013-07-08 11:46:38 +02:00
Aaron Brady
34617476d0 Make the CPU facts Hyperthreading aware 2013-07-03 16:25:35 +01:00
trbs
0d8da6eeb0 sleep option for service module which adds a pauze between stopping and starting a service using state=restarted. This helps for bad scripts that exist immediatly after signaling a process to stop. 2013-07-03 17:08:07 +02:00
Antti Rasinen
c2a4645349 Fix service enable on FreeBSD
Some services have a knob (i.e. rc.conf setting) whose name
differs from that of the script. For example, lockd process
is controlled with a script called lockd, but the rc.conf
value is rpc_lockd_enable.

Fixes issue #3382.
2013-07-03 14:52:23 +03:00
Brian Coca
b494d6d2ae updated module docs to reflect 'correct' on_create vs on_creation
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-06-30 20:32:05 -04:00
Michael DeHaan
8d23df3576 Merge pull request #3315 from madduck/fix-service-updatercd-changed
Let update-rc.d set changed flag properly
2013-06-30 16:09:39 -07:00
Michael DeHaan
da0e718698 Styling: semicolon 2013-06-30 18:56:03 -04:00
Michael DeHaan
936ad65726 Styling: blank lines 2013-06-30 18:52:33 -04:00
Serge van Ginderachter
fc01f88228 add more support for different size formats 2013-06-24 22:37:31 +02:00
martin f. krafft
3b7b061b07 Expand usage of Python 2.6 if statement
Syntax like "'foo' if bar else 'baz'" is not supported by all Python
versions targetted by Ansible. Hence we break it up.

Signed-off-by: martin f. krafft <madduck@madduck.net>
2013-06-23 09:19:27 +02:00
martin f. krafft
22b30b9281 Let update-rc.d set changed flag properly
When update-rc.d is used to enable/disable service, the changed flag was
always true (see #2189). This commit fixes that.

Signed-off-by: martin f. krafft <madduck@madduck.net>
2013-06-22 20:04:37 +02:00
Michael DeHaan
997bf64f3f Fix up some module docs formatting errors. 2013-06-19 22:37:09 -04:00
Patrick Callahan
d76151d47b bug fix: modify get_device_facts to handle servers with multiple pci domains
On machines with multiple pci domains get_device_facts would fail to
find a matching pci device causing setup to fail. Also on some platforms
there is additional information between the pci information and 'host'.
Modified get_device_facts to call lspci with the -D option and modified
the regex to account for the pci domain and to be more selective.
2013-06-18 22:48:05 -04:00
Michael DeHaan
0596f474cf Merge pull request #3147 from toshywoshy/setup_mtab_without_bind
changed get_mount_facts to ignore mount types 'none'
2013-06-18 17:56:49 -07:00
Michael DeHaan
e4f3c4e286 Clarify module docs 2013-06-18 20:19:29 -04:00
Michael DeHaan
f53bc323a5 Merge pull request #3230 from sayap/openrc
Add OpenRC support to the service module.
2013-06-18 17:13:06 -07:00
Brian Coca
930e524df1 now mount/unmount are searched for instead of hardcoded
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-06-17 17:01:35 -04:00
Yap Sok Ann
ec265a98e0 Add OpenRC support to the service module. 2013-06-17 11:29:48 +08:00
Michael DeHaan
709d2aaa0d Merge pull request #3120 from chrisgardner/solaris-os-facts
Add Solaris O/S distribution facts
2013-06-16 20:18:43 -07:00
Michael DeHaan
3840c608da Resolve docs conflict. 2013-06-16 22:48:11 -04:00
Michael DeHaan
4a7f0eeccc Fix merge conflict. 2013-06-16 22:47:29 -04:00
Michael DeHaan
1ea46e814d Merge pull request #3228 from skvidal/facts.d
first cut and docs for facts.d mechanism for setup module
2013-06-16 19:46:02 -07:00
Michael DeHaan
ae223ae10f Merge pull request #3181 from melodous/devel
HP-UX virtualization facts
2013-06-16 19:26:07 -07:00
trbs
e711145ba4 fixed x-bits in git 2013-06-16 22:22:16 -04:00
Michael DeHaan
152db00ed9 Merge remote branch 'origin' into devel
Conflicts:
	library/web_infrastructure/django_manage
2013-06-16 22:15:30 -04:00
Michael DeHaan
9017919f16 Merge pull request #3176 from jpmens/sol-epoch
setup epoch time doesn't have tics on Python 2.6.4 (Solaris).
2013-06-16 19:06:19 -07:00
Seth Vidal
38b055143a cut and docs for facts.d mechanism for setup module 2013-06-15 18:31:31 -04:00
Jan-Piet Mens
3404a0fc16 DOCS: standardize on EXAMPLES (a.k.a. Docs-JumboPatch JetLag Edition)
Migrated all examples: in DOCUMENTATION=''' string to standalone EXAMPLES=''' string
  Added deprecation warning to moduledev.rst and remove deprecated example from it
  Fixed up a few typos and uppercased some acronyms.
  add consistency to how EXAMPLES are formatted
2013-06-15 20:54:25 +02:00
Raul Melo
866903ebbc HP-UX virtualization facts 2013-06-12 18:59:20 +02:00
Jan-Piet Mens
8bce89a616 setup epoch time doesn't have tics on Python 2.6.4 (Solaris). 2013-06-11 09:13:32 +02:00
Jan-Piet Mens
846b48655b Protect None value in setup module 2013-06-11 07:08:55 +02:00
Michael DeHaan
30cab814e8 Use get_bin_path for blkid and add some aliases to the filesystem module. 2013-06-10 10:39:19 -04:00
Joshua Lund
dcad99ca6b Updates to the authorized_key documentation
* Clarified the meaning of 'user'
* Changed 'sshdir' to 'path' in the example
  * 'sshdir' is used internally in the module, but the argument is 'path'
* Made the capitalization consistent in the descriptions
2013-06-07 15:43:42 -06:00
Toshaan Bharvani
bf6bd10797 changed get_mount_facts to ignore mount types 'none' 2013-06-07 16:55:33 +02:00
Raul Melo
4c5d32f958 Facts for HP-UX 2013-06-05 14:01:18 +02:00
Chris Gardner
28cc0119a1 Use first line from /etc/release in "distribution_release" for consistency across Solaris and derivatives. 2013-06-03 22:33:01 +01:00
Michael DeHaan
e5b14d7170 Merge branch 'devel' of git://github.com/trbs/ansible into more_users 2013-06-03 11:50:17 -04:00
Michael DeHaan
9de5ecbdfc These options to bypass the check code seem to need to occur before said checks. 2013-06-01 18:32:02 -04:00
Chris Gardner
3bdf742d50 Add Solaris O/S facts "distribution" and "distribution_*" 2013-06-01 20:32:28 +01:00
Michael DeHaan
3012d269ff pep8 fixes 2013-06-01 12:29:03 -04:00
Michael DeHaan
fa2d027e33 Fix module labelled incorrectly. 2013-06-01 12:25:24 -04:00
Michael DeHaan
6503aea5fe Docs standardization 2013-06-01 12:20:45 -04:00
Michael DeHaan
64320fc662 Docs standardization 2013-06-01 12:16:24 -04:00
Michael DeHaan
7efe74d151 Warn when there is a space in the mount module opts parameter. 2013-06-01 11:33:17 -04:00
trbs
a31ba582b4 Add support for Open and NetBSD platforms for user and group modules, including a new login_class parameter for FreeBSD, OpenBSD and NetBSD. 2013-05-31 20:53:37 -04:00
Michael DeHaan
373e4ee7d4 Merge pull request #3083 from mvo5/feature/facts-add-statvfs
add "size_{total,free}" to the "mount" facts
2013-05-31 14:22:58 -07:00
Michael DeHaan
3765f4e400 Merge pull request #3076 from mmoya/userspace-arch-facts
Provide userspace_{architecture,bits} facts
2013-05-31 14:20:38 -07:00
Michael DeHaan
82f319d717 Merge branch 'solaris-network-facts' of git://github.com/chrisgardner/ansible into devel 2013-05-31 17:16:13 -04:00
Michael DeHaan
10c905e3e2 Remove debug statement in previous patch. 2013-05-31 17:13:54 -04:00
Michael DeHaan
dc1242d7eb Merge branch 'devel' of git://github.com/trbs/ansible into groups 2013-05-31 17:13:41 -04:00
Stephen Fromm
44cdd2dc0f cleanup to dmi fact discovery
When invoking dmidecode, first use module.get_bin_path() and secondly
use module.run_command.
Remove sub function execute() from get_dmi_facts().
Simplify get_dmi_facts() by only using two mechanisms to determine dmi
facts:  first try /sys/devices/virtual/dmi and if not available, use
dmidecode executable.
2013-05-31 17:10:34 -04:00
Michael DeHaan
f8f4eb8e9b Merge pull request #3068 from lorin/authkey-default
authorized_key: Set manage_dir default value
2013-05-31 13:16:44 -07:00
Michael DeHaan
291cd0b0c4 Merge pull request #3044 from chrisgardner/solaris_facts
Solaris facts
2013-05-31 13:15:58 -07:00
Michael DeHaan
e6620cdb9a Refine error message. 2013-05-31 15:23:24 -04:00
Michael DeHaan
da1738723a Merge branch 'rc.d-systemd' of git://github.com/glensc/ansible into sysd 2013-05-31 15:20:48 -04:00
Michael Vogt
fcfc9f5194 use statvfs.f_bavail to match the output of "df -B1" 2013-05-31 21:20:40 +02:00
Michael Vogt
fc3631b684 add "size_{total,free}" to the "mount" facts 2013-05-31 21:01:45 +02:00
Maykel Moya
e9a4741e36 Provide userspace_{architecture,bits} facts
When running inside a chroot userspace architecture might not
match that of the actual host.

This patch provides userspace_bits as reported by python's
platform.architecture(). Also provides userspace_architecture fact
if host is an x86 machine.
2013-05-31 12:24:43 +02:00
Chris Gardner
2d423ece52 Add Solaris network facts. IPv4 and IPv6 both working. 2013-05-31 00:57:23 +01:00
trbs
1f673450cd Fix for #3062 additional groups should only be added once.
Also consolidated duplicate groups code into one get_groups_set() method.
Removed unused call to user_group_membership.
Removed sorting operations on set functions cause sets are inherently unordered.
Minor style improvements to match the rest of the code.

The new function will make the order of group names passed to the system command less determistic.
Which was already the case for modify_user_usermod() but not for other methods.
It will also strip out duplicate group names automatically which was not always the case previously.
2013-05-30 19:18:18 -04:00
Lorin Hochstein
ec2fc7c983 authorized_key: Set manage_dir default value
This commit fixes a bug where the authorized_key module causes
the ~user/.ssh directory to be owned by root instead of the user,
when the manage_dir argument is not specified.

If the manage_dir argument was not specified, the module behaved as if
manage_dir was set to false, even though it's supposed to default to
true.

This module assumed that an optional argument, with no default
specified, will not be present in the module.params dictionary.

What actually seems to happen is that the argument does appear in
the module.params dictionary with a value of None.

The upside is that this line was evaluating to None instead of
true:

    manage_dir = params.get("manage_dir", True)

I fixed the problem in this particular module by explicitly specifying
the default value for the manage_dir arugment. But if this bug
occurred because of a change in behavior in AnsibleModule, then other
modules may be broken as well.
2013-05-30 16:16:14 -04:00
Michael DeHaan
94c35df69c Merge pull request #3064 from sfromm/issue2990
Verify /proc/modules is readable (issue #2990)
2013-05-30 11:12:30 -07:00
Stephen Fromm
c23ce83375 Verify /proc/modules is readable (issue #2990) 2013-05-30 10:25:48 -07:00
Stephen Fromm
44025024e9 Use get_bin_path to find mkfs command (issue #2983) 2013-05-30 10:25:35 -07:00
Chris Gardner
972545407c Fix typo. Solaris 9 should now correctly ignore 'brand' and use 'implementation'. 2013-05-30 08:51:03 +01:00
Chris Gardner
3cf243ec3e TODO: Separate IPv4 and IPv6 2013-05-30 08:39:11 +01:00
Jiří Kubíček
626cbc4e8b Add some FreeBSD facts
added:
 * ansible_distribution
 * ansible_distribution_release 
 * ansible_distribution_version
 * ansible_os_family
 * ansible_pkg_mgr
 * ansible_ssh_host_key_ecdsa_public

Also adds ECDSA public key for all plaforms.
2013-05-30 01:34:33 +02:00
Chris Gardner
d5bb7188f0 Add Solaris network facts. IPv6 details overwrite IPv4 per interface, needs further work. 2013-05-30 00:06:57 +01:00
Chris Gardner
f05540cb48 Add clock speed to processor description for SPARC CPU. 2013-05-29 21:00:21 +01:00
Chris Gardner
35ee8a16de Use 'implementation' if 'brand' not available (Solaris 9). Add CPU socket/core counting. 2013-05-29 18:54:43 +01:00
Michael DeHaan
da348cf079 Merge branch 'facter-fix' of git://github.com/flyapen/ansible into devel 2013-05-29 10:00:20 -04:00
Guillaume Lasmayous
fe484e5fd7 Implement NetBSD-specific subclass of Hardware in the setup module.
Defines memory and CPU facts:
- memfree_mb
- memtotal_mb
- swapfree_mb
- swaptotal_mb
- processor (a list)
- processor_cores
- processor_count
- devices

As a matter of fact, on NetBSD, it is possible to get memory, swap and
processor facts exactly as on Linux. Tested on NetBSD-5, NetBSD-6 and
NetBSD-6.1 (without Linux emulation).
2013-05-29 09:37:46 -04:00
Chris Gardner
7d61180034 Use kstat for Solaris CPU info 2013-05-28 22:44:06 +01:00
Chris Gardner
50c3cf302c Use kstat for Solaris CPU info 2013-05-28 22:36:49 +01:00
Kristof Keppens
f607ba09a4 change fix to lookup path with get_bin_path 2013-05-27 07:38:17 +02:00
Michael DeHaan
b0f62209c6 Merge pull request #2992 from SirScott/service_pattern
Fixes #2991: Service module pattern argument ignored.
2013-05-24 19:58:42 -07:00
Scott Sturdivant
ffb50dfb34 Fixes #2924: User creation always reports 'changed' 2013-05-23 13:43:23 -06:00
Scott Sturdivant
0110b616cb Fixes #2991: Service module pattern argument ignored. 2013-05-23 09:39:26 -06:00
Kristof Keppens
dc20d63919 fix for facter being installed in a different location 2013-05-23 11:21:01 +02:00
Elan Ruusamäe
52643e2a4d no need to init None to None 2013-05-19 00:20:10 +03:00
Michael DeHaan
3ad9866124 Merge pull request #2941 from bcoca/setup_bin
no uses get_bin_path for 2nd use of ip tool
2013-05-18 13:22:24 -07:00
Michael DeHaan
fc36695e7a Merge pull request #2940 from madema/patch-3
-o and -r option don't exist on AIX
2013-05-18 13:21:48 -07:00
Ton Kersten
438ab750c3 Fix issue 2906 2013-05-18 15:57:10 -04:00
Brian Coca
af745d0f9a no uses get_bin_path for 2nd use of ip tool (fixes reported issue with openwrt)
module needs this added to many tool invokations, but his is a start
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-05-16 08:32:49 -04:00
madema
973eb69911 -o and -r option don't exist on AIX 2013-05-16 14:30:42 +02:00
Michael DeHaan
911213f8d7 Style fix. 2013-05-11 17:21:49 -04:00
Michael DeHaan
4ef987736a Merge pull request #2866 from madema/patch-2
Fixed an error in the get_cpu_facts of the AIX class
2013-05-11 11:10:17 -07:00
Michael DeHaan
05fb9876d3 Merge pull request #2865 from madema/patch-1
Added AIX class in the service module to control AIX SRC processes.
2013-05-11 11:09:41 -07:00
Michael DeHaan
a7521a9826 Merge pull request #2863 from lonerr/freebsd-group
FreeBSD group operations is now supported properly.
2013-05-11 11:08:13 -07:00
Michael DeHaan
da6cb522ed Merge pull request #2862 from lonerr/freebsd-user
Fixed errors in FreeBSD user manipulations.
2013-05-11 11:07:32 -07:00
Michael DeHaan
a9f5f86edb Change filesystem module message. 2013-05-11 14:03:40 -04:00
Michael DeHaan
9ca9b4cb29 Merge pull request #2853 from abulimov/module_mkfs
Module filesystem
2013-05-11 11:02:43 -07:00
Elan Ruusamäe
258cf60924 LinuxService: avoid enforcing systemd even if init.d script was found 2013-05-11 13:24:00 +03:00
madema
57fb97470c Update service 2013-05-10 18:16:23 +03:00
madema
54abf22c35 Fixed an error in the get_cpu_facts of the AIX class
assumed proc0 as the first processor but can be different in a LPAR environment
2013-05-08 16:13:13 +03:00
madema
88a4a56889 Added AIX class in the service module to control AIX SRC processes. 2013-05-08 16:10:22 +03:00
lonerr
384798145a FreeBSD group operations is now supported properly. 2013-05-08 13:36:55 +04:00
lonerr
2a8ef8a87c Fixed errors in FreeBSD user manipulations. 2013-05-08 13:03:18 +04:00
Oleg
6735ec6e9d fix for authorized_key: skip chown and chmod if authorized_key_file is link 2013-05-08 01:47:41 +02:00
Alexander Bulimov
6a644714a7 renamed mkfs and moved to system/filesystem 2013-05-06 18:08:38 +04:00
Luciano Cavalheiro da Silva
96d4225245 Fix #2836. Ensure proper handling of option "system=yes" in module "group". 2013-05-04 21:24:02 -03:00
rektide
351bcf24cf Duplicate pull #2803 in ipv6, fixing setup module's handling of venet & unknown interface types. 2013-05-02 17:19:22 -04:00
Michael DeHaan
b0794ff5f6 Test for the existance of a file that might not be present on older RHEL. 2013-04-30 09:26:25 -04:00
James Mills
ced36f3e81 Fixed setup module to accomodate venet interfaces (OpenVZ) 2013-04-29 10:08:24 +10:00
Michael DeHaan
cd97a4cb14 Allow modules to be categorized, and also sort them when generating the documentation. 2013-04-28 15:03:45 -04:00