cf0410ecae860dffc18d02ef71caeca85d39b6e1
[scpubgit/DX.git] / bin / dx
1 use strictures 2;
2 use Module::Runtime qw(use_module);
3 use DX::Utils qw(:builders);
4
5 { package FakeReadline;
6   sub readline {
7     return undef unless defined(my $line = readline($_[0]));
8     print $_[1].$line;
9     return $line;
10   }
11   sub history_add {}
12 }
13
14 use_module('DX::ShellFrontend')->new(
15   session_mode => 'shell',
16   session => use_module('DX::ShellSession')->new(
17     shell_state => use_module('DX::ShellState')->new(
18       mode => 'shell',
19       template_query_state => use_module('DX::QueryState')->new(
20           predicates => {
21           'eq' => use_module('DX::Predicate::Eq')->new,
22           member_at => use_module('DX::Predicate::MemberAt')->new,
23           dict => use_module('DX::Predicate::Dict')->new,
24         },
25         globals => dict(),
26         proposition_sequence
27           => use_module('DX::PropositionSequence')->new_empty,
28       ),
29       trace_these => {},
30     ),
31   ),
32   (@ARGV
33     ? (readline => do {
34          open my $fh, '<', $ARGV[0] or die "Couldn't open script: $!";
35          bless($fh, 'FakeReadline')
36       })
37     : ()
38   ),
39 )->repl