This is an automated email from the git hooks/post-receive script. gregoa pushed a commit to branch master in repository pkg-perl-tools.
commit d1474f73bf34a8f71f41ffcc6b50b2be24c17e5c Author: gregor herrmann <[email protected]> Date: Sun Jan 28 15:35:56 2018 +0100 dpt-salsa: factor out configurerepo() problems: - warnings from Role::REST::Client - sharing with the Debian group: + dead slow + everyone is a project_user then (not a project_member) (aesthetical) + fails on share if shared, fails on unshare of not shared, but no way to check? as a proxy check if salsa admin is a group user Gbp-Dch: Ignore --- scripts/salsa | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- t/spelling.st | 1 + 2 files changed, 75 insertions(+), 12 deletions(-) diff --git a/scripts/salsa b/scripts/salsa index ed27122..90f2c55 100755 --- a/scripts/salsa +++ b/scripts/salsa @@ -27,6 +27,7 @@ my %config = ( perl_team_modules_attic_id => 2667, debian_path => 'debian', debian_id => 2, + administrator_id => 1, ); ## update from environment / config file @@ -104,6 +105,8 @@ if ( $command eq 'version' ) { listrepos(); } elsif ( $command eq 'createrepo' ) { createrepo(); +} elsif ( $command eq 'configurerepo' ) { + configurerepo(); } elsif ( $command eq 'help' ) { pod2usage(1); } elsif ( $command eq 'XXX' ) { @@ -196,7 +199,7 @@ sub listrepos { } } -# createrepo +## createrepo sub createrepo { my ($reponame) = @args; die 'Required parameter repositoryname missing.' unless $reponame; @@ -208,21 +211,34 @@ sub createrepo { visibility => 'public', } ); - my $repoid = $repo->{id}; + configurerepo(); +} + +## configurerepo +sub configurerepo { + my ($repo) = @args; + die 'Required parameter reponame|repoid missing.' unless $repo; + my $repo_id = repo2repoid($repo); + my $repo_name = $api->project($repo_id)->{name}; + + # webhooks: cleanup; tagpending + my $hooks = $api->project_hooks($repo_id); + $api->delete_project_hook( $repo_id, $_->{id} ) foreach @{$hooks}; - # webhooks: tagpending $api->create_project_hook( - $repoid, - { url => "https://webhook.salsa.debian.org/tagpending/$reponame", + $repo_id, + { url => "https://webhook.salsa.debian.org/tagpending/$repo_name", push_events => 1, } ); - # services: emails-on-push, irker - $api->edit_project_service( $repoid, 'emails-on-push', + # services: cleanup; emails-on-push, irker + $api->delete_project_service( $repo_id, 'emails-on-push' ); + $api->delete_project_service( $repo_id, 'irker' ); + $api->edit_project_service( $repo_id, 'emails-on-push', { recipients => '[email protected]' } ); $api->edit_project_service( - $repoid, 'irker', + $repo_id, 'irker', { server_host => 'ruprecht.snow-crash.org', @@ -234,9 +250,18 @@ sub createrepo { } ); - # allow access to debian group + # take/give access to debian group + # check if Administrator is a project user as a proxy to find + # if the project is shared with the Debian group + my $project_users = $api->project_users($repo_id); + foreach ( @{$project_users} ) { + if ( $_->{id} == $config{administrator_id} ) { + $api->unshare_project_with_group( $repo_id, $config{debian_id}, ); + last; + } + } $api->share_project_with_group( - $repoid, + $repo_id, { group_id => $config{debian_id}, group_access => $levels_name{developer}, } @@ -269,6 +294,25 @@ sub user2userid { die "Parameter '$user' doesn't look like a userid or a username."; } +## reponame2repoid($reponame) +sub reponame2repoid { + my $reponame = shift; + my $repos = $api->projects( { search => $reponame } ); + die "More than one repository with name '$reponame'." + if scalar @{$repos} > 1; + die "Repository name '$reponame' not found." if scalar @{$repos} < 1; + return $repos->[0]->{id}; +} + +## repo2repoid($string) +sub repo2repoid { + my $repo = shift; + return $repo if $repo =~ /^\d+$/; + return reponame2repoid($repo) if $repo =~ /^\w+$/; + die + "Parameter '$repo' doesn't look like a repositoryid or a repositoryname."; +} + __END__ =head1 NAME @@ -298,8 +342,7 @@ B<dpt-salsa> for the first time. =head3 I<createrepo> I<repositoryname> -Creates a new repository in the I<modules> subgroup and sets up the default -webhooks, services, and permissions. +Creates a new repository in the I<modules> subgroup and calls C<configurerepo()>. Parameters: @@ -312,6 +355,21 @@ Required. =back +=head3 I<configurerepo> I<repositoryid|repositoryname> + +Sets up the default webhooks, services, and permissions for a repository. + +Parameters: + +=over + +=item repositoryid|repositoryname + +The repository to be configured. Either its id (\d+) or name (\w+). +Required. + +=back + =head3 I<listrepos> Show all repositories in the I<modules> subgroup. @@ -455,6 +513,10 @@ optional, default: debian optional, default: 2 +=item DPT_SALSA_ADMINISTRATOR_ID + +optional, default: 1 + =back Cf. L<dpt-config(5)>. diff --git a/t/spelling.st b/t/spelling.st index fade8a3..a5a6ca0 100644 --- a/t/spelling.st +++ b/t/spelling.st @@ -54,6 +54,7 @@ anonscm bts bzip conf +configurerepo createrepo dch debian -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/pkg-perl-tools.git _______________________________________________ Pkg-perl-cvs-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits
