https://github.com/scttfrdmn/globus-go-cli
Fast, modern Go CLI for Globus services (Auth, Transfer) - aligned with upstream v3.37.0. Alternative to Python CLI with native performance, multiple output formats, and comprehensive service coverage.
https://github.com/scttfrdmn/globus-go-cli
auth cli command-line cross-platform data-transfer globus globus-auth globus-cli globus-transfer go golang hpc research-computing scientific-computing transfer
Last synced: 2 months ago
JSON representation
Fast, modern Go CLI for Globus services (Auth, Transfer) - aligned with upstream v3.37.0. Alternative to Python CLI with native performance, multiple output formats, and comprehensive service coverage.
- Host: GitHub
- URL: https://github.com/scttfrdmn/globus-go-cli
- Owner: scttfrdmn
- License: other
- Created: 2025-05-01T16:05:18.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-10-26T03:03:05.000Z (5 months ago)
- Last Synced: 2025-10-26T04:21:39.475Z (5 months ago)
- Topics: auth, cli, command-line, cross-platform, data-transfer, globus, globus-auth, globus-cli, globus-transfer, go, golang, hpc, research-computing, scientific-computing, transfer
- Language: Go
- Homepage: https://github.com/scttfrdmn/globus-go-cli/releases/latest
- Size: 7.95 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Globus Go CLI
A command-line interface for Globus services, built in Go using the [Globus Go SDK](https://github.com/scttfrdmn/globus-go-sdk) v3.65.0-1 (production). Aligned with upstream Globus CLI v3.39.0.
> **Note:** This CLI uses SDK v3 (production-ready). SDK v4 is available but provides minimal benefit for CLI use cases. See [SDK_VERSION_DECISION.md](SDK_VERSION_DECISION.md) for details.
>
> **Future:** When upstream Globus v4 becomes official, this CLI will adopt a dual-version approach (parallel v3/v4 implementations) similar to the SDK. See [CLI_DUAL_VERSION_STRATEGY.md](CLI_DUAL_VERSION_STRATEGY.md).
## Features
- Modern CLI implementation with Cobra and Viper
- Fast and lightweight with no Python dependencies
- **100% feature parity with Python Globus CLI v3.39.0 + additional Compute support**
- Comprehensive coverage of Globus services:
- ✅ Auth (100% - authentication and identity management)
- ✅ Transfer (100% - file transfer operations)
- ✅ Groups (80% - full functionality, role management pending SDK)
- ✅ Timers (100% - scheduled task management)
- ✅ Search (100% - index and document management, 18 commands)
- ✅ Flows (100% - workflow automation, 15 commands)
- ✅ Compute (100% - **exclusive to Go CLI**, not in Python CLI, 14 commands)
- Multiple output formats (text, JSON, CSV)
- Interactive features with progress visualization
- Multiple configuration profiles
- Cross-platform support (Linux, macOS, Windows)
- Shell completion for Bash, Zsh, Fish, and PowerShell
## Documentation
**📚 [Read the full documentation](https://scttfrdmn.github.io/globus-go-cli/)**
- [Installation Guide](https://scttfrdmn.github.io/globus-go-cli/getting-started/installation/)
- [Quick Start](https://scttfrdmn.github.io/globus-go-cli/getting-started/quickstart/)
- [Command Reference](https://scttfrdmn.github.io/globus-go-cli/reference/)
- [Common Tasks](https://scttfrdmn.github.io/globus-go-cli/guides/common-tasks/)
## Installation
### Using Homebrew (macOS and Linux)
```bash
# Install from Homebrew
brew tap scttfrdmn/tap
brew install globus-go-cli
```
### Using Scoop (Windows)
```powershell
# Add the scoop bucket
scoop bucket add scttfrdmn https://github.com/scttfrdmn/scoop-bucket
# Install globus-go-cli
scoop install globus-go-cli
```
### Using Docker
```bash
# Run using Docker
docker run --rm -it scttfrdmn/globus-go-cli:latest auth whoami
```
### From Binary Releases
Download the latest release for your platform from the [Releases page](https://github.com/scttfrdmn/globus-go-cli/releases).
Binaries are provided for:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64)
### From Source
```bash
# Clone the repository
git clone https://github.com/scttfrdmn/globus-go-cli.git
cd globus-go-cli
# Build the binary
make build
# or
go build -o globus
# Install the binary
mv globus /usr/local/bin/
```
## Quick Start
```bash
# Login to Globus
globus auth login
# Or login without a browser
globus auth device
# Show information about the current user
globus auth whoami
# List your endpoints
globus transfer endpoint list
# List files on an endpoint
globus transfer ls ENDPOINT_ID:/path
# Transfer files between endpoints
globus transfer cp SOURCE_ENDPOINT:/source/path DEST_ENDPOINT:/dest/path
# Check transfer status
globus transfer task show TASK_ID
# Logout when done
globus auth logout
```
## Configuration
The CLI stores its configuration and tokens in `~/.globus-cli/`:
- `~/.globus-cli/config.yaml`: General configuration
- `~/.globus-cli/tokens/`: OAuth tokens for different profiles
- `~/.globus-cli/profiles/`: Named configuration profiles
### Configuration Profiles
You can use multiple configuration profiles to work with different Globus accounts:
```bash
# Create a new profile
globus config profile create myprofile
# Use a specific profile
globus --profile=myprofile auth login
# List all profiles
globus config profile list
```
### Output Formats
Most commands support different output formats:
```bash
# Default text format
globus transfer endpoint list
# JSON output for scripting
globus transfer endpoint list --format=json
# CSV output for importing into spreadsheets
globus transfer endpoint list --format=csv
```
## Detailed Command Reference
### Auth Commands
```bash
# Log in using browser
globus auth login
# Log in with device code (no browser)
globus auth device
# Show current user info
globus auth whoami
# List tokens
globus auth tokens show
# Refresh tokens
globus auth refresh
# Revoke tokens
globus auth tokens revoke --type=access
# Look up identities
globus auth identities lookup user@example.com
# Log out
globus auth logout
```
### Transfer Commands
```bash
# List endpoints
globus transfer endpoint list
# Search for endpoints
globus transfer endpoint search "my data"
# Show endpoint details
globus transfer endpoint show ENDPOINT_ID
# List files on endpoint
globus transfer ls ENDPOINT_ID:/path
globus transfer ls -l ENDPOINT_ID:/path # long format
# Create directory
globus transfer mkdir ENDPOINT_ID:/new/directory
globus transfer mkdir -p ENDPOINT_ID:/nested/directory # create parents
# Delete files/directories
globus transfer rm ENDPOINT_ID:/path/to/file
globus transfer rm -r ENDPOINT_ID:/directory # recursive
# Transfer files
globus transfer cp SOURCE_EP:/file DEST_EP:/path
globus transfer cp -r SOURCE_EP:/dir DEST_EP:/path # recursive
# List tasks
globus transfer task list
# View task details
globus transfer task show TASK_ID
# Wait for task completion
globus transfer task wait TASK_ID
# Cancel task
globus transfer task cancel TASK_ID
```
### Shell Completion
```bash
# Generate shell completion scripts
globus completion bash > ~/.bash_completion.d/globus
globus completion zsh > "${fpath[1]}/_globus"
globus completion fish > ~/.config/fish/completions/globus.fish
```
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
## Development
### Integration Testing
For information about setting up integration testing with real Globus credentials, see [INTEGRATION_TESTING.md](INTEGRATION_TESTING.md).
### Cross-Platform Compatibility
For guidelines on ensuring cross-platform compatibility, see [CROSS_PLATFORM.md](CROSS_PLATFORM.md).
## Release Process
For information about the release process, see [RELEASE_PROCESS.md](RELEASE_PROCESS.md).
## Release Notes
- [Release v3.39.0-1](RELEASE_NOTES_V3.39.0-1.md) - Latest release (aligned with upstream CLI v3.39.0)
- [Changelog](CHANGELOG.md) - Full history of changes
## License
Apache License 2.0