DiffToolConfig.java
- /*
- * Copyright (C) 2018-2021, Andre Bossert <andre.bossert@siemens.com>
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0 which is available at
- * https://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- package org.eclipse.jgit.internal.diffmergetool;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_DIFFTOOL_SECTION;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_DIFF_SECTION;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_CMD;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_GUITOOL;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PATH;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PROMPT;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_TOOL;
- import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_TRUST_EXIT_CODE;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- import org.eclipse.jgit.lib.Config;
- import org.eclipse.jgit.lib.Config.SectionParser;
- import org.eclipse.jgit.lib.internal.BooleanTriState;
- /**
- * Keeps track of difftool related configuration options.
- */
- public class DiffToolConfig {
- /** Key for {@link Config#get(SectionParser)}. */
- public static final Config.SectionParser<DiffToolConfig> KEY = DiffToolConfig::new;
- private final String toolName;
- private final String guiToolName;
- private final boolean prompt;
- private final BooleanTriState trustExitCode;
- private final Map<String, ExternalDiffTool> tools;
- private DiffToolConfig(Config rc) {
- toolName = rc.getString(CONFIG_DIFF_SECTION, null, CONFIG_KEY_TOOL);
- guiToolName = rc.getString(CONFIG_DIFF_SECTION, null,
- CONFIG_KEY_GUITOOL);
- prompt = rc.getBoolean(CONFIG_DIFFTOOL_SECTION, toolName,
- CONFIG_KEY_PROMPT,
- true);
- String trustStr = rc.getString(CONFIG_DIFFTOOL_SECTION, toolName,
- CONFIG_KEY_TRUST_EXIT_CODE);
- if (trustStr != null) {
- trustExitCode = Boolean.parseBoolean(trustStr)
- ? BooleanTriState.TRUE
- : BooleanTriState.FALSE;
- } else {
- trustExitCode = BooleanTriState.UNSET;
- }
- tools = new HashMap<>();
- Set<String> subsections = rc.getSubsections(CONFIG_DIFFTOOL_SECTION);
- for (String name : subsections) {
- String cmd = rc.getString(CONFIG_DIFFTOOL_SECTION, name,
- CONFIG_KEY_CMD);
- String path = rc.getString(CONFIG_DIFFTOOL_SECTION, name,
- CONFIG_KEY_PATH);
- if ((cmd != null) || (path != null)) {
- tools.put(name, new UserDefinedDiffTool(name, path, cmd));
- }
- }
- }
- /**
- * @return the default diff tool name (diff.tool)
- */
- public String getDefaultToolName() {
- return toolName;
- }
- /**
- * @return the default GUI diff tool name (diff.guitool)
- */
- public String getDefaultGuiToolName() {
- return guiToolName;
- }
- /**
- * @return the diff tool "prompt" option (difftool.prompt)
- */
- public boolean isPrompt() {
- return prompt;
- }
- /**
- * @return the diff tool "trust exit code" option (difftool.trustExitCode)
- */
- public boolean isTrustExitCode() {
- return trustExitCode == BooleanTriState.TRUE;
- }
- /**
- * @return the tools map
- */
- public Map<String, ExternalDiffTool> getTools() {
- return tools;
- }
- /**
- * @return the tool names
- */
- public Set<String> getToolNames() {
- return tools.keySet();
- }
- }