******************************************************************************** * Description of the Program - * * Utility for checking/handling directory construction/management related to * * brewscheme. * * * * Data Requirements - * * none * * * * System Requirements - * * Active Internet Connection * * * * Program Output - * * void * * * * Lines - * * 121 * * * ******************************************************************************** *! dirfile *! v 0.0.3 *! 04NOV2015 // Drop the program from memory if loaded cap prog drop dirfile // Define the file prog def dirfile // Interpret under Stata version 13 version 13 // Syntax for calling the program syntax , Path(string) [ REBuild ] // Check for file path existence cap confirm new file `"`path'"' // Doesn't exist create it if _rc == 0 { // Make the directory mkdir `"`path'"' // Print message to the console (mostly for debugging) di as res `"The directory `path' was successfully created."' } // End IF Block for non-existent file path // Does exist and user wants to rebuild the directory else if _rc == 602 & "`rebuild'" != "" { // Get all the files in the directory loc dirfiles : dir `"`path'"' files "*", respectcase // Loop over the files in the directory forv i = 1/`: word count `dirfiles'' { // Print message to screen and get user input di as res `"Delete the file `: word `i' of `dirfiles'' from `path' ? (Y/n)"' _request(_del) // If user enters nothing, y, or Y delete the file if inlist(`"`del'"', "y", "Y", "") { // Erase the file from the disk erase `"`path'/`: word `i' of `dirfiles''"' // Success message to console di as res `"Erased the file : `path'/`: word `i' of `dirfiles''"' } // End IF Block for user selected file deletion } // End Loop over files in directory // Check for files in directory again loc dirfiles : dir `"`path'"' files "*", respectcase // Check for files in directory again loc subdirs : dir `"`path'"' dirs "*", respectcase // If the directory is empty if `"`dirfiles'`subdirs'"' == "" { // Ask user if they want to delete the directory di as res `"`path' is empty. Delete the directory too? (Y/n)"' /// _request(_del) // If y, Y, or null delete the directory if inlist(`"`del'"', "y", "Y") { // Remove the directory qui: rmdir `"`path'"' } // End IF Block for directory removal } // End IF Block for directory removal } // End ELSE Block for existing directory with rebuild option // If directory exists but user does not want to rebuild else if _rc == 602 & "`rebuild'" == "" { // Print message to console di as res "Directory exists and rebuild option not specified. No further action" } // End ELSEIF Block for continuance action // Work around for stupid Windoze bug else if _rc == 603 & `"`c(os)'"' == "Windows" { } // End ELSE IF Block for stupid Windows bug // Some other error with the file path else { // Error out with the returned error code err _rc } // End ELSE Block for other error code handling // End of program definition end