File: sf-add-skill

package info (click to toggle)
gforge 4.5.14-22etch13
  • links: PTS
  • area: main
  • in suites: etch
  • size: 13,004 kB
  • ctags: 11,918
  • sloc: php: 36,047; sql: 29,050; sh: 10,538; perl: 6,496; xml: 3,810; makefile: 341; python: 263; ansic: 256
file content (71 lines) | stat: -rwxr-xr-x 1,571 bytes parent folder | download | duplicates (4)
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
67
68
69
70
71
#!/usr/bin/perl -w
#
# Debian-specific script to insert a new skill into the SF database

use DBI ;
use strict ;
use diagnostics ;

use vars qw/$dbh @reqlist $skill/ ;

use vars qw/@skills/ ;

sub debug ( $ ) ;

require ("/usr/lib/gforge/lib/include.pl") ; # Include all the predefined functions 

&db_connect ;

if ($#ARGV < 0) {
    debug "Usage: sf-add-skill <skill>..." ;
    exit 1 ;
}

@skills = @ARGV ;

$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
eval {
    my ($query, $sth, @array, $version, $action, $skill) ;

    foreach $skill (@skills) {
	debug "Inserting skill <$skill>." ;
	$skill = $dbh->quote ($skill) ;
	
	$query = "INSERT INTO people_skill (name) VALUES ($skill)" ;
	
	# debug $query ;
	
	$sth = $dbh->prepare ($query) ;
	$sth->execute () ;
	$sth->finish () ;
    }
    
    # debug "Committing." ;
    $dbh->commit () ;

    # There should be a commit at the end of every block above.
    # If there is not, then it might be symptomatic of a problem.
    # For safety, we roll back.
    $dbh->rollback ();
};

if ($@) {
    warn "Transaction aborted because $@" ;
    debug "Transaction aborted because $@" ;
    $dbh->rollback ;
    debug "Please report this bug on the Debian bug-tracking system." ;
    debug "Please include the previous messages as well to help debugging." ;
    debug "You should not worry too much about this," ;
    debug "your DB is still in a consistent state and should be usable." ;
    exit 1 ;
}

$dbh->rollback ;
$dbh->disconnect ;

sub debug ( $ ) {
    my $v = shift ;
    chomp $v ;
    print STDERR "$v\n" ;
}