Skip to content
Snippets Groups Projects
tcv_get_deploymentinfo.m 1.9 KiB
Newer Older
function info = tcv_get_deploymentinfo(filepath)
    % Reads a deployment info file and extracts relevant details
    % Author: L. Simons
    % Date: 07/03/25
    %
    % Args:
    %   filepath: Path to the text file
    %
    % Returns:
    %   info: Struct containing extracted information
    
    % Initialize output struct
    info = struct();
    try
        filepath=fullfile(fileparts(which(filepath)),'.this-deployment.info');
        info.repository=fileparts(filepath);
            
        % Check if file exists
        if exist(filepath, 'file') ~= 2
            error('File does not exist: %s', filepath);
        end
        
        % Open file for reading
        fid = fopen(filepath, 'r');
        if fid == -1
            error('Could not open file: %s', filepath);
        end
        
        % Read file line by line
        while ~feof(fid)
            line = fgetl(fid);
            if ischar(line)
                tokens = regexp(line, '^(\w+):\s(.+)$', 'tokens');
                if ~isempty(tokens)
                    key = tokens{1}{1};
                    value = strtrim(tokens{1}{2});
                    
                    % Store relevant fields in the struct
                    switch key
                        case 'DEPLOYMENT_DATE'
                            info.deployment_date = value;
                        case 'GIT_TAG'
                            info.git_tag = value;
                        case 'GIT_COMMIT'
                            info.git_commit = value;
                        case 'GIT_TAG_DATE'
                            info.git_tag_date = value;
                        case 'GITLAB_PROJECT_URL'
                            info.gitlab_project_url = value;
                    end
        
        % Close the file
        fclose(fid);
    catch
        warning('Failed to read .deployment at filepath: %s',filepath);