summaryrefslogtreecommitdiffstats
path: root/src/site/plugins_extensions.mkd
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-04-15 08:34:50 -0400
committerJames Moger <james.moger@gitblit.com>2014-04-15 08:34:50 -0400
commit2d73a0350d9745668d65a53cbcc776f933380f6a (patch)
tree5b7e8a6d85480778cc83d352d6c721f9f64b603f /src/site/plugins_extensions.mkd
parent027267ac5fac0f205f5cca3fac0c57ce013bbc3e (diff)
downloadgitblit-2d73a0350d9745668d65a53cbcc776f933380f6a.tar.gz
gitblit-2d73a0350d9745668d65a53cbcc776f933380f6a.zip
Documentation
Diffstat (limited to 'src/site/plugins_extensions.mkd')
-rw-r--r--src/site/plugins_extensions.mkd61
1 files changed, 58 insertions, 3 deletions
diff --git a/src/site/plugins_extensions.mkd b/src/site/plugins_extensions.mkd
index d7469ac6..6e0e52e6 100644
--- a/src/site/plugins_extensions.mkd
+++ b/src/site/plugins_extensions.mkd
@@ -2,20 +2,56 @@
Gitblit offers several extension points for enhancing and customizing it's runtime behavior.
-Each available extension point has a sample implementation in the [gitblit-cookbook-plugin (Maven project)](https://dev.gitblit.com/summary/gitblit-cookbook-plugin.git).
+Each available extension point has a sample implementation in the [gitblit-cookbook-plugin (Maven project)](https://github.com/gitblit/gitblit-cookbook-plugin).
+
+**NOTE:**
+Gitblit does not yet offer a comprehensize dependency injection architecture. This will be addressed in a subsequent release. For now you may access all of Gitblit's core managers through a static singleton app context:
+
+```java
+import com.gitblit.extensions.GitblitPlugin;
+import com.gitblit.servlet.GitblitContext;
+import com.gitblit.manager.IRuntimeManager;
+import com.gitblit.manager.IUserManager;
+import com.gitblit.manager.IAuthenticationManager;
+import com.gitblit.manager.INotificationManager;
+import com.gitblit.manager.IRepositoryManager;
+import com.gitblit.manager.IProjectManager;
+import com.gitblit.manager.IFederationManager;
+import com.gitblit.manager.IPluginManager;
+import com.gitblit.manager.IGitblit;
+
+public class ExamplePlugin extends GitblitPlugin {
+
+ @Override
+ public void start() {
+ IRuntimeManager runtime = GitblitContext.getManager(IRuntimeManager.class);
+ IUserManager users = GitblitContext.getManager(IUserManager.class);
+ IAuthenticationManager auth = GitblitContext.getManager(IAuthenticationManager.class);
+ INotificationManager notifications = GitblitContext.getManager(INotificationManager.class);
+ IRepositoryManager repos = GitblitContext.getManager(IRepositoryManager.class);
+ IProjectManager projects = GitblitContext.getManager(IProjectManager.class);
+ IFederationManager federation = GitblitContext.getManager(IFederationManager.class);
+ IPluginManager plugins = GitblitContext.getManager(IPluginManager.class);
+ IGitblit gitblit = GitblitContext.getManager(IGitblit.class);
+ }
+}
+```
### SSH Dispatch Command
*SINCE 1.5.0*
-You can provide your own custom SSH commands by subclassing the *DispatchCommand* class.
+You can provide your own custom SSH command hierarchies by subclassing the *DispatchCommand* class.
```java
import ro.fortsoft.pf4j.Extension;
-
+import org.kohsuke.args4j.Option;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.gitblit.models.UserModel;
import com.gitblit.transport.ssh.commands.CommandMetaData;
import com.gitblit.transport.ssh.commands.DispatchCommand;
+import com.gitblit.transport.ssh.commands.UsageExample;
@Extension
@CommandMetaData(name = "mycommands", description = "Sample SSH dispatcher")
@@ -31,6 +67,25 @@ public class MyDispatcher extends DispatchCommand {
register(user, SubDispatcher1.class);
register(user, SubDispatcher2.class);
}
+
+ @CommandMetaData(name = "commanda", aliases = { "ca" }, description = "description of command a")
+ @UsageExample(syntax = "${cmd} --myflag", description = "description of commanda with --myflag")
+ public static class CommandA extends SshCommand {
+
+ protected final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Option(name = "--myflag", aliases = { "-m" }, usage = "enable myflag")
+ boolean myflag;
+
+ @Override
+ public void run() throws Failure {
+ if (myflag) {
+ log.info("Run with --myflag");
+ } else {
+ log.info("Run without --myflag");
+ }
+ }
+ }
}
```