Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 3924225

Browse files
committed
Merge branch 'develop' into feature/129-streamelements-connector
2 parents d5c2816 + f1d9d36 commit 3924225

12 files changed

+132
-7
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ import org.codeoverflow.chatoverflow.build.GUIUtility
125125
import org.codeoverflow.chatoverflow.build.deployment.DeploymentUtility
126126
import org.codeoverflow.chatoverflow.build.plugins.{PluginUtility, PluginCreateWizard}
127127

128-
create := new PluginCreateWizard(streams.value.log).createPluginTask(pluginFolderNames.value)
128+
create := new PluginCreateWizard(streams.value.log).createPluginTask(pluginFolderNames.value, PluginCreateWizard.getApiVersion.value)
129129
fetch := new PluginUtility(streams.value.log).fetchPluginsTask(pluginFolderNames.value, pluginBuildFileName.value,
130130
pluginTargetFolderNames.value, apiProjectPath.value)
131131
copy := new PluginUtility(streams.value.log).copyPluginsTask(pluginFolderNames.value, pluginTargetFolderNames.value, scalaMajorVersion)

build/src/main/scala/org/codeoverflow/chatoverflow/build/plugins/PluginCreateWizard.scala

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ import java.io.File
55
import org.codeoverflow.chatoverflow.build.BuildUtils
66
import org.codeoverflow.chatoverflow.build.BuildUtils.withTaskInfo
77
import org.codeoverflow.chatoverflow.build.plugins.PluginCreateWizard.askForInput
8+
import sbt.Keys._
89
import sbt.internal.util.ManagedLogger
10+
import sbt.{Def, Task}
911

1012
import scala.annotation.tailrec
13+
import scala.util.Try
1114

