summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst140
1 files changed, 140 insertions, 0 deletions
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..b45af01
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,140 @@
+Reconfigure - Python object mapping for config files.
+
+Quickstart::
+
+ >>> from reconfigure.configs import FSTabConfig
+ >>> from reconfigure.items.fstab import FilesystemData
+ >>>
+ >>> config = FSTabConfig(path='/etc/fstab')
+ >>> config.load()
+ >>> print config.tree
+ {
+ "filesystems": [
+ {
+ "passno": "0",
+ "device": "proc",
+ "mountpoint": "/proc",
+ "freq": "0",
+ "type": "proc",
+ "options": "nodev,noexec,nosuid"
+ },
+ {
+ "passno": "1",
+ "device": "UUID=dfccef1e-d46c-45b8-969d-51391898c55e",
+ "mountpoint": "/",
+ "freq": "0",
+ "type": "ext4",
+ "options": "errors=remount-ro"
+ }
+ ]
+ }
+ >>> tmpfs = FilesystemData()
+ >>> tmpfs.mountpoint = '/srv/cache'
+ >>> tmpfs.type = 'tmpfs'
+ >>> tmpfs.device = 'none'
+ >>> config.tree.filesystems.append(tmpfs)
+ >>> config.save()
+ >>> quit()
+ $ cat /etc/fstab
+ proc /proc proc nodev,noexec,nosuid 0 0
+ UUID=dfccef1e-d46c-45b8-969d-51391898c55e / ext4 errors=remount-ro 0 1
+ none /srv/cache tmpfs none 0 0
+
+This is actually a shortcut to::
+
+ >>> from reconfigure.parsers import SSVParser
+ >>> from reconfigure.builders import BoundBuilder
+ >>> from reconfigure.items.fstab import FSTabData
+ >>> content = open('/etc/fstab').read()
+ >>> syntax_tree = SSVParser().parse(content)
+ >>> syntax_tree
+ <reconfigure.nodes.RootNode object at 0x7f1319eeec50>
+ >>> print syntax_tree
+ (None)
+ (line)
+ (token)
+ value = proc
+ (token)
+ value = /proc
+ (token)
+ value = proc
+ (token)
+ value = nodev,noexec,nosuid
+ (token)
+ value = 0
+ (token)
+ value = 0
+ (line)
+ (token)
+ value = UUID=83810b56-ef4b-44de-85c8-58dc589aef48
+ (token)
+ value = /
+ (token)
+ value = ext4
+ (token)
+ value = errors=remount-ro
+ (token)
+ value = 0
+ (token)
+ value = 1
+
+ >>> builder = BoundBuilder(FSTabData)
+ >>> data_tree = builder.build(syntax_tree)
+ >>> print data_tree
+ {
+ "filesystems": [
+ {
+ "passno": "0",
+ "device": "proc",
+ "mountpoint": "/proc",
+ "freq": "0",
+ "type": "proc",
+ "options": "nodev,noexec,nosuid"
+ },
+ {
+ "passno": "1",
+ "device": "UUID=83810b56-ef4b-44de-85c8-58dc589aef48",
+ "mountpoint": "/",
+ "freq": "0",
+ "type": "ext4",
+ "options": "errors=remount-ro"
+ }
+ ]
+ }
+
+Parsers and builders can be paired in almost any possible combination.
+
+Reconfigure can be easily extended with your own parsers and builders - read the docs!
+
+Supported configs:
+
+ * Ajenti (``ajenti``)
+ * BIND9 DNS (``bind9``)
+ * Crontabs (``crontab``)
+ * Samba CTDB (``ctdb``)
+ * ISC DHCPD / uDHCPD (``dhcpd``)
+ * NFS /etc/exports (``exports``)
+ * /etc/fstab (``fstab``)
+ * /etc/group (``group``)
+ * /etc/hosts (``hosts``)
+ * iptables-save dump (``iptables``)
+ * Netatalk afp.conf (``netatalk``)
+ * NSD DNS (``nsd``)
+ * /etc/passwd (``passwd``)
+ * /etc/resolv.conf (``resolv``)
+ * Samba (``samba``)
+ * Squid 3 (``squid``)
+ * Supervisord (``supervisor``)
+
+Included parsers:
+
+ * BIND9 config (``bind9``)
+ * Crontab (``crontab``)
+ * NFS Exports (``exports``)
+ * .ini (``ini``)
+ * iptables-save (``iptables``)
+ * nginx-like (``nginx``)
+ * squid (``squid``)
+ * nsd (``nsd``)
+ * CSV-like space-separated values (``ssv``)
+ * JSON (``jsonparser``) \ No newline at end of file