annotate scripts/pkg/private/get_forge_pkg.m @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 363fb10055df
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30379
diff changeset
3 ## Copyright (C) 2005-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
7 ##
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
8 ## This file is part of Octave.
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
14 ##
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
19 ##
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
25
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
26 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 19833
diff changeset
27 ## @deftypefn {} {[@var{ver}, @var{url}] =} get_forge_pkg (@var{name})
25841
0d4b88086f36 doc: use "Octave Forge" spelling in a few more instances
Mike Miller <mtmiller@octave.org>
parents: 25054
diff changeset
28 ## Try to discover the current version of an Octave Forge package from the web,
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
29 ## using a working internet connection and the urlread function.
12575
d0b799dafede Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents: 12561
diff changeset
30 ## If two output arguments are requested, also return an address from which
d0b799dafede Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents: 12561
diff changeset
31 ## to download the file.
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
32 ## @end deftypefn
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
33
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
34 function [ver, url] = get_forge_pkg (name)
17176
abf384f5d243 maint: Remove unneeded input validation from internal fcns in private/ directories.
Rik <rik@octave.org>
parents: 16994
diff changeset
35
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
36 ## Verify that name is valid.
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
37 if (! (ischar (name) && rows (name) == 1 && ndims (name) == 2))
11472
1740012184f9 Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents: 11104
diff changeset
38 error ("get_forge_pkg: package NAME must be a string");
10959
4f46520e2103 relax check in get_forge_pkg
Jaroslav Hajek <highegg@gmail.com>
parents: 10793
diff changeset
39 elseif (! all (isalnum (name) | name == "-" | name == "." | name == "_"))
22760
c4d80b9d2898 maint: Capitalize variable names appearing in error() messages of m-files.
Rik <rik@octave.org>
parents: 22755
diff changeset
40 error ("get_forge_pkg: invalid package NAME: %s", name);
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
41 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
42
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
43 name = tolower (name);
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
44
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
45 ## Try to download package's index page.
30026
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
46 [html, succ] = urlread (sprintf ("https://packages.octave.org/%s/index.html", ...
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
47 name));
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
48 if (succ)
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
49 ## Remove blanks for simpler matching.
30026
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
50 html(isspace (html)) = [];
21751
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21246
diff changeset
51 ## Good. Let's grep for the version.
12468
46b3883d800c fixed typo in PCRE style RE
Carlo de Falco <kingcrimson@tiscali.it>
parents: 12462
diff changeset
52 pat = "<tdclass=""package_table"">PackageVersion:</td><td>([\\d.]*)</td>";
11032
c9b0a75b02e8 Make all regexp in Octave compatible with both POSIX and PCRE.
Rik <octave@nomad.inbox5.com>
parents: 10959
diff changeset
53 t = regexp (html, pat, "tokens");
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14473
diff changeset
54 if (isempty (t) || isempty (t{1}))
11588
d5bd2766c640 style fixes for warning and error messages in script files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
55 error ("get_forge_pkg: could not read version number from package's page");
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
56 else
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
57 ver = t{1}{1};
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
58 if (nargout > 1)
17336
b81b9d079515 Use '##' for comments which stand alone on a line.
Rik <rik@octave.org>
parents: 17176
diff changeset
59 ## Build download string.
15965
7ad3eea8a3af use packages.octave.org instead of sourceforge in pkg.m
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
60 pkg_file = sprintf ("%s-%s.tar.gz", name, ver);
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24534
diff changeset
61 url = ["https://packages.octave.org/download/" pkg_file];
15965
7ad3eea8a3af use packages.octave.org instead of sourceforge in pkg.m
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
62 ## Verify that the package string exists on the page.
7ad3eea8a3af use packages.octave.org instead of sourceforge in pkg.m
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
63 if (isempty (strfind (html, pkg_file)))
11588
d5bd2766c640 style fixes for warning and error messages in script files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
64 warning ("get_forge_pkg: download URL not verified");
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
65 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
66 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
67 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
68 else
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
69 ## Try get the list of all packages.
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24534
diff changeset
70 [html, succ] = urlread ("https://packages.octave.org/list_packages.php");
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
71 if (! succ)
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
72 error ("get_forge_pkg: could not read URL, please verify internet connection");
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
73 endif
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
74 t = strsplit (html);
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
75 if (any (strcmp (t, name)))
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
76 error ("get_forge_pkg: package NAME exists, but index page not available");
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
77 endif
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
78 ## Try a simplistic method to determine similar names.
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
79 function d = fdist (x)
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30027
diff changeset
80
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
81 len1 = length (name);
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
82 len2 = length (x);
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
83 if (len1 <= len2)
30026
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
84 d = sum (abs (tolower (name(1:len1)) - tolower (x(1:len1)))) ...
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
85 + (len2 - len1)*23;
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
86 else
30026
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
87 d = sum (abs (tolower (name(1:len2)) - tolower (x(1:len2)))) ...
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
88 + (len1 - len2)*23;
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
89 endif
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30027
diff changeset
90
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
91 endfunction
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30027
diff changeset
92
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
93 dist = cellfun ("fdist", t);
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
94 [~, i] = min (dist);
30026
d3298a58049e pkg: Improve similar package name suggestion (bug #61067).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
95 error ("get_forge_pkg: package not found: ""%s"". Did you mean ""%s""?", ...
21246
101489515a70 get_forge_pkg.m: Fix bad nam similarity matching for -forge packages (bug #47102).
Rik <rik@octave.org>
parents: 20852
diff changeset
96 name, t{i});
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
97 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
98
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
99 endfunction