source: trunk/src/check_files.m @ 313

Last change on this file since 313 was 306, checked in by gostiaux, 12 years ago

bug if you do not launch uvmat from the uvmat dir corrected

File size: 8.5 KB
Line 
1%'check_files': check the path, modification date and svn version for all the
2%  function in the toolbox UVMAT. Called at the opening of uvmat. Adds the
3%  uvmat path to the Matlab path if needed.
4%----------------------------------------------------------------------
5% function [errormsg,date_str,ver]=check_files
6%
7% OUTPUT:
8% errormsg: error message listing functions whose paths are not in the directory of uvmat.m
9% date_str: date of the most recent modification of a file in the toolbox
10% ver : svn version in case this is a  svn repository
11
12%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
13%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.
14%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
15%     This file is part of the toolbox UVMAT.
16%
17%     UVMAT is free software; you can redistribute it and/or modify
18%     it under the terms of the GNU General Public License as published by
19%     the Free Software Foundation; either version 2 of the License, or
20%     (at your option) any later version.
21%
22%     UVMAT is distributed in the hope that it will be useful,
23%     but WITHOUT ANY WARRANTY; without even the implied warranty of
24%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25%     GNU General Public License (file UVMAT/COPYING.txt) for more details.
26%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
27
28function [errormsg,date_str,svn_info]=check_files
29errormsg={};%default
30date_str='';
31svn_info.rep_rev=[];
32svn_info.cur_rev=[];
33svn_info.status=[];
34list_fct={...
35    'calc_field';...% defines fields (velocity, vort, div...) from civx data and calculate them
36    'cell2tab';... %transform a Matlab cell in a character array suitable for display in a table
37    'check_field_structure';...% check the validity of the field struture representation consistant with the netcdf format
38    'check_files';...
39    'civ';...   %function associated with the interface 'civ.fig' for PIV and spline interpolation
40    'civ.fig';...
41    'civ_3D';... function associated with the interface 'civ_3D.fig' for PIV in volume (in progress)
42    'civ_3D.fig';...
43    'civ_uvmat';...% civ programs, Matlab version (called by civ.m, option Civuvmat)
44    'close_fig';...% function  activated when a figure is closed
45    'copyfields';...% copy fields between two matlab structures
46    'create_grid';...% called by the GUI geometry_calib to create a physical grid
47    'create_grid.fig';...% GUI corresponding to create_grid.m
48    'dataview';...% function for scanning directories in a campaign
49    'dataview.fig';...% GUI corresponding to dataview
50    'delete_object';...%delete a projection object, defined by its index in the Uvmat list or by its graphic handle
51    'editxml';...%display and edit xml files using a xls schema
52    'editxml.fig';...%interface for editxml
53    'find_field_indices';...% group the variables of a nc-formated Matlab structure into 'fields' with common dimensions
54    'geometry_calib';...%performs geometric calibration from a set of reference points
55    'geometry_calib.fig';...%interface for geometry_calib
56    'get_field';...% choose and plot a field from a Netcdf file
57    'get_field.fig';...%interface for get_field
58    'griddata_uvmat';...%make 2D linear interpolation using griddata, with input appropriate for both Matlab 6.5 and 7
59    'hist_update';...%  update of a current global histogram by inclusion of a new field
60    'imadoc2struct';...%convert the image documentation file ImaDoc into a Matlab structure
61    'keyboard_callback';... % function activated when a key is pressed on the keyboard
62    'ListDir';... scan the structure of the directory tree (for dataview.m)
63    'mouse_down';% function activated when the mouse button is pressed on a figure (callback for 'WindowButtonDownFcn')
64    'mouse_motion';...% permanently called by mouse motion over a figure (callback for 'WindowButtonMotionFcn')
65    'mouse_up';... % function to be activated when the mouse button is released (callback for 'WindowButtonUpFcn')
66    'msgbox_uvmat';... associated with GUI msgbox_uvmat.fig to display message boxes, for error, warning or input calls
67    'msgbox_uvmat.fig';...
68    'name2display';...% extracts the root name and field numbers from an input filename
69    'name_generator';...%creates a file name from a root name and indices.
70    'nc2struct';...% transform a netcdf file in a corresponding matlab structure
71    'peaklock';...%
72    'phys_XYZ';...% transform coordiantes from pixels to phys
73    'pivlab';...% PIV program (Civ1), called by civ_uvmat
74    'px_XYZ';...% transform coordiantes from phys to pixels
75    'plot_field';...%displays a vector field and/or scalar or images
76    'plot_object';...%draws a projection object (points, line, plane...)
77    'proj_field';...%project a field on a projection object (plane, line,...)
78    'read_civxdata';...reads civx data from netcdf files
79    'read_imatext';...%read .civ files (obsolete, but can be adapted to other text documentation files)
80    'read_GUI';... %read all parameters set by a GUI as a Matlab structure
81    'read_set_object';...%read the data on the set_object interface
82    'read_xls';...%read excel files containing the list of the experiments
83    'reinit';...% suppress the personal parameter file 'uvmat_perso.mat'
84    'RUN_STLIN';...% combine 2 displacement fields for stereo PIV
85    'series';...% master function for analysis field series, with interface 'series.fig'
86    'series.fig';...% interface for 'series'
87    'set_col_vec';...
88    'set_grid';...% creates a grid for PIV
89    'set_grid.fig';...% interface for set_grid
90    'set_object.m';...%  edit a projection object
91    'set_object.fig';...% interface for set_object
92    'sub_field';...% combine the two input fields,
93    'struct2nc';...% %write fields in netcdf files
94    'uvmat';...% master function for file scanning and visualisation of 2D fields
95    'uvmat.fig';...  %interface for uvmat
96    'update_imadoc';...  %update the ImaDoc xml file
97    'update_obj';... update the object representation graph and its projection field, record it in the uvmat interface
98    'update_waitbar';... update the waitbar display, used for ACTION functions in the GUI 'series'
99    'view_field.m';...% function for visualisation of projected fields'
100    'view_field.fig';...%GUI for view_field
101    'write_plot_param'...%update plotting parameters after plot
102    };
103dir_fct=which('uvmat');% path to uvmat
104[pathuvmat,name,ext]=fileparts(dir_fct);
105
106%% add the uvmat path to matlab if needed
107if isempty(regexp(path,[pathuvmat '(:|\>)'],'once'))
108    addpath(pathuvmat);
109end
110
111
112%% loop on the list of functions in the uvmat package
113
114icount=0;
115datnum=zeros(1,length(list_fct));
116for i=1:length(list_fct)
117    dir_fct=which(list_fct{i});% path to fct
118    if isempty(dir_fct)
119        icount=icount+1;
120        errormsg{icount}=[list_fct{i} ' not found'];% test for function not found
121    else
122        [pth,name,ext]=fileparts(dir_fct);
123        if ~isequal(pathuvmat,pth)&~isequal(fullfile(pathuvmat,'private'),pth)
124            icount=icount+1;
125            errormsg{icount}=[dir_fct ' overrides the package UVMAT'];% bad path for the function
126        end
127        datfile=dir(dir_fct);
128        if isfield(datfile,'datenum')
129            datnum(i)= datfile.datenum;
130        end
131        %        date_str=datfile.date;%string of the date of last modification
132        %        datnum(i)=0;%default
133        %        try
134        %            datnum(i)=datenum(date_str);
135        %        catch
136        %            datnum(i)=0;%in case of error with datenum (e.g. date in french)
137        %        end
138    end
139end
140date_str=datestr(max(datnum));
141
142[status,~]=system('svn --help');
143if status==0
144    [~,result]=system(['svn info ' dir_fct]);
145    t=regexp(result,'R.vision\s:\s(?<rev>\d+)','names');
146    svn_info.cur_rev=str2double(t.rev);
147    [~,result]=system(['svn info -r ''HEAD'' '  dir_fct]);
148    t=regexp(result,'R.vision\s:\s(?<rev>\d+)','names');
149    svn_info.rep_rev=str2double(t.rev);
150    [~,result]=system(['svn status'  dir_fct]);   
151    svn_info.status=result;
152    if svn_info.rep_rev>svn_info.cur_rev
153        errormsg {length(errormsg)+1}=['Repository now at revision ' num2str(svn_info.rep_rev) '. Please type svn update in uvmat folder'];
154    end
155   
156    modifications=regexp(svn_info.status,'M\s[^(\n|\>)]+','match');
157   
158    if ~isempty(modifications)
159        for k=1:length(modifications)
160            errormsg {length(errormsg)+1}=modifications{k};
161        end
162    end
163end
164errormsg=errormsg';
165
Note: See TracBrowser for help on using the repository browser.