Live data from Hacker News

Show HN: Replify – Create a REPL for any command

gist.github.com

1–10 of 20 posts

Re: Show HN: Replify – Create a REPL for any command

#8
post #7

Another generic `repl` utility, this one in ruby: https://github.com/defunkt/repl

I find it hilarious that there's a ruby version of a tool that can be implemented in 10 lines of bash. It's like atwood's law all over again. Use the right tool for the job, please.

Re: Show HN: Replify – Create a REPL for any command

#9
Here is my version:

  #!/bin/bash
  
  printf "REPL for %s\n" "$@"
  
  notblank()
  {
    [ $# -gt 0 ]
  }
  
  while true ; do
    printf "%s> " "$@"
    read -r || break;
    notblank $REPLY || continue;
    eval command \"\$@\" "$REPLY"
  done
We keep the original parameters and expand them with "$@". There is a Bash feature that read with no args reads the line into the REPLY variable. We want that to be subject to splitting.

If $REPLY expands to nothing, including multiple whitespace, then we just want to print the prompt again: not quit and not run the command with no additional arguments.

The eval trick allows $REPLY to undergo expansion and splitting, so that shell syntax can freely be used in the REPL.

Test:

  $ ~/test/replify/replify.sh git
  REPL for git
  git> rev-parse HEAD 
  7ac594319e417266764a6bc041b74807f2fe13bd
  git> branch -r
    origin/HEAD -> origin/master
    origin/master
    origin/origin/master
  git> checkout "$TERM $TERM"
  error: pathspec 'xterm xterm' did not match any file(s) known to git.
  git> checkout $TERM
  error: pathspec 'xterm' did not match any file(s) known to git.
Cute, but not terribly useful without history recall and related features. This wants to be a feature of Bash. The regular Bash repl should have a prefix variable so it can appear to be in a sub-mode for a particular command.

Submit a patch for Bash to do this, and maybe you have something. Bash has a hook feature for command execution, IIRC, so this may be somehow doable without modifying Bash.

Re: Show HN: Replify – Create a REPL for any command

#10
post #7

Another generic `repl` utility, this one in ruby: https://github.com/defunkt/repl

I find it hilarious that there's a ruby version of a tool that can be implemented in 10 lines of bash. It's like atwood's law all over again. Use the right tool for the job, please.

I'd be happy to see your 10 lines bash version of this ruby tool, with the same options/properties (debug messages, customizable prompt, history logging, same safeguards, rlwrap support, man page).
Post reply on HN