package VCS::SaVeS::Help; sub general {< # Complete description of an svs command svs help switches # Command line switches for svs XXX END } sub usage { <' for complete help on a specific command. add - Add files to the MANIFEST archive - Create an archive of the repository XXX break - Mark directory as a SaVeS breakpoint config - Change configuration options XXX delete - Delete the revision history a file from the repository diff - Show differences between file revisions export - Export a repository to another VCS (such as CVS) XXX find - Find repository files based on certain criteria help - Get help about the SaVeS system and svs commands history - Show the revision history of a file import - Create a new repository log - Show a view of the SaVeS log XXX manifest - List or change the contents of the .saves/MANIFEST merge - Merge a nested repository into the current one XXX message - Change the message of a file revision XXX remove - Remove a file from the MANIFEST restore - Restore file(s) to a certain revision save - Checkin a new revision of files status - Show the current status of files tag - Mark a set of revisions with a symbolic tag XXX undo - Attempt to undo a change XXX split - Turn a subdirectory of the repository into its own repository XXX END } sub add { grep_pod(); } sub archive { grep_pod(); } sub break { grep_pod(); } sub config { grep_pod(); } sub delete { grep_pod(); } sub diff { grep_pod(); } sub export { grep_pod(); } sub find { grep_pod(); } sub help { grep_pod(); } sub history { grep_pod(); } sub import { grep_pod(); } sub log { grep_pod(); } sub manifest { grep_pod(); } sub merge { grep_pod(); } sub message { grep_pod(); } sub remove { grep_pod(); } sub restore { grep_pod(); } sub save { grep_pod(); } sub status { grep_pod(); } sub tag { grep_pod(); } sub undo { grep_pod(); } sub split { grep_pod(); } sub grep_pod { my $svs_bin = ''; for $path (split /[:;]/, $ENV{PATH}) { $svs_bin = "$path/svs", last if -f "$path/svs"; } die "Can't find svs binary\n" unless $svs_bin; open SVSBIN, $svs_bin or die $!; (my $command = (caller(1))[3]) =~ s/.*::(\w+?)_?$/$1/; local $/; my $pod = ; close SVSBIN; $pod =~ /^(=head2\s$command.*?)^=(?:head|cut)/ms or die "Can't find pod section for '$command'\n"; my $cmd_pod = $1; open POD, "> /tmp/$command-help.pod" or die $!; print POD $cmd_pod; close POD; open POD2TEXT, "pod2text /tmp/$command-help.pod |" or die "Can't run pod2text on this system\n"; my $cmd_text = ; close POD2TEXT; return $cmd_text; } sub AUTOLOAD { (my $section = $VCS::SaVeS::Help::AUTOLOAD) =~ s/.*:://; die "'$section' is an invalid 'svs help' option\n"; } 1;