alexarchambault on 1.6.3
alexarchambault on master
1.6.3 (compare)
lihaoyi on gh-pages
5ad9ae5538f23cab92ccd8c6b1617d8… (compare)
alexarchambault on master
Partly revert 84d48542 (#923) … (compare)
predef.sc
file.
I have a script that works or not depending how it is called and where it lives. It isn't trying to be cute abount the directory it is in. ~/scripts/update_rfids.sc works fine. If I save it as /tmp/.tballard/scripts/update_rfids.sc and am in that directory, ./update_rfids.sc
succeeds, but /tmp/.tballard/scripts/update_rfids.sc
fails. Here's the error:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at ammonite.util.Name.<init>(Model.scala:50)
at ammonite.interp.AmmonitePlugin$.$anonfun$apply$10(AmmonitePlugin.scala:198)
at scala.collection.ArrayOps$.map$extension(ArrayOps.scala:924)
at ammonite.interp.AmmonitePlugin$.$anonfun$apply$9(AmmonitePlugin.scala:198)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at ammonite.interp.AmmonitePlugin$.apply(AmmonitePlugin.scala:164)
at ammonite.interp.AmmonitePlugin$$anon$1$$anon$2.apply(AmmonitePlugin.scala:36)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:452)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:397)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1506)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1490)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1482)
I can provide more stack if it helps.
case class Name(raw: String){
assert(
NameTransformer.decode(raw) == raw,
"Name() must be created with un-encoded text"
)
assert(raw.charAt(0) != '`', "Cannot create already-backticked identifiers")
override def toString = s"Name($backticked)"
def encoded = NameTransformer.encode(raw)
def backticked = Name.backtickWrap(raw)
}
Looking at the ammonite documentation for the new @arg(doc = "This explains what the function does")
feature it says that by adding it to a function the user message:
| -i <int>
| -s <str>
is transformed to:
| -i <int>
| -s <str>
That appears to be accurate, but doesn't sound like the result one would hope for;-)
Hey, everyone. In my environment I'm getting a method not found error from protobuf: java.lang.NoSuchMethodError: com.google.protobuf.descriptor.FileDescriptorProto$.parseFrom(
. When I checked the location of the class, it's being loaded from the amm binary. I think it's due to a conflict between an older protobuf library bundled with ammonite and the protobuf that my runtime libraries are depending on.
@ import com.google.protobuf.descriptor.FileDescriptorProto
import com.google.protobuf.descriptor.FileDescriptorProto
@ val klass = classOf[FileDescriptorProto]
klass: Class[FileDescriptorProto] = class com.google.protobuf.descriptor.FileDescriptorProto
@ klass.getResource('/' + klass.getName().replace('.', '/') + ".class")
res5: java.net.URL = jar:file:/usr/local/bin/amm!/com/google/protobuf/descriptor/FileDescriptorProto.class
I think this issue might be related (com-lihaoyi/Ammonite#1177), however when I try the suggested --thin
flag I get errors for missing sun.reflect dependencies java.lang.NoClassDefFoundError: sun/reflect/ConstructorAccessorImpl
mill -i ...
? For example, I've noticed that I need to pass -i
to mill -i main.run
in order for a (cats-effect) readLine
to actually work. Without the -i
it just hangs when it gets to readLine
. I'm wondering if anyone has had the same issue with ammonite?
@lefou ok, thanks. It is odd then that Ammonite seems to have trouble running things like amm Example.sc
where Example.sc
contains:
//Example.sc
import $ivy.`org.typelevel::cats-effect:3.2.5`
import cats.effect.unsafe.implicits._
import cats.effect.IO
val run = for {
_ <- IO.println("Hello")
_ <- IO.println("World")
input <- IO.readLine
_ <- IO.println(s"echo $input")
} yield ()
run.unsafeRunSync()
For me, it only prints "Hello" and then hangs.
amm Example.sc
that does not seem to work properly
cs complete com.lihaoyi:ammonite-interp_2.12.14:
Heya, I'm struggling a bit with multiple ammonite consoles running concurrently, attempting to concurrently modify the fs cache:
java.nio.file.FileAlreadyExistsException: /home/.../.ammonite/rt-11.0.11.jar
at java.base/sun.nio.fs.UnixCopyFile.copy(UnixCopyFile.java:573)
at ...
at io.github.retronym.java9rtexport.Export.rtAt(Export.java:105)
at ammonite.util.Classpath$.classpath(Classpath.scala:76)
at ammonite.compiler.CompilerLifecycleManager.init(CompilerLifecycleManager.scala:92)
at
Is this not supported?
object myplugin extends Plugin {
...
}
context.registerPlugin(myplugin)
@fizzy33 Idk if I get it, but I'm a bit curious, why not use import $file
for this?
Like:MyPlugin.sc
:
object BuildingBlocks extends Plugin {
...
}
val plugin = BuildingBlocks
Then load it like:
import $file.MyPlugin
println(MyPlugin.plugin)