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: 0
Help us keep the lights on

Releases

1.3.0 - Jul 15, 2019

  • File/folder exists
  • cmd isEmpty

1.2.4 - Jul 15, 2019

  • Bug fixes

1.2.0 - Jul 15, 2019

  • Upload files over SFTP/Locally as string, data, file

1.1.1 - Jul 14, 2019

  • cmd.which(String)
  • cmd.exists(command: String)

1.1.0 - Jul 14, 2019

  • New CommandKit, an extension of ShellKit with implementation of some basic commands