-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathBuildMap.java
More file actions
60 lines (52 loc) · 2.45 KB
/
BuildMap.java
File metadata and controls
60 lines (52 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package de.peeeq.wurstio.languageserver.requests;
import config.WurstProjectConfig;
import config.WurstProjectConfigData;
import de.peeeq.wurstio.gui.WurstGuiImpl;
import de.peeeq.wurstio.languageserver.ModelManager;
import de.peeeq.wurstio.languageserver.WFile;
import de.peeeq.wurstio.languageserver.WurstLanguageServer;
import de.peeeq.wurstscript.WLogger;
import de.peeeq.wurstscript.attributes.CompileError;
import de.peeeq.wurstscript.gui.WurstGui;
import org.eclipse.lsp4j.MessageType;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import static de.peeeq.wurstio.languageserver.ProjectConfigBuilder.FILE_NAME;
/**
* Created by peter on 16.05.16.
*/
public class BuildMap extends MapRequest {
public BuildMap(WurstLanguageServer languageServer, WFile workspaceRoot, Optional<String> wc3Path, Optional<File> map,
List<String> compileArgs) {
super(languageServer, map, compileArgs, workspaceRoot, wc3Path, Optional.empty());
}
@Override
public Object execute(ModelManager modelManager) throws IOException {
if (modelManager.hasErrors()) {
throw new RequestFailedException(MessageType.Error, "Fix errors in your code before building a release.\n" + modelManager.getFirstErrorDescription());
}
WurstProjectConfigData projectConfig = WurstProjectConfig.INSTANCE.loadProject(workspaceRoot.getFile().toPath().resolve(FILE_NAME));
if (projectConfig == null) {
throw new RequestFailedException(MessageType.Error, FILE_NAME + " file doesn't exist or is invalid. " +
"Please install your project using grill or the wurst setup tool.");
}
WLogger.info("buildMap " + map + " " + compileArgs);
WurstGui gui = new WurstGuiImpl(workspaceRoot.getFile().getAbsolutePath());
try {
executeBuildMapPipeline(modelManager, gui, projectConfig);
} catch (CompileError e) {
WLogger.info(e);
throw new RequestFailedException(MessageType.Error, "A compilation error occurred when building the map:\n" + e);
} catch (Exception e) {
WLogger.warning("Exception occurred", e);
throw new RequestFailedException(MessageType.Error, "An exception was thrown when building the map:\n" + e);
} finally {
if (gui.getErrorCount() == 0) {
gui.sendFinished();
}
}
return "ok"; // TODO
}
}