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);