commit sketch files
[scpubgit/DKit.git] / notes / sketches / 5.km.commands.psuedo
diff --git a/notes/sketches/5.km.commands.psuedo b/notes/sketches/5.km.commands.psuedo
new file mode 100644 (file)
index 0000000..4615472
--- /dev/null
@@ -0,0 +1,53 @@
+command learn {
+  command key K {
+    ensure { known_key K }
+  }
+  command dead D {
+    ensure { known_dead D }
+  }
+  command account A {
+    ensure { known_account A }
+  }
+}
+
+command forget {
+  command key K {
+    ensure { not_known_key K }
+  }
+  command dead D {
+    ensure { not_known_dead D }
+  }
+  command account A {
+    ensure { not_known_account A }
+  }
+}
+
+command list {
+  command keys {} {
+    query* { known_key K } { puts $K }
+  }
+  command dead {} {
+    query* { known_dead D } { puts $D }
+  }
+  command accounts {} {
+    query* { known_account A } { puts $A }
+  }
+}
+
+command sync {} { ensure all_synchronized }
+
+command sync A { ensure { account_synchronized A } }
+
+command status {} {
+  query* {
+    known_account A
+    findall Known K { known_installed_on A K }
+    findall Unknown U { unknown_installed_on A U }
+    findall Dead D { dead_installed_on A D }
+  } {
+    puts "Host: $A"
+    foreach k $Known { puts "Known: $k" }
+    foreach u $Unknown { puts "Unknown: $u" }
+    foreach d $Dead { puts "Dead: $d" }
+  }
+}