diff options
| author | Daniel Friesel <derf@derf.homelinux.org> | 2010-02-10 15:43:05 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@derf.homelinux.org> | 2010-02-10 15:43:05 +0100 | 
| commit | d05334d9d8a7956eb6fcf706977cce1b2c06d858 (patch) | |
| tree | e0ed16720dd0de15147a0c56164fb6a2ac1594a3 | |
| parent | f322a9f6640e7ebf67f20f49ca00593fdb5e1026 (diff) | |
Add checkopts.pl
| -rwxr-xr-x | dev/checkopts.pl | 66 | 
1 files changed, 66 insertions, 0 deletions
| diff --git a/dev/checkopts.pl b/dev/checkopts.pl new file mode 100755 index 0000000..b2cd6c1 --- /dev/null +++ b/dev/checkopts.pl @@ -0,0 +1,66 @@ +#!/usr/bin/env perl +## Copyright © 2010 by Daniel Friesel <derf@derf.homelinux.org> +## License: WTFPL <http://sam.zoy.org/wtfpl> +use strict; +use warnings; + +my $options; + +open(my $c_fh, '<', 'src/options.c') or die("Can't read options.c: $!"); +while (my $line = <$c_fh>) { + +	if ($line =~ /\{"(?<long>[\w-]+)",.*,\s*(?:'(?<short>.)'|(?<short>\d+))\}/o) { +		push(@{$options->{$+{long}}}, ['source', $+{short}]); +	} +	elsif ($line =~ /" (?:\-(?<short>.), |\s*)--(?<long>[\w-]+) /) { +		push(@{$options->{$+{long}}}, ['help', $+{short}]); +	} + +} +close($c_fh); + +open(my $man_fh, '<', 'feh.1') or die("Can't read feh.1: $!"); +while (my $line = <$man_fh>) { + +	if ($line =~ /^\.B (?:-(?<short>.), )?--(?<long>[\w-]+)/) { +		push(@{$options->{$+{long}}}, ['manual', $+{short}]); +	} + +} +close($man_fh); + +foreach my $option (keys %{$options}) { +	my $last; +	my $count = 0; + +	if ($option =~ /^action\d/) { +		next; +	} + +	foreach my $source (@{$options->{$option}}) { +		my $name = $source->[0]; +		my $short = $source->[1] // ''; +		$short = '' if ($short =~ /^\d+$/); + +		if (not defined $last) { +			$last = $short; +		} + +		if ($last ne $short) { +			last; +		} + +		$last = $short; +		$count++; +	} + +	if ($count == 3) { +		next; +	} + +	foreach my $source (@{$options->{$option}}) { +		my $name = $source->[0]; +		my $short = $source->[1] // ''; +		print "$option: $name ($short)\n"; +	} +} | 
