Mercurial > octave-nkf
comparison scripts/pkg/private/write_index.m @ 14466:cfb0173fe1ca
maint: Refactor pkg.m and move subfunctions to private/ directory.
* pkg.m: move all sub-functions to private/
* pkg/private/absolute_pathname.m
* pkg/private/build.m
* pkg/private/configure_make.m
* pkg/private/copy_files.m
* pkg/private/create_pkgadddel.m
* pkg/private/describe.m
* pkg/private/dirempty.m
* pkg/private/extract_pkg.m
* pkg/private/finish_installation.m
* pkg/private/fix_depends.m
* pkg/private/fix_version.m
* pkg/private/generate_lookfor_cache.m
* pkg/private/get_description.m
* pkg/private/get_forge_download.m
* pkg/private/get_forge_pkg.m
* pkg/private/getarch.m
* pkg/private/getarchdir.m
* pkg/private/getarchprefix.m
* pkg/private/get_unsatisfied_deps.m
* pkg/private/install.m
* pkg/private/installed_packages.m
* pkg/private/is_architecture_dependent.m
* pkg/private/isautoload.m
* pkg/private/issuperuser.m
* pkg/private/list_forge_packages.m
* pkg/private/load_package_dirs.m
* pkg/private/load_packages.m
* pkg/private/load_packages_and_dependencies.m
* pkg/private/packinfo_copy_file.m
* pkg/private/parse_pkg_idx.m
* pkg/private/prepare_installation.m
* pkg/private/print_package_description.m
* pkg/private/rebuild.m
* pkg/private/repackage.m
* pkg/private/rm_rf.m
* pkg/private/rstrip.m
* pkg/private/save_order.m
* pkg/private/shell.m
* pkg/private/split_by.m
* pkg/private/strip.m
* pkg/private/uninstall.m
* pkg/private/unload_packages.m
* pkg/private/verify_directory.m
* pkg/private/write_index.m
author | Carlo de Falco <kingcrimson@tiscali.it> |
---|---|
date | Thu, 15 Mar 2012 19:41:24 +0100 |
parents | |
children | a46b8b0bd325 |
comparison
equal
deleted
inserted
replaced
14465:16164cb3b713 | 14466:cfb0173fe1ca |
---|---|
1 ## Copyright (C) 2005-2012 S�ren Hauberg | |
2 ## Copyright (C) 2010 VZLU Prague, a.s. | |
3 ## | |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
8 ## the Free Software Foundation; either version 3 of the License, or (at | |
9 ## your option) any later version. | |
10 ## | |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
17 ## along with Octave; see the file COPYING. If not, see | |
18 ## <http://www.gnu.org/licenses/>. | |
19 | |
20 ## -*- texinfo -*- | |
21 ## @deftypefn {Function File} {} write_index (@var{desc}, @var{dir},@ | |
22 ## @var{index_file}, @var{global_install}) | |
23 ## Undocumented internal function. | |
24 ## @end deftypefn | |
25 | |
26 ## Create an INDEX file for a package that doesn't provide one. | |
27 ## 'desc' describes the package. | |
28 ## 'dir' is the 'inst' directory in temporary directory. | |
29 ## 'index_file' is the name (including path) of resulting INDEX file. | |
30 | |
31 function write_index (desc, dir, index_file, global_install) | |
32 ## Get names of functions in dir | |
33 [files, err, msg] = readdir (dir); | |
34 if (err) | |
35 error ("couldn't read directory %s: %s", dir, msg); | |
36 endif | |
37 | |
38 ## Get classes in dir | |
39 class_idx = find (strncmp (files, '@', 1)); | |
40 for k = 1:length (class_idx) | |
41 class_name = files {class_idx (k)}; | |
42 class_dir = fullfile (dir, class_name); | |
43 if (exist (class_dir, "dir")) | |
44 [files2, err, msg] = readdir (class_dir); | |
45 if (err) | |
46 error ("couldn't read directory %s: %s", class_dir, msg); | |
47 endif | |
48 files2 = strcat (class_name, filesep (), files2); | |
49 files = [files; files2]; | |
50 endif | |
51 endfor | |
52 | |
53 ## Check for architecture dependent files. | |
54 tmpdir = getarchdir (desc); | |
55 if (exist (tmpdir, "dir")) | |
56 [files2, err, msg] = readdir (tmpdir); | |
57 if (err) | |
58 error ("couldn't read directory %s: %s", tmpdir, msg); | |
59 endif | |
60 files = [files; files2]; | |
61 endif | |
62 | |
63 functions = {}; | |
64 for i = 1:length (files) | |
65 file = files{i}; | |
66 lf = length (file); | |
67 if (lf > 2 && strcmp (file(end-1:end), ".m")) | |
68 functions{end+1} = file(1:end-2); | |
69 elseif (lf > 4 && strcmp (file(end-3:end), ".oct")) | |
70 functions{end+1} = file(1:end-4); | |
71 endif | |
72 endfor | |
73 | |
74 ## Does desc have a categories field? | |
75 if (! isfield (desc, "categories")) | |
76 error ("the DESCRIPTION file must have a Categories field, when no INDEX file is given"); | |
77 endif | |
78 categories = split_by (desc.categories, ","); | |
79 if (length (categories) < 1) | |
80 error ("the Category field is empty"); | |
81 endif | |
82 | |
83 ## Write INDEX. | |
84 fid = fopen (index_file, "w"); | |
85 if (fid == -1) | |
86 error ("couldn't open %s for writing", index_file); | |
87 endif | |
88 fprintf (fid, "%s >> %s\n", desc.name, desc.title); | |
89 fprintf (fid, "%s\n", categories{1}); | |
90 fprintf (fid, " %s\n", functions{:}); | |
91 fclose (fid); | |
92 endfunction | |
93 |