Merge Request #1
← To merge requests
From
refactor
into
master
Commits (3)
Showing
2 changed files
Show diff stats
lib/CoprStatus.pm
... | ... | @@ -7,55 +7,49 @@ use LWP::UserAgent; |
7 | 7 | |
8 | 8 | $ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0; |
9 | 9 | |
10 | +# hash with repos data | |
11 | +our $info = {}; | |
12 | + | |
10 | 13 | sub copr_monitor_url { |
11 | 14 | my ( $user, $repo ) = @_; |
12 | 15 | return "http://copr.fedoraproject.org/api/coprs/$user/$repo/monitor/"; |
13 | 16 | } |
14 | 17 | |
18 | +sub git_url { | |
19 | + my ( $domain, $spec_path, $branch, $package ) = @_; | |
20 | + | |
21 | + $spec_path =~ s/<branch>/$branch/; | |
22 | + $spec_path =~ s/<package>/$package/g; | |
23 | + | |
24 | + return "$domain/$spec_path"; | |
25 | +} | |
26 | + | |
15 | 27 | sub copr_info { |
28 | + my ( $user, $repo, $branch ) = @_; | |
29 | + | |
16 | 30 | my $ua = LWP::UserAgent->new; |
17 | 31 | $ua->timeout(300); |
18 | 32 | $ua->env_proxy; |
19 | 33 | $ua->ssl_opts(SSL_verify_mode => 0x00); |
20 | 34 | |
21 | - my $result_v4 = $ua->get(copr_monitor_url("softwarepublico", "v4")); | |
22 | - my $result_v5 = $ua->get(copr_monitor_url("softwarepublico", "v5")); | |
35 | + my $result = $ua->get(copr_monitor_url($user, $repo)); | |
23 | 36 | |
24 | 37 | my $json = JSON->new->allow_nonref; |
25 | 38 | |
26 | - my $dec_result_v4 = $json->decode($result_v4->decoded_content); | |
27 | - my $dec_result_v5 = $json->decode($result_v5->decoded_content); | |
28 | - my $info = {}; | |
29 | - | |
30 | - foreach(@{$dec_result_v4->{'packages'}}) { | |
31 | - my $package = $_->{'pkg_name'}; | |
32 | - my $status = $_->{'results'}{'epel-7-x86_64'}{'status'}; | |
33 | - my $version = $_->{'results'}{'epel-7-x86_64'}{'pkg_version'}; | |
34 | - $info->{$package}->{'v4_version'} = $version if $status eq "succeeded"; | |
35 | - } | |
39 | + my $dec_result = $json->decode($result->decoded_content); | |
36 | 40 | |
37 | - foreach(@{$dec_result_v5->{'packages'}}) { | |
41 | + foreach(@{$dec_result->{'packages'}}) { | |
38 | 42 | my $package = $_->{'pkg_name'}; |
39 | 43 | my $status = $_->{'results'}{'epel-7-x86_64'}{'status'}; |
40 | 44 | my $version = $_->{'results'}{'epel-7-x86_64'}{'pkg_version'}; |
41 | - $info->{$package}->{'v5_version'} = $version if $status eq "succeeded"; | |
42 | - } | |
43 | - | |
44 | - foreach my $key (keys %{$info}) { | |
45 | - my $spec = $ua->get("https://softwarepublico.gov.br/gitlab/softwarepublico/softwarepublico/raw/master/src/pkg-rpm/$key/$key.spec"); | |
46 | - my $version = $1 if $spec->decoded_content =~ /^Version:\s*([^\s]+)\s*$/m; | |
47 | - if($version =~ /%\{version\}/) { | |
48 | - $version = $1 if $spec->decoded_content =~ /define version\s*([^\s]+)\s*$/m; | |
49 | - } | |
50 | - | |
51 | - my $release = 'no_release'; | |
52 | - $release = $1 if $spec->decoded_content =~ /^Release:\s*([^\s]+)\s*$/m; | |
53 | - $version = "$version-$release"; | |
54 | - $info->{$key}->{'git_version_master'} = $version; | |
45 | + $info->{$package}->{$repo."_version"} = $version if $status eq "succeeded"; | |
55 | 46 | } |
56 | 47 | |
57 | - foreach my $key (keys %{$info}) { | |
58 | - my $spec = $ua->get("https://softwarepublico.gov.br/gitlab/softwarepublico/softwarepublico/raw/stable-4.x/src/pkg-rpm/$key/$key.spec"); | |
48 | + foreach my $package (keys %{$info}) { | |
49 | + my $git_url = git_url('http://softwarepublico.gov.br', | |
50 | + 'gitlab/softwarepublico/softwarepublico/raw/<branch>/src/pkg-rpm/<package>/<package>.spec', | |
51 | + $branch, $package); | |
52 | + my $spec = $ua->get($git_url); | |
59 | 53 | my $version = $1 if $spec->decoded_content =~ /^Version:\s*([^\s]+)\s*$/m; |
60 | 54 | if($version =~ /%\{version\}/) { |
61 | 55 | $version = $1 if $spec->decoded_content =~ /define version\s*([^\s]+)\s*$/m; |
... | ... | @@ -64,21 +58,21 @@ sub copr_info { |
64 | 58 | my $release = 'no_release'; |
65 | 59 | $release = $1 if $spec->decoded_content =~ /^Release:\s*([^\s]+)\s*$/m; |
66 | 60 | $version = "$version-$release"; |
67 | - $info->{$key}->{'git_version_stable_4'} = $version; | |
61 | + $info->{$package}->{'git_version_'.$branch} = $version; | |
68 | 62 | } |
69 | 63 | |
70 | - return $info; | |
71 | 64 | } |
72 | 65 | |
73 | 66 | sub compare_versions { |
74 | - my $info = copr_info(); | |
67 | + copr_info('softwarepublico', 'v4', 'stable-4.x'); | |
68 | + copr_info('softwarepublico', 'v5', 'master'); | |
75 | 69 | my $match = {}; |
76 | - foreach my $key (keys %{$info}) { | |
77 | - if($info->{$key}->{'v5_version'} eq $info->{$key}->{git_version_master}) { | |
78 | - $match->{$key} = 1; | |
70 | + foreach my $package (keys %{$info}) { | |
71 | + if($info->{$package}->{'v5_version'} eq $info->{$package}->{git_version_master}) { | |
72 | + $match->{$package} = 1; | |
79 | 73 | } |
80 | 74 | else { |
81 | - $match->{$key} = 0; | |
75 | + $match->{$package} = 0; | |
82 | 76 | } |
83 | 77 | } |
84 | 78 | |
... | ... | @@ -86,19 +80,20 @@ sub compare_versions { |
86 | 80 | } |
87 | 81 | |
88 | 82 | sub info2html { |
89 | - my $info = copr_info(); | |
83 | + copr_info('softwarepublico', 'v4', 'stable-4.x'); | |
84 | + copr_info('softwarepublico', 'v5', 'master'); | |
90 | 85 | my $table_entries=""; |
91 | - foreach my $key (keys %{$info}) { | |
86 | + foreach my $package (keys %{$info}) { | |
92 | 87 | my $fill_v4_row; |
93 | 88 | my $fill_v5_row; |
94 | - if($info->{$key}->{'v4_version'} eq $info->{$key}->{git_version_stable_4}) { | |
89 | + if($info->{$package}->{'v4_version'} eq $info->{$package}->{'git_version_stable-4.x'}) { | |
95 | 90 | $fill_v4_row = "success"; |
96 | 91 | } |
97 | 92 | else { |
98 | 93 | $fill_v4_row = "danger"; |
99 | 94 | } |
100 | 95 | |
101 | - if($info->{$key}->{'v5_version'} eq $info->{$key}->{git_version_master}) { | |
96 | + if($info->{$package}->{'v5_version'} eq $info->{$package}->{git_version_master}) { | |
102 | 97 | $fill_v5_row = "success"; |
103 | 98 | } |
104 | 99 | else { |
... | ... | @@ -106,11 +101,11 @@ sub info2html { |
106 | 101 | } |
107 | 102 | |
108 | 103 | $table_entries .= "<tr> |
109 | - <td><b>$key</b></td> | |
110 | - <td>$info->{$key}->{'git_version_stable_4'}</td> | |
111 | - <td class=\"$fill_v4_row\">$info->{$key}->{'v4_version'}</td> | |
112 | - <td>$info->{$key}->{'git_version_master'}</td> | |
113 | - <td class=\"$fill_v5_row\">$info->{$key}->{'v5_version'}</td> | |
104 | + <td><b>$package</b></td> | |
105 | + <td>$info->{$package}->{'git_version_stable-4.x'}</td> | |
106 | + <td class=\"$fill_v4_row\">$info->{$package}->{'v4_version'}</td> | |
107 | + <td>$info->{$package}->{'git_version_master'}</td> | |
108 | + <td class=\"$fill_v5_row\">$info->{$package}->{'v5_version'}</td> | |
114 | 109 | </tr>"; |
115 | 110 | } |
116 | 111 | |
... | ... | @@ -147,7 +142,8 @@ sub serve_html { |
147 | 142 | }; |
148 | 143 | |
149 | 144 | sub serve_json { |
150 | - my $info = copr_info(); | |
145 | + copr_info('softwarepublico', 'v4', 'stable-4.x'); | |
146 | + copr_info('softwarepublico', 'v5', 'master'); | |
151 | 147 | my $json = JSON->new->allow_nonref; |
152 | 148 | my $json_info = $json->encode($info); |
153 | 149 | return [ | ... | ... |
t/app.t
... | ... | @@ -4,7 +4,11 @@ use Test::More; |
4 | 4 | |
5 | 5 | BEGIN { use_ok('CoprStatus'); } |
6 | 6 | |
7 | -my $info = CoprStatus::copr_info(); | |
7 | +CoprStatus::copr_info('softwarepubico', 'v4', 'stable-4.x'); | |
8 | +CoprStatus::copr_info('softwarepubico', 'v5', 'master'); | |
9 | + | |
10 | +my $info = $CoprStatus::info; | |
11 | + | |
8 | 12 | ok(ref($info), 'HASH'); |
9 | 13 | foreach my $key (keys %{$info}) { |
10 | 14 | ok(ref($info->{$key}), 'HASH'); |
... | ... | @@ -24,10 +28,21 @@ foreach my $key (keys %{$match}) { |
24 | 28 | |
25 | 29 | my $table = CoprStatus::info2html(); |
26 | 30 | like($table, qr/danger|success/m); |
27 | -my $html = CoprStatus::build_html(); | |
31 | + | |
32 | +my $data = { | |
33 | + title => "SPB Copr Status", | |
34 | + table_entries => $table | |
35 | +}; | |
36 | + | |
37 | +my $template = Text::Template->new( | |
38 | + TYPE => 'FILE', | |
39 | + SOURCE => 'template.html.tt' | |
40 | +); | |
41 | + | |
42 | +my $html = CoprStatus::build_html($data, $template); | |
28 | 43 | like($html, qr/SPB Copr Status/m); |
29 | 44 | |
30 | -my $monitor_url = copr_monitor_url("foo", "bar"); | |
45 | +my $monitor_url = CoprStatus::copr_monitor_url("foo", "bar"); | |
31 | 46 | my $test_url = "http://copr.fedoraproject.org/api/coprs/foo/bar/monitor/"; |
32 | 47 | is($monitor_url, $test_url); |
33 | 48 | ... | ... |
-
mentioned in commit 002412274666393573997ca1040009a629f9ce84