// Create Micro Project Folder Structure.jsfl // execute the script execute(); function execute() { var newSpikeName = prompt("Provide a Spike Name in Camel Case", "MySpikeExampleName"); if(newSpikeName) { var creationComplete = createFolderStructure(newSpikeName); if(creationComplete == null) { alert("There has been a problem creating your new micro project!!"); } else { alert("Your new micro project has been successfully created at : \n" + creationComplete); } } else { alert("please Provide a valid micro project name!!"); return; } } function createFolderStructure(newSpikeName) { var retval = null; var spikesURI = fl.browseForFolderURL('Select the location to create your new micro project at'); if(spikesURI == null || !FLfile.exists(spikesURI)) { alert("You must select a valid folder!!"); return } var spikeNameToCamel = capitaliseFirstLetter(newSpikeName); var newFolderLocation = spikesURI + "/" + spikeNameToCamel; // create the root spike micro project folder if(createTargetFolder(spikesURI, spikeNameToCamel) == null) { alert("Something went wrong creating folder " + spikesURI + "/" + spikeNameToCamel); } // create the spike test folder if(createTargetFolder(newFolderLocation, 'test') == null) { alert("Something went wrong creating folder " + newFolderLocation + "/test"); } // create the spike bin folder if(createTargetFolder(newFolderLocation, 'bin') == null) { alert("Something went wrong creating folder " + newFolderLocation + "/bin"); } // create the spike src folder var srcFolder = createTargetFolder(newFolderLocation, 'src'); if(srcFolder == null) { alert("Something went wrong creating folder " + newFolderLocation + "/src"); } else { // create the spike package structure var projectFolder = createTargetFolder(srcFolder, 'project'); if(projectFolder == null) { alert("Something went wrong creating folder " + srcFolder + "/project"); } else { var projectFolder = createTargetFolder(projectFolder, spikeNameToCamel.toLowerCase()); if(projectFolder == null) { alert("Something went wrong creating folder " + projectFolder + "/" + spikeNameToCamel.toLowerCase()); } else { retval = newFolderLocation; } } } return retval; } /** Create a folder of with th ename 'folderName' at the file UIR specified in 'targetFolderURI' @param targetFolderURI a valid file URI where the new folder should be created @param folderName A String with the name of the target folder to be created @return newFolderLocation String a folderURI to the newly created folder **/ function createTargetFolder(targetFolderURI, folderName) { var newFolderLocation = targetFolderURI + "/" + folderName; if(!FLfile.exists(newFolderLocation)) { fl.trace("create project folder : " + newFolderLocation); FLfile.createFolder(newFolderLocation); } else { fl.trace("The folder " + newFolderLocation + " already exists"); alert("The folder " + newFolderLocation + " already exists"); return newFolderLocation; } if(FLfile.exists(newFolderLocation)) { return newFolderLocation; } return null; } // helper function to capitalise the first letter of a string, pseudo CamelCase enforcement function capitaliseFirstLetter(str_value) { return (str_value.substr(0,1).toUpperCase() + str_value.substr(1)); }