Sometimes, we might need to find the latest release folder from a software repository according to the time stamp of the folder property. This could be done by extracting all the time stamps and sort them accordingly. MATLAB provides several function to do this nicely.
function out = GetLatestRelease(in) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % input: % in: the software repository with all release folders % % output: % out: the path of the latest release % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% out = ''; try % all sub folders dirs = dir(in); issub = [dirs(:).isdir]; subs = dirs(issub); % get rid of . and .. subs = subs(3:end); % name with 'release' names = {subs.name}; isrelease = cellfun(@(x)contains(x,'release'),names); subs = subs(isrelease); % order by date Sfield = fieldnames(subs); % find which is the date field idx = find(cellfun('length',regexp(Sfield,'^date$'))==1); % sort by date dates = {subs.date}; [~,ord] = sort(datenum(dates,'dd-mm-yyyy HH:MM:SS')); subs = subs(ord); % get the latest one names = {subs.name}; out = strcat(subs(1).folder,'\',names{end}); % get the path for matlab version, project specific routine dirs = dir(out); issub = [dirs(:).isdir]; subs = dirs(issub); subs = subs(3:end); names = {subs.name}; lnames = cellfun(@(x)lower(x),names,'uniformoutput',false); idx = find(cellfun('length',regexp(lnames,'for_matlab'))==1); out = strcat(out,'\',names{5}); catch error('Cannot get latest release from the folder:\n%s\n',in); endend
No comments :
Post a Comment