X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/d8426f37c88c5d980aa93855e40b50c97c282590..refs/heads/deploy:/webcheckout?ds=sidebyside
diff --git a/webcheckout b/webcheckout
index a6ae94f..e48d9de 100755
--- a/webcheckout
+++ b/webcheckout
@@ -16,7 +16,7 @@ a subdirectory of the current directory, using whatever VCS program is
appropriate for that repository (git, svn, etc).
The information about the repositories is embedded in the web page using
-the rel=vcs microformat, which is documented at
+the rel=vcs-* microformat, which is documented at
.
If the optional destdir parameter is specified, VCS programs will be asked
@@ -35,25 +35,33 @@ anonymous repositories when possible. If you have an account that
allows you to use authenticated repositories, you might want to use this
option.
-=item -n
+=item --no-act, -n
Do not actually check anything out, just print out the commands that would
be run to check out the repositories.
-=item -q
+=item --quiet, -q
Quiet mode. Do not print out the commands being run. (The VCS commands
may still be noisy however.)
=back
+=head1 PREREQUISITES
+
+To use this program you will need lots of VCS programs installed,
+obviously. It also depends on the perl LWP and HTML::Parser modules.
+
+If the perl URI module is installed, webcheckout can heuristically guess
+what you mean by partial URLs, such as "kitenet.net/~joey"'
+
=head1 AUTHOR
Copyright 2009 Joey Hess
Licensed under the GNU GPL version 2 or higher.
-This program is included in mr
+This program is included in myrepos
=cut
@@ -75,7 +83,7 @@ my $noact=0;
# Controls whether to perfer repos that use authentication.
my $want_auth=0;
-# Controls where to check out to. If not set, the vcs is allowed to
+# Controls where to check out to. If not set, the VCS is allowed to
# decide.
my $destdir;
@@ -111,6 +119,11 @@ sub getopts {
$url=shift @ARGV;
$destdir=shift @ARGV;
+ eval q{use URI::Heuristic};
+ if (! $@) {
+ $url=URI::Heuristic::uf_uristr($url);
+ }
+
if ($noact) {
$quiet=0;
}
@@ -187,9 +200,10 @@ sub parse {
$parser->handler(start => sub {
my $tagname=shift;
my $attr=shift;
- return if ! exists $attr->{rel} || lc $attr->{rel} ne 'vcs';
+
return if ! exists $attr->{href} || ! length $attr->{href};
- return if ! exists $attr->{type} || ! length $attr->{type};
+ return if ! exists $attr->{rel} || $attr->{rel} !~ /^vcs-(.+)/i;
+ $attr->{type}=lc($1);
# need to collect the body of the tag if there is no title
if ($tagname eq "a" && ! exists $attr->{title}) {