private ReleaseDescriptor setupScm()

in src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java [304:371]


    private ReleaseDescriptor setupScm() throws ScmRepositoryException, NoSuchScmProviderException {
        String scmUrl;
        if (localCheckout) {
            // in the release phase we have to change the checkout URL
            // to do a local checkout instead of going over the network.

            String provider = ScmUrlUtils.getProvider(pubScmUrl);
            String delimiter = ScmUrlUtils.getDelimiter(pubScmUrl);

            String providerPart = "scm:" + provider + delimiter;

            // X TODO: also check the information from releaseDescriptor.getScmRelativePathProjectDirectory()
            // X TODO: in case our toplevel git directory has no pom.
            // X TODO: fix pathname once I understand this.
            scmUrl = providerPart + "file://" + "target/localCheckout";
            logInfo("Performing a LOCAL checkout from " + scmUrl);
        }

        ReleaseDescriptorBuilder descriptorBuilder = new ReleaseDescriptorBuilder();
        descriptorBuilder.setInteractive(settings.isInteractiveMode());

        if (username == null || password == null) {
            for (Server server : settings.getServers()) {
                if (server.getId().equals(serverId)) {
                    SettingsDecryptionRequest decryptionRequest = new DefaultSettingsDecryptionRequest(server);

                    SettingsDecryptionResult decryptionResult = settingsDecrypter.decrypt(decryptionRequest);

                    if (!decryptionResult.getProblems().isEmpty()) {
                        // todo throw exception?
                    }

                    if (username == null) {
                        username = decryptionResult.getServer().getUsername();
                    }

                    if (password == null) {
                        password = decryptionResult.getServer().getPassword();
                    }

                    break;
                }
            }
        }

        descriptorBuilder.setScmPassword(password);
        descriptorBuilder.setScmUsername(username);

        descriptorBuilder.setWorkingDirectory(basedir.getAbsolutePath());
        descriptorBuilder.setLocalCheckout(localCheckout);
        descriptorBuilder.setScmSourceUrl(pubScmUrl);

        if (providerImplementations != null) {
            for (Map.Entry<String, String> providerEntry : providerImplementations.entrySet()) {
                logInfo(
                        "Changing the default '%s' provider implementation to '%s'.",
                        providerEntry.getKey(), providerEntry.getValue());
                scmManager.setScmProviderImplementation(providerEntry.getKey(), providerEntry.getValue());
            }
        }

        ReleaseDescriptor releaseDescriptor = descriptorBuilder.build();
        scmRepository = scmRepositoryConfigurator.getConfiguredRepository(releaseDescriptor, settings);

        scmProvider = scmRepositoryConfigurator.getRepositoryProvider(scmRepository);

        return releaseDescriptor;
    }