X-Git-Url: https://git.evergreen-ils.org/?p=OpenSRF.git;a=blobdiff_plain;f=doc%2Fdokuwiki-doc-stubber.pl;h=fcdd03dcd64788be8f0b52a4279819a3c09afe1d;hp=3121f14d12e601e54c1ea657f177ed89fe009fbe;hb=de52aa1696a131875bd1c24d7ce63e9f12b7627c;hpb=a10e9df49af49d0e6d12a58f5d3151930a9a6e12 diff --git a/doc/dokuwiki-doc-stubber.pl b/doc/dokuwiki-doc-stubber.pl index 3121f14..fcdd03d 100755 --- a/doc/dokuwiki-doc-stubber.pl +++ b/doc/dokuwiki-doc-stubber.pl @@ -1,56 +1,106 @@ #!/usr/bin/perl -w use OpenSRF::System qw(/pines/conf/bootstrap.conf); -use Data::Dumper; +use Getopt::Long $| = 1; -# ---------------------------------------------------------------------------------------- -# This is a quick and dirty script to perform benchmarking against the math server. -# Note: 1 request performs a batch of 4 queries, one for each supported method: add, sub, -# mult, div. -# Usage: $ perl math_bench.pl -# ---------------------------------------------------------------------------------------- - - -my $count = $ARGV[0]; - -unless( $count ) { - print "usage: $0 []\n"; +my $cvs_base = 'http://open-ils.org/cgi-bin/viewcvs.cgi/ILS/Open-ILS/src/perlmods/'; +my $nest = 0; +my $service; +my $filter; +my $sort_ignore; + +GetOptions( 'cvs_base=s' => \$cvs_base, + 'nest' => \$nest, + 'service=s' => \$service, + 'ignore=s' => \$sort_ignore, + 'filter=s' => \$filter, +); + +unless( $service ) { + print "usage: $0 -s [-c -f -n]\n"; exit; } -my $cvs_base = $ARGV[1] || 'http://open-ils.org/cgi-bin/viewcvs.cgi/ILS/Open-ILS/src/perlmods/'; - OpenSRF::System->bootstrap_client(); -my $session = OpenSRF::AppSession->create( $ARGV[0] ); +my $session = OpenSRF::AppSession->create( $service ); -my $req = $session->request('opensrf.system.method.all'); +my $req; +if ($filter) { + $req = $session->request('opensrf.system.method', $filter); +} else { + $req = $session->request('opensrf.system.method.all'); +} +my $count = 1; +my %m; while( my $meth = $req->recv(60) ) { $meth = $meth->content; - my $api_name = $meth->{api_name}; - my $api_level = int $meth->{api_level}; - my $server_class = $meth->{server_class} || '**ALL**'; - my $stream = int($meth->{stream} || 0); - my $cachable = int($meth->{cachable} || 0); - my $note = $meth->{note} || 'what I do'; - my $package = $meth->{package}; - (my $cvs = $package) =~ s/::/\//go; - my $method = $meth->{method}; - - $stream = $stream?'Yes':'No'; - $cachable = $cachable?'Yes':'No'; + + $api_name = $meth->{api_name}; + + $m{$api_name}{api_name} = $meth->{api_name}; + + $m{$api_name}{package} = $meth->{package}; + $m{$api_name}{method} = $meth->{method}; + + $m{$api_name}{api_level} = int $meth->{api_level}; + $m{$api_name}{server_class} = $meth->{server_class} || '**ALL**'; + $m{$api_name}{stream} = int($meth->{stream} || 0); + $m{$api_name}{cachable} = int($meth->{cachable} || 0); + + $m{$api_name}{note} = $meth->{note} || 'what I do'; + ($m{$api_name}{cvs} = $m{$api_name}{package}) =~ s/::/\//go; + + $m{$api_name}{stream} = $m{$api_name}{stream}?'Yes':'No'; + $m{$api_name}{cachable} = $m{$api_name}{cachable}?'Yes':'No'; + + print STDERR "." unless ($count % 10); + + $count++; +} + +warn "\nThere are ".scalar(keys %m)." methods published by $service\n"; + +my @m_list; +if (!$sort_ignore) { + @m_list = sort keys %m; +} else { + @m_list = + map { ($$_[0]) } + sort { + $$a[1] cmp $$b[1] + || + length($$b[0]) <=> length($$a[0]) + } map { + [$_ => + do { + (my $x = $_) =~ s/^$sort_ignore//go; + $x; + } ] + } keys %m; +} + +for my $meth ( @m_list ) { + + my $pad = 0; + my $header = '====='; + if ($nest) { + no warnings; + (my $x = $meth) =~ s/\./$pad++;$1/eg; + } + $pad = ' 'x$pad; print <<" METHOD"; -===== $api_name ===== +$pad$header $meth $header -$note +$m{$meth}{note} - * [[osrf-devel:terms#opensrf_api-level|API Level]]: $api_level - * [[osrf-devel:terms#opensrf_server_class|Server Class]]: $server_class - * Implementation Method: [[$cvs_base/$cvs.pm|$package\::$method]] - * Streaming [[osrf-devel:terms#opensrf_method|Method]]: $stream - * Cachable [[osrf-devel:terms#opensrf_method|Method]]: $cachable + * [[osrf-devel:terms#opensrf_api-level|API Level]]: $m{$meth}{api_level} + * [[osrf-devel:terms#opensrf_server_class|Server Class]]: $m{$meth}{server_class} + * Implementation Method: [[$cvs_base/$m{$meth}{cvs}.pm|$m{$meth}{package}\::$m{$meth}{method}]] + * Streaming [[osrf-devel:terms#opensrf_method|Method]]: $m{$meth}{stream} + * Cachable [[osrf-devel:terms#opensrf_method|Method]]: $m{$meth}{cachable} * **Parameters:** * //param1//\\\\ what it is...