Subversion Repositories OpenARM Single-board Computer

Rev

Rev 419 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 419 Rev 428
Line 1... Line 1...
1
#!/usr/bin/perl -w
1
#!/usr/bin/perl -w
2
use strict;
2
use strict;
3
# $Id: inventory.pl 419 2009-05-16 00:01:56Z agaran $
3
# $Id: inventory.pl 428 2009-07-15 21:37:16Z agaran $
4
# Thu, 13 Nov 2008 21:06:23 +0100
4
# Thu, 13 Nov 2008 21:06:23 +0100
5
# Maciej 'agaran' Pijanka <agaran@pld-linux.org>
5
# Maciej 'agaran' Pijanka <agaran@pld-linux.org>
6
# for OpenARM SBC Project
6
# for OpenARM SBC Project
7
# license: gpl v3
7
# license: gpl v3
8
8
9
-
 
10
use Getopt::Long qw//;
9
use Getopt::Long qw//;
11
use File::Basename qw/basename/;
10
use File::Basename qw/basename/;
12
use IO::Dir;
11
use IO::Dir;
13
use IO::File;
12
use IO::File;
14
use Data::Dumper qw/Dumper/;
13
use Data::Dumper qw/Dumper/;
Line 157... Line 156...
157
        $value =~ s/^[  ]+//;
156
        $value =~ s/^[  ]+//;
158
        $value =~ s/[   ]+$//;
157
        $value =~ s/[   ]+$//;
159
        return $value;
158
        return $value;
160
}
159
}
161
160
-
 
161
# break string at $lim character (or bit before) 
-
 
162
# but only on whitespaces
162
sub strbreak($$) {
163
sub strbreak($$) {
163
        my ($str,$lim) = @_;
164
        my ($str,$lim) = @_;
164
        my @p = split /\ /,$str;
165
        my @p = split /\ /,$str;
165
        $str = '';
166
        $str = '';
166
        my $l = 0;
167
        my $l = 0;
Line 186... Line 187...
186
                wrn_printf("%s has no price, setting to 0.0", $Inv[$id]{Manufacturer_Partno});
187
                wrn_printf("%s has no price, setting to 0.0", $Inv[$id]{Manufacturer_Partno});
187
                return 0.0;
188
                return 0.0;
188
        }
189
        }
189
190
190
        if (ref $Inv[$id]{Price} eq 'ARRAY') { # handle structured prices
191
        if (ref $Inv[$id]{Price} eq 'ARRAY') { # handle structured prices
191
                my $ret = 0;
192
                my ($ret,$li) = (0,0);
192
                foreach my $pd (@{$Inv[$id]{Price}}) {
193
                foreach my $pd (@{$Inv[$id]{Price}}) {
193
                        if (ref $pd eq 'ARRAY') {
194
                        if (ref $pd eq 'ARRAY') {
194
                                my ($rmin,$rmax) = split '-', $pd->[0];
195
                                my ($rmin,$rmax) = split '-', $pd->[0];
195
                                $ret = $pd->[1] if ($quantity >= $rmin);
196
                                if ($rmin > $li && $quantity >= $rmin) {
-
 
197
                                        $ret = $pd->[1];
-
 
198
                                        $li = $rmin;
-
 
199
                                }
-
 
200
                                #inf_printf("Debuging %s, %s %d",$pd->[0], $ret, $quantity);
196
                        }
201
                        }
197
                }
202
                }
198
                return $ret;
203
                return $ret;
199
        }
204
        }
200
205
Line 206... Line 211...
206
# this subroutine is used as callback function
211
# this subroutine is used as callback function
207
# executed by file_lookup
212
# executed by file_lookup
208
sub parse_ifile($) {
213
sub parse_ifile($) {
209
        my ($filepath) = @_;
214
        my ($filepath) = @_;
210
215
211
-
 
212
        open(IN, $filepath) or return 1;
216
        open(IN, $filepath) or return 1;
213
217
214
        my %data;
218
        my %data;
215
219
216
        $file_name = $filepath;
220
        $file_name = $filepath;
Line 296... Line 300...
296
                        }
300
                        }
