-
Notifications
You must be signed in to change notification settings - Fork 1
/
regen-modules
executable file
·66 lines (59 loc) · 1.86 KB
/
regen-modules
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env perl
#
# InspIRCd -- Internet Relay Chat Daemon
#
# Copyright (C) 2013 Peter Powell <petpow@saberuk.com>
#
# This file is part of InspIRCd. InspIRCd is free software: you can
# redistribute it and/or modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation, version 2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
BEGIN {
require 5.10.0;
}
use feature ':5.10';
use strict;
use warnings FATAL => qw(all);
use File::Basename;
if (system 'git --version > /dev/null 2>&1') {
say 'Error: Git is not installed and available in the PATH!';
exit 1;
}
my $repo = "https://raw.github.com/snoonetIRC/inspircd-modules";
open(LIST, '>modules.lst');
for my $file (<*/m_*.cpp>) {
if (system "git ls-files --error-unmatch -- $file > /dev/null 2>&1") {
say STDERR "Skipping $file which is not in Git!";
next;
}
my $name = basename($file, '.cpp');
my $branch = dirname($file);
chomp(my $revision = `git rev-list HEAD --max-count=1 -- $file`);
chomp(my $version = `git rev-list $revision | wc -l`);
$version =~ s/\s//g;
say LIST "module $name $branch.$version $repo/$revision/$file";
open(MODULE, $file);
while (<MODULE>) {
if ($_ =~ /^\/\* \$(\S+): (.+) \*\/$/ || $_ =~ /^\/\/\/ \$(\S+): (.+)/) {
if ($1 eq 'ModDepends') {
say LIST " depends $2";
} elsif ($1 eq 'ModConflicts') {
say LIST " conflicts $2";
} elsif ($1 eq 'ModDesc') {
say LIST " description $2";
} elsif ($1 eq 'ModMask') {
say LIST " mask $2";
}
}
}
close(MODULE);
}
close(LIST);