| 1 | =comments
|
|---|
| 2 |
|
|---|
| 3 | helper script to make life for PerlCE easier.
|
|---|
| 4 |
|
|---|
| 5 | There are different modes for running this script:
|
|---|
| 6 | perl comp.pl --run [any-command-line-arguments]
|
|---|
| 7 | and
|
|---|
| 8 | perl comp.pl --do [any-command-line-arguments]
|
|---|
| 9 | and
|
|---|
| 10 | perl comp.pl --copy pc:[pc-location] ce:[ce-location]
|
|---|
| 11 |
|
|---|
| 12 | --run executes this build of perl on CE device with arguments provided
|
|---|
| 13 | --run=test will display a predefined messagebox that say everything is ok.
|
|---|
| 14 |
|
|---|
| 15 | --do Executes on local computer command that is presented by arguments
|
|---|
| 16 | immediately following after --do
|
|---|
| 17 | Most reason why you may want to execute script in this mode is that
|
|---|
| 18 | arguments preprocessed to replace [p] occurrences into current perl
|
|---|
| 19 | location. Typically it is handy to run
|
|---|
| 20 | perl comp.pl --do cecopy pc:..\lib\Exporter.pm ce:[p]\lib
|
|---|
| 21 |
|
|---|
| 22 | --copy copies file to CE device
|
|---|
| 23 | here also [p] will be expanded to current PerlCE path, and additionally
|
|---|
| 24 | when --copy=compact specified then, if filename looks like perl module,
|
|---|
| 25 | then POD will be stripped away from that file
|
|---|
| 26 | modules
|
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 | =cut
|
|---|
| 30 |
|
|---|
| 31 | use strict;
|
|---|
| 32 | use Cross;
|
|---|
| 33 | use Config;
|
|---|
| 34 |
|
|---|
| 35 | # edit value of $inst_root variable to reflect your desired location of
|
|---|
| 36 | # built perl
|
|---|
| 37 | my $inst_root = $Config{prefix};
|
|---|
| 38 |
|
|---|
| 39 | my %opts = (
|
|---|
| 40 | # %known_opts enumerates allowed opts as well as specifies default and initial values
|
|---|
| 41 | my %known_opts = (
|
|---|
| 42 | 'do' => '',
|
|---|
| 43 | 'run' => '',
|
|---|
| 44 | 'copy' => '',
|
|---|
| 45 | ),
|
|---|
| 46 | #options itself
|
|---|
| 47 | my %specified_opts = (
|
|---|
| 48 | (map {/^--([\-_\w]+)=(.*)$/} @ARGV), # --opt=smth
|
|---|
| 49 | (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV), # --opt --no-opt --noopt
|
|---|
| 50 | ),
|
|---|
| 51 | );
|
|---|
| 52 | die "option '$_' is not recognized" for grep {!exists $known_opts{$_}} keys %specified_opts;
|
|---|
| 53 | @ARGV = grep {!/^--/} @ARGV;
|
|---|
| 54 |
|
|---|
| 55 | if ($opts{'do'}) {
|
|---|
| 56 | s/\[p\]/$inst_root/g for @ARGV;
|
|---|
| 57 | system(@ARGV);
|
|---|
| 58 | }
|
|---|
| 59 | elsif ($opts{'run'}) {
|
|---|
| 60 | if ($opts{'run'} eq 'test') {
|
|---|
| 61 | system("ceexec","$inst_root\\bin\\perl","-we","Win32::MessageBox(\$].qq(\n).join'','cc'..'dx')");
|
|---|
| 62 | }
|
|---|
| 63 | else {
|
|---|
| 64 | system("ceexec","$inst_root\\bin\\perl", map {/^".*"$/s?$_:"\"$_\""} @ARGV);
|
|---|
| 65 | }
|
|---|
| 66 | }
|
|---|
| 67 | elsif ($opts{'copy'}) {
|
|---|
| 68 | if ($opts{'copy'} eq 'compact') {
|
|---|
| 69 | die "todo";
|
|---|
| 70 | }
|
|---|
| 71 | s/\[p\]/$inst_root/g for @ARGV;
|
|---|
| 72 | if ($ARGV[0]=~/^pc:/i) {system("cedel",$ARGV[1])}
|
|---|
| 73 | system("cecopy",@ARGV);
|
|---|
| 74 | }
|
|---|
| 75 | else {
|
|---|
| 76 | # todo
|
|---|
| 77 | }
|
|---|
| 78 |
|
|---|
| 79 |
|
|---|
| 80 | =comments
|
|---|
| 81 |
|
|---|
| 82 | Author Vadim Konovalov.
|
|---|
| 83 |
|
|---|
| 84 | =cut
|
|---|