add news item for ikiwiki 2.30
[ikiwiki] / ikiwiki-update-wikilist
1 #!/usr/bin/perl -t
2 # Add a user to the system wide wikilist.
3 # This script can safely be made suid.
4 use warnings;
5 use strict;
6 use English;
7
8 my $username=getpwuid($REAL_USER_ID);
9 if (! defined $username || ! length $username) {
10         die "unable to determine user name for UID $REAL_USER_ID\n";
11 }
12
13 my $wikilist="/etc/ikiwiki/wikilist";
14 if (! -e $wikilist) {
15         die "$wikilist does not exist\n";
16 }
17
18 my $removed=0;
19 my @lines;
20 open (my $list, "<$wikilist") || die "read $wikilist: $!";
21 while (<$list>) {
22         chomp;
23         if (/^\s*([^\s]+)\s*$/) {
24                 my $user=$1;
25                 if ($user eq $username) {
26                         $removed=1;             
27                 }
28                 else {
29                         push @lines, $_;
30                 }
31         }
32         else {
33                 push @lines, $_;
34         }
35 }
36 close $list || die "error reading $list: $!";
37 open ($list, ">$wikilist") || die "write $wikilist: $!";
38 foreach (@lines) {
39         print $list "$_\n";
40 }
41 if ($removed) {
42         print "removed user $username from $wikilist\n";
43 }
44 else {
45         print $list "$username\n";
46         print "added user $username to $wikilist\n";
47 }
48 close $list || die "error writing $list: $!";