aboutsummaryrefslogtreecommitdiff
path: root/contrib/conf_merge
diff options
context:
space:
mode:
authorleak <none@none>2010-12-06 00:24:45 +0100
committerleak <none@none>2010-12-06 00:24:45 +0100
commite226c4ac344d06c7abbd6f04725ced2b33606349 (patch)
tree8fcf3eb7d78481a00c1b62500bd9765aa4ab2fc9 /contrib/conf_merge
parent59c1a238f5f4ba3888bb588958015a245ac83c45 (diff)
- Added Perl based conf merger script
- Removed LogSQL config option until reimplementation on code side - A bit of cosmetics for .conf files --HG-- branch : trunk
Diffstat (limited to 'contrib/conf_merge')
-rw-r--r--contrib/conf_merge/README9
-rw-r--r--contrib/conf_merge/tc-conf-merger.pl43
2 files changed, 51 insertions, 1 deletions
diff --git a/contrib/conf_merge/README b/contrib/conf_merge/README
index 3d027b7ad42..974c1063064 100644
--- a/contrib/conf_merge/README
+++ b/contrib/conf_merge/README
@@ -1,6 +1,13 @@
-This is a PHP script for merging a new .dist file with your existing .conf file (trinitycore and trinityrealm)
+==== PHP merger (index.php + merge.php) ====
+
+This is a PHP script for merging a new .dist file with your existing .conf file (worldserver.conf.dist and authserver.conf.dist)
It should also work with mangos dist/conf files as well.
It uses sessions so it is multi user safe, it adds any options that are removed to the bottom of the file,
commented out, just in case it removes something it shouldn't,
and, if you add all of your custom patch configs below "# Custom" they will be copied exactly as they are.
+
+==== Perl merger (tc-conf-merger.pl) ====
+
+Perl based command line merger script. This script feeds a .conf.dist file with variables that exist in an old .conf file,
+comments and custom options are ignored.
diff --git a/contrib/conf_merge/tc-conf-merger.pl b/contrib/conf_merge/tc-conf-merger.pl
new file mode 100644
index 00000000000..a6589b5c674
--- /dev/null
+++ b/contrib/conf_merge/tc-conf-merger.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
+# Author: leak
+# Date: 2010-12-06
+# Note: Based on conf file format of rev 10507
+
+use strict;
+
+if (@ARGV != 3)
+{
+ print("Usage:\ntc-conf-merger.pl <path to new .conf.dist> <path to old .conf> <path to output .conf>\n");
+ exit(1);
+}
+
+if (! -e $ARGV[0])
+{
+ print("No file found at: ".$ARGV[0]);
+ exit(1);
+}
+elsif (! -e $ARGV[1])
+{
+ print("No file found at: ".$ARGV[1]);
+ exit(1);
+}
+
+open CONFDIST, "<", $ARGV[0] or die "Error: Could not open ".$ARGV[0]."\n";
+my $confdist = join "", <CONFDIST>;
+close CONFDIST;
+
+open CONFOLD, "<", $ARGV[1] or die "Error: Could not open ".$ARGV[1]."\n";
+my $confold = join "", <CONFOLD>;
+close CONFOLD;
+
+while ($confold =~ m/^(?!#)(.*?)\s+?=\s+?(.*?)$/mg) {
+ my $key = $1, my $value = $2;
+ $confdist =~ s/^(\Q$key\E)(\s+?=\s+?)(.*)/$1$2$value/mg;
+}
+
+open OUTPUT, ">", $ARGV[2] or die "Error: Could not open ".$ARGV[2]."\n";
+binmode(OUTPUT);
+print OUTPUT $confdist;
+close OUTPUT;