297
                } elsif ($line =~ /^([A-Za-z ]+)[ \t]*\(([A-Za-z 0-9\(\)\-]+)\)[ \t]*:(.*)$/) {
301
                } elsif ($line =~ /^([A-Za-z ]+)[ \t]*\(([A-Za-z 0-9\(\)\-]+)\)[ \t]*:(.*)$/) {
298
                        my ($name, $extdata, $value) = (lc etrim($1),etrim($2),etrim($3));
302
                        my ($name, $extdata, $value) = (lc etrim($1),etrim($2),etrim($3));
299
                        if ($name =~ /^price$/) {
303
                        if ($name =~ /^price$/) {
300
                                $extdata =~ s/ //g;
304
                                $extdata =~ s/ //g;
301
                                #wrn_printf("Extended-Price <%s> <%s> at %s:%d", $extdata, $value, shortdir($filepath), $lineno);
305
                                #wrn_printf("Extended-Price <%s> <%s> at %s:%d", $extdata, $value, shortdir($filepath), $file_line);
302
                                $data{price} = [] if (!defined $data{price});
306
                                $data{price} = [] if (!defined $data{price});
303
307
304
                                if(ref $data{price} eq 'ARRAY') {
308
                                if(ref $data{price} eq 'ARRAY') {
305
                                        $value =~ s/[^0-9\.\,]//g; # remove any characters beside DIGITS
309
                                        $value =~ s/[^0-9\.\,]//g; # remove any characters beside DIGITS
306
                                        if ($value =~ s/^([0-9]+)[,.]([0-9]+)$/$1.$2/) {
310
                                        if ($value =~ s/^([0-9]+)[,.]([0-9]+)$/$1.$2/) {
Line 488... Line 492...
488
492
489
sub gen_bomfile ($) { # {{{1
493
sub gen_bomfile ($) { # {{{1
490
        my $outfile = shift @_;
494
        my $outfile = shift @_;
491
495
492
        if (-e $outfile) {
496
        if (-e $outfile) {
493
                wrn_printf("File already exist");
497
                wrn_printf("File already exist, will overwrite");
494
        }
498
        }
495
499
496
        my $out = new IO::File $outfile, 'w';
500
        my $out = new IO::File $outfile, 'w';
497
501
498
        my $bomtable = Text::Table->new(
502
        my $bomtable = Text::Table->new(
Line 571... Line 575...
571
575
572
sub gen_mapfile ($) { # {{{1
576
sub gen_mapfile ($) { # {{{1
573
        my $outfile = shift @_;
577
        my $outfile = shift @_;
574
578
575
        if (-e $outfile) {
579
        if (-e $outfile) {
576
                wrn_printf("File already exist");
580
                wrn_printf("File already exist, will overwrite");
577
        }
581
        }
578
582
579
        my $out = new IO::File $outfile, 'w';
583
        my $out = new IO::File $outfile, 'w';
580
584
581
        my $parttable = Text::Table->new(
585
        my $parttable = Text::Table->new(
582
                { title => '| ', is_sep => 1 },
586
                { title => '| ', is_sep => 1 },
583
                { title => 'id', align => 'right', align_title => 'center' },
587
                { title => 'id', align => 'right', align_title => 'center' },
584
                { title => ' | ', is_sep => 1 },
588
                { title => ' | ', is_sep => 1 },
585
                { title => 'description', align => 'left', align_title => 'center' },
589
                { title => 'description', align => 'left', align_title => 'left' },
586
                { title => ' | ', is_sep => 1 },
590
                { title => ' | ', is_sep => 1 },
587
                { title => 'manufacturer partid', align => 'left', align_title => 'center' },
591
                { title => 'manufacturer partid', align => 'left', align_title => 'left' },
588
                { title => ' | ', is_sep => 1 },
592
                { title => ' | ', is_sep => 1 },
589
                { title => 'footprint', align => 'left', align_title => 'center' },
593
                { title => 'footprint', align => 'left', align_title => 'left' },
590
                { title => ' | ', is_sep => 1 },
594
                { title => ' | ', is_sep => 1 },
591
                { title => 'refdes', align => 'left', align_title => 'center' },
595
                { title => 'refdes', align => 'left', align_title => 'left' },
592
                { title => ' | ', is_sep => 1 },
596
                { title => ' | ', is_sep => 1 },
593
                { title => 'sheet', align => 'left', align_title => 'center' },
597
                { title => 'sheet', align => 'left', align_title => 'left' },
594
                { title => ' |', is_sep => 1 },
598
                { title => ' |', is_sep => 1 },
595
        );
599
        );
596
       
600
       
597
        my ($pn) = (1);
601
        my ($pn) = (1);
598
       
602