Переглянути джерело

Bug 24633: Add support for gitlab searching of plugins

This patch adds the option to add Gitlab repositories to look for
Koha plugins. As with Github, plugin projects need to be named
koha-plugin-* and the release file needs to be named with the .kpz
extension.

To test:
1. Apply this patchset
2. Check either koha-conf.xml or koha-conf.site.xml.in for sample
   configurations of gitlab targets.
3. Tweak your koha-conf.xml accordingly. You could have:

 <plugin_repos>
     <repo>
         <name>ByWater Solutions</name>
         <org_name>bywatersolutions</org_name>
         <service>github</service>
     </repo-
     <repo>
         <name>Theke Solutions</name>
         <org_name>thekesolutions</org_name>
         <service>gitlab</service>
     </repo>
     <repo>
         <name>PTFS Europe</name>
         <org_name>ptfs-europe</org_name>
         <service>github</service>
     </repo>
  </plugin_repos>

4. Flush memcached and restart plack:
   $ flush_memcached
   $ koha-plack --restart kohadev
5. Open the plugins page, search for anything, like 'gobi' or 'a'
=> SUCCESS: You get Theke results!
6. Pick a gitlab plugin for install
=> SUCCESS: It is installed!
7. Sign off :-D

Sponsored-by: Theke Solutions
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
tags/v20.11.00
Tomas Cohen Arazi 6 місяці тому
джерело
коміт
df2a7e4aa2
1 змінених файлів з 32 додано та 0 видалено
  1. +32
    -0
      plugins/plugins-home.pl

+ 32
- 0
plugins/plugins-home.pl Переглянути файл

@@ -89,6 +89,38 @@ if ($plugins_enabled) {
push( @results, { repo => $r, result => $result } );
}
}
elsif ( $r->{service} eq 'gitlab' ) {
my $org_name = $r->{org_name};
my $url = "https://gitlab.com/api/v4/groups/$org_name/projects?with_issues_enabled=no\&with_merge_requests_enabled=no\&with_shared=no\&include_subgroups=yes\&search=koha-plugin+$plugin_search";
my $response = from_json( get($url) );
foreach my $result ( @{ $response } ) {
next unless $result->{name} =~ /^koha-plugin-/;
my $project_id = $result->{id};
my $description = $result->{description} // '';
my $web_url = $result->{web_url};
my $releases_url = "https://gitlab.com/api/v4/projects/$project_id/releases";
my @releases = @{ from_json( get($releases_url) ) };

if ( scalar @releases > 0 ) {
# Pick the first one, the latest release
my $latest = $releases[0];
my $name = $latest->{name};
my @links = @{$latest->{assets}->{links}};
my $url = $links[0]->{direct_asset_url};
my @parts = split( '/', $url);
my $filename = $parts[-1];
next unless $url =~ m/\.kpz$/;
my $result = {
description => $description,
install_name => $filename,
install_url => $url,
html_url => $web_url,
name => $name,
};
push @results, { repo => $r, result => $result };
}
}
}
}

$template->param(


Завантаження…
Відмінити
Зберегти