package org.jenkinsci.plugins.github;
import hudson.Plugin;
import hudson.init.InitMilestone;
import hudson.init.Initializer;
import org.jenkinsci.plugins.github.config.GitHubPluginConfig;
import org.jenkinsci.plugins.github.migration.Migrator;
import javax.annotation.Nonnull;
import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
/**
* Main entry point for this plugin
* <p>
* Launches migration from old config versions
* Contains helper method to get global plugin configuration - {@link #configuration()}
*
* @author lanwen (Merkushev Kirill)
*/
public class GitHubPlugin extends Plugin {
/**
* Launched before plugin starts
* Adds alias for {@link GitHubPlugin} to simplify resulting xml.
*/
public static void addXStreamAliases() {
Migrator.enableCompatibilityAliases();
Migrator.enableAliases();
}
/**
* Launches migration after all extensions have been augmented as we need to ensure that the credentials plugin
* has been initialized.
* We need ensure that migrator will run after xstream aliases will be added.
* @see <a href="https://issues.jenkins-ci.org/browse/JENKINS-36446>JENKINS-36446</a>
*/
@Initializer(after = InitMilestone.EXTENSIONS_AUGMENTED, before = InitMilestone.JOB_LOADED)
public static void runMigrator() throws Exception {
new Migrator().migrate();
}
@Override
public void start() throws Exception {
addXStreamAliases();
}
/**
* Shortcut method for getting instance of {@link GitHubPluginConfig}.
*
* @return configuration of plugin
*/
@Nonnull
public static GitHubPluginConfig configuration() {
return defaultIfNull(
GitHubPluginConfig.all().get(GitHubPluginConfig.class),
GitHubPluginConfig.EMPTY_CONFIG
);
}
}