#!/usr/bin/perl -w

use strict;

my $sname = '';
my $list = 0;

if (@ARGV == 0) {
    print "Usage: s <name>\n";
    exit(1);
} elsif ($ARGV[0] eq '-l') {
    $list = 1;
} else {
    $sname = $ARGV[0];
}
shift @ARGV;

my $file = "$ENV{HOME}/.s";

if (open my $fh, '<', $file) {
    my $line;
    my $name = '';
    my $script = '';
    my $outline = 1;

    while ($line = <$fh>) {
        chomp $line;

        if ($line =~ /^\*\s*(.*)\s*$/) {
            print "$1\n" if $list;
            last if $sname eq $name && $script;
            $name = $1;
            $script = '';
            $outline = 0;
        } elsif (!$outline) {
            if ($line eq '%%') {
                $outline = 1;
            } else {
                $script .= "$line\n";
            }
        }
    }

    close $fh;

    if ($sname eq $name && $script) {
        execute($script, @ARGV);
    }
}

sub execute {
    return if $list;
    
    my $script = shift;

    my $file = "$file.bin";
    open my $fh, '>', $file or die;
    chmod(0700, $fh);

    if ($script !~ /^#!/) {
        print $fh "#!/bin/sh\n"
    }
    print $fh $script;

    close $fh;

    exec($file, @_);
}
