summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/architecture/data.mdwn29
1 files changed, 13 insertions, 16 deletions
diff --git a/docs/architecture/data.mdwn b/docs/architecture/data.mdwn
index cc824ab..76e69ea 100644
--- a/docs/architecture/data.mdwn
+++ b/docs/architecture/data.mdwn
@@ -1,19 +1,16 @@
-Data model!
-
-Dynamic data lookup should opportunisticly cache any associated cheap data. For instance, there are three data from stat(/srv/git/$reponame.git), so looking up one should grab the others. Jules points out that everything here is inherently cached, and I should be using getpw*() for passwd parsing.
+# Data model
[[!table format=dsv delimiter=# data="""
-datum #stored location #constraint
-username #usually $ENV{SUDO_USER} # !~ /^git-|^iki-/ and =~ /^[a-zA-Z][a-zA-Z0-9_.-]{0,30}$/
-uid #/etc/passwd # None
-email #/etc/passwd GECOS #Email::Valid::Loose->new("-fqdn" => 1, "-fudge" => 0, "-local_rules" => 0, "-mxcheck" => 1, "-tldcheck" => 0 );
-repoaccess #/etc/group git-$reponame entry # None
-reponame #/srv/git/$reponame.git # =~ /^[a-z0-9][a-z0-9.-]*$/
-repodescription #/srv/git/$reponame.git/description # =~ /^[\x{0020}-\x{FDCF}\x{FDF0}-\x{FFFD}]{1,80}$/
-repoowner #stat /srv/git/$reponame.git/objects uid; might be better as first non-ikiwiki user in /etc/group git-$reponame entry # None
-repoglobalwritable #stat /srv/git/$reponame.git/objects o+w bit # None
-repoglobalreadable #stat /srv/git/$reponame.git/objects o+r bit # None
-repoikiwikidisable #probably in /srv/git/$reponame.git/config # None
-repointernaltemplates #probably in /srv/git/$reponame.git/config # None
-repospecialdomain #probably in /srv/git/$reponame.git/config # None
+datum # stored location #constraint
+username # usually $ENV{SUDO_USER} # !~ /^git-|^iki-/ and =~ /^[a-zA-Z][a-zA-Z0-9_.-]{0,30}$/
+uid # /etc/passwd # >= 1000
+user.email # pinyconfig # Email::Valid::Loose->new("-fqdn" => 1, "-fudge" => 0, "-local_rules" => 0, "-mxcheck" => 1, "-tldcheck" => 0 );
+repoaccess # /etc/group git-$reponame # None
+reponame # /srv/git/$reponame.git # =~ /^[a-z0-9][a-z0-9.-]*$/
+repodescription # /srv/git/$reponame.git/description # =~ /^[\x{0020}-\x{FDCF}\x{FDF0}-\x{FFFD}]{1,80}$/
+repoowner # /srv/git/$reponame.git/objects owner # None
+core.sharedrepository # pinyconfig # =~ /^(0666|0664|all|world|everybody|0660|group|true|0640)$/
+piny.ikiwiki # pinyconfig # =~ /^(1|0|true|false)$/
+piny.ikiwikitemplates # TODO, presumably pinyconfig # None
+piny.ikiwikidomain # TODO, presumably pinyconfig # None
"""]]