DirectoryExists,
DirectorySeparator,
MakeDirectory,
+ MakeDirectoryPath,
DeleteFile,
WorkingDirectory,
PathCanonical,
&SystemClauseType::DirectoryExists => clause_name!("$directory_exists"),
&SystemClauseType::DirectorySeparator => clause_name!("$directory_separator"),
&SystemClauseType::MakeDirectory => clause_name!("$make_directory"),
+ &SystemClauseType::MakeDirectoryPath => clause_name!("$make_directory_path"),
&SystemClauseType::DeleteFile => clause_name!("$delete_file"),
&SystemClauseType::WorkingDirectory => clause_name!("$working_directory"),
&SystemClauseType::PathCanonical => clause_name!("$path_canonical"),
("$directory_exists", 1) => Some(SystemClauseType::DirectoryExists),
("$directory_separator", 1) => Some(SystemClauseType::DirectorySeparator),
("$make_directory", 1) => Some(SystemClauseType::MakeDirectory),
+ ("$make_directory_path", 1) => Some(SystemClauseType::MakeDirectoryPath),
("$delete_file", 1) => Some(SystemClauseType::DeleteFile),
("$working_directory", 2) => Some(SystemClauseType::WorkingDirectory),
("$path_canonical", 2) => Some(SystemClauseType::PathCanonical),
directory_exists/1,
delete_file/1,
make_directory/1,
+ make_directory_path/1,
working_directory/2,
path_canonical/2,
path_segments/2,
list_of_chars(Directory),
'$make_directory'(Directory).
+make_directory_path(Directory) :-
+ list_of_chars(Directory),
+ '$make_directory_path'(Directory).
+
delete_file(File) :-
file_must_exist(File, delete_file/1),
list_of_chars(File),
}
}
}
+ &SystemClauseType::MakeDirectoryPath => {
+ let directory = self.heap_pstr_iter(self[temp_v!(1)]).to_string();
+
+ match fs::create_dir_all(directory) {
+ Ok(_) => {}
+ _ => {
+ self.fail = true;
+ return Ok(());
+ }
+ }
+ }
&SystemClauseType::DeleteFile => {
let file = self.heap_pstr_iter(self[temp_v!(1)]).to_string();