]>
git.proxmox.com Git - pve-docs.git/blob - pve-docs-mediawiki-import.in
14 while (<main
::DATA
>) { $data_str .= $_; }
16 my $fileinfo = decode_json
($data_str);
18 my $config_fn = "/root/.pve-docs"; # format 'username:pw'
20 my $fh = IO
::File-
>new("$config_fn") ||
21 die "Please configure the mediawiki user/passswd in '$config_fn'\n";
23 my $api_url = "http://localhost/mediawiki/api.php";
28 my ($username, $passwd) = split(':', $config, 2);
30 my $mw = MediaWiki
::API-
>new();
31 $mw->{config
}->{api_url
} = $api_url;
34 $mw->login({ lgname
=> $username, lgpassword
=> $passwd })
35 || die $mw->{error
}->{code
} . ': ' . $mw->{error
}->{details
};
38 my ($pagename, $include, $category) = @_;
40 print "update mediawiki page: $pagename\n";
42 my $ref = $mw->get_page( { title
=> $pagename } );
43 my $page = $ref->{'*'} || '';
45 if ($page !~ m/^\{\{#pvedocs:.*\}\}\s*$/m) {
46 $page = "{{#pvedocs:$include}}\n$page";
48 $page =~ s/^\{\{#pvedocs:.*\}\}\s*$/\{\{#pvedocs:$include\}\}\n/m;
52 my $catstr = "Category:$category";
54 if ($page !~ m/^\[\[$catstr\]\]\s*$/m) {
55 $page .= "\n[[$catstr]]\n";
59 my $timestamp = $ref->{timestamp
};
63 basetimestamp
=> $timestamp, # to avoid edit conflicts
68 die $mw->{error
}->{code
} . ': ' . $mw->{error
}->{details
};
71 my $cat_refdoc = "Reference Documentation";
75 foreach my $source (sort keys %{$fileinfo->{toplevel
}->{wiki
}}) {
76 my $title = $fileinfo->{titles
}->{wiki
}->{$source};
77 my $filename = $fileinfo->{outfile
}->{wiki
}->{$source} ||
78 die "found no file name mapping for '$source'";
80 my $path = "/usr/share/pve-docs/$filename";
81 die "no such file '$path'" if ! -f
$path;
83 update_page
($title, $filename, category
=> $cat_refdoc);
86 # also update 'Get support' page, because this is used since a long
87 # time and is referenced from outside
88 update_page
("Get support", 'getting-help-plain.html', 'HOWTO');