Coder Social home page Coder Social logo

subprocess's Introduction

SubProcess for Carp

Work in progress.

Long commands output might dead-lock if using Pipe on both stdout and stderr.

(load "https://github.com/TimDeve/[email protected]")

(defn-do main []
  ; Prints all to stdout/stderr
  (ignore (Subprocess.cmd (zero) &[@"echo" @"subprocess"]))

  ; Saves stdout and stderr as strings
  (let-do [res (Subprocess.cmd (SubprocessOptions.spp)
                               &[@"sh" @"-c" @"printf 'this is stderr' 1>&2; printf 'this is stdout'; exit 42"])]
    (println* "out       >>> " (Maybe.unsafe-from @(SubprocessRes.out &res)))
    (println* "err       >>> " (Maybe.unsafe-from @(SubprocessRes.err &res)))
    (println* "exit-code >>> " (SubprocessRes.exit-code &res)))
  (println* "after")

  ; Combines stdout and stderr as string
  (let-do [res (Subprocess.cmd (SubprocessOptions.spo)
                               &[@"sh" @"-c" @"printf 'this is stderr' 1>&2; printf 'this is stdout'"])]
    (println* "combined  >>> " (Maybe.unsafe-from @(SubprocessRes.out &res)))
    (println* "exit-code >>> " (SubprocessRes.exit-code &res)))

  ; Manually pipe one command into another
  (let [echo (Subprocess.call (SubprocessOptions.sps) &[@"echo" @"wow"])
        out-pipe (Maybe.unsafe-from @(Subprocess.out &echo))]
    (ignore (Subprocess.cmd (SubprocessOptions.iss out-pipe)
                            &[@"cat"])))

  ; Pipe multiple commands together
  (let-do [res (Subprocess.collect (Subprocess.pipe &[[@"echo" @"are"]
                                                      [@"awk" @"{print \"you>\" $0 \"<surrounded\"}"]
                                                      [@"tr" @"<>" @"><"]]))]
    (println* "out       >>> " (Maybe.unsafe-from @(SubprocessRes.out &res)))
    (println* "exit-code >>> " (SubprocessRes.exit-code &res))))

subprocess's People

Contributors

timdeve avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.