private void updateConfig()

in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java [273:342]


    private void updateConfig(String[] args) throws ParseException, IOException {
        Options options = getUpdateConfigOptions();

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = parser.parse(options, args);

        startTimeoutIfDefined(cmd);

        String strRootPath = cmd.getOptionValue(srcRoot.getOpt());
        if (!cmd.hasOption(srcRoot.getOpt())) {
            strRootPath = ".";
        }

        File root = new File(strRootPath);
        if (!root.exists()) {
            LOG.error("The src root \"" + root.getPath() + "\" does not exist.");
            return;
        }

        File confFile = getConfigFile(cmd, root);
        System.out.println("Configuration file '" + confFile.getPath() + "'.");

        String jsonContent = FileUtils.readFileToString(confFile, UTF_8);
        CodeConfiguration codeConfiguration = (CodeConfiguration) new JsonMapper().getObject(jsonContent, CodeConfiguration.class);

        if (cmd.hasOption(skipComplexAnalyses.getOpt())) {
            codeConfiguration.getAnalysis().setSkipDependencies(true);
            codeConfiguration.getAnalysis().setSkipDuplication(true);
            codeConfiguration.getAnalysis().setCacheSourceFiles(false);
        }

        if (cmd.hasOption(setName.getOpt())) {
            String name = cmd.getOptionValue(setName.getOpt());
            if (StringUtils.isNotBlank(name)) {
                codeConfiguration.getMetadata().setName(name);
            }
        }

        if (cmd.hasOption(setDescription.getOpt())) {
            String description = cmd.getOptionValue(setDescription.getOpt());
            if (StringUtils.isNotBlank(description)) {
                codeConfiguration.getMetadata().setDescription(description);
            }
        }

        if (cmd.hasOption(setLogoLink.getOpt())) {
            String logoLink = cmd.getOptionValue(setLogoLink.getOpt());
            if (StringUtils.isNotBlank(logoLink)) {
                codeConfiguration.getMetadata().setLogoLink(logoLink);
            }
        }

        if (cmd.hasOption(setCacheFiles.getOpt())) {
            String cacheFileValue = cmd.getOptionValue(setCacheFiles.getOpt());
            if (StringUtils.isNotBlank(cacheFileValue)) {
                codeConfiguration.getAnalysis().setCacheSourceFiles(cacheFileValue.equalsIgnoreCase("true"));
            }
        }

        if (cmd.hasOption(addLink.getOpt())) {
            String linkData[] = cmd.getOptionValues(addLink.getOpt());
            if (linkData.length >= 1 && StringUtils.isNotBlank(linkData[0])) {
                String href = linkData[0];
                String label = linkData.length >= 1 ? linkData[1] : "";
                codeConfiguration.getMetadata().getLinks().add(new Link(label, href));
            }
        }

        FileUtils.write(confFile, new JsonGenerator().generate(codeConfiguration), UTF_8);
    }