move backtracing out into a step
[scpubgit/DX.git] / bin / dx
diff --git a/bin/dx b/bin/dx
index fac99ee..cf0410e 100644 (file)
--- a/bin/dx
+++ b/bin/dx
@@ -1,13 +1,39 @@
 use strictures 2;
 use Module::Runtime qw(use_module);
-BEGIN { *u = \&use_module }
+use DX::Utils qw(:builders);
+
+{ package FakeReadline;
+  sub readline {
+    return undef unless defined(my $line = readline($_[0]));
+    print $_[1].$line;
+    return $line;
+  }
+  sub history_add {}
+}
 
 use_module('DX::ShellFrontend')->new(
   session_mode => 'shell',
   session => use_module('DX::ShellSession')->new(
     shell_state => use_module('DX::ShellState')->new(
       mode => 'shell',
-      template_query_state => use_module('DX::QueryState')->new
-    )
+      template_query_state => use_module('DX::QueryState')->new(
+          predicates => {
+          'eq' => use_module('DX::Predicate::Eq')->new,
+          member_at => use_module('DX::Predicate::MemberAt')->new,
+          dict => use_module('DX::Predicate::Dict')->new,
+        },
+        globals => dict(),
+        proposition_sequence
+          => use_module('DX::PropositionSequence')->new_empty,
+      ),
+      trace_these => {},
+    ),
+  ),
+  (@ARGV
+    ? (readline => do {
+         open my $fh, '<', $ARGV[0] or die "Couldn't open script: $!";
+         bless($fh, 'FakeReadline')
+      })
+    : ()
   ),
 )->repl