|
@@ -21,6 +21,11 @@ my $bang = {
|
21
|
21
|
bc => `which bc`
|
22
|
22
|
};
|
23
|
23
|
|
|
24
|
+my $template = {
|
|
25
|
+ pl => "use strict;\nuse warnings;\n",
|
|
26
|
+ py => "if __name__ == '__main__':\n"
|
|
27
|
+};
|
|
28
|
+
|
24
|
29
|
my $editors = [ qw/ vim editor / ];
|
25
|
30
|
my $cmds;
|
26
|
31
|
$cmds->{vim}->{test} = "vim --version 2>/dev/null";
|
|
@@ -30,7 +35,7 @@ $cmds->{editor}->{run} = "editor '%s'";
|
30
|
35
|
|
31
|
36
|
|
32
|
37
|
if (exists $bang->{$type}) {
|
33
|
|
- -e $name || mkexec $name, $bang->{$type};
|
|
38
|
+ -e $name || mkexec $name, mkbody($type);
|
34
|
39
|
chmod $DEFAULT_MODE, $name;
|
35
|
40
|
launch_editor $name;
|
36
|
41
|
} else {
|
|
@@ -48,11 +53,18 @@ sub guesstype {
|
48
|
53
|
return ( $ext ? $ext : $DEFAULT_TYPE);
|
49
|
54
|
}
|
50
|
55
|
|
|
56
|
+sub mkbody {
|
|
57
|
+ my $type = shift;
|
|
58
|
+ my $tmpl = "";
|
|
59
|
+ $tmpl .= $template->{$type} if exists $template->{$type};
|
|
60
|
+ return sprintf "#!%s\n%s\n", $bang->{$type}, $tmpl;
|
|
61
|
+}
|
|
62
|
+
|
51
|
63
|
sub mkexec {
|
52
|
|
- my ($name, $bang) = @_;
|
|
64
|
+ my ($name, $body) = @_;
|
53
|
65
|
open EXE, ">", $name || die "cannot open $name for writing: $!\n";
|
54
|
66
|
-W EXE || die "file $name is not writable\n";
|
55
|
|
- print EXE "#!$bang\n";
|
|
67
|
+ print EXE $body;
|
56
|
68
|
close EXE || die "cannot close $name: $!\n";
|
57
|
69
|
}
|
58
|
70
|
|