Skip to content

Commit 36fd522

Browse files
committed
fix(init): 🥅 improve error handling
- replace rmdir with remove_directory wrapper function - improve error handling for late template adoption cases
1 parent 471765d commit 36fd522

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

‎init.m‎

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@
7373
'ignoreWords',[]);
7474
reset_file('.cspell.json',jsonencode(cspell_default,PrettyPrint=true)+"\n");
7575

76-
rmdir('.vscode','s'); % TODO keep cff schema in settings
77-
rmdir('.github/actions','s'); % TODO add printed notification
76+
remove_directory('.vscode'); % TODO keep cff schema in settings
77+
remove_directory('.github/actions');
7878

7979
% Set license details
8080
full_name = [first_name, ' ', last_name];
@@ -93,6 +93,15 @@
9393

9494
end
9595

96+
function remove_directory(dir_name)
97+
[status, msg] = rmdir(dir_name,'s');
98+
if status == 0
99+
warning(['Could not remove directory ', dir_name,': ',msg]);
100+
return;
101+
end
102+
fprintf([dir_name, ' has been removed.\n']);
103+
end
104+
96105
function reset_file(name,lines)
97106
arguments
98107
name char
@@ -103,7 +112,8 @@ function reset_file(name,lines)
103112
[fid, err_msg] = fopen(full_file, 'w');
104113

105114
if fid == -1
106-
error(['Could not open ', name,' for writing: ',err_msg]);
115+
warning(['Could not open ', name,' for writing: ',err_msg]);
116+
return;
107117
end
108118

109119
fprintf(fid, lines);
@@ -115,13 +125,18 @@ function set_license(file_name,year,full_name)
115125
full_file = fullfile(pwd, file_name);
116126

117127
license_text=read_to_char(file_name);
128+
if isempty(license_text)
129+
warning('Empty or absent license file');
130+
return;
131+
end
118132

119133
upd_license_text = regexprep(license_text,'Copyright \(c\) (.*?)\n', ...
120134
['Copyright (c) ',num2str(year),', ', full_name,'\n']);
121135

122136
[fid, err_msg] = fopen(full_file,'w');
123137
if fid == -1
124-
error(['Could not open ', file_name,' for writing: ',err_msg]);
138+
warning(['Could not open ', file_name,' for writing: ',err_msg]);
139+
return;
125140
end
126141
fprintf(fid,'%s',upd_license_text);
127142
fclose(fid);
@@ -148,18 +163,17 @@ function reset_cff(first_name,last_name,project_title)
148163
full_file = fullfile(pwd, file_name);
149164
[fid, err_msg] = fopen(full_file,'r');
150165
if fid == -1
151-
error(['Could not open ', file_name,' for reading: ',err_msg]);
166+
warning(['Could not open ', file_name,' for reading: ',err_msg]);
167+
read_char = '';
168+
return;
152169
end
153170
read_char = fread(fid,'*char')';
154171
fclose(fid);
155172
end
156173

157174
function print_info()
158-
[fid, ~] = fopen('version.txt','r');
159-
version_str=fread(fid,'*char')';
160-
fclose(fid);
161-
162-
fprintf('%s%s',"matlab-repo-init v",version_str);
175+
version_str=read_to_char('version.txt');
176+
fprintf('%s%s\n',"matlab-repo-init ",version_str);
163177
end
164178

165179
function print_logo()

0 commit comments

Comments
 (0)