1215
class PluginCreateWizard(logger: ManagedLogger) {
1316

@@ -16,7 +19,7 @@ class PluginCreateWizard(logger: ManagedLogger) {
1619
*
1720
* @param pluginFolderNames All folder names, containing plugin source code. Defined in build.sbt.
1821
*/
19-
def createPluginTask(pluginFolderNames: List[String]): Unit = {
22+
def createPluginTask(pluginFolderNames: List[String], apiVersion: Option[(Int, Int)]): Unit = {
2023
withTaskInfo("CREATE PLUGIN", logger) {
2124

2225
// Plugin folders have to be defined in the build.sbt file first
@@ -66,12 +69,18 @@ class PluginCreateWizard(logger: ManagedLogger) {
6669

6770
// In case we couldn't figure out the api version, maybe because the api project didn't exist, we ask the user for it.
6871
val api = {
69-
val validate = (s: String) => s.nonEmpty && s.forall(_.isDigit) // not empty and must be a valid number
70-
val major = askForInput("Please specify the current major version of the api. Check api/build.sbt for it.",
72+
// not empty and must be a valid number, can be skipped if a default is available
73+
val validate = (s: String) => s.nonEmpty && s.forall(_.isDigit) || apiVersion.isDefined
74+
val major = askForInput("Please specify the major version of the api. " +
75+
(if (apiVersion.isEmpty) "Check api/build.sbt for it."
76+
else s"Default is the current version (${apiVersion.get._1})."),
7177
"Major api version", validate, "Api version must be a number")
72-
val minor = askForInput("Please specify the current minor version of the api. Check api/build.sbt for it.",
78+
val minor = askForInput(s"Please specify the minor version of the api. " +
79+
(if (apiVersion.isEmpty) "Check api/build.sbt for it."
80+
else s"Default is the current version (${apiVersion.get._2})."),
7381
"Minor api version", validate, "Api version must be a number")
74-
(major.toInt, minor.toInt)
82+
83+
(if (major.isEmpty) apiVersion.get._1 else major.toInt, if (minor.isEmpty) apiVersion.get._2 else minor.toInt)
7584
}
7685

7786
// Plugin metadata
@@ -155,4 +164,28 @@ object PluginCreateWizard {
155164
if (input.isEmpty) default
156165
else input
157166
}
167+
168+
/**
169+
* Gets the version of the api, if loaded by sbt.
170+
*
171+
* @return a tuple with major and minor version
172+
*/
173+
def getApiVersion: Def.Initialize[Task[Option[(Int, Int)]]] = Def.task {
174+
val apiVersion: Option[String] = Def.taskDyn {
175+
val apiProject = buildStructure.value.allProjectRefs.find(_.project == "apiProject")
176+
if (apiProject.isDefined)
177+
Def.task[Option[String]] {
178+
Some((apiProject.get / version).value)
179+
}
180+
else
181+
Def.task[Option[String]] {
182+
None // Api hasn't been loaded, probably not fetched
183+
}
184+
}.value
185+
186+
apiVersion.flatMap(ver => Try {
187+
val parts = ver.split("[.-]") // Also split at '-' to get rid of suffixes like -SNAPSHOT
188+
(parts.head.toInt, parts(1).toInt)
189+
}.toOption)
190+
}
158191
}

deployment-files/plugin-dev/build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ apiProjectPath := "api"
4545

4646
import org.codeoverflow.chatoverflow.build.plugins.{PluginCreateWizard, PluginUtility}
4747

48-
create := new PluginCreateWizard(streams.value.log).createPluginTask(pluginFolderNames.value)
48+
create := new PluginCreateWizard(streams.value.log).createPluginTask(pluginFolderNames.value, PluginCreateWizard.getApiVersion.value)
4949
fetch := new PluginUtility(streams.value.log).fetchPluginsTask(pluginFolderNames.value, pluginBuildFileName.value,
5050
pluginTargetFolderNames.value, apiProjectPath.value)
5151
copy := new PluginUtility(streams.value.log).copyPluginsTask(pluginFolderNames.value, pluginTargetFolderNames.value, scalaMajorVersion)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<connector>
2+
<display>Discord</display>
3+
<description>The discord service allows you to connect to a discord text channel to get a list of recent messages, react on new, edited or deleted messages as well as reactions. You can also send messages, files or even fancy embeds.</description>
4+
<wiki>https://github.com/codeoverflow-org/chatoverflow/wiki/Discord</wiki>
5+
<icon48>
6+
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjEuNv1OCegAAANDSURBVGhD7ZhLSFRhGIbVEs1aaGkLCaKgIttaUUFZGxcFFaWVENYighYuilpErSKCii4uu1BCQbmqjdAmWoXdwCAyCqQLBN0gIjSpxp7vzNvB45yZxpn/zDB0Hnj553+/y/k/dY5zpiwmJiYzY2Nj9YlE4jx6jt4XSK/RbbRSx8gNGsxGQwxRFLj2T7RZx5k8FF9Qr6LBGT6wVOtI2UNROfpqTYoNQ6zVsbKHomnol3oUFc7RrmNlTzyAQ+IBik1BBiD3B7qDrqBvsgPg96GLaFBWVpAf3QDkfEEHUCu6hmyIM6gLdaAdqBMdQTco6WXdgpahW8kumSEvmgGI96MmtIdtm9WoPC3klZO3Au1FC9BW9NtrmAbi7gcgZqziZb1KJg31M6m3gTL+JohHMsAAS7nS84Je65Jdw4lqgP1KzRvaTaXfu2TnVJwPgG+fEhuV6gT6nVb7FIg5H2BAaSkQayClQtsA+HWoUtsA+C0olCgGOKs0H+wp+N6bkfUlmqOQB/tuZHxEzbJ98KajUaufCL7zAbYpzQdvvcIe7LsVsthilFDIYn0KBcB/qJQA+M7fxPOV5kNuh2Ie7HsUslizbA/29xUKgB/6AIXvbgC8YZYapfng1RF7q5xRtFohi1Wix4oZnQoFwD9kORPBdzrAZ5bQ+z+xWWg7apLlQ00NfjtaLisFYju9i0zA6pSSPRSlG+CNUjyw7M7Som3WUFNNr1ZW/4fBfiP7FPCdDvCdJfAewFuD14t2oVrZoZA7D9kHux7UINuD/UnqU8B3+ybGH0JLlOqBPQPvILK//wfoEjqGDqPj6Dp6gQbRBvL9nzyvK/COIv9ONR5stwMYxEbQKbRQJVZzWeG0qG6p8quwNrH2J6PhEHc/wHjIs2/Tnmj7T8j9hJ6iEVkZIS/aAaImHqDY/LcDVBVigGyukdMABoXP1CNKrnKdtE9jRj4D7FaPKLnHdeaiV9qnkPMA1No3BidQ6H9IF9B6GNnDTCMK/Y3j5zbAX2iwCO1D9gVWFPKer1nt0+wjndsHL78BCgnnreXAd5NHT1JSAxgc2O6AN3X+0hvA4Nz2CfVcyQ5gcHa7idhjZpus0oQhqvQyJsYtZWV/AM++pI1nOuu3AAAAAElFTkSuQmCC
7+
</icon48>
8+
</connector>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<connector>
2+
<display>File</display>
3+
<description>The file service allows you to perform file operations in the data folder. These operations include reading and writing to the data folder and creating sub-folders.</description>
4+
<wiki>https://github.com/codeoverflow-org/chatoverflow/wiki/File</wiki>
5+
<icon48>
6+
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAQAAAD9CzEMAAAAiUlEQVR4Ae2WsRlBARgDjwkA2NYegBHAPACABQAl5FO9nyp3fa4N5g1jqgw4cP9ijYRkWcpoaKKhk7GJCfffJs7cQzwwoBIbUNdkYwNqF+ESGthHB9T/B64OfCjcHPhQuCfUAQdSDogfpB0QhWXo/BKh8+vbUmIVNr+iCEqVEcfE40f6VDHGvPAAX+KUfElOL5MAAAAASUVORK5CYII=
7+
</icon48>
8+
</connector>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<connector>
2+
<display>Sample</display>
3+
<description>The Sample service is just an expample on how a connector should look like.</description>
4+
<wiki>https://github.com/codeoverflow-org/chatoverflow/wiki/Sample</wiki>
5+
<icon48>
6+
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAQAAAD9CzEMAAABFklEQVR4Ae2WtUEFARAFBykAlzqQDnBvCKcH3D3DIpwQUtzdybgEWyTB98veoX+mgDl9d/wTShhHEMYpwQOqkRfW4DL5yBsLcJXpd4EZXMV5F3BwFXnv/w0kM8Q5EoTnDJGEDtEcIAaPiEalETHahsq2OXCGyjVi9nsDN78+cPvrA3deB8oof3LYGvBNKrOISZ/f7kgWEKM1qKQjZgtQmTMHZlDpMgccVPrNgUtUdry9RJmI2Tzt62w//mrtRVtHTI5R8tlUNLH4a8dOvjewSqO+tJbAOqn60toC2yT5vbQKYcgnZutLaw1sBbS0KgfIB/YGsLQHqLQiH1jHR9QH8/ObwKEpcEg86CQzwkVQgQsGSSbED+Uep2BdxQhMU3gAAAAASUVORK5CYII=
7+
</icon48>
8+
</connector>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<connector>
2+
<display>Serial</display>
3+
<description>The Serial service allows you to communicate with a device that is connected to your PC over a serial port. The most common example is exchanging data with an arduino over USB.</description>
4+
<wiki>https://github.com/codeoverflow-org/chatoverflow/wiki/Serial</wiki>
5+
<icon48>
6+
data:image/png;base64,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
7+
</icon48>
8+
</connector>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<connector>
2+
<display>Tipeeestream</display>
3+
<description>By using the TipeeeStream service you can react on donations, subscriptions and follows in your stream. Just listen to the events provided by the TipeeeStream event input.</description>
4+
<wiki>https://github.com/codeoverflow-org/chatoverflow/wiki/Tipeeestream</wiki>
5+
<icon48>
6+
data:image/jpeg;base64,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
7+
</icon48>
8+
</connector>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<connector>
2+
<display>Twitch Chat</display>
3+
<description>The Twitch chat service allows plugins to connect to a channels chat by using IRC. They can get a List of recent messages, listen for new messages or send messages to the chat</description>
4+
<wiki>https://github.com/codeoverflow-org/chatoverflow/wiki/Twitch-Chat</wiki>
5+
<icon48>
6+
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAwCAYAAABuZUjcAAABEklEQVRoge3X0Q2CMBRA0QthGpzCIXQC9wB3cSXn0Y9ColJoi32PvqT3R4JNOGmaQpvb+cFUDzwxUvtxfTlMsSPz8B44HQlJbYabmm2AbvpdgzdakECv3xstBpcJOLi5ZQIOfj0asad5qZirDQ8pM7PwLjwkqsV2xfZWmjp+kdkZr3DtKly7CteuwrWrcO3MwnN9ZKWeTf8+y5qd8QoXbPDdLB0+AKPvj5Lhq2jgXip8Ew2MJcKDaChvqUShIfwC8p3GffleKFuI1L7QIDfjomiQgYujIT9cBQ154WpoyAdXRUM+ePBBkUWhoax9PBoNbh9P+aiP3dd3YVKSnHExNMjBRdEgAxdHQ364ChrywtXQAG9A2SgNqLuDfQAAAABJRU5ErkJggg==
7+
</icon48>
8+
</connector>

src/main/scala/org/codeoverflow/chatoverflow/ui/web/rest/DTOs.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ object DTOs {
2121

2222
case class Types(pluginTypes: Seq[PluginType], requirementTypes: RequirementTypes, connectorTypes: Seq[String])
2323

24+
case class ConnectorMetadata(found: Boolean, displayName: String, description: String, wikiUrl: String, icon: String)
25+
2426
case class RequirementTypes(input: Seq[String], output: Seq[String], parameter: Seq[String])
2527

2628
case class APIAndSpecificType(interface: String, implementation: String, connector: String, found: Boolean)

0 commit comments

Comments
 (0)