Import upstream version 3.23+git20191010.520aa12, md5 bc2d021686a54364b678191355c31170
Debian Janitor
4 years ago
0 | [ | |
1 | { "name": "Bug", "color": "ff0000", "description": "Bug" }, | |
2 | { "name": "Hacktoberfest", "color": "f2791d", "description": "Good first issue" } | |
3 | ] |
0 | on: | |
1 | issues: | |
2 | types: [labeled] | |
3 | name: Create Default Labels | |
4 | jobs: | |
5 | labels: | |
6 | name: DefaultLabelsActions | |
7 | runs-on: ubuntu-latest | |
8 | steps: | |
9 | - uses: actions/checkout@1.0.0 | |
10 | - uses: lannonbr/issue-label-manager-action@2.0.0 | |
11 | env: | |
12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
0 | adm | |
1 | ahrefs | |
2 | altavista | |
3 | AnnoCPAN | |
4 | aol | |
5 | apache | |
6 | applecoremedia | |
7 | askjeeves | |
8 | Atsushi | |
9 | audrey | |
10 | avantgo | |
11 | baidu | |
12 | bingbot | |
13 | browsex | |
14 | Cebrin | |
15 | dalvik | |
16 | ds | |
17 | dsi | |
18 | elinks | |
19 | ||
20 | Firebird | |
21 | firefox | |
22 | Florian | |
23 | galeon | |
24 | getright | |
25 | golib | |
26 | googleadsbot | |
27 | googleadsense | |
28 | googlebot | |
29 | googlebotimage | |
30 | googlebotnews | |
31 | googlebotvideo | |
32 | googlefavicon | |
33 | googlemobile | |
34 | Heiko | |
35 | icab | |
36 | Iceweasel | |
37 | ie | |
38 | indy | |
39 | infoseek | |
40 | iopener | |
41 | ios | |
42 | ipad | |
43 | iphone | |
44 | ipod | |
45 | ipsagent | |
46 | Kato | |
47 | KHTML | |
48 | khtml | |
49 | kindlefire | |
50 | konqueror | |
51 | Kurihara | |
52 | Latypoff | |
53 | linkchecker | |
54 | linkexchange | |
55 | lotusnotes | |
56 | lycos | |
57 | macosx | |
58 | macppc | |
59 | McGregor | |
60 | merlynkline | |
61 | mj | |
62 | mozilla | |
63 | msn | |
64 | msnmobile | |
65 | msoffice | |
66 | nav | |
67 | navgold | |
68 | neoplanet | |
69 | netfront | |
70 | netscape | |
71 | nutch | |
72 | Oatis | |
73 | obigo | |
74 | Pelzer | |
75 | phplib | |
76 | polaris | |
77 | ps | |
78 | psp | |
79 | pubsub | |
80 | puf | |
81 | Purkis | |
82 | Rask | |
83 | RealPlayer | |
84 | realplayer | |
85 | Rifkin | |
86 | Ritter | |
87 | rubylib | |
88 | seamonkey | |
89 | Smidsrod | |
90 | Sorcinelli | |
91 | specialarchiver | |
92 | staroffice | |
93 | ucbrowser | |
94 | UserAgent | |
95 | userAgent | |
96 | Voelker | |
97 | WAP | |
98 | wap | |
99 | WebKit | |
100 | webkit | |
101 | webos | |
102 | webtv | |
103 | wget | |
104 | WinNT | |
105 | winnt | |
106 | winphone | |
107 | yandex | |
108 | yandexbot | |
109 | yandeximages | |
110 | Yoshiki |
0 | [PerlTidy] | |
1 | select = {bin,lib,t}/**/*.{pl,pm,t,psgi} | |
2 | ignore = xt/**/* | |
3 | ||
4 | ; [PerlCritic] | |
5 | ; select = {bin,lib,t}/**/*.{pl,pm,t,psgi} | |
6 | ; argv = --severity 5 --verbose 11 --exclude=ValuesAndExpressions::ProhibitAccessOfPrivateData | |
7 | ||
8 | [SortLines::Naturally] | |
9 | select = .gitignore | |
10 | select = .stopwords | |
11 | ||
12 | [JSON] | |
13 | select = t/**/*json |
0 | --- | |
1 | dist: trusty | |
2 | addons: | |
3 | apt: | |
4 | packages: | |
5 | - aspell | |
6 | - aspell-en | |
7 | language: perl | |
8 | perl: | |
9 | - blead | |
10 | - dev | |
11 | - "5.30" | |
12 | - "5.28" | |
13 | - "5.26" | |
14 | - "5.24" | |
15 | - "5.22" | |
16 | - "5.20" | |
17 | - "5.18" | |
18 | - "5.16" | |
19 | - "5.14" | |
20 | - "5.12" | |
21 | - "5.10" | |
22 | cache: | |
23 | directories: | |
24 | - "~/perl5" | |
25 | matrix: | |
26 | allow_failures: | |
27 | - env: COVERAGE=1 | |
28 | - perl: blead | |
29 | - perl: dev | |
30 | fast_finish: 1 | |
31 | include: | |
32 | - env: COVERAGE=1 | |
33 | perl: "5.30" | |
34 | env: | |
35 | global: | |
36 | - AUTHOR_TESTING=1 | |
37 | - RELEASE_TESTING=1 | |
38 | before_install: | |
39 | - eval $(curl https://travis-perl.github.io/init) --auto --always-upgrade-modules | |
40 | install: | |
41 | - cpanm --notest App::cpm | |
42 | - cpm install -g --workers $(test-jobs) | |
43 | script: | |
44 | - prove -lr -j$(test-jobs) t | |
45 | notifications: | |
46 | email: | |
47 | on_failure: always | |
48 | on_success: always | |
49 | recipients: | |
50 | - olaf@wundersolutions.com | |
51 | ### __app_cisetup__ | |
52 | # --- | |
53 | # force_threaded_perls: 0 | |
54 | # perl_caching: 1 | |
55 | ||
56 | ### __app_cisetup__ |
0 | ||
1 | # HTTP-BROWSERDETECT CONTRIBUTORS # | |
2 | ||
3 | This is the (likely incomplete) list of people who have helped | |
4 | make this distribution what it is, either via code contributions, | |
5 | patches, bug reports, help with troubleshooting, etc. A huge | |
6 | 'thank you' to all of them. | |
7 | ||
8 | * Alexandr Ciornii | |
9 | * Andrew Moise | |
10 | * Aran Deltac | |
11 | * ben hengst | |
12 | * cho45 | |
13 | * Daniel Stadie | |
14 | * David Ihnen | |
15 | * Douglas Christopher Wilson | |
16 | * Graham Barr | |
17 | * gregor herrmann | |
18 | * Hao Wu | |
19 | * James Waters | |
20 | * joatis | |
21 | * Jon Jensen | |
22 | * ktat | |
23 | * lsaunders | |
24 | * Marco Fontani | |
25 | * Maros Kollar | |
26 | * Mohammad S Anwar | |
27 | * Nicolas Doye | |
28 | * Olaf Alders | |
29 | * Olivier Bilodeau | |
30 | * Paul Findlay | |
31 | * Perlover | |
32 | * Ramanan Balakrishnan | |
33 | * reneeb | |
34 | * Robin Smidsrød | |
35 | * Ronald J Kimball | |
36 | * Surikov Alexey | |
37 | * Thom Blake | |
38 | * Uwe | |
39 | * vti | |
40 | * yeahoffline | |
41 | ||
42 |
0 | 0 | Revision history for Perl extension HTTP::BrowserDetect. |
1 | ||
2 | {{$NEXT}} | |
3 | - Fix bad syntax in SYNOPSIS (reported by John Blumel) | |
1 | 4 | |
2 | 5 | 3.23 2019-04-04 19:26:18Z |
3 | 6 | - Add BingPreview to bot checker (GH#162) (James Waters) |
0 | This is the Perl distribution HTTP-BrowserDetect. | |
1 | ||
2 | Installing HTTP-BrowserDetect is straightforward. | |
3 | ||
4 | ## Installation with cpanm | |
5 | ||
6 | If you have cpanm, you only need one line: | |
7 | ||
8 | % cpanm HTTP::BrowserDetect | |
9 | ||
10 | If it does not have permission to install modules to the current perl, cpanm | |
11 | will automatically set up and install to a local::lib in your home directory. | |
12 | See the local::lib documentation (https://metacpan.org/pod/local::lib) for | |
13 | details on enabling it in your environment. | |
14 | ||
15 | ## Installing with the CPAN shell | |
16 | ||
17 | Alternatively, if your CPAN shell is set up, you should just be able to do: | |
18 | ||
19 | % cpan HTTP::BrowserDetect | |
20 | ||
21 | ## Manual installation | |
22 | ||
23 | As a last resort, you can manually install it. Download the tarball, untar it, | |
24 | install configure prerequisites (see below), then build it: | |
25 | ||
26 | % perl Makefile.PL | |
27 | % make && make test | |
28 | ||
29 | Then install it: | |
30 | ||
31 | % make install | |
32 | ||
33 | On Windows platforms, you should use `dmake` or `nmake`, instead of `make`. | |
34 | ||
35 | If your perl is system-managed, you can create a local::lib in your home | |
36 | directory to install modules to. For details, see the local::lib documentation: | |
37 | https://metacpan.org/pod/local::lib | |
38 | ||
39 | The prerequisites of this distribution will also have to be installed manually. The | |
40 | prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated | |
41 | by running the manual build process described above. | |
42 | ||
43 | ## Configure Prerequisites | |
44 | ||
45 | This distribution requires other modules to be installed before this | |
46 | distribution's installer can be run. They can be found under the | |
47 | "configure_requires" key of META.yml or the | |
48 | "{prereqs}{configure}{requires}" key of META.json. | |
49 | ||
50 | ## Other Prerequisites | |
51 | ||
52 | This distribution may require additional modules to be installed after running | |
53 | Makefile.PL. | |
54 | Look for prerequisites in the following phases: | |
55 | ||
56 | * to run make, PHASE = build | |
57 | * to use the module code itself, PHASE = runtime | |
58 | * to run tests, PHASE = test | |
59 | ||
60 | They can all be found in the "PHASE_requires" key of MYMETA.yml or the | |
61 | "{prereqs}{PHASE}{requires}" key of MYMETA.json. | |
62 | ||
63 | ## Documentation | |
64 | ||
65 | HTTP-BrowserDetect documentation is available as POD. | |
66 | You can run `perldoc` from a shell to read the documentation: | |
67 | ||
68 | % perldoc HTTP::BrowserDetect | |
69 | ||
70 | For more information on installing Perl modules via CPAN, please see: | |
71 | https://www.cpan.org/modules/INSTALL.html |
0 | # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012. | |
1 | CONTRIBUTORS | |
2 | Changes | |
3 | INSTALL | |
4 | LICENSE | |
5 | MANIFEST | |
6 | MANIFEST.SKIP | |
7 | META.json | |
8 | META.yml | |
9 | Makefile.PL | |
10 | README.md | |
11 | TODO | |
12 | cpanfile | |
13 | dist.ini | |
14 | examples/ua.pl | |
15 | lib/HTTP/BrowserDetect.pm | |
16 | perlcriticrc | |
17 | perltidyrc | |
18 | t/00-report-prereqs.dd | |
19 | t/00-report-prereqs.t | |
20 | t/01-detect.t | |
21 | t/03-language.t | |
22 | t/04-random-order.t | |
23 | t/05_robot.t | |
24 | t/99-warnings.t | |
25 | t/add-field.pl | |
26 | t/make-more-useragents.pl | |
27 | t/more-useragents.json | |
28 | t/perlcriticrc | |
29 | t/useragents.json | |
30 | tidyall.ini | |
31 | xt/author/pod-spell.t | |
32 | xt/author/pod-syntax.t | |
33 | xt/author/synopsis.t | |
34 | xt/author/tidyall.t | |
35 | xt/release/cpan-changes.t |
0 | --- | |
1 | abstract: 'Determine Web browser, version, and platform from an HTTP user agent string' | |
2 | author: | |
3 | - 'Lee Semel <lee@semel.net>' | |
4 | - 'Peter Walsham' | |
5 | - 'Olaf Alders <olaf@wundercounter.com> (current maintainer)' | |
6 | build_requires: | |
7 | ExtUtils::MakeMaker: '0' | |
8 | File::Spec: '0' | |
9 | FindBin: '0' | |
10 | Hash::Merge: '0' | |
11 | JSON::PP: '0' | |
12 | List::Util: '1.49' | |
13 | Path::Tiny: '0' | |
14 | Test::FailWarnings: '0' | |
15 | Test::More: '0' | |
16 | Test::Most: '0' | |
17 | Test::NoWarnings: '0' | |
18 | configure_requires: | |
19 | ExtUtils::MakeMaker: '0' | |
20 | dynamic_config: 0 | |
21 | generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010' | |
22 | license: perl | |
23 | meta-spec: | |
24 | url: http://module-build.sourceforge.net/META-spec-v1.4.html | |
25 | version: '1.4' | |
26 | name: HTTP-BrowserDetect | |
27 | no_index: | |
28 | directory: | |
29 | - examples | |
30 | - t | |
31 | - xt | |
32 | requires: | |
33 | perl: '5.006' | |
34 | strict: '0' | |
35 | vars: '0' | |
36 | warnings: '0' | |
37 | resources: | |
38 | bugtracker: https://github.com/oalders/http-browserdetect/issues | |
39 | homepage: https://github.com/oalders/http-browserdetect | |
40 | repository: https://github.com/oalders/http-browserdetect.git | |
41 | version: '3.23' | |
42 | x_Dist_Zilla: | |
43 | perl: | |
44 | version: '5.026001' | |
45 | plugins: | |
46 | - | |
47 | class: Dist::Zilla::Plugin::PromptIfStale | |
48 | config: | |
49 | Dist::Zilla::Plugin::PromptIfStale: | |
50 | check_all_plugins: 0 | |
51 | check_all_prereqs: 0 | |
52 | modules: | |
53 | - Dist::Zilla::PluginBundle::Author::OALDERS | |
54 | phase: build | |
55 | run_under_travis: 0 | |
56 | skip: [] | |
57 | name: '@Author::OALDERS/stale modules, build' | |
58 | version: '0.055' | |
59 | - | |
60 | class: Dist::Zilla::Plugin::PromptIfStale | |
61 | config: | |
62 | Dist::Zilla::Plugin::PromptIfStale: | |
63 | check_all_plugins: 1 | |
64 | check_all_prereqs: 1 | |
65 | modules: [] | |
66 | phase: release | |
67 | run_under_travis: 0 | |
68 | skip: [] | |
69 | name: '@Author::OALDERS/stale modules, release' | |
70 | version: '0.055' | |
71 | - | |
72 | class: Dist::Zilla::Plugin::MAXMIND::TidyAll | |
73 | name: '@Author::OALDERS/MAXMIND::TidyAll' | |
74 | version: '0.83' | |
75 | - | |
76 | class: Dist::Zilla::Plugin::AutoPrereqs | |
77 | name: '@Author::OALDERS/AutoPrereqs' | |
78 | version: '6.012' | |
79 | - | |
80 | class: Dist::Zilla::Plugin::CheckChangesHasContent | |
81 | name: '@Author::OALDERS/CheckChangesHasContent' | |
82 | version: '0.011' | |
83 | - | |
84 | class: Dist::Zilla::Plugin::MakeMaker | |
85 | config: | |
86 | Dist::Zilla::Role::TestRunner: | |
87 | default_jobs: 1 | |
88 | name: '@Author::OALDERS/MakeMaker' | |
89 | version: '6.012' | |
90 | - | |
91 | class: Dist::Zilla::Plugin::CPANFile | |
92 | name: '@Author::OALDERS/CPANFile' | |
93 | version: '6.012' | |
94 | - | |
95 | class: Dist::Zilla::Plugin::ContributorsFile | |
96 | name: '@Author::OALDERS/ContributorsFile' | |
97 | version: 0.3.0 | |
98 | - | |
99 | class: Dist::Zilla::Plugin::MetaJSON | |
100 | name: '@Author::OALDERS/MetaJSON' | |
101 | version: '6.012' | |
102 | - | |
103 | class: Dist::Zilla::Plugin::MetaYAML | |
104 | name: '@Author::OALDERS/MetaYAML' | |
105 | version: '6.012' | |
106 | - | |
107 | class: Dist::Zilla::Plugin::Manifest | |
108 | name: '@Author::OALDERS/Manifest' | |
109 | version: '6.012' | |
110 | - | |
111 | class: Dist::Zilla::Plugin::MetaNoIndex | |
112 | name: '@Author::OALDERS/MetaNoIndex' | |
113 | version: '6.012' | |
114 | - | |
115 | class: Dist::Zilla::Plugin::MetaConfig | |
116 | name: '@Author::OALDERS/MetaConfig' | |
117 | version: '6.012' | |
118 | - | |
119 | class: Dist::Zilla::Plugin::MetaResources | |
120 | name: '@Author::OALDERS/MetaResources' | |
121 | version: '6.012' | |
122 | - | |
123 | class: Dist::Zilla::Plugin::License | |
124 | name: '@Author::OALDERS/License' | |
125 | version: '6.012' | |
126 | - | |
127 | class: Dist::Zilla::Plugin::InstallGuide | |
128 | name: '@Author::OALDERS/InstallGuide' | |
129 | version: '1.200012' | |
130 | - | |
131 | class: Dist::Zilla::Plugin::Prereqs | |
132 | config: | |
133 | Dist::Zilla::Plugin::Prereqs: | |
134 | phase: develop | |
135 | type: requires | |
136 | name: '@Author::OALDERS/Modules for use with tidyall' | |
137 | version: '6.012' | |
138 | - | |
139 | class: Dist::Zilla::Plugin::ExecDir | |
140 | name: '@Author::OALDERS/ExecDir' | |
141 | version: '6.012' | |
142 | - | |
143 | class: Dist::Zilla::Plugin::Test::PodSpelling | |
144 | config: | |
145 | Dist::Zilla::Plugin::Test::PodSpelling: | |
146 | directories: | |
147 | - bin | |
148 | - lib | |
149 | spell_cmd: '' | |
150 | stopwords: | |
151 | - Alders | |
152 | - "Alders'" | |
153 | - AnnoCPAN | |
154 | - Atsushi | |
155 | - Cebrin | |
156 | - Firebird | |
157 | - Florian | |
158 | - Heiko | |
159 | - Iceweasel | |
160 | - KHTML | |
161 | - Kato | |
162 | - Kurihara | |
163 | - Latypoff | |
164 | - McGregor | |
165 | - Oatis | |
166 | - Pelzer | |
167 | - Purkis | |
168 | - Rask | |
169 | - RealPlayer | |
170 | - Rifkin | |
171 | - Ritter | |
172 | - Smidsrod | |
173 | - Sorcinelli | |
174 | - UserAgent | |
175 | - Voelker | |
176 | - WAP | |
177 | - WebKit | |
178 | - WinNT | |
179 | - Yoshiki | |
180 | - adm | |
181 | - ahrefs | |
182 | - altavista | |
183 | - aol | |
184 | - apache | |
185 | - applecoremedia | |
186 | - askjeeves | |
187 | - audrey | |
188 | - avantgo | |
189 | - baidu | |
190 | - bingbot | |
191 | - browsex | |
192 | - dalvik | |
193 | - ds | |
194 | - dsi | |
195 | - elinks | |
196 | ||
197 | - firefox | |
198 | - galeon | |
199 | - getright | |
200 | - golib | |
201 | - googleadsbot | |
202 | - googleadsense | |
203 | - googlebot | |
204 | - googlebotimage | |
205 | - googlebotnews | |
206 | - googlebotvideo | |
207 | - googlefavicon | |
208 | - googlemobile | |
209 | - icab | |
210 | - ie | |
211 | - indy | |
212 | - infoseek | |
213 | - iopener | |
214 | - ios | |
215 | - ipad | |
216 | - iphone | |
217 | - ipod | |
218 | - ipsagent | |
219 | - khtml | |
220 | - kindlefire | |
221 | - konqueror | |
222 | - linkchecker | |
223 | - linkexchange | |
224 | - lotusnotes | |
225 | - lycos | |
226 | - macosx | |
227 | - macppc | |
228 | - merlynkline | |
229 | - mj | |
230 | - mozilla | |
231 | - msn | |
232 | - msnmobile | |
233 | - msoffice | |
234 | - nav | |
235 | - navgold | |
236 | - neoplanet | |
237 | - netfront | |
238 | - netscape | |
239 | - nutch | |
240 | - obigo | |
241 | - phplib | |
242 | - polaris | |
243 | - ps | |
244 | - psp | |
245 | - pubsub | |
246 | - puf | |
247 | - realplayer | |
248 | - rubylib | |
249 | - seamonkey | |
250 | - specialarchiver | |
251 | - staroffice | |
252 | - ucbrowser | |
253 | - userAgent | |
254 | - wap | |
255 | - webkit | |
256 | - webos | |
257 | - webtv | |
258 | - wget | |
259 | - winnt | |
260 | - winphone | |
261 | - yandex | |
262 | - yandexbot | |
263 | - yandeximages | |
264 | wordlist: Pod::Wordlist | |
265 | name: '@Author::OALDERS/Test::PodSpelling' | |
266 | version: '2.007005' | |
267 | - | |
268 | class: Dist::Zilla::Plugin::PodSyntaxTests | |
269 | name: '@Author::OALDERS/PodSyntaxTests' | |
270 | version: '6.012' | |
271 | - | |
272 | class: Dist::Zilla::Plugin::Test::CPAN::Changes | |
273 | config: | |
274 | Dist::Zilla::Plugin::Test::CPAN::Changes: | |
275 | changelog: Changes | |
276 | name: '@Author::OALDERS/Test::CPAN::Changes' | |
277 | version: '0.012' | |
278 | - | |
279 | class: Dist::Zilla::Plugin::TestRelease | |
280 | name: '@Author::OALDERS/TestRelease' | |
281 | version: '6.012' | |
282 | - | |
283 | class: Dist::Zilla::Plugin::Test::ReportPrereqs | |
284 | name: '@Author::OALDERS/Test::ReportPrereqs' | |
285 | version: '0.027' | |
286 | - | |
287 | class: Dist::Zilla::Plugin::Test::Synopsis | |
288 | name: '@Author::OALDERS/Test::Synopsis' | |
289 | version: '2.000007' | |
290 | - | |
291 | class: Dist::Zilla::Plugin::Test::TidyAll | |
292 | name: '@Author::OALDERS/Test::TidyAll' | |
293 | version: '0.04' | |
294 | - | |
295 | class: Dist::Zilla::Plugin::RunExtraTests | |
296 | config: | |
297 | Dist::Zilla::Role::TestRunner: | |
298 | default_jobs: 1 | |
299 | name: '@Author::OALDERS/RunExtraTests' | |
300 | version: '0.029' | |
301 | - | |
302 | class: Dist::Zilla::Plugin::PodWeaver | |
303 | config: | |
304 | Dist::Zilla::Plugin::PodWeaver: | |
305 | finder: | |
306 | - ':InstallModules' | |
307 | - ':ExecFiles' | |
308 | plugins: | |
309 | - | |
310 | class: Pod::Weaver::Plugin::EnsurePod5 | |
311 | name: '@CorePrep/EnsurePod5' | |
312 | version: '4.015' | |
313 | - | |
314 | class: Pod::Weaver::Plugin::H1Nester | |
315 | name: '@CorePrep/H1Nester' | |
316 | version: '4.015' | |
317 | - | |
318 | class: Pod::Weaver::Plugin::SingleEncoding | |
319 | name: '@Default/SingleEncoding' | |
320 | version: '4.015' | |
321 | - | |
322 | class: Pod::Weaver::Section::Name | |
323 | name: '@Default/Name' | |
324 | version: '4.015' | |
325 | - | |
326 | class: Pod::Weaver::Section::Version | |
327 | name: '@Default/Version' | |
328 | version: '4.015' | |
329 | - | |
330 | class: Pod::Weaver::Section::Region | |
331 | name: '@Default/prelude' | |
332 | version: '4.015' | |
333 | - | |
334 | class: Pod::Weaver::Section::Generic | |
335 | name: SYNOPSIS | |
336 | version: '4.015' | |
337 | - | |
338 | class: Pod::Weaver::Section::Generic | |
339 | name: DESCRIPTION | |
340 | version: '4.015' | |
341 | - | |
342 | class: Pod::Weaver::Section::Generic | |
343 | name: OVERVIEW | |
344 | version: '4.015' | |
345 | - | |
346 | class: Pod::Weaver::Section::Collect | |
347 | name: ATTRIBUTES | |
348 | version: '4.015' | |
349 | - | |
350 | class: Pod::Weaver::Section::Collect | |
351 | name: METHODS | |
352 | version: '4.015' | |
353 | - | |
354 | class: Pod::Weaver::Section::Collect | |
355 | name: FUNCTIONS | |
356 | version: '4.015' | |
357 | - | |
358 | class: Pod::Weaver::Section::Leftovers | |
359 | name: '@Default/Leftovers' | |
360 | version: '4.015' | |
361 | - | |
362 | class: Pod::Weaver::Section::Region | |
363 | name: '@Default/postlude' | |
364 | version: '4.015' | |
365 | - | |
366 | class: Pod::Weaver::Section::Authors | |
367 | name: '@Default/Authors' | |
368 | version: '4.015' | |
369 | - | |
370 | class: Pod::Weaver::Section::Legal | |
371 | name: '@Default/Legal' | |
372 | version: '4.015' | |
373 | name: '@Author::OALDERS/PodWeaver' | |
374 | version: '4.008' | |
375 | - | |
376 | class: Dist::Zilla::Plugin::PruneCruft | |
377 | name: '@Author::OALDERS/PruneCruft' | |
378 | version: '6.012' | |
379 | - | |
380 | class: Dist::Zilla::Plugin::CopyFilesFromBuild | |
381 | name: '@Author::OALDERS/CopyFilesFromBuild' | |
382 | version: '0.170880' | |
383 | - | |
384 | class: Dist::Zilla::Plugin::GithubMeta | |
385 | name: '@Author::OALDERS/GithubMeta' | |
386 | version: '0.58' | |
387 | - | |
388 | class: Dist::Zilla::Plugin::Git::GatherDir | |
389 | config: | |
390 | Dist::Zilla::Plugin::GatherDir: | |
391 | exclude_filename: | |
392 | - Install | |
393 | - LICENSE | |
394 | - META.json | |
395 | - Makefile.PL | |
396 | - README.md | |
397 | - cpanfile | |
398 | exclude_match: [] | |
399 | follow_symlinks: 0 | |
400 | include_dotfiles: 0 | |
401 | prefix: '' | |
402 | prune_directory: [] | |
403 | root: . | |
404 | Dist::Zilla::Plugin::Git::GatherDir: | |
405 | include_untracked: 0 | |
406 | name: '@Author::OALDERS/Git::GatherDir' | |
407 | version: '2.046' | |
408 | - | |
409 | class: Dist::Zilla::Plugin::CopyFilesFromRelease | |
410 | config: | |
411 | Dist::Zilla::Plugin::CopyFilesFromRelease: | |
412 | filename: | |
413 | - Install | |
414 | match: [] | |
415 | name: '@Author::OALDERS/CopyFilesFromRelease' | |
416 | version: '0.006' | |
417 | - | |
418 | class: Dist::Zilla::Plugin::Git::Check | |
419 | config: | |
420 | Dist::Zilla::Plugin::Git::Check: | |
421 | untracked_files: die | |
422 | Dist::Zilla::Role::Git::DirtyFiles: | |
423 | allow_dirty: | |
424 | - Changes | |
425 | - Install | |
426 | - LICENSE | |
427 | - META.json | |
428 | - Makefile.PL | |
429 | - README.md | |
430 | - cpanfile | |
431 | - dist.ini | |
432 | allow_dirty_match: [] | |
433 | changelog: Changes | |
434 | Dist::Zilla::Role::Git::Repo: | |
435 | git_version: 2.21.0 | |
436 | repo_root: . | |
437 | name: '@Author::OALDERS/Git::Check' | |
438 | version: '2.046' | |
439 | - | |
440 | class: Dist::Zilla::Plugin::Git::Contributors | |
441 | config: | |
442 | Dist::Zilla::Plugin::Git::Contributors: | |
443 | git_version: 2.21.0 | |
444 | include_authors: 0 | |
445 | include_releaser: 1 | |
446 | order_by: name | |
447 | paths: [] | |
448 | name: '@Author::OALDERS/Git::Contributors' | |
449 | version: '0.035' | |
450 | - | |
451 | class: Dist::Zilla::Plugin::ReadmeAnyFromPod | |
452 | config: | |
453 | Dist::Zilla::Role::FileWatcher: | |
454 | version: '0.006' | |
455 | name: '@Author::OALDERS/ReadmeMdInBuild' | |
456 | version: '0.163250' | |
457 | - | |
458 | class: Dist::Zilla::Plugin::ShareDir | |
459 | name: '@Author::OALDERS/ShareDir' | |
460 | version: '6.012' | |
461 | - | |
462 | class: Dist::Zilla::Plugin::TravisCI::StatusBadge | |
463 | name: '@Author::OALDERS/TravisCI::StatusBadge' | |
464 | version: '0.007' | |
465 | - | |
466 | class: Dist::Zilla::Plugin::CheckIssues | |
467 | name: '@Author::OALDERS/CheckIssues' | |
468 | version: '0.010' | |
469 | - | |
470 | class: Dist::Zilla::Plugin::ConfirmRelease | |
471 | name: '@Author::OALDERS/ConfirmRelease' | |
472 | version: '6.012' | |
473 | - | |
474 | class: Dist::Zilla::Plugin::UploadToCPAN | |
475 | name: '@Author::OALDERS/UploadToCPAN' | |
476 | version: '6.012' | |
477 | - | |
478 | class: Dist::Zilla::Plugin::Prereqs | |
479 | config: | |
480 | Dist::Zilla::Plugin::Prereqs: | |
481 | phase: develop | |
482 | type: recommends | |
483 | name: '@Author::OALDERS/@Git::VersionManager/pluginbundle version' | |
484 | version: '6.012' | |
485 | - | |
486 | class: Dist::Zilla::Plugin::RewriteVersion::Transitional | |
487 | config: | |
488 | Dist::Zilla::Plugin::RewriteVersion: | |
489 | add_tarball_name: 0 | |
490 | finders: | |
491 | - ':ExecFiles' | |
492 | - ':InstallModules' | |
493 | global: 0 | |
494 | skip_version_provider: 0 | |
495 | Dist::Zilla::Plugin::RewriteVersion::Transitional: {} | |
496 | name: '@Author::OALDERS/@Git::VersionManager/RewriteVersion::Transitional' | |
497 | version: '0.009' | |
498 | - | |
499 | class: Dist::Zilla::Plugin::MetaProvides::Update | |
500 | name: '@Author::OALDERS/@Git::VersionManager/MetaProvides::Update' | |
501 | version: '0.007' | |
502 | - | |
503 | class: Dist::Zilla::Plugin::CopyFilesFromRelease | |
504 | config: | |
505 | Dist::Zilla::Plugin::CopyFilesFromRelease: | |
506 | filename: | |
507 | - Changes | |
508 | match: [] | |
509 | name: '@Author::OALDERS/@Git::VersionManager/CopyFilesFromRelease' | |
510 | version: '0.006' | |
511 | - | |
512 | class: Dist::Zilla::Plugin::Git::Commit | |
513 | config: | |
514 | Dist::Zilla::Plugin::Git::Commit: | |
515 | add_files_in: [] | |
516 | commit_msg: v%V%n%n%c | |
517 | Dist::Zilla::Role::Git::DirtyFiles: | |
518 | allow_dirty: | |
519 | - Changes | |
520 | - Install | |
521 | - LICENSE | |
522 | - META.json | |
523 | - Makefile.PL | |
524 | - README.md | |
525 | - cpanfile | |
526 | - dist.ini | |
527 | allow_dirty_match: [] | |
528 | changelog: Changes | |
529 | Dist::Zilla::Role::Git::Repo: | |
530 | git_version: 2.21.0 | |
531 | repo_root: . | |
532 | Dist::Zilla::Role::Git::StringFormatter: | |
533 | time_zone: local | |
534 | name: '@Author::OALDERS/@Git::VersionManager/release snapshot' | |
535 | version: '2.046' | |
536 | - | |
537 | class: Dist::Zilla::Plugin::Git::Tag | |
538 | config: | |
539 | Dist::Zilla::Plugin::Git::Tag: | |
540 | branch: ~ | |
541 | changelog: Changes | |
542 | signed: 0 | |
543 | tag: v3.23 | |
544 | tag_format: v%V | |
545 | tag_message: v%V | |
546 | Dist::Zilla::Role::Git::Repo: | |
547 | git_version: 2.21.0 | |
548 | repo_root: . | |
549 | Dist::Zilla::Role::Git::StringFormatter: | |
550 | time_zone: local | |
551 | name: '@Author::OALDERS/@Git::VersionManager/Git::Tag' | |
552 | version: '2.046' | |
553 | - | |
554 | class: Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional | |
555 | config: | |
556 | Dist::Zilla::Plugin::BumpVersionAfterRelease: | |
557 | finders: | |
558 | - ':ExecFiles' | |
559 | - ':InstallModules' | |
560 | global: 0 | |
561 | munge_makefile_pl: 1 | |
562 | Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional: {} | |
563 | name: '@Author::OALDERS/@Git::VersionManager/BumpVersionAfterRelease::Transitional' | |
564 | version: '0.009' | |
565 | - | |
566 | class: Dist::Zilla::Plugin::NextRelease | |
567 | name: '@Author::OALDERS/@Git::VersionManager/NextRelease' | |
568 | version: '6.012' | |
569 | - | |
570 | class: Dist::Zilla::Plugin::Git::Commit | |
571 | config: | |
572 | Dist::Zilla::Plugin::Git::Commit: | |
573 | add_files_in: [] | |
574 | commit_msg: 'increment $VERSION after %v release' | |
575 | Dist::Zilla::Role::Git::DirtyFiles: | |
576 | allow_dirty: | |
577 | - Build.PL | |
578 | - Changes | |
579 | - Makefile.PL | |
580 | allow_dirty_match: | |
581 | - (?^:^lib/.*\.pm$) | |
582 | changelog: Changes | |
583 | Dist::Zilla::Role::Git::Repo: | |
584 | git_version: 2.21.0 | |
585 | repo_root: . | |
586 | Dist::Zilla::Role::Git::StringFormatter: | |
587 | time_zone: local | |
588 | name: '@Author::OALDERS/@Git::VersionManager/post-release commit' | |
589 | version: '2.046' | |
590 | - | |
591 | class: Dist::Zilla::Plugin::Git::Push | |
592 | config: | |
593 | Dist::Zilla::Plugin::Git::Push: | |
594 | push_to: | |
595 | - origin | |
596 | remotes_must_exist: 1 | |
597 | Dist::Zilla::Role::Git::Repo: | |
598 | git_version: 2.21.0 | |
599 | repo_root: . | |
600 | name: '@Author::OALDERS/Git::Push' | |
601 | version: '2.046' | |
602 | - | |
603 | class: Dist::Zilla::Plugin::Prereqs | |
604 | config: | |
605 | Dist::Zilla::Plugin::Prereqs: | |
606 | phase: develop | |
607 | type: requires | |
608 | name: DevelopRequires | |
609 | version: '6.012' | |
610 | - | |
611 | class: Dist::Zilla::Plugin::StaticInstall | |
612 | config: | |
613 | Dist::Zilla::Plugin::StaticInstall: | |
614 | dry_run: 0 | |
615 | mode: on | |
616 | name: StaticInstall | |
617 | version: '0.012' | |
618 | - | |
619 | class: Dist::Zilla::Plugin::FinderCode | |
620 | name: ':InstallModules' | |
621 | version: '6.012' | |
622 | - | |
623 | class: Dist::Zilla::Plugin::FinderCode | |
624 | name: ':IncModules' | |
625 | version: '6.012' | |
626 | - | |
627 | class: Dist::Zilla::Plugin::FinderCode | |
628 | name: ':TestFiles' | |
629 | version: '6.012' | |
630 | - | |
631 | class: Dist::Zilla::Plugin::FinderCode | |
632 | name: ':ExtraTestFiles' | |
633 | version: '6.012' | |
634 | - | |
635 | class: Dist::Zilla::Plugin::FinderCode | |
636 | name: ':ExecFiles' | |
637 | version: '6.012' | |
638 | - | |
639 | class: Dist::Zilla::Plugin::FinderCode | |
640 | name: ':PerlExecFiles' | |
641 | version: '6.012' | |
642 | - | |
643 | class: Dist::Zilla::Plugin::FinderCode | |
644 | name: ':ShareFiles' | |
645 | version: '6.012' | |
646 | - | |
647 | class: Dist::Zilla::Plugin::FinderCode | |
648 | name: ':MainModule' | |
649 | version: '6.012' | |
650 | - | |
651 | class: Dist::Zilla::Plugin::FinderCode | |
652 | name: ':AllFiles' | |
653 | version: '6.012' | |
654 | - | |
655 | class: Dist::Zilla::Plugin::FinderCode | |
656 | name: ':NoFiles' | |
657 | version: '6.012' | |
658 | zilla: | |
659 | class: Dist::Zilla::Dist::Builder | |
660 | config: | |
661 | is_trial: '0' | |
662 | version: '6.012' | |
663 | x_contributors: | |
664 | - 'Alexandr Ciornii <alexchorny@gmail.com>' | |
665 | - 'Andrew Moise <andrew.moise@gmail.com>' | |
666 | - 'Aran Deltac <bluefeet@gmail.com>' | |
667 | - 'ben hengst <notbenh@cpan.org>' | |
668 | - 'cho45 <cho45@lowreal.net>' | |
669 | - 'Daniel Stadie <daniel.stadie@online.de>' | |
670 | - 'David Ihnen <davidihnen@gmail.com>' | |
671 | - 'Douglas Christopher Wilson <doug@somethingdoug.com>' | |
672 | - 'Graham Barr <gbarr@pobox.com>' | |
673 | - 'gregor herrmann <gregor+github@comodo.priv.at>' | |
674 | - 'Hao Wu <hwu@intellisurvey.com>' | |
675 | - 'James Waters <james@jcwaters.co.uk>' | |
676 | - 'joatis <joatis3@gmail.com>' | |
677 | - 'Jon Jensen <jon@endpoint.com>' | |
678 | - 'ktat <ktat.is@gmail.com>' | |
679 | - 'lsaunders <lsaunders@dev05.backbone.i5invest.com>' | |
680 | - 'Marco Fontani <MFONTANI@cpan.org>' | |
681 | - 'Maros Kollar <maros@k-1.com>' | |
682 | - 'Mohammad S Anwar <mohammad.anwar@yahoo.com>' | |
683 | - 'Nicolas Doye <nic@worldofnic.org>' | |
684 | - 'Olaf Alders <olaf@wundersolutions.com>' | |
685 | - 'Olivier Bilodeau <olivier@bottomlesspit.org>' | |
686 | - 'Paul Findlay <paul@findlay.net.nz>' | |
687 | - 'Perlover <perlover@perlover.com>' | |
688 | - 'Ramanan Balakrishnan <ramanan90@gmail.com>' | |
689 | - 'reneeb <info@perl-services.de>' | |
690 | - 'Robin Smidsrød <robin@smidsrod.no>' | |
691 | - 'Ronald J Kimball <rkimball@pangeamedia.com>' | |
692 | - 'Surikov Alexey <surikov@alexey-pc.kiteventures.local>' | |
693 | - 'Thom Blake <thom@odonnellpdc.com>' | |
694 | - 'Uwe <uwe@uwevoelker.de>' | |
695 | - 'vti <viacheslav.t@gmail.com>' | |
696 | - 'yeahoffline <frank.gasser@gmail.com>' | |
697 | x_generated_by_perl: v5.26.1 | |
698 | x_serialization_backend: 'YAML::Tiny version 1.70' | |
699 | x_static_install: 1 |
33 | 33 | "Test::Most" => 0, |
34 | 34 | "Test::NoWarnings" => 0 |
35 | 35 | }, |
36 | "VERSION" => "3.23", | |
36 | "VERSION" => "3.24", | |
37 | 37 | "test" => { |
38 | 38 | "TESTS" => "t/*.t" |
39 | 39 | } |
0 | 0 | # NAME |
1 | 1 | |
2 | 2 | HTTP::BrowserDetect - Determine Web browser, version, and platform from an HTTP user agent string |
3 | ||
4 | [![Build Status](https://travis-ci.org/oalders/http-browserdetect.png?branch=master)](https://travis-ci.org/oalders/http-browserdetect) | |
3 | 5 | |
4 | 6 | # VERSION |
5 | 7 | |
826 | 828 | |
827 | 829 | [https://github.com/oalders/http-browserdetect/issues](https://github.com/oalders/http-browserdetect/issues) |
828 | 830 | |
829 | - AnnoCPAN: Annotated CPAN documentation | |
830 | ||
831 | [http://annocpan.org/dist/HTTP-BrowserDetect](http://annocpan.org/dist/HTTP-BrowserDetect) | |
832 | ||
833 | 831 | - CPAN Ratings |
834 | 832 | |
835 | 833 | [http://cpanratings.perl.org/d/HTTP-BrowserDetect](http://cpanratings.perl.org/d/HTTP-BrowserDetect) |
4 | 4 | |
5 | 5 | package HTTP::BrowserDetect; |
6 | 6 | |
7 | our $VERSION = '3.23'; | |
7 | our $VERSION = '3.24'; | |
8 | 8 | |
9 | 9 | use vars qw(@ALL_TESTS); |
10 | 10 | |
2969 | 2969 | |
2970 | 2970 | __END__ |
2971 | 2971 | |
2972 | =pod | |
2973 | ||
2974 | =encoding UTF-8 | |
2975 | ||
2976 | =head1 NAME | |
2977 | ||
2978 | HTTP::BrowserDetect - Determine Web browser, version, and platform from an HTTP user agent string | |
2979 | ||
2980 | =head1 VERSION | |
2981 | ||
2982 | version 3.23 | |
2983 | ||
2984 | 2972 | =head1 SYNOPSIS |
2985 | 2973 | |
2986 | use HTTP::BrowserDetect; | |
2974 | use HTTP::BrowserDetect (); | |
2987 | 2975 | |
2988 | 2976 | my $user_agent_string |
2989 | 2977 | = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'; |
2990 | 2978 | my $ua = HTTP::BrowserDetect->new($user_agent_string); |
2991 | 2979 | |
2992 | 2980 | # Print general information |
2993 | print "Browser: $ua->browser_string\n" | |
2994 | if $ua->browser_string; | |
2995 | print "Version: $ua->browser_version$ua->browser_beta\n" | |
2996 | if $ua->browser_version; | |
2997 | print "OS: $ua->os_string\n" | |
2998 | if $ua->os_string; | |
2981 | print 'Browser: ' . $ua->browser_string . "\n" if $ua->browser_string; | |
2982 | print 'Version: ' . $ua->browser_version . $ua->browser_beta . "\n" if $ua->browser_version; | |
2983 | print 'OS: ' . $ua->os_string . "\n" if $ua->os_string; | |
2999 | 2984 | |
3000 | 2985 | # Detect operating system |
3001 | 2986 | if ( $ua->windows ) { |
3784 | 3769 | |
3785 | 3770 | L<HTML::ParseBrowser>. |
3786 | 3771 | |
3787 | =head1 | |
3788 | ||
3789 | 3772 | =head1 SUPPORT |
3790 | 3773 | |
3791 | 3774 | You can find documentation for this module with the perldoc command. |
3803 | 3786 | =item * Reporting Issues |
3804 | 3787 | |
3805 | 3788 | L<https://github.com/oalders/http-browserdetect/issues> |
3806 | ||
3807 | =item * AnnoCPAN: Annotated CPAN documentation | |
3808 | ||
3809 | L<http://annocpan.org/dist/HTTP-BrowserDetect> | |
3810 | 3789 | |
3811 | 3790 | =item * CPAN Ratings |
3812 | 3791 | |
3838 | 3817 | please see L<https://github.com/oalders/http-browserdetect/issues/5> for some |
3839 | 3818 | helpful tips to get you started. |
3840 | 3819 | |
3841 | =head1 AUTHORS | |
3842 | ||
3843 | =over 4 | |
3844 | ||
3845 | =item * | |
3846 | ||
3847 | Lee Semel <lee@semel.net> | |
3848 | ||
3849 | =item * | |
3850 | ||
3851 | Peter Walsham | |
3852 | ||
3853 | =item * | |
3854 | ||
3855 | Olaf Alders <olaf@wundercounter.com> (current maintainer) | |
3856 | ||
3857 | =back | |
3858 | ||
3859 | =head1 COPYRIGHT AND LICENSE | |
3860 | ||
3861 | This software is copyright (c) 2019 by Lee Semel. | |
3862 | ||
3863 | This is free software; you can redistribute it and/or modify it under | |
3864 | the same terms as the Perl 5 programming language system itself. | |
3865 | ||
3866 | 3820 | =cut |
0 | do { my $x = { | |
1 | 'configure' => { | |
2 | 'requires' => { | |
3 | 'ExtUtils::MakeMaker' => '0' | |
4 | }, | |
5 | 'suggests' => { | |
6 | 'JSON::PP' => '2.27300' | |
7 | } | |
8 | }, | |
9 | 'develop' => { | |
10 | 'recommends' => { | |
11 | 'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007' | |
12 | }, | |
13 | 'requires' => { | |
14 | 'Code::TidyAll' => '0.71', | |
15 | 'Code::TidyAll::Plugin::SortLines::Naturally' => '0.000003', | |
16 | 'Code::TidyAll::Plugin::Test::Vars' => '0.04', | |
17 | 'Code::TidyAll::Plugin::UniqueLines' => '0.000003', | |
18 | 'Parallel::ForkManager' => '1.19', | |
19 | 'Perl::Critic' => '1.132', | |
20 | 'Perl::Tidy' => '20180220', | |
21 | 'Pod::Wordlist' => '0', | |
22 | 'Test::CPAN::Changes' => '0.19', | |
23 | 'Test::Code::TidyAll' => '0.50', | |
24 | 'Test::More' => '0.96', | |
25 | 'Test::Pod' => '1.41', | |
26 | 'Test::Spelling' => '0.12', | |
27 | 'Test::Synopsis' => '0', | |
28 | 'Test::Vars' => '0.014' | |
29 | } | |
30 | }, | |
31 | 'runtime' => { | |
32 | 'requires' => { | |
33 | 'perl' => '5.006', | |
34 | 'strict' => '0', | |
35 | 'vars' => '0', | |
36 | 'warnings' => '0' | |
37 | } | |
38 | }, | |
39 | 'test' => { | |
40 | 'recommends' => { | |
41 | 'CPAN::Meta' => '2.120900' | |
42 | }, | |
43 | 'requires' => { | |
44 | 'ExtUtils::MakeMaker' => '0', | |
45 | 'File::Spec' => '0', | |
46 | 'FindBin' => '0', | |
47 | 'Hash::Merge' => '0', | |
48 | 'JSON::PP' => '0', | |
49 | 'List::Util' => '1.49', | |
50 | 'Path::Tiny' => '0', | |
51 | 'Test::FailWarnings' => '0', | |
52 | 'Test::More' => '0', | |
53 | 'Test::Most' => '0', | |
54 | 'Test::NoWarnings' => '0' | |
55 | } | |
56 | } | |
57 | }; | |
58 | $x; | |
59 | }⏎ |
0 | #!perl | |
1 | ||
2 | use strict; | |
3 | use warnings; | |
4 | ||
5 | # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.027 | |
6 | ||
7 | use Test::More tests => 1; | |
8 | ||
9 | use ExtUtils::MakeMaker; | |
10 | use File::Spec; | |
11 | ||
12 | # from $version::LAX | |
13 | my $lax_version_re = | |
14 | qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )? | |
15 | | | |
16 | (?:\.[0-9]+) (?:_[0-9]+)? | |
17 | ) | (?: | |
18 | v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )? | |
19 | | | |
20 | (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)? | |
21 | ) | |
22 | )/x; | |
23 | ||
24 | # hide optional CPAN::Meta modules from prereq scanner | |
25 | # and check if they are available | |
26 | my $cpan_meta = "CPAN::Meta"; | |
27 | my $cpan_meta_pre = "CPAN::Meta::Prereqs"; | |
28 | my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic | |
29 | ||
30 | # Verify requirements? | |
31 | my $DO_VERIFY_PREREQS = 1; | |
32 | ||
33 | sub _max { | |
34 | my $max = shift; | |
35 | $max = ( $_ > $max ) ? $_ : $max for @_; | |
36 | return $max; | |
37 | } | |
38 | ||
39 | sub _merge_prereqs { | |
40 | my ($collector, $prereqs) = @_; | |
41 | ||
42 | # CPAN::Meta::Prereqs object | |
43 | if (ref $collector eq $cpan_meta_pre) { | |
44 | return $collector->with_merged_prereqs( | |
45 | CPAN::Meta::Prereqs->new( $prereqs ) | |
46 | ); | |
47 | } | |
48 | ||
49 | # Raw hashrefs | |
50 | for my $phase ( keys %$prereqs ) { | |
51 | for my $type ( keys %{ $prereqs->{$phase} } ) { | |
52 | for my $module ( keys %{ $prereqs->{$phase}{$type} } ) { | |
53 | $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module}; | |
54 | } | |
55 | } | |
56 | } | |
57 | ||
58 | return $collector; | |
59 | } | |
60 | ||
61 | my @include = qw( | |
62 | ||
63 | ); | |
64 | ||
65 | my @exclude = qw( | |
66 | ||
67 | ); | |
68 | ||
69 | # Add static prereqs to the included modules list | |
70 | my $static_prereqs = do './t/00-report-prereqs.dd'; | |
71 | ||
72 | # Merge all prereqs (either with ::Prereqs or a hashref) | |
73 | my $full_prereqs = _merge_prereqs( | |
74 | ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ), | |
75 | $static_prereqs | |
76 | ); | |
77 | ||
78 | # Add dynamic prereqs to the included modules list (if we can) | |
79 | my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; | |
80 | my $cpan_meta_error; | |
81 | if ( $source && $HAS_CPAN_META | |
82 | && (my $meta = eval { CPAN::Meta->load_file($source) } ) | |
83 | ) { | |
84 | $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs); | |
85 | } | |
86 | else { | |
87 | $cpan_meta_error = $@; # capture error from CPAN::Meta->load_file($source) | |
88 | $source = 'static metadata'; | |
89 | } | |
90 | ||
91 | my @full_reports; | |
92 | my @dep_errors; | |
93 | my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs; | |
94 | ||
95 | # Add static includes into a fake section | |
96 | for my $mod (@include) { | |
97 | $req_hash->{other}{modules}{$mod} = 0; | |
98 | } | |
99 | ||
100 | for my $phase ( qw(configure build test runtime develop other) ) { | |
101 | next unless $req_hash->{$phase}; | |
102 | next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING}); | |
103 | ||
104 | for my $type ( qw(requires recommends suggests conflicts modules) ) { | |
105 | next unless $req_hash->{$phase}{$type}; | |
106 | ||
107 | my $title = ucfirst($phase).' '.ucfirst($type); | |
108 | my @reports = [qw/Module Want Have/]; | |
109 | ||
110 | for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) { | |
111 | next if $mod eq 'perl'; | |
112 | next if grep { $_ eq $mod } @exclude; | |
113 | ||
114 | my $file = $mod; | |
115 | $file =~ s{::}{/}g; | |
116 | $file .= ".pm"; | |
117 | my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC; | |
118 | ||
119 | my $want = $req_hash->{$phase}{$type}{$mod}; | |
120 | $want = "undef" unless defined $want; | |
121 | $want = "any" if !$want && $want == 0; | |
122 | ||
123 | my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required"; | |
124 | ||
125 | if ($prefix) { | |
126 | my $have = MM->parse_version( File::Spec->catfile($prefix, $file) ); | |
127 | $have = "undef" unless defined $have; | |
128 | push @reports, [$mod, $want, $have]; | |
129 | ||
130 | if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) { | |
131 | if ( $have !~ /\A$lax_version_re\z/ ) { | |
132 | push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)"; | |
133 | } | |
134 | elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) { | |
135 | push @dep_errors, "$mod version '$have' is not in required range '$want'"; | |
136 | } | |
137 | } | |
138 | } | |
139 | else { | |
140 | push @reports, [$mod, $want, "missing"]; | |
141 | ||
142 | if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) { | |
143 | push @dep_errors, "$mod is not installed ($req_string)"; | |
144 | } | |
145 | } | |
146 | } | |
147 | ||
148 | if ( @reports ) { | |
149 | push @full_reports, "=== $title ===\n\n"; | |
150 | ||
151 | my $ml = _max( map { length $_->[0] } @reports ); | |
152 | my $wl = _max( map { length $_->[1] } @reports ); | |
153 | my $hl = _max( map { length $_->[2] } @reports ); | |
154 | ||
155 | if ($type eq 'modules') { | |
156 | splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl]; | |
157 | push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports; | |
158 | } | |
159 | else { | |
160 | splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; | |
161 | push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; | |
162 | } | |
163 | ||
164 | push @full_reports, "\n"; | |
165 | } | |
166 | } | |
167 | } | |
168 | ||
169 | if ( @full_reports ) { | |
170 | diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports; | |
171 | } | |
172 | ||
173 | if ( $cpan_meta_error || @dep_errors ) { | |
174 | diag "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n"; | |
175 | } | |
176 | ||
177 | if ( $cpan_meta_error ) { | |
178 | my ($orig_source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; | |
179 | diag "\nCPAN::Meta->load_file('$orig_source') failed with: $cpan_meta_error\n"; | |
180 | } | |
181 | ||
182 | if ( @dep_errors ) { | |
183 | diag join("\n", | |
184 | "\nThe following REQUIRED prerequisites were not satisfied:\n", | |
185 | @dep_errors, | |
186 | "\n" | |
187 | ); | |
188 | } | |
189 | ||
190 | pass; | |
191 | ||
192 | # vim: ts=4 sts=4 sw=4 et: |
0 | use strict; | |
1 | use warnings; | |
2 | use Test::More; | |
3 | ||
4 | # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007005 | |
5 | use Test::Spelling 0.12; | |
6 | use Pod::Wordlist; | |
7 | ||
8 | ||
9 | add_stopwords(<DATA>); | |
10 | all_pod_files_spelling_ok( qw( bin lib ) ); | |
11 | __DATA__ | |
12 | Alders | |
13 | Alders' | |
14 | Alexandr | |
15 | Alexey | |
16 | Andrew | |
17 | AnnoCPAN | |
18 | Anwar | |
19 | Aran | |
20 | Atsushi | |
21 | Balakrishnan | |
22 | Barr | |
23 | Bilodeau | |
24 | Blake | |
25 | BrowserDetect | |
26 | Cebrin | |
27 | Christopher | |
28 | Ciornii | |
29 | Daniel | |
30 | David | |
31 | Deltac | |
32 | Douglas | |
33 | Doye | |
34 | Findlay | |
35 | Firebird | |
36 | Florian | |
37 | Fontani | |
38 | Graham | |
39 | HTTP | |
40 | Hao | |
41 | Heiko | |
42 | Iceweasel | |
43 | Ihnen | |
44 | James | |
45 | Jensen | |
46 | Jon | |
47 | KHTML | |
48 | Kato | |
49 | Kimball | |
50 | Kollar | |
51 | Kurihara | |
52 | Latypoff | |
53 | Lee | |
54 | MFONTANI | |
55 | Marco | |
56 | Maros | |
57 | McGregor | |
58 | Mohammad | |
59 | Moise | |
60 | Nicolas | |
61 | Oatis | |
62 | Olaf | |
63 | Olivier | |
64 | Paul | |
65 | Pelzer | |
66 | Perlover | |
67 | Peter | |
68 | Purkis | |
69 | Ramanan | |
70 | Rask | |
71 | RealPlayer | |
72 | Rifkin | |
73 | Ritter | |
74 | Robin | |
75 | Ronald | |
76 | Semel | |
77 | Smidsrod | |
78 | Smidsrød | |
79 | Sorcinelli | |
80 | Stadie | |
81 | Surikov | |
82 | Thom | |
83 | UserAgent | |
84 | Uwe | |
85 | Voelker | |
86 | WAP | |
87 | Walsham | |
88 | Waters | |
89 | WebKit | |
90 | Wilson | |
91 | WinNT | |
92 | Wu | |
93 | Yoshiki | |
94 | adm | |
95 | ahrefs | |
96 | alexchorny | |
97 | altavista | |
98 | andrew | |
99 | aol | |
100 | apache | |
101 | applecoremedia | |
102 | askjeeves | |
103 | audrey | |
104 | avantgo | |
105 | baidu | |
106 | ben | |
107 | bingbot | |
108 | bluefeet | |
109 | browsex | |
110 | cho45 | |
111 | current | |
112 | dalvik | |
113 | daniel | |
114 | davidihnen | |
115 | doug | |
116 | ds | |
117 | dsi | |
118 | elinks | |
119 | ||
120 | firefox | |
121 | frank | |
122 | galeon | |
123 | gbarr | |
124 | getright | |
125 | golib | |
126 | googleadsbot | |
127 | googleadsense | |
128 | googlebot | |
129 | googlebotimage | |
130 | googlebotnews | |
131 | googlebotvideo | |
132 | googlefavicon | |
133 | googlemobile | |
134 | gregor | |
135 | hengst | |
136 | herrmann | |
137 | hwu | |
138 | icab | |
139 | ie | |
140 | indy | |
141 | info | |
142 | infoseek | |
143 | iopener | |
144 | ios | |
145 | ipad | |
146 | iphone | |
147 | ipod | |
148 | ipsagent | |
149 | james | |
150 | joatis | |
151 | joatis3 | |
152 | jon | |
153 | khtml | |
154 | kindlefire | |
155 | konqueror | |
156 | ktat | |
157 | lee | |
158 | lib | |
159 | linkchecker | |
160 | linkexchange | |
161 | lotusnotes | |
162 | lsaunders | |
163 | lycos | |
164 | macosx | |
165 | macppc | |
166 | maintainer | |
167 | maros | |
168 | merlynkline | |
169 | mj | |
170 | mohammad | |
171 | mozilla | |
172 | msn | |
173 | msnmobile | |
174 | msoffice | |
175 | nav | |
176 | navgold | |
177 | neoplanet | |
178 | netfront | |
179 | netscape | |
180 | nic | |
181 | notbenh | |
182 | nutch | |
183 | obigo | |
184 | olaf | |
185 | olivier | |
186 | paul | |
187 | perlover | |
188 | phplib | |
189 | polaris | |
190 | ps | |
191 | psp | |
192 | pubsub | |
193 | puf | |
194 | ramanan90 | |
195 | realplayer | |
196 | reneeb | |
197 | rkimball | |
198 | robin | |
199 | rubylib | |
200 | seamonkey | |
201 | specialarchiver | |
202 | staroffice | |
203 | surikov | |
204 | thom | |
205 | ucbrowser | |
206 | userAgent | |
207 | uwe | |
208 | viacheslav | |
209 | vti | |
210 | wap | |
211 | webkit | |
212 | webos | |
213 | webtv | |
214 | wget | |
215 | winnt | |
216 | winphone | |
217 | yandex | |
218 | yandexbot | |
219 | yandeximages | |
220 | yeahoffline |
0 | #!perl | |
1 | # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. | |
2 | use strict; use warnings; | |
3 | use Test::More; | |
4 | use Test::Pod 1.41; | |
5 | ||
6 | all_pod_files_ok(); |
0 | # This file was automatically generated by Dist::Zilla::Plugin::Test::TidyAll v$VERSION | |
1 | ||
2 | use Test::More 0.88; | |
3 | use Test::Code::TidyAll 0.24; | |
4 | ||
5 | tidyall_ok( | |
6 | verbose => ( exists $ENV{TEST_TIDYALL_VERBOSE} ? $ENV{TEST_TIDYALL_VERBOSE} : 0 ), | |
7 | jobs => ( exists $ENV{TEST_TIDYALL_JOBS} ? $ENV{TEST_TIDYALL_JOBS} : 1 ), | |
8 | ); | |
9 | ||
10 | done_testing; |