Merge pull request #7 from 30x/XAPID-863

add version#, send apid version# in PluginsInitializedEvent
diff --git a/apid.go b/apid.go
index a7429b5..ea4eb8d 100644
--- a/apid.go
+++ b/apid.go
@@ -57,11 +57,12 @@
 	pluginInitFuncs = append(pluginInitFuncs, plugin)
 }
 
-func InitializePlugins() {
+func InitializePlugins(versionNumber string) {
 	log := Log()
 	log.Debugf("Initializing %d plugins...", len(pluginInitFuncs))
 	pie := PluginsInitializedEvent{
 		Description: "plugins initialized",
+		ApidVersion: versionNumber,
 	}
 	for _, pif := range pluginInitFuncs {
 		pluginData, err := pif(services)
diff --git a/events/events_test.go b/events/events_test.go
index 8c338b6..1bdcd54 100644
--- a/events/events_test.go
+++ b/events/events_test.go
@@ -293,7 +293,7 @@
 		}
 		apid.Events().ListenFunc(apid.SystemEventsSelector, h)
 
-		apid.InitializePlugins()
+		apid.InitializePlugins("")
 	})
 
 	It("shutdown event should be emitted and listened successfully", func(done Done) {
@@ -333,7 +333,7 @@
 		}
 
 
-		apid.InitializePlugins()
+		apid.InitializePlugins("")
 
 		apid.ShutdownPluginsAndWait()
 
@@ -345,6 +345,36 @@
 
 		close(done)
 	})
+
+	It("should be able to read apid version from PluginsInitialized event", func(done Done) {
+		xData := make(map[string]interface{})
+		xData["schemaVersion"] = "1.2.3"
+		p := func(s apid.Services) (pd apid.PluginData, err error) {
+			pd = apid.PluginData{
+				Name:      "test plugin",
+				Version:   "1.0.0",
+				ExtraData: xData,
+			}
+			return
+		}
+		apid.RegisterPlugin(p)
+
+		apidVersion := "dummy_version"
+
+		h := func(event apid.Event) {
+			defer GinkgoRecover()
+
+			if pie, ok := event.(apid.PluginsInitializedEvent); ok {
+
+				apid.Events().Close()
+				Expect(pie.ApidVersion).To(Equal(apidVersion))
+				close(done)
+			}
+		}
+		apid.Events().ListenFunc(apid.SystemEventsSelector, h)
+
+		apid.InitializePlugins(apidVersion)
+	})
 })
 
 func createDummyPlugin(id int) apid.PluginInitFunc{
diff --git a/events_service.go b/events_service.go
index c11b358..f7156a5 100644
--- a/events_service.go
+++ b/events_service.go
@@ -48,7 +48,8 @@
 type PluginsInitializedEvent struct {
 	Description string
 	// using slice member will make the type "PluginsInitializedEvent" uncomparable
-	Plugins []PluginData
+	Plugins     []PluginData
+	ApidVersion string
 }
 
 type PluginData struct {