Comments (10)
Thanks for the reports! This is fixed in 4425fe2, which is part of the 2.0.0 release.
from clikt.
Here's a minimal sample to try:
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.output.TermUi.prompt
class Cli : CliktCommand() {
override fun run() {
prompt("test1")
prompt("test2")
}
}
fun main(args: Array<String>) = Cli().main(args)
How to pipe two lines here without getting a EOF exception?
from clikt.
I'll take a look. Given that our travis builds run on linux, I'm surprised that the behavior is different. I'd love suggestions on how to improve the test suite so that it can reproduce this problem.
from clikt.
Yeah I just ran the tests myself in the hope of finding the issue, but they passed for me, even when using stdin.provideText("test\ntest\n")
instead of the line joining.
When modifying one of the samples to use the code above, I could reproduce the problem though by running:
echo "test
test
" | ./runsample prompt
or
echo "test\ntest\n" | ./runsample prompt
Before thinking about how to add a test here, maybe let's see if you can reproduce the problem.
from clikt.
Thanks!
from clikt.
I actually think that NonInteractiveCliktConsole
needs to be a singleton, or at least the bufferedReader
field needs to be a singleton. Otherwise the first NonInteractiveCliktConsole
that is created will consume the entire buffer. Thoughts?
from clikt.
Yes, I think you're right. I could add a reader to the command context that could be shared between parameters.
from clikt.
I am still seeing this issue on Linux with version 1.7.0. Neither a multiline bash pipe or sending data with Python works. I am always getting this exception:
Exception in thread "main" java.lang.RuntimeException: EOF
at com.github.ajalt.clikt.output.NonInteractiveCliktConsole.promptForLine(CliktConsole.kt:63)
at com.github.ajalt.clikt.output.TermUi.prompt(TermUi.kt:94)
at com.github.ajalt.clikt.output.TermUi.prompt$default(TermUi.kt:86)
More information: https://code.briarproject.org/briar/briar/issues/1512
Any ideas/hints are welcome!
from clikt.
Yes, I'm able to reproduce it from the command line.
from clikt.
So I'm finding that redirecting stdin at all fails to work. For example:
fun main() {
println(System.`in`.bufferedReader().readLines())
}
prints []
when called with data piped to stdin, regardless of how many lines you give it. I'll have to do some more investigating.
from clikt.
Related Issues (20)
- Add support for TextStyle in the Text Widget. HOT 1
- [Question] Callback to execute some code when the help is shown HOT 4
- Feature request: Command/option/flag information exposed via hook HOT 2
- Init inside `Object` in Kotlin Script HOT 1
- Consider specifying limits on `counted`
- Option to echo "raw" String HOT 4
- Feature request: generation of man pages or AsciiDoc HOT 1
- Feature request: choosing from options using arrow keys or fuzzy find HOT 1
- [QUESTION] Validate input arguments without running the command HOT 1
- Support path arguments for native HOT 3
- Other ways to construct a CliktCommand object HOT 4
- Disable prompt() globally HOT 3
- Cooccuring option group with required options is passed as nullable HOT 3
- Suspending command support HOT 16
- Question: by option().multiple().groupChoice() ? HOT 5
- Question: one single argument for multiple repeating subcommands HOT 1
- clikt 4.X grew in jar size to over 8mb HOT 8
- Mutually exclusive options in OptionGroup HOT 1
- 4.4.0 CHANGELOG correct?
- Control inputInteractive and outputInteractive in CliktTesting
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clikt.