std::vector<std::string> collectFirstRunDocs(const FilePath& projectFile) { // docs to return std::vector<std::string> docs; // get the scratch path FilePath scratchPath; Error error = computeScratchPaths(projectFile, &scratchPath, nullptr); if (error) { LOG_ERROR(error); return docs; } // check for first run file FilePath firstRunDocsPath = scratchPath.childPath(kFirstRunDocs); if (firstRunDocsPath.exists()) { Error error = core::readStringVectorFromFile(firstRunDocsPath, &docs); if (error) LOG_ERROR(error); // remove since this is a one-time only thing firstRunDocsPath.remove(); } return docs; }
// IN: String sourcePath, String targetPath Error copyFile(const ::core::json::JsonRpcRequest& request, json::JsonRpcResponse* pResponse) { // read params std::string sourcePath, targetPath; bool overwrite; Error error = json::readParams(request.params, &sourcePath, &targetPath, &overwrite); if (error) return error; FilePath targetFilePath = module_context::resolveAliasedPath(targetPath); // make sure the target path doesn't exist if (targetFilePath.exists()) { if (overwrite) { Error error = targetFilePath.remove(); if (error) { LOG_ERROR(error); return fileExistsError(ERROR_LOCATION); } } else { return fileExistsError(ERROR_LOCATION); } } // compute the source file path FilePath sourceFilePath = module_context::resolveAliasedPath(sourcePath); // copy directories recursively Error copyError ; if (sourceFilePath.isDirectory()) { // create the target directory Error error = targetFilePath.ensureDirectory(); if (error) return error ; // iterate over the source copyError = sourceFilePath.childrenRecursive( boost::bind(copySourceFile, sourceFilePath, targetFilePath, _1, _2)); } else { copyError = sourceFilePath.copy(targetFilePath); } // check quota after copies quotas::checkQuotaStatus(); // return error status return copyError; }
core::Error deleteFile(const FilePath& filePath) { if (session::options().programMode() == kSessionProgramModeDesktop) { Error error = ::core::system::recycle_bin::sendTo(filePath); if (error) { LOG_ERROR(error); return filePath.remove(); } else { return Success(); } } else { return filePath.remove(); } }