Mercurial > hg > ltpda
diff m-toolbox/classes/+utils/@helper/installExtensionsForDir.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/+utils/@helper/installExtensionsForDir.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,77 @@ +% INSTALLEXTENSIONSFORDIR installs the toolbox extensions found under the +% given directory. +% +% CALL: utils.helper.installExtensionsForDir(dir) +% +% M Hewitson 29-10-10 +% +% $Id: installExtensionsForDir.m,v 1.8 2011/03/25 15:14:42 mauro Exp $ +% +function res = installExtensionsForDir(varargin) + + extdir = varargin{1}; + + if ~ischar(extdir) + error('input a path to a directory of LTPDA extensions'); + end + + fprintf('* installing extensions under %s ...\n', extdir); + + % toolbox path + aopath = fileparts(which('ao')); + parts = regexp(aopath, '@', 'split'); + classpath = parts{1}; + + % for each user class, look for a corresponding directory and copy any + % extension methods in. + % copy <module>/classes/<user_class>/<methods> to the toolbox + userclasses = utils.helper.ltpda_userclasses; + installedClassMethods = false; + for ucl = userclasses + extsdir = fullfile(extdir, 'classes', ucl{1}); + if exist(extsdir, 'dir')==7 + fprintf(' * installing extensions for class %s ...\n', ucl{1}); + files = utils.prog.filescan(extsdir, '.m'); + dstdir = fullfile(classpath, ['@' ucl{1}]); + for kk = 1:numel(files) + f = files{kk}; + [path,name,ext] = fileparts(f); + fprintf(' installing %s -> %s\n', name, ucl{1}); + [success, message, messageid] = copyfile(f, dstdir); + if ~success + fprintf(stderr, 'Failed to copy file %s to %s : %s', f, dstdir, message); + else + installedClassMethods = true; + end + end + end + end + + % Add subdirs to the MATLAB path + addpath(extdir); + % In order to include user-defined classes, we just need to add the <module>/classes folder + addpath(fullfile(extdir, 'classes')); + % In order to include user-defined models, we need to add the <module>/models folder and subfolders + addpath(genpath(fullfile(extdir, 'models'))); + % In order to include user-defined functions, we need to add the <module>/functions folder and subfolders + addpath(genpath(fullfile(extdir, 'functions'))); + % In order to include user-defined tests, we need to add the <module>/tests folder and subfolders + addpath(genpath(fullfile(extdir, 'tests'))); + + % It might be useful to remove the 'CVS' and '.svn' folders, if any + utils.helper.remove_cvs_from_matlabpath(); + utils.helper.remove_svn_from_matlabpath(); + + res = installedClassMethods; + + if installedClassMethods + fprintf('----------------------------------------------------------------\n'); + fprintf(' Additional class methods were installed. These will be \n'); + fprintf(' available next time you run ''clear all'' or ''clear classes''.\n'); + fprintf('----------------------------------------------------------------\n'); + end + + +end + +