DirectorySeparator,
MakeDirectory,
DeleteFile,
+ DeleteDirectory,
WorkingDirectory,
PathCanonical,
FileTime,
&SystemClauseType::DirectorySeparator => clause_name!("$directory_separator"),
&SystemClauseType::MakeDirectory => clause_name!("$make_directory"),
&SystemClauseType::DeleteFile => clause_name!("$delete_file"),
+ &SystemClauseType::DeleteDirectory => clause_name!("$delete_directory"),
&SystemClauseType::WorkingDirectory => clause_name!("$working_directory"),
&SystemClauseType::PathCanonical => clause_name!("$path_canonical"),
&SystemClauseType::FileTime => clause_name!("$file_time"),
("$directory_separator", 1) => Some(SystemClauseType::DirectorySeparator),
("$make_directory", 1) => Some(SystemClauseType::MakeDirectory),
("$delete_file", 1) => Some(SystemClauseType::DeleteFile),
+ ("$delete_directory", 1) => Some(SystemClauseType::DeleteDirectory),
("$working_directory", 2) => Some(SystemClauseType::WorkingDirectory),
("$path_canonical", 2) => Some(SystemClauseType::PathCanonical),
("$file_time", 3) => Some(SystemClauseType::FileTime),
file_exists/1,
directory_exists/1,
delete_file/1,
+ delete_directory/1,
make_directory/1,
working_directory/2,
path_canonical/2,
list_of_chars(File),
'$delete_file'(File).
+delete_directory(Directory) :-
+ directory_must_exist(Directory, delete_directory/1),
+ list_of_chars(Directory),
+ '$delete_directory'(Directory).
+
file_must_exist(File, Context) :-
( file_exists(File) -> true
; throw(error(existence_error(file, File), Context))
).
+directory_must_exist(Directory, Context) :-
+ ( directory_exists(Directory) -> true
+ ; throw(error(existence_error(directory, Directory), Context))
+ ).
+
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dir0 is the current working directory, and the working directory
is changed to Dir.
}
}
}
+ &SystemClauseType::DeleteDirectory => {
+ let directory = self.heap_pstr_iter(self[temp_v!(1)]).to_string();
+
+ match fs::remove_dir(directory) {
+ Ok(_) => {}
+ _ => {
+ self.fail = true;
+ return Ok(());
+ }
+ }
+ }
&SystemClauseType::WorkingDirectory => {
if let Ok(dir) = env::current_dir() {
let current = match dir.to_str() {