mw-to-git: use git-credential's URL parser

We can just feed our URL straight to git-credential and it will parse it for us, saving us some code. Signed-off-by: Jeff King <peff@peff.net> Acked-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Jul 18, 2012 at 09:03 UTC 77eab053a48a2062665c42f63348ae12290de03f
1 file changed +4 -28
contrib/mw-to-git/git-remote-mediawiki
+4 -28
@@ -163,32 +163,6 @@ while (<STDIN>) {
163
164 ## credential API management (generic functions)
165
166 -sub credential_from_url {
167 - my $url = shift;
168 - my $parsed = URI->new($url);
169 - my %credential;
170 -
171 - if ($parsed->scheme) {
172 - $credential{protocol} = $parsed->scheme;
173 - }
174 - if ($parsed->host) {
175 - $credential{host} = $parsed->host;
176 - }
177 - if ($parsed->path) {
178 - $credential{path} = $parsed->path;
179 - }
180 - if ($parsed->userinfo) {
181 - if ($parsed->userinfo =~ /([^:]*):(.*)/) {
182 - $credential{username} = $1;
183 - $credential{password} = $2;
184 - } else {
185 - $credential{username} = $parsed->userinfo;
186 - }
187 - }
188 -
189 - return %credential;
190 -}
191 -
166 sub credential_read {
167 my %credential;
168 my $reader = shift;
@@ -206,8 +180,10 @@ sub credential_read {
180 sub credential_write {
181 my $credential = shift;
182 my $writer = shift;
183 + # url overwrites other fields, so it must come first
184 + print $writer "url=$credential->{url}\n" if exists $credential->{url};
185 while (my ($key, $value) = each(%$credential) ) {
210 - if (length $value) {
186 + if (length $value && $key ne 'url') {
187 print $writer "$key=$value\n";
188 }
189 }
@@ -246,7 +222,7 @@ sub mw_connect_maybe {
222 $mediawiki = MediaWiki::API->new;
223 $mediawiki->{config}->{api_url} = "$url/api.php";
224 if ($wiki_login) {
249 - my %credential = credential_from_url($url);
225 + my %credential = (url => $url);
226 $credential{username} = $wiki_login;
227 $credential{password} = $wiki_passwd;
228 credential_run("fill", \%credential);