function installTemplates(forceCopy) % installTemplates Копирует содержимое папки templates (включая вложенные папки) из уровня выше McuLib.slx в текущую папку % % installTemplates(forceCopy) % % forceCopy — логический параметр (true/false) % Если true, файлы будут перезаписаны. % Если false или не указан, копирование происходит без перезаписи существующих файлов. if nargin < 1 forceCopy = false; end try libDir = fileparts(which('McuLib.slx')); % папка с McuLib.slx parentDir = fileparts(libDir); % уровень выше templatesDir = fullfile(parentDir, 'templates'); % папка templates targetDir = pwd; % текущая папка mcuMask.disp(1, ''); if ~exist(templatesDir, 'dir') mcuMask.disp(1, 'Папка шаблонов %s не найдена.', templatesDir); return; end % Список всех файлов и папок внутри templates (рекурсивно) entries = dir(fullfile(templatesDir, '**', '*')); for k = 1:length(entries) if ~entries(k).isdir % Относительный путь внутри templates relPath = erase(entries(k).folder, [templatesDir filesep]); if startsWith(relPath, filesep) relPath = relPath(2:end); % убрать начальный слеш end srcFile = fullfile(entries(k).folder, entries(k).name); destFolder = fullfile(targetDir, relPath); destFile = fullfile(destFolder, entries(k).name); if ~exist(destFolder, 'dir') mkdir(destFolder); end if forceCopy || ~exist(destFile, 'file') copyfile(srcFile, destFile); mcuMask.disp(0, 'Скопирован файл: %s\n', fullfile(relPath, entries(k).name)); else % mcuMask.disp(0, 'Файл уже существует и не перезаписывается: %s\n', fullfile(relPath, entries(k).name)); end end end mcuMask.disp(0, ['Шаблоны успешно скопированы в ', targetDir]); catch ME mcuMask.disp(0, 'Ошибка при копировании шаблонов: %s', ME.message); end end