Swiftpack.co - Package - Einstore/ShellKit

ShellKit

Access local shell as well as remote over SSH for Swift NIO applications

Install using SPM

.package(url: "https://github.com/Einstore/ShellKit.git", from: "1.0.0")

Usage

Connect to a local terminal

let shell = try Shell(.local, on: eventLoop)
let futureResponse = shell.run(bash: "ls -a").map { output in
   print(output)
   return output
}

Connect to a remote service

let shell = try Shell(
    .ssh(
        host: "1292.168.1.2",
        username: "root",
        password: "sup3rS3cr3t"
    ),
    on: eventLoop
)
let futureResponse = shell.run(bash: "ls -a")

Other means of SSH authentication are available!

Example

let eventLoop = EmbeddedEventLoop()
let shell = try Shell(.local, on: eventLoop)
let futureResponse = shell.run(bash: "cd /tmp/ ; pwd").map { output in
   print(output)
   return output
}.flatMapError { error in
   print(error)
   return error.localizedDescription
}
let out: String = try futureResponse.wait()
print(out)

Using CommandKit

Access commands through

Example:

shell.cmd.pwd().map { currentPath in
   print(currentPath)
}

Discover more commands under shell.cmd and shell.cmd.install

Author

Ondrej Rafaj @rafiki270

License

MIT; Copyright 2019 - Einstore

Github

link
Stars: 3
Help us keep the lights on

Releases

1.6.0 - Aug 21, 2019

  • Mocking capability

1.5.1 - Aug 20, 2019

  • Mocking target for tests

1.5.0 - Aug 1, 2019

  • Fixing local shell paths and execution
  • Adding home() to command kit
  • Better handling of pwd()

1.4.2 - Jul 29, 2019

Add wait() to ProcessFuture

1.4.1 - Jul 29, 2019

Making EmbeddedEventLoop default event loop