summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/update-priority.pl74
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/update-priority.pl b/scripts/update-priority.pl
new file mode 100644
index 0000000..e70688a
--- /dev/null
+++ b/scripts/update-priority.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+
+# Author: Arthur Xiong
+# Date: 04/15/2010
+# Description: Script to automatically update/add priority tag with
+# some value for each node.def according to the inputs
+
+# **** License ****
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# This code was originally developed by Vyatta, Inc.
+# Portions created by Vyatta are Copyright (C) 2006-2010 Vyatta, Inc.
+# All Rights Reserved.
+#
+# **** End License ****
+
+use strict;
+use warnings;
+
+die "Usage: update-priority.pl <priority-file> <path-to-template>"
+ unless $#ARGV == 1;
+
+my $priority;
+my $path;
+my $comment;
+my $priority_line;
+my $node_def;
+my $priority_file = $ARGV[0];
+my $prefix = $ARGV[1];
+
+open my $pf, '<', $priority_file or die "$priority_file can't be opened";
+while (<$pf>) {
+ chomp;
+ next if /^#.*/;
+ die "Syntax Error \"$_\"" unless /^(\d+)\s+(\S+)\s+(|#.*)$/;
+ $priority = $1;
+ $path = $2;
+ $comment = $3;
+
+ $priority_line = "";
+ $priority_line = "priority: " . $priority . "\t" . $comment . "\n";
+ print "priority_line: $priority_line";
+
+ $node_def = "";
+ $node_def = $prefix . "/" . $path . "/" . "node.def";
+ print "node_def: ", $node_def, "\n";
+
+ open my $nf, '<', $node_def or die "$node_def can't be opened";
+ open my $nfn, '>', "$node_def.new" or die "$node_def.new can't be opened";
+ while (<$nf>) {
+ print $nfn $_ if /^(tag|multi):/;
+ print $nfn $priority_line;
+ print $nfn $_ unless /^priority:\s(\d+)/ or /^(tag|multi):/;
+ last if $. == 1;
+ }
+ while (<$nf>) {
+ print $nfn $_ unless /^priority:\s(\d+)/;
+ }
+ close $nfn;
+ close $nf;
+
+ rename "$node_def.new", "$node_def"
+ or die "$node_def.new can't be renamed to $node_def";
+
+ print "Updated $node_def\n\n";
+}
+close $pf;