line source
+ − % BUILDMODULE builds a new module structure in the location specified by
+ − % the user.
+ − %
+ − % CALL: utils.modules.buildModule(dir, module_name)
+ − %
+ − % INPUTS:
+ − % dir - the directory in which to build the module
+ − % module_name - a name for the new module
+ − %
+ − % Example:
+ − %
+ − % utils.modules.buildModule('~/work', 'myNewModule')
+ − %
+ − %
+ − % The resulting module structure on disk looks like:
+ − %
+ − % module/
+ − % |- classes
+ − % |- functions
+ − % |- jar
+ − % |- models
+ − % |- tests
+ − % |- classes
+ − % |- models
+ − %
+ − %
+ − % M Hewitson 21-01-11
+ − %
+ − % $Id: buildModule.m,v 1.4 2011/03/28 11:26:57 hewitson Exp $
+ − %
+ − function varargout = buildModule(varargin)
+ −
+ − if nargin ~= 2
+ − help(['utils.modules.' mfilename]);
+ − error('incorrect inputs');
+ − end
+ −
+ − % Inputs
+ − mdir = varargin{1};
+ − if ~ischar(mdir)
+ − error('The first input should be a string indicating a directory on disk');
+ − end
+ −
+ − mname = varargin{2};
+ − if ~ischar(mname)
+ − error('The second input should be a string indicating the module name');
+ − end
+ −
+ − % Make module
+ − mpath = fullfile(mdir, mname);
+ − paths = {'classes', 'functions', 'jar', 'models', 'pipelines', 'examples', 'tests', ...
+ − fullfile('tests', 'classes'), fullfile('tests', 'models')};
+ −
+ − % Check if the directory for the new module exists
+ − if isdir(mpath)
+ − r = input(sprintf('A directory exists at the chosen location (%s). \nDo you want to overwrite it? (yes/no) ', mpath), 's');
+ − if ~strcmpi(r, 'yes')
+ − return;
+ − end
+ − end
+ −
+ − % Make module dir
+ − [success,message,messageid] = mkdir(mdir,mname);
+ − if ~success
+ − error(messageid, 'Failed to make module directory. %s', message);
+ − end
+ −
+ − % Make all the sub directories
+ − for kk=1:numel(paths)
+ − p = paths{kk};
+ − [success,message,messageid] = mkdir(mpath, p);
+ − if ~success
+ − error(messageid, 'Failed to make module directory %s.\n %s', fullfile(mpath, p), message);
+ − end
+ − end
+ −
+ − % create README
+ − fd = fopen(fullfile(mpath, 'README.txt'), 'w+');
+ − fprintf(fd, 'LTPDA Module %s\n', mname);
+ − fprintf(fd, '\n');
+ − fprintf(fd, '\n');
+ − fprintf(fd, 'For further details see the following README files:\n');
+ − fprintf(fd, ' classes/README_classes.txt\n');
+ − fprintf(fd, ' functions/README_functions.txt\n');
+ − fprintf(fd, ' jar/README_jar.txt\n');
+ − fprintf(fd, ' models/README_models.txt\n');
+ − fprintf(fd, ' pipelines/README_pipelines.txt\n');
+ − fprintf(fd, ' tests/README_tests.txt\n');
+ − fprintf(fd, ' tests/classes/README_class_tests.txt\n');
+ − fprintf(fd, ' tests/models/README_model_tests.txt\n');
+ − fprintf(fd, '\n');
+ − fprintf(fd, '\n');
+ − % copy in the README files
+ − src = fileparts(which('utils.modules.buildModule'));
+ − installREADME(src, 'README_classes.txt', mpath, 'classes');
+ − installREADME(src, 'README_functions.txt', mpath, 'functions');
+ − installREADME(src, 'README_jar.txt', mpath, 'jar');
+ − installREADME(src, 'README_models.txt', mpath, 'models');
+ − installREADME(src, 'README_pipelines.txt', mpath, 'pipelines');
+ − installREADME(src, 'README_tests.txt', mpath, 'tests');
+ − installREADME(src, 'README_class_tests.txt', mpath, fullfile('tests', 'classes'));
+ − installREADME(src, 'README_model_tests.txt', mpath, fullfile('tests', 'models'));
+ −
+ −
+ − % Write moduleinfo.xml
+ − writeModuleInfoXML(mpath, mname);
+ −
+ − ls(mpath)
+ − fprintf('* Module built successfully at %s\n', mpath);
+ −
+ − end
+ −
+ − function writeModuleInfoXML(mpath, name)
+ −
+ − docNode = com.mathworks.xml.XMLUtils.createDocument('moduleinfo');
+ − docRootNode = docNode.getDocumentElement;
+ − docRootNode.setAttribute('name',name);
+ − docRootNode.setAttribute('version','1.0');
+ −
+ −
+ − % Save the sample XML document.
+ − xmlFileName = fullfile(mpath,'moduleinfo.xml');
+ − xmlwrite(xmlFileName,docNode);
+ −
+ − end
+ −
+ − function installREADME(src, name, mpath, mdir)
+ −
+ − src = fullfile(src, name);
+ − dest = fullfile(mpath, mdir);
+ − [success,message,messageid] = copyfile(src, dest);
+ − if ~success
+ − error(messageid, 'Failed to copy %s to %s', src, dest);
+ − end
+ −
+ − end
+ −
+ − % END