# HG changeset patch # User Dario Sestito # Date 1279036022 -3600 # Node ID b1b8e71b0c52c40c3b58efc2f3546f7740f80d15 # Parent ead96bc104eaa2952c94c15aa7133dd402105714 Add dryrun option to bitops.pl diff -r ead96bc104ea -r b1b8e71b0c52 common/tools/bitops.pl --- a/common/tools/bitops.pl Tue Jul 13 14:37:59 2010 +0100 +++ b/common/tools/bitops.pl Tue Jul 13 16:47:02 2010 +0100 @@ -13,12 +13,14 @@ my $id = ''; my $file = ''; my $verbose = 0; +my $dryrun = 0; GetOptions(( 'create!' => \$create, 'file=s' => \$file, 'id=s' => \$id, 'help!' => \$help, - 'verbose!' => \$verbose + 'verbose!' => \$verbose, + 'dryrun!' => \$dryrun, )); if ($help||!$file) @@ -38,6 +40,9 @@ provided in FILE. -f FILE, --file FILE Use attributes in FILE to create/update the build info See below for file format. + -v, --verbose Increase info level + -d, --dryrun Only show what would happen, do not actually interact + with the DB File format: File must be a list of attribute-value-pairs. One avp per line, on each line @@ -76,18 +81,20 @@ sub ConnectToDB() { $db = DBI->connect('DBI:mysql:bit:v800016:3306','fbf','mysql') - or die("Couldn't connect to database: " . DBI->errstr()); + or die("Couldn't connect to database: " . DBI->errstr()) if (!$dryrun); } sub DisconnectFromDB() { - $db->disconnect(); + $db->disconnect() if (!$dryrun); } sub parse_file { my ($file) = @_; + print "Reading $file...\n" if ($verbose); + open(FILE, $file) or die "Can't open file $file"; while () @@ -191,7 +198,7 @@ return 1; } print " found ($name,$url,$revision) for table 'content'\n" if ($verbose); - push(@{$reports}, {name=>$name, url=>$url, revision=>$revision}); + push(@{$content}, {name=>$name, url=>$url, revision=>$revision}); } else { @@ -231,6 +238,8 @@ exit(1); } +print "Executing SQL commands...\n" if ($verbose); + ConnectToDB(); my $newbuildid = -1; if ($create) @@ -250,17 +259,17 @@ $qm_list =~ s/,$//; my $query = $db->prepare("insert into builds ($field_list) values ($qm_list)") - or die("Couldn't prepare query insert into builds: " . $db->errstr()); + or die("Couldn't prepare query insert into builds: " . $db->errstr()) if (!$dryrun); $query->execute(@fields) - or print "WARNING: Couldn't execute insert into builds (@fields): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into builds (@fields): " . $db->errstr() . "\n" if (!$dryrun); - $newbuildid = $db->last_insert_id(undef, undef, undef, undef); + $newbuildid = $db->last_insert_id(undef, undef, undef, undef) if (!$dryrun); } if (@{$envinfo}) { my $query = $db->prepare_cached("insert into envinfo (build_id,tool,version) values ($newbuildid,?,?)") - or die("Couldn't prepare query insert into envinfo: " . $db->errstr()); + or die("Couldn't prepare query insert into envinfo: " . $db->errstr()) if (!$dryrun); for my $entry (@{$envinfo}) { @@ -268,14 +277,14 @@ my $version = $entry->{version}; $query->execute($tool, $version) - or print "WARNING: Couldn't execute insert into envinfo ($tool,$version): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into envinfo ($tool,$version): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$failures}) { print " prepare_cached 'insert into failures (build_id,category,count) values ($newbuildid,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into failures (build_id,category,count) values ($newbuildid,?,?)") - or die("Couldn't prepare query insert into failures: " . $db->errstr()); + or die("Couldn't prepare query insert into failures: " . $db->errstr()) if (!$dryrun); for my $entry (@{$failures}) { @@ -284,14 +293,14 @@ print " execute '$category, $count'\n" if ($verbose); $query->execute($category, $count) - or print "WARNING: Couldn't execute insert into failures ($category,$count): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into failures ($category,$count): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$reports}) { print " prepare_cached 'insert into reports (build_id,name,url,type) values ($newbuildid,?,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into reports (build_id,name,url,type) values ($newbuildid,?,?,?)") - or die("Couldn't prepare query insert into reports: " . $db->errstr()); + or die("Couldn't prepare query insert into reports: " . $db->errstr()) if (!$dryrun); for my $entry (@{$reports}) { @@ -301,14 +310,14 @@ print " execute '$name, $url, $type'\n" if ($verbose); $query->execute($name, $url, $type) - or print "WARNING: Couldn't execute insert into reports ($name,$url,$type): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into reports ($name,$url,$type): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$content}) { print " prepare_cached 'insert into content (build_id,name,url,revision) values ($newbuildid,?,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into content (build_id,name,url,revision) values ($newbuildid,?,?,?)") - or die("Couldn't prepare query insert into content: " . $db->errstr()); + or die("Couldn't prepare query insert into content: " . $db->errstr()) if (!$dryrun); for my $entry (@{$content}) { @@ -318,14 +327,14 @@ print " execute '$name, $url, $revision'\n" if ($verbose); $query->execute($name, $url, $revision) - or print "WARNING: Couldn't execute insert into content ($name,$url,$revision): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into content ($name,$url,$revision): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$labels}) { print " prepare_cached 'insert into labels (build_id,label) values ($newbuildid,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into labels (build_id,label) values ($newbuildid,?)") - or die("Couldn't prepare query insert into labels: " . $db->errstr()); + or die("Couldn't prepare query insert into labels: " . $db->errstr()) if (!$dryrun); for my $entry (@{$labels}) { @@ -333,7 +342,7 @@ print " execute '$label'\n" if ($verbose); $query->execute($label) - or print "WARNING: Couldn't execute insert into revision ($label): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into revision ($label): " . $db->errstr() . "\n" if (!$dryrun); } } print "new build id: $newbuildid\n"; @@ -355,49 +364,49 @@ print " prepare 'update builds set $field_list where id=$id'\n" if ($verbose); my $query = $db->prepare("update builds set $field_list where id=$id") - or die("Couldn't prepare query update builds: " . $db->errstr()); + or die("Couldn't prepare query update builds: " . $db->errstr()) if (!$dryrun); print " execute '@fields'\n" if ($verbose); $query->execute(@fields) - or print "WARNING: Couldn't execute update builds (@fields): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute update builds (@fields): " . $db->errstr() . "\n" if (!$dryrun); } if (@{$envinfo}) { print " prepare 'delete from envinfo where build_id=$id'\n" if ($verbose); my $delete_query = $db->prepare("delete from envinfo where build_id=$id") - or die("Couldn't prepare query delete from envinfo: " . $db->errstr()); + or die("Couldn't prepare query delete from envinfo: " . $db->errstr()) if (!$dryrun); print " execute ''\n" if ($verbose); $delete_query->execute() - or print "WARNING: Couldn't execute delete from envinfo: " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute delete from envinfo: " . $db->errstr() . "\n" if (!$dryrun); print " prepare 'insert into envinfo (build_id,tool,version) values ($id,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into envinfo (build_id,tool,version) values ($id,?,?)") - or die("Couldn't prepare query insert into envinfo: " . $db->errstr()); + or die("Couldn't prepare query insert into envinfo: " . $db->errstr()) if (!$dryrun); for my $entry (@{$envinfo}) { my $tool = $entry->{tool}; my $version = $entry->{version}; - print " execute '$tool,$version'\n" if ($verbose); + print " execute '$tool,$version'\n" if ($verbose); $query->execute($tool, $version) - or print "WARNING: Couldn't execute insert into envinfo ($tool,$version): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into envinfo ($tool,$version): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$failures}) { print " prepare 'delete from failures where build_id=$id'\n" if ($verbose); my $delete_query = $db->prepare("delete from failures where build_id=$id") - or die("Couldn't prepare query delete from failures: " . $db->errstr()); + or die("Couldn't prepare query delete from failures: " . $db->errstr()) if (!$dryrun); print " execute ''\n" if ($verbose); $delete_query->execute() - or print "WARNING: Couldn't execute delete from failures: " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute delete from failures: " . $db->errstr() . "\n" if (!$dryrun); print " prepare 'insert into failures (build_id,category,count) values ($id,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into failures (build_id,category,count) values ($id,?,?)") - or die("Couldn't prepare query insert into failures: " . $db->errstr()); + or die("Couldn't prepare query insert into failures: " . $db->errstr()) if (!$dryrun); for my $entry (@{$failures}) { @@ -406,14 +415,14 @@ print " execute '$category,$count'\n" if ($verbose); $query->execute($category, $count) - or print "WARNING: Couldn't execute insert into failures ($category,$count): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into failures ($category,$count): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$reports}) { print " prepare 'delete from reports where build_id=$id'\n" if ($verbose); my $delete_query = $db->prepare("delete from reports where build_id=$id") - or die("Couldn't prepare query delete from reports: " . $db->errstr()); + or die("Couldn't prepare query delete from reports: " . $db->errstr()) if (!$dryrun); print " execute ''\n" if ($verbose); $delete_query->execute() @@ -421,7 +430,7 @@ print " prepare 'insert into reports (build_id,name,url,type) values ($id,?,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into reports (build_id,name,url,type) values ($id,?,?,?)") - or die("Couldn't prepare query insert into failures: " . $db->errstr()); + or die("Couldn't prepare query insert into failures: " . $db->errstr()) if (!$dryrun); for my $entry (@{$reports}) { @@ -431,22 +440,22 @@ print " execute '$name,$url,$type'\n" if ($verbose); $query->execute($name, $url, $type) - or print "WARNING: Couldn't execute insert into reports ($name,$url,$type): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into reports ($name,$url,$type): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$content}) { print " prepare 'delete from content where build_id=$id'\n" if ($verbose); my $delete_query = $db->prepare("delete from content where build_id=$id") - or die("Couldn't prepare query delete from content: " . $db->errstr()); + or die("Couldn't prepare query delete from content: " . $db->errstr()) if (!$dryrun); print " execute ''\n" if ($verbose); $delete_query->execute() - or print "WARNING: Couldn't execute delete from content: " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute delete from content: " . $db->errstr() . "\n" if (!$dryrun); print " prepare 'insert into content (build_id,name,url,revision) values ($id,?,?,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into content (build_id,name,url,revision) values ($id,?,?,?)") - or die("Couldn't prepare query insert into content: " . $db->errstr()); + or die("Couldn't prepare query insert into content: " . $db->errstr()) if (!$dryrun); for my $entry (@{$content}) { @@ -456,22 +465,22 @@ print " execute '$name,$url,$revision'\n" if ($verbose); $query->execute($name, $url, $revision) - or print "WARNING: Couldn't execute insert into content ($name,$url,$revision): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into content ($name,$url,$revision): " . $db->errstr() . "\n" if (!$dryrun); } } if (@{$labels}) { print " prepare 'delete from labels where build_id=$id'\n" if ($verbose); my $delete_query = $db->prepare("delete from labels where build_id=$id") - or die("Couldn't prepare query delete from labels: " . $db->errstr()); + or die("Couldn't prepare query delete from labels: " . $db->errstr()) if (!$dryrun); print " execute ''\n" if ($verbose); $delete_query->execute() - or print "WARNING: Couldn't execute delete from labels: " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute delete from labels: " . $db->errstr() . "\n" if (!$dryrun); print " prepare 'insert into labels (build_id,label) values ($id,?)'\n" if ($verbose); my $query = $db->prepare_cached("insert into label (build_id,label) values ($id,?)") - or die("Couldn't prepare query insert into label: " . $db->errstr()); + or die("Couldn't prepare query insert into label: " . $db->errstr()) if (!$dryrun); for my $entry (@{$labels}) { @@ -479,7 +488,7 @@ print " execute '$label'\n" if ($verbose); $query->execute($label) - or print "WARNING: Couldn't execute insert into labels ($label): " . $db->errstr() . "\n"; + or print "WARNING: Couldn't execute insert into labels ($label): " . $db->errstr() . "\n" if (!$dryrun); } } }