All Projects → palantir → giraffe

palantir / giraffe

Licence: Apache-2.0 license
Gracefully Integrated Remote Access For Files and Execution

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to giraffe

Python Language Server
An implementation of the Language Server Protocol for Python
Stars: ✭ 2,412 (+4724%)
Mutual labels:  octo-correct-managed
python-executor
Programmer friendly subprocess wrapper
Stars: ✭ 88 (+76%)
Mutual labels:  command-execution
Bridges
🌉 SwifQL+NIO provider to Postgres and MySQL
Stars: ✭ 50 (+0%)
Mutual labels:  nio2
Giraffe.Razor
Razor view engine http handlers for Giraffe web applications.
Stars: ✭ 27 (-46%)
Mutual labels:  giraffe
s3fs-nio
A Java (NIO2) FileSystem Provider for Amazon AWS S3.
Stars: ✭ 33 (-34%)
Mutual labels:  nio2
amalgomate
Go tool for combining multiple different main packages into a single program or library
Stars: ✭ 19 (-62%)
Mutual labels:  octo-correct-managed
Blueprint
A React-based UI toolkit for the web
Stars: ✭ 18,376 (+36652%)
Mutual labels:  octo-correct-managed
FSharp.JsonApi
Use F# to create and consume flexible, strongly typed web APIs following the JSON:API specification
Stars: ✭ 20 (-60%)
Mutual labels:  giraffe
shell-agent
Agent program installed on remote host, help you to execute shell command on the remote host via HTTP. Also help to transport file to/from remote host.
Stars: ✭ 41 (-18%)
Mutual labels:  command-execution
gradle-consistent-versions
Compact, constraint-friendly lockfiles for your dependencies
Stars: ✭ 92 (+84%)
Mutual labels:  octo-correct-managed
Giraffe.TokenRouter
Alternative routing API for Giraffe web applications which is aimed at maximum performance.
Stars: ✭ 21 (-58%)
Mutual labels:  giraffe
read
学习笔记 dubbo,rocketmq 源码解析
Stars: ✭ 33 (-34%)
Mutual labels:  nio2
conjure-rust
Conjure support for Rust
Stars: ✭ 14 (-72%)
Mutual labels:  octo-correct-managed
Feliz.ViewEngine
Feliz DSL and engine for HTML generation and server side rendering (SSR)
Stars: ✭ 53 (+6%)
Mutual labels:  giraffe
phishcatch
A browser extension and API server for detecting corporate password use on external websites
Stars: ✭ 75 (+50%)
Mutual labels:  octo-correct-managed
Tslint
🚦 An extensible linter for the TypeScript language
Stars: ✭ 5,922 (+11744%)
Mutual labels:  octo-correct-managed
rust-zipkin
A library for logging and propagating Zipkin trace information in Rust
Stars: ✭ 50 (+0%)
Mutual labels:  octo-correct-managed
asana mailer
A script that uses Asana's RESTful API to generate plaintext and HTML emails.
Stars: ✭ 12 (-76%)
Mutual labels:  octo-correct-managed
AndroidRetroFile
Backport of java.nio.file API (JSR 203) for Android
Stars: ✭ 42 (-16%)
Mutual labels:  nio2
palantir-java-format
A modern, lambda-friendly, 120 character Java formatter.
Stars: ✭ 203 (+306%)
Mutual labels:  octo-correct-managed

The Giraffe logo, a giraffe wearing glasses

Giraffe CircleCI

Gracefully Integrated Remote Access For Files and Execution

A long neck to reach far-away places

Overview

Giraffe is a Java library that integrates local and remote file system access with command execution behind a common, familiar API. It combines new classes for command execution with remote implementations of the java.nio.file API introduced in Java 7.

SshHostAccessor ssh = SshHostAccessor.forPassword("example.com", "giraffe", "l0ngN3ck");

try (HostControlSystem hcs = ssh.open()) {
    Path logs = hcs.getPath("server/logs");
    Files.copy(logs.resolve("access.log"), Paths.get("log/example-access.log"));

    Command archive = hcs.getCommand("server/bin/archive.sh", "--format=zip", "logs");
    Commands.execute(archive);
}

Get Giraffe

Giraffe is available from Maven Central.

With Gradle:

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.palantir.giraffe:giraffe-ssh:0.10.1'
    // or 'com.palantir.giraffe:giraffe-core:0.10.1' for local features only
}

Why Giraffe?

Why did we write Giraffe and why might you use it?

While working on deployment and test tools we found many situations where we wanted to write code that worked easily on both the local host and remote hosts using SSH. This required at least three different APIs with different abstractions:

  1. Native Java functionality (with third-party utilities) for local files
  2. Native Java functionality or commons-exec for local command execution
  3. An SSH library (sshj, jsch, ganymed-ssh2) for remote file manipulation and command execution

This led to duplicated abstraction layers in our projects and complicated code that had to know what type of host it was targeting.

With Giraffe, a single library is required and there are only two APIs: native Java functionality for files and an intentionally similar API for command execution.

Alternatives

The closest equivalent to Giraffe is XebiaLabs's Overthere. In our view, Giraffe has two major benefits when compared to Overthere:

  1. It uses the standard java.nio.file API introduced in Java 7
  2. It's offered under the Apache 2.0 license instead of the GPLv2

That said, Overthere supports more protocols and supports Windows, which may make it more appropriate for your use case.

Support

In general, any release of Giraffe is supported until a newer version is released. Users should update to newer versions as soon as possible.

Occasionally, we continue to provide bug fixes and support for the previous major version series after a new major version release. These releases are listed below. We support old releases for at most 6 months after a new major version release.

No supported old releases at this time

Development

Giraffe builds with Gradle and is configured to use Eclipse as an IDE:

$ ./gradlew eclipse     # generate Eclipse projects
$ ./gradlew build       # compile libraries and run tests

See ./gradlew tasks for more options.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].