private static void compile( LanguageService languageService, List<FileDelta> fileDeltas, IProgressMonitor monitor) throws CoreException { for (FileDelta fileDelta : fileDeltas) { Delta delta = fileDelta.getDelta(); if (delta == Delta.ADDED || delta == Delta.CHANGED) { String fileName = fileDelta.getFileName(); // skip ambient declaration files if (fileName.endsWith("d.ts")) { continue; } // compile the file try { compile(fileName, languageService, monitor); } catch (RuntimeException e) { String errorMessage = "Compilation of '" + fileName + "' failed."; Status status = new Status(IStatus.ERROR, TypeScriptPlugin.ID, errorMessage, e); TypeScriptPlugin.getDefault().getLog().log(status); } } } }
private void build(List<FileDelta> fileDeltas, IProgressMonitor monitor) throws CoreException { // HACKHACK: create a new language service for each build since it seems to have some incorrect // caching behavior // fix is: // https://typescript.codeplex.com/SourceControl/changeset/8b1915815ce48b5c17772de750a02a38bb309044 LanguageService languageService = new LanguageService(this.getProject()); try { this.createMarkers(languageService, monitor); // compile the source files if compile-on-save is enabled IPreferenceStore preferenceStore = TypeScriptPlugin.getDefault().getPreferenceStore(); if (preferenceStore.getBoolean(IPreferenceConstants.COMPILER_COMPILE_ON_SAVE)) { compile(languageService, fileDeltas, monitor); } } finally { languageService.dispose(); } }
private void clean(List<FileDelta> fileDeltas, IProgressMonitor monitor) throws CoreException { // clear the problem markers this.getProject().deleteMarkers(MARKER_TYPE, true, IResource.DEPTH_INFINITE); // remove the built files if compile-on-save is enabled IPreferenceStore preferenceStore = TypeScriptPlugin.getDefault().getPreferenceStore(); if (preferenceStore.getBoolean(IPreferenceConstants.COMPILER_COMPILE_ON_SAVE)) { for (FileDelta fileDelta : fileDeltas) { String fileName = fileDelta.getFileName(); ImmutableList<String> builtFiles = getBuiltFiles(fileName); for (String builtFile : builtFiles) { Path path = new Path(builtFile); IFile file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path); file.refreshLocal(IResource.DEPTH_ZERO, monitor); if (file.exists()) { file.delete(false, monitor); } } } } }