mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-25 15:52:06 +01:00
Add a REPL for Smack (smack-repl)
This commit is contained in:
parent
529e1eb058
commit
8f149346a6
6 changed files with 111 additions and 1 deletions
30
repl
Executable file
30
repl
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
while getopts d OPTION "$@"; do
|
||||||
|
case $OPTION in
|
||||||
|
d)
|
||||||
|
set -x
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Compiling and computing classpath (May take a while)"
|
||||||
|
# Sadly even with the --quiet option Gradle (or some component of)
|
||||||
|
# will print the number of warnings/errors to stdout if there are
|
||||||
|
# any. So the result could look like
|
||||||
|
# 52 warnings\n1 warning\n12 warnings\n
|
||||||
|
# /smack/smack-repl/build/classes/main:/smack/smack-repl/build/
|
||||||
|
# resources/main:/smack/smack-tcp/build/libs/smack-tcp-4.2.0-alpha4-SNAPSHOT.jar
|
||||||
|
# So perform a "tail -n1" on the output of gradle
|
||||||
|
declare -r GRADLE_CLASSPATH="$(gradle :smack-repl:printClasspath --quiet |\
|
||||||
|
tail -n1)"
|
||||||
|
echo "Finished, starting REPL"
|
||||||
|
|
||||||
|
java \
|
||||||
|
-Dscala.usejavacp=true \
|
||||||
|
-classpath "${GRADLE_CLASSPATH}" \
|
||||||
|
scala.tools.nsc.MainGenericRunner \
|
||||||
|
-i smack-repl/scala.repl
|
|
@ -22,4 +22,5 @@ include 'smack-core',
|
||||||
'smack-android',
|
'smack-android',
|
||||||
'smack-android-extensions',
|
'smack-android-extensions',
|
||||||
'smack-java7',
|
'smack-java7',
|
||||||
'smack-integration-test'
|
'smack-integration-test',
|
||||||
|
'smack-repl'
|
||||||
|
|
18
smack-repl/build.gradle
Normal file
18
smack-repl/build.gradle
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
ext {
|
||||||
|
scalaVersion = '2.11.7'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile project(':smack-tcp')
|
||||||
|
compile project(':smack-bosh')
|
||||||
|
compile project(':smack-java7')
|
||||||
|
compile project(':smack-resolver-minidns')
|
||||||
|
compile project(':smack-extensions')
|
||||||
|
compile project(':smack-experimental')
|
||||||
|
compile project(':smack-legacy')
|
||||||
|
compile "org.scala-lang:scala-compiler:${scalaVersion}"
|
||||||
|
}
|
||||||
|
|
||||||
|
task printClasspath(dependsOn: assemble) << {
|
||||||
|
println sourceSets.main.runtimeClasspath.asPath
|
||||||
|
}
|
6
smack-repl/scala.repl
Normal file
6
smack-repl/scala.repl
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
org.igniterealtime.smack.repl.SmackRepl.init()
|
||||||
|
|
||||||
|
import org.jivesoftware.smack._
|
||||||
|
import org.jivesoftware.smack.util.TLSUtils
|
||||||
|
import org.jivesoftware.smack.tcp._
|
||||||
|
import org.jxmpp.jid.impl.JidCreate
|
|
@ -0,0 +1,34 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Copyright 2016 Florian Schmaus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.igniterealtime.smack.repl;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.SmackConfiguration;
|
||||||
|
import org.jivesoftware.smack.util.dns.javax.JavaxResolver;
|
||||||
|
|
||||||
|
public class SmackRepl {
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
SmackConfiguration.getVersion();
|
||||||
|
// smack-repl also pulls in smack-resolver-minidns which has higher precedence the smack-resolver-javax but
|
||||||
|
// won't work on Java SE platforms. Therefore explicitly setup JavaxResolver.
|
||||||
|
JavaxResolver.setup();
|
||||||
|
// CHECKSTYLE:OFF
|
||||||
|
System.out.println("Smack REPL");
|
||||||
|
// CHECKSTYLE:ON
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Copyright 2016 Florian Schmaus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A REPL (Read Eval Print Loop) for Smack.
|
||||||
|
*/
|
||||||
|
package org.igniterealtime.smack.repl;
|
Loading…
Reference in a new issue