3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-10-04 18:38:47 +02:00
pbot/applets/compiler_vm/host/bin/vm-client
Pragmatic Software 33e13fd993 Start refactoring virtual machine (1/3)
This is expected to take three commits to complete. This first initial
commit does the following:

- Begin initial rough-draft of doc/VirtualMachine.md
- Begin initial refactoring of scripts

The next commit will polish up the initial rough-draft and refactoring.

The final commit will quality-check everything and fix anything overlooked.
2022-01-23 07:49:23 -08:00

52 lines
1.1 KiB
Perl
Executable File

#!/usr/bin/env perl
# File: vm-client
#
# Purpose: Interfaces with the PBot virtual machine server hosted at
# PeerAddr/PeerPort defined below. This allows us to host instances of
# virtual machines on remote servers.
#
# This script is intended to be installed to PBot's applets directory
# and attached to a PBot command such as `cc`.
# SPDX-FileCopyrightText: 2021 Pragmatic Software <pragma78@gmail.com>
# SPDX-License-Identifier: MIT
# TODO: extend to take a list of server/ports to cycle for load-balancing
use warnings;
use strict;
use IO::Socket;
my $sock = IO::Socket::INET->new(
PeerAddr => '127.0.0.1',
PeerPort => 9000,
Proto => 'tcp',
);
if (not defined $sock) {
print "Fatal error compiling: $!; try again later\n";
die $!;
}
my $nick = shift @ARGV;
my $channel = shift @ARGV;
my $code = join '', @ARGV;
my $lang = "c11";
if ($code =~ s/-lang=([^ ]+)//) {
$lang = lc $1;
}
print $sock "compile:$nick:$channel:$lang\n";
print $sock "$code\n";
print $sock "compile:end\n";
while (my $line = <$sock>) {
print "$line";
}
close $sock;