diff options
author | Jan Holesovsky <kendy@suse.cz> | 2011-07-28 18:33:58 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2011-07-28 18:33:58 +0200 |
commit | a95376174ec70c4a75569ce6dafacb0f696b21bc (patch) | |
tree | c1b813dddd1c32efb22913cc3b2f5813e6d901ff /bin/generate-bash-completion | |
parent | edb451c490fe72ced8df20829c7fbc0da93e672c (diff) | |
parent | 6760b5695c4461126a34a84f64fd7114eff23143 (diff) |
Merge commit 'libreoffice-3.4.2.3'
Conflicts:
Makefile.in
configure.in
instsetoo_native/util/makefile.mk
instsetoo_native/util/openoffice.lst
ooo.lst.in
set_soenv.in
solenv/inc/minor.mk
Diffstat (limited to 'bin/generate-bash-completion')
-rwxr-xr-x | bin/generate-bash-completion | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/bin/generate-bash-completion b/bin/generate-bash-completion new file mode 100755 index 000000000000..ed34b18081de --- /dev/null +++ b/bin/generate-bash-completion @@ -0,0 +1,234 @@ +#!/usr/bin/env perl +# script to generate LibreOffice bash_completion file for the main applications +# written by Rene Engelhard <rene@debian.org>, Public Domain +# updated for libreoffice-build by Petr Mladek <pmladek@suse.cz>, Public Domain +# yes, this script probably is not real good code :) but still easier +# to maintain than adding those entries statically many times in +# a file... + +use strict; + +my @DRAWDOCS=("sxd", "std", "dxf", "emf", "eps", "met", "pct", "sgf", "sgv", "sda", + "sdd", "vor", "svm", "wmf", "bmp", "gif", "jpg", "jpeg", "jfif", "fif", + "jpe", "pcd", "pcx", "pgm", "png", "ppm", "psd", "ras", "tga", "tif", + "tiff", "xbm", "xpm", "odg", "otg", "fodg", "odc", "odi", "sds", + "wpg", "svg"); + +my @IMPRESSDOCS=("sxi", "sti", "ppt", "pps", "pot", "sxd", "sda", "sdd", "sdp", + "vor", "cgm", "odp", "otp", "fodp", "ppsm", "ppsx", "pptm", "pptx", + "potm", "potx"); + +my @TEMPLATES=("stw", "dot", "vor", "stc", "xlt", "sti", "pot", "std", "stw", + "dotm", "dotx", "potm", "potx", "xltm", "xltx"); + +my @MATHDOCS=("sxm", "smf", "mml", "odf"); + +my @MASTERDOCS=("sxg", "odm", "sgl"); + +my @WRITERDOCS=("doc", "dot", "rtf", "sxw", "stw", "sdw", "vor", "txt", "htm?", + "xml", "wp", "wpd", "wps", "odt", "ott", "fodt", "docm", "docx", + "dotm", "dotx"); + +my @WEBDOCS=("htm", "html", "stw", "txt", "vor", "oth"); + +my @BASEDOCS=("odb"); + +my @CALCDOCS=("sxc", "stc", "dif", "dbf", "xls", "xlw", "xlt", "rtf", "sdc", "vor", + "slk", "txt", "htm", "html", "wk1", "wks", "123", "xml", "ods", "ots", + "fods", "csv", "xlsb", "xlsm", "xlsx", "xltm", "xltx"); + +my @EXTENSIONS=("oxt"); + +# default names of lowrappers +# use "" if you want to disable any wrapper +my %APPS = ( + office => "libreoffice", + master => "", + base => "lobase", + calc => "localc", + draw => "lodraw", + impress => "loimpress", + math => "lomath", + template => "lofromtemplate", + unopkg => "unopkg", + web => "loweb", + writer => "lowriter", +); + +my $office_shell_function = "_loexp_"; + +sub usage() +{ + print "Script to Generate bash completion for LO wrappers\n\n"; + + print "Usage: $0 --help\n"; + print " $0 [--binsuffix=suffix]\n"; + print "\t\t[--compat-oowrappers]\n"; + print "\t\t[--office=wrapper_name]\n"; + print "\t\t[--master=wrapper_name]\n"; + print "\t\t[--base=wrapper_name]\n"; + print "\t\t[--calc=wrapper_name]\n"; + print "\t\t[--draw=wrapper_name]\n"; + print "\t\t[--impress=wrapper_name]\n"; + print "\t\t[--math=wrapper_name]\n"; + print "\t\t[--template=wrapper_name]\n"; + print "\t\t[--unopkg=wrapper_name]\n"; + print "\t\t[--web=wrapper_name]\n"; + print "\t\t[--writer=wrapper_name]\n"; + print "\t\tinput_file\n"; + print "\t\toutput_file\n\n"; + + print "Options:\n"; + print "\t--help\t\tprint this help\n"; + print "\t--binsuffix\tdefines a suffix that is added after each wrapper\n"; + print "\t--compat-oowrappers\tset wrapper names to the old default oo* wrapper names\n"; + + print "The other options allows to redefine the wrapper names.\n"; + print "The value \"\" can be used to disable any wrapper.\n\n"; +} + +my $infilename; +my $outfilename; +my $binsuffix = ''; + +my $opt; +foreach my $arg (@ARGV) { + if ( $arg =~ /--help/ ) { + usage(); + exit 0; + } elsif ( $arg =~ /--compat-oowrappers/ ) { + $APPS{'office'} = "ooffice"; + $APPS{'master'} = ""; + $APPS{'base'} = "oobase"; + $APPS{'calc'} = "oocalc"; + $APPS{'draw'} = "oodraw"; + $APPS{'impress'} = "ooimpress"; + $APPS{'math'} = "oomath"; + $APPS{'template'} = "oofromtemplate"; + $APPS{'unopkg'} = "unopkg"; + $APPS{'web'} = "ooweb"; + $APPS{'writer'} = "oowriter"; + $office_shell_function = "_ooexp_"; + } elsif ( $arg =~ /--binsuffix=(.*)/ ) { + $binsuffix = "$1"; + } elsif ( $arg =~ /--office=(.*)/ ) { + $APPS{'office'} = "$1"; + } elsif ( $arg =~ /--master=(.*)/ ) { + $APPS{'master'} = "$1"; + } elsif ( $arg =~ /--base=(.*)/ ) { + $APPS{'base'} = "$1"; + } elsif ( $arg =~ /--calc=(.*)/ ) { + $APPS{'calc'} = "$1"; + } elsif ( $arg =~ /--draw=(.*)/ ) { + $APPS{'draw'} = "$1"; + } elsif ( $arg =~ /--impress=(.*)/ ) { + $APPS{'impress'} = "$1" + } elsif ( $arg =~ /--math=(.*)/ ) { + $APPS{'math'} = "$1"; + } elsif ( $arg =~ /--template=(.*)/ ) { + $APPS{'template'} = "$1"; + } elsif ( $arg =~ /--unopkg=(.*)/ ) { + $APPS{'unopkg'} = "$1"; + } elsif ( $arg =~ /--web=(.*)/ ) { + $APPS{'web'} = "$1"; + } elsif ( $arg =~ /--writer=(.*)/ ) { + $APPS{'writer'} = "$1" + } elsif ( $arg =~ /^-.*/ ) { + printf STDERR "Error: invalid option \"$arg\", try --help\n"; + exit 1; + } elsif ( $outfilename ) { + printf STDERR "Error: too much arguments, try --help\n"; + exit 1; + } else { + if ($infilename) { + $outfilename = "$arg"; + } else { + $infilename = "$arg"; + } + } +} + +unless ( $infilename ) { + printf STDERR "Error: undefined input file, try --help\n"; + exit 1; +} + +unless ( $outfilename ) { + printf STDERR "Error: undefined output file, try --help\n"; + exit 1; +} + +#add binsuffix +foreach my $app (keys %APPS) { + $APPS{$app} .= "$binsuffix" unless ( "$APPS{$app}" eq "" ); +} + +sub print_suffixes_check { + my $app = shift(@_); + my $first_suffix = shift(@_); + + ($first_suffix) || die "Error: No suffix defined for $app\n"; + + print BCOUTFILE " $app)\t\te=\'!*.+(" . $first_suffix . "|" . uc($first_suffix); + foreach my $suffix (@_) { + print BCOUTFILE "|" . $suffix; + print BCOUTFILE "|" . uc($suffix); + } + print BCOUTFILE ")\' ;;\n"; +} + +sub print_suffixes_checks { + foreach my $app (keys %APPS) { + # skip the disabled wrapper + next if ( $APPS{$app} eq "" ); + + if ($app eq "draw" ) { print_suffixes_check ($APPS{$app}, @DRAWDOCS); } + if ($app eq "writer") { print_suffixes_check ($APPS{$app}, @WRITERDOCS, @MASTERDOCS); } + if ($app eq "web") { print_suffixes_check ($APPS{$app}, @WEBDOCS); } + if ($app eq "math") { print_suffixes_check ($APPS{$app}, @MATHDOCS); } + if ($app eq "impress") { print_suffixes_check ($APPS{$app}, @IMPRESSDOCS); } + if ($app eq "base") { print_suffixes_check ($APPS{$app}, @BASEDOCS); } + if ($app eq "calc") { print_suffixes_check ($APPS{$app}, @CALCDOCS); } + if ($app eq "master") { print_suffixes_check ($APPS{$app}, @MASTERDOCS); } + if ($app eq "template") { print_suffixes_check ($APPS{$app}, @TEMPLATES); } + # libreoffice should contain all... + if ($app eq "office") { print_suffixes_check ($APPS{$app}, @DRAWDOCS, @WRITERDOCS, @MATHDOCS, @IMPRESSDOCS, @BASEDOCS, @CALCDOCS, @MASTERDOCS, @TEMPLATES, @WEBDOCS); } + # unopkg is a standalone tool + if ($app eq "unopkg") { print_suffixes_check ($APPS{$app}, @EXTENSIONS); } + } +} + +sub print_apps { + my $app_to_print; + foreach my $app (keys %APPS) { + # skip the disabled wrapper + next if ( $APPS{$app} eq "" ); + + print BCOUTFILE "\t\t\t\t\t$app_to_print \\\n" if ($app_to_print); + $app_to_print = $APPS{$app}; + } + # the last app will be printed without the final backslash + ($app_to_print) || die "Error: No LO wrapper was selected\n"; + print BCOUTFILE "\t\t\t\t\t$app_to_print\n"; +} + + +open (BCINFILE, "$infilename") || die "Error: can't open $infilename for reading: $!\n"; +open (BCOUTFILE, "> $outfilename") || die "Error: can't open $outfilename for writing: $!\n"; + +while (my $line = <BCINFILE>) { + chomp $line; + + $line =~ s/\@OFFICE_SHELL_FUNCTION\@/$office_shell_function/; + + if ($line =~ m/\@BASH_COMPLETION_SUFFIXES_CHECKS\@/) { + print_suffixes_checks(); + } elsif ($line =~ m/\@BASH_COMPLETION_OOO_APPS\@/) { + print_apps(); + } else { + print BCOUTFILE "$line\n"; + } +} + +close (BCINFILE); +close (BCOUTFILE); |