Hi,
this thread follows the discussion in
http://thread.gmane.org/gmane.editors.textmate.general/13806/focus=13806
'run script with args'
In order to be able to control the arguments and STDIN here my suggestion:
Example for Perl:
#!/usr/bin/env perl -w
#!TMC: STDIN=cat ~/Desktop/test.txt #!TMC: ARG=1 "2 and 3" /etc/file #!TMC:end
print join ('-',@ARGV); print "\n";
@a = <STDIN>; chomp(@a); $j=1; foreach $line (@a) { print $j++.$line."\n"; }
The actual command line would be: 'cat ~/Desktop/test.txt | /usr/bin/ perl -w 1 "2 and 3" /etc/file
The idea is to specify the values for ARG and STDIN hidden as comments within the script. If you want to test several ARGs and STDINs you can write
#!/usr/bin/env perl -w
# !TMC: STDIN=cat ~/Desktop/test.txt # !TMC: ARG=1 "2 and 3" /etc/file #!TMC: STDIN = echo -e "A\nB" #!TMC: ARG = DATA #!TMC:end ...
By doing so line 5 and 6 are active. You see to change ARG and STDIN is easy. Of course, you can think about to use tm_dialog with an history list or whatever but I believe this is fast and very simple. If you forget to delete the TMC tags while running this script from Terminal it doesn't matter. These tags are comments.
For that purpose I add some stuff to scriptmate.rb.
Here some hints:
#parse script for arguments and STDIN pipe data given as comment(s) #!TMC: ARG= //everything after = is interpreted as arguments like ARG= one two "three and four" five #!TMC: STDIN= //everything after = will be executed on the system and piped to the script like STDIN=cat /PATH/TO/FILE #!TMC:end //marker to cancel the parsing; the parsing also ends if ARG _and_ STDIN are set # #!TMC: ... //active # !TMC: ... //not active to have the chance to chooce # #known problems: # for Perl # piping STDIN: e.g. @a = <>; doesn't work, use instead @a = <STDIN>; #
Any comments?
Bye,
Hans
PLEASE forgive my Ruby syntax ;)