mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-25 08:31:03 +00:00
Rename lazydocker to lazypodman (Phase 1)
Complete rename of the project from lazydocker to lazypodman: - Update Go module to github.com/christophe-duc/lazypodman - Update all import statements across 51 Go files - Update binary name, descriptions, and CLI help text - Update config directory paths to christophe-duc/lazypodman - Update all 9 i18n language files with new strings - Update scripts (install_update_linux.sh, update_docs.sh) - Update config files (docker-compose.yml, .goreleaser.yml, etc.) - Update documentation (README.md, CONTRIBUTING.md, docs/) This is the foundational step before replacing Docker SDK with libpod bindings for native Podman support. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f4fc3669ca
commit
1d12ef109d
77 changed files with 917 additions and 298 deletions
|
|
@ -14,8 +14,8 @@ fi
|
||||||
|
|
||||||
echo "committing updated docs"
|
echo "committing updated docs"
|
||||||
|
|
||||||
git config user.name "lazydocker bot"
|
git config user.name "lazypodman bot"
|
||||||
git config user.email "jessedduffield@gmail.com"
|
git config user.email "lazypodman-bot@christophe-duc.dev"
|
||||||
|
|
||||||
git checkout master # just making sure we're up to date
|
git checkout master # just making sure we're up to date
|
||||||
git pull
|
git pull
|
||||||
|
|
|
||||||
|
|
@ -50,5 +50,5 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: make this work.
|
// TODO: make this work.
|
||||||
// "postStartCommand": "echo \"alias gr=\\\"go run /workspaces/lazydocker/main.go\\\"\" >> ~/.zhsrc"
|
// "postStartCommand": "echo \"alias gr=\\\"go run /workspaces/lazypodman/main.go\\\"\" >> ~/.zhsrc"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
.github/workflows/sponsors.yml
vendored
2
.github/workflows/sponsors.yml
vendored
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.TOKEN_GITHUB }}
|
token: ${{ secrets.TOKEN_GITHUB }}
|
||||||
file: "README.md"
|
file: "README.md"
|
||||||
if: ${{ github.repository == 'jesseduffield/lazydocker' }}
|
if: ${{ github.repository == 'christophe-duc/lazypodman' }}
|
||||||
|
|
||||||
- name: Create Pull Request 🚀
|
- name: Create Pull Request 🚀
|
||||||
uses: peter-evans/create-pull-request@v6
|
uses: peter-evans/create-pull-request@v6
|
||||||
|
|
|
||||||
|
|
@ -62,16 +62,16 @@ changelog:
|
||||||
|
|
||||||
brews:
|
brews:
|
||||||
- tap:
|
- tap:
|
||||||
owner: jesseduffield
|
owner: christophe-duc
|
||||||
name: homebrew-lazydocker
|
name: homebrew-lazypodman
|
||||||
|
|
||||||
# Your app's homepage.
|
# Your app's homepage.
|
||||||
# Default is empty.
|
# Default is empty.
|
||||||
homepage: "https://github.com/jesseduffield/lazydocker/"
|
homepage: "https://github.com/christophe-duc/lazypodman/"
|
||||||
|
|
||||||
# Your app's description.
|
# Your app's description.
|
||||||
# Default is empty.
|
# Default is empty.
|
||||||
description: "A simple terminal UI for docker, written in Go"
|
description: "A simple terminal UI for podman, written in Go"
|
||||||
#snapcrafts:
|
#snapcrafts:
|
||||||
# - builds:
|
# - builds:
|
||||||
# - snap
|
# - snap
|
||||||
|
|
|
||||||
156
CLAUDE.md
Normal file
156
CLAUDE.md
Normal file
|
|
@ -0,0 +1,156 @@
|
||||||
|
# CLAUDE.md - lazypodman
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
This is a fork of **lazydocker** being converted to **lazypodman** - a terminal UI for managing Podman containers.
|
||||||
|
|
||||||
|
**Goals:**
|
||||||
|
1. Support native libpod (Podman's Go library) instead of Docker SDK
|
||||||
|
2. Enable socket-less operation for Podman commands (no daemon required)
|
||||||
|
|
||||||
|
**Current State:** The codebase uses Docker Go SDK (`github.com/docker/docker` v28.5.2) and requires conversion to libpod.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build
|
||||||
|
go build -mod=vendor
|
||||||
|
|
||||||
|
# Run
|
||||||
|
./lazypodman
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
./test.sh
|
||||||
|
|
||||||
|
# Run with debug logging
|
||||||
|
./lazypodman -d
|
||||||
|
|
||||||
|
# Run with specific compose files
|
||||||
|
./lazypodman -f docker-compose.yml -f docker-compose.override.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Package Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
pkg/
|
||||||
|
├── app/ # Application initialization and lifecycle
|
||||||
|
├── commands/ # Container runtime interaction (Docker -> Podman target)
|
||||||
|
├── gui/ # Terminal UI (gocui-based)
|
||||||
|
│ ├── panels/ # Reusable panel components
|
||||||
|
│ └── presentation/ # Display formatting
|
||||||
|
├── config/ # Configuration management
|
||||||
|
├── i18n/ # Internationalization (9 languages)
|
||||||
|
├── tasks/ # Background task queue
|
||||||
|
├── utils/ # Helper utilities
|
||||||
|
├── log/ # Logging setup
|
||||||
|
└── cheatsheet/ # Keybinding reference
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key Files for Podman Integration
|
||||||
|
|
||||||
|
**Primary targets for libpod conversion:**
|
||||||
|
- `pkg/commands/docker.go` - Main client connection and initialization
|
||||||
|
- `pkg/commands/container.go` - Container operations
|
||||||
|
- `pkg/commands/image.go` - Image operations
|
||||||
|
- `pkg/commands/volume.go` - Volume operations
|
||||||
|
- `pkg/commands/network.go` - Network operations
|
||||||
|
- `pkg/commands/service.go` - Compose service operations
|
||||||
|
- `pkg/commands/docker_host_unix.go` - Unix socket detection
|
||||||
|
- `pkg/commands/docker_host_windows.go` - Windows pipe detection
|
||||||
|
|
||||||
|
**Application entry:**
|
||||||
|
- `main.go` - Entry point, CLI flags
|
||||||
|
- `pkg/app/app.go` - App struct, initialization flow
|
||||||
|
|
||||||
|
## Current Docker Integration
|
||||||
|
|
||||||
|
### Connection Flow
|
||||||
|
1. `NewDockerCommand()` in `docker.go` initializes client
|
||||||
|
2. Docker host determined from `DOCKER_HOST` env or platform defaults
|
||||||
|
3. Uses `github.com/docker/docker/client` SDK for API calls
|
||||||
|
4. SSH tunneling supported for remote hosts
|
||||||
|
|
||||||
|
### API Methods Used
|
||||||
|
```go
|
||||||
|
// Container operations
|
||||||
|
Client.ContainerList()
|
||||||
|
Client.ContainerInspect()
|
||||||
|
Client.ContainerStats() // Streaming
|
||||||
|
Client.ContainerStart/Stop/Pause/Unpause/Restart/Remove()
|
||||||
|
Client.ContainersPrune()
|
||||||
|
|
||||||
|
// Image operations
|
||||||
|
Client.ImageList()
|
||||||
|
Client.ImagesPrune()
|
||||||
|
|
||||||
|
// Volume/Network
|
||||||
|
Client.VolumeList/VolumesPrune()
|
||||||
|
Client.NetworkList/NetworksPrune()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Command Execution Patterns
|
||||||
|
1. **SDK calls** - For most container/image operations
|
||||||
|
2. **Shell commands** - For interactive operations (attach, logs) and compose
|
||||||
|
3. **Template-based** - Configurable command templates in config
|
||||||
|
|
||||||
|
## Libpod Integration Path
|
||||||
|
|
||||||
|
### Required Changes
|
||||||
|
|
||||||
|
1. **Replace Docker SDK with libpod bindings**
|
||||||
|
- Add `github.com/containers/podman/v5/pkg/bindings` dependency
|
||||||
|
- Replace `*client.Client` with libpod connection
|
||||||
|
|
||||||
|
2. **Update type mappings**
|
||||||
|
- Docker `container.Summary` -> Podman equivalent
|
||||||
|
- Docker `image.Summary` -> Podman equivalent
|
||||||
|
- All API response types need mapping
|
||||||
|
|
||||||
|
3. **Socket-less mode**
|
||||||
|
- Implement direct libpod calls without socket
|
||||||
|
- Use `bindings.NewConnection()` with appropriate URI
|
||||||
|
|
||||||
|
4. **Compose support**
|
||||||
|
- Detect `podman-compose` vs `docker-compose`
|
||||||
|
- Update command templates
|
||||||
|
|
||||||
|
### Files NOT requiring changes
|
||||||
|
- `pkg/gui/*` - UI layer is container-runtime agnostic
|
||||||
|
- `pkg/config/*` - Configuration structure remains same
|
||||||
|
- `pkg/i18n/*` - Translations unaffected
|
||||||
|
|
||||||
|
## Development Guidelines
|
||||||
|
|
||||||
|
### Build System
|
||||||
|
- Uses vendored dependencies (`go build -mod=vendor`)
|
||||||
|
- GoReleaser for releases (`.goreleaser.yml`)
|
||||||
|
- No Makefile - use `go build` directly
|
||||||
|
|
||||||
|
### Code Patterns
|
||||||
|
- Generic panels: `SideListPanel[T]` for type-safe list handling
|
||||||
|
- Mutex protection: `deadlock.Mutex` for concurrent access
|
||||||
|
- Error handling: Custom errors in `pkg/commands/errors.go`
|
||||||
|
- Platform-specific: `*_windows.go`, `*_unix.go`, `*_default_platform.go`
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
- Config path: `~/.config/lazypodman/config.yml` (Linux)
|
||||||
|
- Custom commands configurable via YAML
|
||||||
|
- Command templates use Go template syntax
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run all tests with coverage
|
||||||
|
./test.sh
|
||||||
|
|
||||||
|
# Run specific package tests
|
||||||
|
go test -mod=vendor ./pkg/commands/...
|
||||||
|
go test -mod=vendor ./pkg/gui/...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Module Info
|
||||||
|
- Module: `github.com/christophe-duc/lazypodman`
|
||||||
|
- Go: 1.22+ (toolchain 1.23.6)
|
||||||
|
- Key deps: gocui, docker/docker, logrus
|
||||||
|
|
@ -32,7 +32,7 @@ This means there is a little overhead in working with the code base. If you need
|
||||||
# 1)
|
# 1)
|
||||||
|
|
||||||
a) Set `export GOFLAGS=-mod=vendor` in your ~/.bashrc file
|
a) Set `export GOFLAGS=-mod=vendor` in your ~/.bashrc file
|
||||||
b) use `go run main.go` to run lazydocker
|
b) use `go run main.go` to run lazypodman
|
||||||
c) if you need to bump a dependency e.g. jesseduffield/gocui, use
|
c) if you need to bump a dependency e.g. jesseduffield/gocui, use
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -44,7 +44,7 @@ go mod vendor
|
||||||
# 2)
|
# 2)
|
||||||
|
|
||||||
a) don't worry about your ~/.bashrc file
|
a) don't worry about your ~/.bashrc file
|
||||||
b) use `go run -mod=vendor main.go` to run lazydocker
|
b) use `go run -mod=vendor main.go` to run lazypodman
|
||||||
c) if you need to bump a dependency e.g. jesseduffield/gocui, use
|
c) if you need to bump a dependency e.g. jesseduffield/gocui, use
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -59,7 +59,7 @@ Hopefully this will be much more streamlined in the future :)
|
||||||
|
|
||||||
Please note by participating in this project, you agree to abide by the [code of conduct].
|
Please note by participating in this project, you agree to abide by the [code of conduct].
|
||||||
|
|
||||||
[code of conduct]: https://github.com/jesseduffield/lazydocker/blob/master/CODE-OF-CONDUCT.md
|
[code of conduct]: https://github.com/christophe-duc/lazypodman/blob/master/CODE-OF-CONDUCT.md
|
||||||
|
|
||||||
## Any contributions you make will be under the MIT Software License
|
## Any contributions you make will be under the MIT Software License
|
||||||
|
|
||||||
|
|
@ -67,7 +67,7 @@ In short, when you submit code changes, your submissions are understood to be
|
||||||
under the same [MIT License](http://choosealicense.com/licenses/mit/) that
|
under the same [MIT License](http://choosealicense.com/licenses/mit/) that
|
||||||
covers the project. Feel free to contact the maintainers if that's a concern.
|
covers the project. Feel free to contact the maintainers if that's a concern.
|
||||||
|
|
||||||
## Report bugs using Github's [issues](https://github.com/jesseduffield/lazydocker/issues)
|
## Report bugs using Github's [issues](https://github.com/christophe-duc/lazypodman/issues)
|
||||||
|
|
||||||
We use GitHub issues to track public bugs. Report a bug by [opening a new
|
We use GitHub issues to track public bugs. Report a bug by [opening a new
|
||||||
issue](https://github.com/jesseduffield/lazydocker/issues/new); it's that easy!
|
issue](https://github.com/christophe-duc/lazypodman/issues/new); it's that easy!
|
||||||
|
|
|
||||||
463
PLAN.md
Normal file
463
PLAN.md
Normal file
|
|
@ -0,0 +1,463 @@
|
||||||
|
# PLAN.md - lazypodman Conversion Plan
|
||||||
|
|
||||||
|
This document outlines the plan to convert lazydocker to lazypodman with native libpod support.
|
||||||
|
|
||||||
|
## Goals
|
||||||
|
|
||||||
|
1. Replace Docker SDK with Podman's native Go library (libpod bindings)
|
||||||
|
2. Support both socket and socket-less operation
|
||||||
|
3. Remove Docker-specific commands and features
|
||||||
|
4. Rename all occurrences of "lazydocker" to "lazypodman"
|
||||||
|
5. Update documentation to reflect the fork
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 1: Rename lazydocker to lazypodman
|
||||||
|
|
||||||
|
### 1.1 Go Module Rename
|
||||||
|
|
||||||
|
**File:** `go.mod`
|
||||||
|
- Change module from `github.com/jesseduffield/lazydocker` to `github.com/jesseduffield/lazypodman` (or your own namespace)
|
||||||
|
|
||||||
|
### 1.2 Update All Import Statements
|
||||||
|
|
||||||
|
**Files to update (49 Go files):**
|
||||||
|
- `main.go`
|
||||||
|
- `pkg/app/app.go`
|
||||||
|
- `pkg/commands/*.go` (all files)
|
||||||
|
- `pkg/gui/*.go` (all files)
|
||||||
|
- `pkg/gui/panels/*.go`
|
||||||
|
- `pkg/gui/presentation/*.go`
|
||||||
|
- `pkg/config/*.go`
|
||||||
|
- `pkg/i18n/*.go`
|
||||||
|
- `pkg/log/log.go`
|
||||||
|
- `pkg/tasks/tasks.go`
|
||||||
|
- `pkg/utils/utils.go`
|
||||||
|
- `pkg/cheatsheet/*.go`
|
||||||
|
- `scripts/cheatsheet/main.go`
|
||||||
|
- `scripts/translations/get_required_translations.go`
|
||||||
|
|
||||||
|
### 1.3 Update Binary Name References
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- `main.go` - Line 47: `flaggy.SetName("lazydocker")` → `"lazypodman"`
|
||||||
|
- `main.go` - Line 48: Update description
|
||||||
|
- `main.go` - Line 74: `config.NewAppConfig("lazydocker", ...)` → `"lazypodman"`
|
||||||
|
- `.goreleaser.yml` - Update binary name and homebrew tap
|
||||||
|
|
||||||
|
### 1.4 Update Configuration Paths
|
||||||
|
|
||||||
|
**File:** `pkg/config/app_config.go`
|
||||||
|
- Line ~180: Config directory `"jesseduffield"` and `"lazydocker"` references
|
||||||
|
- Update for all platforms (Linux, macOS, Windows)
|
||||||
|
|
||||||
|
### 1.5 Update Internationalization Strings
|
||||||
|
|
||||||
|
**Files (9 language files):**
|
||||||
|
- `pkg/i18n/english.go`
|
||||||
|
- `pkg/i18n/french.go`
|
||||||
|
- `pkg/i18n/german.go`
|
||||||
|
- `pkg/i18n/spanish.go`
|
||||||
|
- `pkg/i18n/portuguese.go`
|
||||||
|
- `pkg/i18n/polish.go`
|
||||||
|
- `pkg/i18n/dutch.go`
|
||||||
|
- `pkg/i18n/turkish.go`
|
||||||
|
- `pkg/i18n/chinese.go`
|
||||||
|
|
||||||
|
Replace all "lazydocker" strings with "lazypodman".
|
||||||
|
|
||||||
|
### 1.6 Update Scripts and CI/CD
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- `scripts/install_update_linux.sh`
|
||||||
|
- `.circleci/update_docs.sh`
|
||||||
|
- `.github/workflows/sponsors.yml`
|
||||||
|
- `.devcontainer/devcontainer.json`
|
||||||
|
- `Dockerfile`
|
||||||
|
- `docker-compose.yml`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2: Replace Docker SDK with Libpod Bindings
|
||||||
|
|
||||||
|
### 2.1 Update Dependencies
|
||||||
|
|
||||||
|
**File:** `go.mod`
|
||||||
|
|
||||||
|
Remove:
|
||||||
|
```
|
||||||
|
github.com/docker/cli v27.1.1+incompatible
|
||||||
|
github.com/docker/docker v28.5.2+incompatible
|
||||||
|
```
|
||||||
|
|
||||||
|
Add (both needed for hybrid approach):
|
||||||
|
```
|
||||||
|
github.com/containers/podman/v5/pkg/bindings // Socket mode (stable API)
|
||||||
|
github.com/containers/podman/v5/libpod // Socket-less mode (unstable API)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 Create Runtime Abstraction (Hybrid Approach)
|
||||||
|
|
||||||
|
Create a `ContainerRuntime` interface that supports both socket mode (`pkg/bindings`) and socket-less mode (`libpod`).
|
||||||
|
|
||||||
|
**File:** `pkg/commands/runtime.go` (new file)
|
||||||
|
|
||||||
|
```go
|
||||||
|
package commands
|
||||||
|
|
||||||
|
type ContainerRuntime interface {
|
||||||
|
ListContainers() ([]*Container, error)
|
||||||
|
GetContainer(id string) (*Container, error)
|
||||||
|
StartContainer(id string) error
|
||||||
|
StopContainer(id string) error
|
||||||
|
// ... see Phase 3.2 for full interface
|
||||||
|
Close() error
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**File:** `pkg/commands/podman.go` (new file, replaces docker.go)
|
||||||
|
|
||||||
|
```go
|
||||||
|
type PodmanCommand struct {
|
||||||
|
Runtime ContainerRuntime // Either SocketRuntime or LibpodRuntime
|
||||||
|
OSCommand *OSCommand
|
||||||
|
Config *config.AppConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPodmanCommand(...) (*PodmanCommand, error) {
|
||||||
|
// Auto-detect: try socket first, fall back to libpod
|
||||||
|
// See Phase 3.5 for implementation details
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 Two Runtime Implementations
|
||||||
|
|
||||||
|
**Socket Mode:** `pkg/commands/runtime_socket.go` - Uses `pkg/bindings` (stable API)
|
||||||
|
**Socket-less Mode:** `pkg/commands/runtime_libpod.go` - Uses `libpod` directly (unstable API)
|
||||||
|
|
||||||
|
See Phase 3.3 and 3.4 for detailed implementation.
|
||||||
|
|
||||||
|
### 2.4 Files to Modify
|
||||||
|
|
||||||
|
**Primary changes:**
|
||||||
|
- `pkg/commands/docker.go` → rename to `podman.go`, rewrite client
|
||||||
|
- `pkg/commands/container.go` - Update all Docker client calls
|
||||||
|
- `pkg/commands/image.go` - Update all Docker client calls
|
||||||
|
- `pkg/commands/volume.go` - Update all Docker client calls
|
||||||
|
- `pkg/commands/network.go` - Update all Docker client calls
|
||||||
|
- `pkg/commands/container_stats.go` - Update stats streaming
|
||||||
|
|
||||||
|
**Socket path updates:**
|
||||||
|
- `pkg/commands/docker_host_unix.go` → `podman_host_unix.go`
|
||||||
|
- Change default: `unix:///run/podman/podman.sock` (rootful)
|
||||||
|
- Add rootless: `unix:///run/user/$(id -u)/podman/podman.sock`
|
||||||
|
- `pkg/commands/docker_host_windows.go` → `podman_host_windows.go`
|
||||||
|
|
||||||
|
### 2.5 Update Type References
|
||||||
|
|
||||||
|
Replace Docker types with Podman equivalents:
|
||||||
|
- `container.Summary` → Podman's `entities.ListContainer`
|
||||||
|
- `container.InspectResponse` → Podman's `define.InspectContainerData`
|
||||||
|
- `image.Summary` → Podman's `entities.ImageSummary`
|
||||||
|
- `volume.Volume` → Podman's `entities.VolumeConfigResponse`
|
||||||
|
- `network.Inspect` → Podman's network types
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 3: Hybrid Implementation (Socket + Libpod)
|
||||||
|
|
||||||
|
Use a hybrid approach:
|
||||||
|
- **Socket available** → Use `pkg/bindings` (stable REST API)
|
||||||
|
- **No socket** → Use `libpod` directly (not CLI fallback)
|
||||||
|
|
||||||
|
### 3.1 Dependencies
|
||||||
|
|
||||||
|
**Add (both needed):**
|
||||||
|
```go
|
||||||
|
github.com/containers/podman/v5/pkg/bindings // For socket mode
|
||||||
|
github.com/containers/podman/v5/pkg/bindings/containers
|
||||||
|
github.com/containers/podman/v5/pkg/bindings/images
|
||||||
|
github.com/containers/podman/v5/pkg/bindings/volumes
|
||||||
|
github.com/containers/podman/v5/pkg/bindings/networks
|
||||||
|
|
||||||
|
github.com/containers/podman/v5/libpod // For socket-less mode
|
||||||
|
github.com/containers/podman/v5/libpod/define
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2 Runtime Interface
|
||||||
|
|
||||||
|
**File:** `pkg/commands/runtime.go`
|
||||||
|
|
||||||
|
```go
|
||||||
|
package commands
|
||||||
|
|
||||||
|
type ContainerRuntime interface {
|
||||||
|
// Container operations
|
||||||
|
ListContainers() ([]*Container, error)
|
||||||
|
GetContainer(id string) (*Container, error)
|
||||||
|
StartContainer(id string) error
|
||||||
|
StopContainer(id string) error
|
||||||
|
PauseContainer(id string) error
|
||||||
|
UnpauseContainer(id string) error
|
||||||
|
RestartContainer(id string) error
|
||||||
|
RemoveContainer(id string, force bool) error
|
||||||
|
PruneContainers() error
|
||||||
|
|
||||||
|
// Image operations
|
||||||
|
ListImages() ([]*Image, error)
|
||||||
|
RemoveImage(id string) error
|
||||||
|
PruneImages() error
|
||||||
|
|
||||||
|
// Volume operations
|
||||||
|
ListVolumes() ([]*Volume, error)
|
||||||
|
RemoveVolume(name string) error
|
||||||
|
PruneVolumes() error
|
||||||
|
|
||||||
|
// Network operations
|
||||||
|
ListNetworks() ([]*Network, error)
|
||||||
|
RemoveNetwork(name string) error
|
||||||
|
PruneNetworks() error
|
||||||
|
|
||||||
|
// Lifecycle
|
||||||
|
Close() error
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 Socket Mode Implementation
|
||||||
|
|
||||||
|
**File:** `pkg/commands/runtime_socket.go`
|
||||||
|
|
||||||
|
```go
|
||||||
|
type SocketRuntime struct {
|
||||||
|
conn context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSocketRuntime(socketPath string) (*SocketRuntime, error) {
|
||||||
|
conn, err := bindings.NewConnection(context.Background(), socketPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &SocketRuntime{conn: conn}, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.4 Socket-less Mode Implementation
|
||||||
|
|
||||||
|
**File:** `pkg/commands/runtime_libpod.go`
|
||||||
|
|
||||||
|
```go
|
||||||
|
type LibpodRuntime struct {
|
||||||
|
runtime *libpod.Runtime
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewLibpodRuntime() (*LibpodRuntime, error) {
|
||||||
|
runtime, err := libpod.NewRuntime(context.Background())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &LibpodRuntime{runtime: runtime}, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.5 Auto-Detection Logic
|
||||||
|
|
||||||
|
**File:** `pkg/commands/podman.go`
|
||||||
|
|
||||||
|
```go
|
||||||
|
type PodmanCommand struct {
|
||||||
|
Runtime ContainerRuntime // Either SocketRuntime or LibpodRuntime
|
||||||
|
OSCommand *OSCommand
|
||||||
|
Config *config.AppConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPodmanCommand(cfg *config.AppConfig, osCommand *OSCommand) (*PodmanCommand, error) {
|
||||||
|
var runtime ContainerRuntime
|
||||||
|
|
||||||
|
// Try socket first
|
||||||
|
socketPath := detectSocketPath()
|
||||||
|
if socketPath != "" && socketExists(socketPath) {
|
||||||
|
runtime, _ = NewSocketRuntime(socketPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fall back to libpod if socket unavailable
|
||||||
|
if runtime == nil {
|
||||||
|
runtime, _ = NewLibpodRuntime()
|
||||||
|
}
|
||||||
|
|
||||||
|
return &PodmanCommand{Runtime: runtime, ...}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func detectSocketPath() string {
|
||||||
|
// 1. CONTAINER_HOST env var
|
||||||
|
// 2. Rootless: /run/user/{uid}/podman/podman.sock
|
||||||
|
// 3. Rootful: /run/podman/podman.sock
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.6 API Method Mappings
|
||||||
|
|
||||||
|
**Socket Mode (pkg/bindings):**
|
||||||
|
|
||||||
|
| Docker SDK | Podman bindings |
|
||||||
|
|------------|-----------------|
|
||||||
|
| `Client.ContainerList()` | `containers.List(conn, opts)` |
|
||||||
|
| `Client.ContainerStop(id)` | `containers.Stop(conn, id, opts)` |
|
||||||
|
| `Client.ImageList()` | `images.List(conn, opts)` |
|
||||||
|
| `Client.VolumeList()` | `volumes.List(conn, opts)` |
|
||||||
|
|
||||||
|
**Socket-less Mode (libpod):**
|
||||||
|
|
||||||
|
| Docker SDK | Libpod Direct |
|
||||||
|
|------------|---------------|
|
||||||
|
| `Client.ContainerList()` | `runtime.GetAllContainers()` |
|
||||||
|
| `Client.ContainerStop(id)` | `ctr.Stop()` |
|
||||||
|
| `Client.ImageList()` | `runtime.ImageRuntime().GetImages()` |
|
||||||
|
| `Client.VolumeList()` | `runtime.GetAllVolumes()` |
|
||||||
|
|
||||||
|
### 3.7 Keep Socket Detection Files (Renamed)
|
||||||
|
|
||||||
|
- `pkg/commands/docker_host_unix.go` → `pkg/commands/podman_host_unix.go`
|
||||||
|
- `pkg/commands/docker_host_windows.go` → `pkg/commands/podman_host_windows.go`
|
||||||
|
|
||||||
|
Update to detect Podman socket paths instead of Docker.
|
||||||
|
|
||||||
|
### 3.8 Caveats
|
||||||
|
|
||||||
|
1. **API Stability**: Socket mode (pkg/bindings) is stable; libpod is unstable
|
||||||
|
2. **Remote Podman**: Only socket mode supports remote connections
|
||||||
|
3. **Rootless/Rootful**: Both modes handle this automatically
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 4: Remove Docker-Specific Commands
|
||||||
|
|
||||||
|
### 4.1 Update Command Templates
|
||||||
|
|
||||||
|
**File:** `pkg/config/app_config.go`
|
||||||
|
|
||||||
|
Change defaults from Docker Compose to Podman Compose:
|
||||||
|
```go
|
||||||
|
CommandTemplatesConfig{
|
||||||
|
DockerCompose: "podman-compose", // was "docker compose"
|
||||||
|
RestartService: "{{ .DockerCompose }} restart {{ .Service.Name }}",
|
||||||
|
// ... all other templates stay same, just different default
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Update Compose Detection
|
||||||
|
|
||||||
|
**File:** `pkg/commands/docker.go` (now `podman.go`)
|
||||||
|
|
||||||
|
Change compose detection:
|
||||||
|
```go
|
||||||
|
// Before
|
||||||
|
err := c.OSCommand.RunCommand("docker compose version")
|
||||||
|
|
||||||
|
// After
|
||||||
|
err := c.OSCommand.RunCommand("podman-compose version")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 Update Container Labels
|
||||||
|
|
||||||
|
**File:** `pkg/commands/docker.go`
|
||||||
|
|
||||||
|
Docker Compose labels to check for Podman Compose compatibility:
|
||||||
|
- `"com.docker.compose.service"` - May need Podman equivalent
|
||||||
|
- `"com.docker.compose.project"` - May need Podman equivalent
|
||||||
|
|
||||||
|
### 4.4 Remove Docker-Specific Features
|
||||||
|
|
||||||
|
- Remove `DOCKER_HOST` environment variable handling (replace with `CONTAINER_HOST` or Podman equivalent)
|
||||||
|
- Remove `DOCKER_CONTEXT` handling
|
||||||
|
- Update SSH tunneling for Podman
|
||||||
|
|
||||||
|
### 4.5 Update Hardcoded Commands
|
||||||
|
|
||||||
|
**File:** `pkg/gui/containers_panel.go` (line ~454)
|
||||||
|
- Change `docker exec` template to `podman exec`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 5: Update Documentation
|
||||||
|
|
||||||
|
### 5.1 Update README.md
|
||||||
|
|
||||||
|
- Change project name and description
|
||||||
|
- Add "Forked from lazydocker" attribution
|
||||||
|
- Update installation instructions for lazypodman
|
||||||
|
- Update usage examples with podman
|
||||||
|
- Update screenshots if needed
|
||||||
|
- Update badges and links
|
||||||
|
|
||||||
|
### 5.2 Update Other Documentation
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- `CONTRIBUTING.md` - Update repository references
|
||||||
|
- `docs/Config.md` - Update configuration examples
|
||||||
|
- `docs/keybindings/*.md` (8 files) - Update any lazydocker references
|
||||||
|
|
||||||
|
### 5.3 Update CLAUDE.md
|
||||||
|
|
||||||
|
- Already created, update as implementation progresses
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 6: Testing and Validation
|
||||||
|
|
||||||
|
### 6.1 Update Tests
|
||||||
|
|
||||||
|
- Update test fixtures in `test/` directory
|
||||||
|
- Ensure all existing tests pass with Podman
|
||||||
|
- Add Podman-specific tests
|
||||||
|
|
||||||
|
### 6.2 Integration Testing
|
||||||
|
|
||||||
|
- Test with rootful Podman
|
||||||
|
- Test with rootless Podman
|
||||||
|
- Test socket mode
|
||||||
|
- Test CLI fallback mode
|
||||||
|
- Test with podman-compose
|
||||||
|
|
||||||
|
### 6.3 Platform Testing
|
||||||
|
|
||||||
|
- Linux (primary platform)
|
||||||
|
- macOS (via Podman machine)
|
||||||
|
- Windows (via Podman machine)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## File Summary
|
||||||
|
|
||||||
|
### Files to Rename
|
||||||
|
| Original | New |
|
||||||
|
|----------|-----|
|
||||||
|
| `pkg/commands/docker.go` | `pkg/commands/podman.go` |
|
||||||
|
| `pkg/commands/docker_host_unix.go` | `pkg/commands/podman_host_unix.go` |
|
||||||
|
| `pkg/commands/docker_host_windows.go` | `pkg/commands/podman_host_windows.go` |
|
||||||
|
|
||||||
|
### Files with Major Changes
|
||||||
|
- `go.mod` - Module rename + dependency swap
|
||||||
|
- `main.go` - Binary name, description
|
||||||
|
- `pkg/commands/podman.go` - Complete rewrite
|
||||||
|
- `pkg/commands/container.go` - API migration
|
||||||
|
- `pkg/commands/image.go` - API migration
|
||||||
|
- `pkg/commands/volume.go` - API migration
|
||||||
|
- `pkg/commands/network.go` - API migration
|
||||||
|
- `pkg/config/app_config.go` - Config paths + new options
|
||||||
|
- `README.md` - Complete rewrite
|
||||||
|
|
||||||
|
### Files with String Replacements Only
|
||||||
|
- All 9 i18n files
|
||||||
|
- All GUI files (import paths)
|
||||||
|
- All presentation files (import paths)
|
||||||
|
- Scripts and CI files
|
||||||
|
- Documentation files
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Estimated Scope
|
||||||
|
|
||||||
|
- **~80 files** need modification
|
||||||
|
- **~50 files** need import path updates only
|
||||||
|
- **~10 files** need significant code changes
|
||||||
|
- **~20 files** need content/string updates
|
||||||
122
README.md
122
README.md
|
|
@ -2,7 +2,7 @@
|
||||||
<sup>Special thanks to:</sup>
|
<sup>Special thanks to:</sup>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=lazydocker_20231023">
|
<a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=lazypodman_20231023">
|
||||||
<div>
|
<div>
|
||||||
<img src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-02.png?raw=true" width="400" alt="Warp">
|
<img src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-02.png?raw=true" width="400" alt="Warp">
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
<a href="https://tuple.app/lazydocker">
|
<a href="https://tuple.app/lazypodman">
|
||||||
<div>
|
<div>
|
||||||
<img src="assets/tuple.png" width="400" alt="Tuple">
|
<img src="assets/tuple.png" width="400" alt="Tuple">
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -43,13 +43,13 @@
|
||||||
A simple terminal UI for both docker and docker-compose, written in Go with the [gocui](https://github.com/jroimartin/gocui 'gocui') library.
|
A simple terminal UI for both docker and docker-compose, written in Go with the [gocui](https://github.com/jroimartin/gocui 'gocui') library.
|
||||||
|
|
||||||

|

|
||||||
[](https://goreportcard.com/report/github.com/jesseduffield/lazydocker)
|
[](https://goreportcard.com/report/github.com/christophe-duc/lazypodman)
|
||||||
[](https://golangci.com)
|
[](https://golangci.com)
|
||||||
[](http://godoc.org/github.com/jesseduffield/lazydocker)
|
[](http://godoc.org/github.com/christophe-duc/lazypodman)
|
||||||

|

|
||||||
[](https://github.com/jesseduffield/lazydocker/releases)
|
[](https://github.com/christophe-duc/lazypodman/releases)
|
||||||
[](https://github.com/jesseduffield/lazydocker/releases/latest)
|
[](https://github.com/christophe-duc/lazypodman/releases/latest)
|
||||||
[](https://github.com/Homebrew/homebrew-core/blob/master/Formula/lazydocker.rb)
|
[](https://github.com/Homebrew/homebrew-core/blob/master/Formula/lazypodman.rb)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ A simple terminal UI for both docker and docker-compose, written in Go with the
|
||||||
## Sponsors
|
## Sponsors
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
Maintenance of this project is made possible by all the <a href="https://github.com/jesseduffield/lazydocker/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/jesseduffield">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/jesseduffield">click here</a>. 💙
|
Maintenance of this project is made possible by all the <a href="https://github.com/christophe-duc/lazypodman/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/jesseduffield">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/jesseduffield">click here</a>. 💙
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
|
|
@ -73,16 +73,16 @@ What a headache!
|
||||||
|
|
||||||
Memorising docker commands is hard. Memorising aliases is slightly less hard. Keeping track of your containers across multiple terminal windows is near impossible. What if you had all the information you needed in one terminal window with every common command living one keypress away (and the ability to add custom commands as well). Lazydocker's goal is to make that dream a reality.
|
Memorising docker commands is hard. Memorising aliases is slightly less hard. Keeping track of your containers across multiple terminal windows is near impossible. What if you had all the information you needed in one terminal window with every common command living one keypress away (and the ability to add custom commands as well). Lazydocker's goal is to make that dream a reality.
|
||||||
|
|
||||||
- [Requirements](https://github.com/jesseduffield/lazydocker#requirements)
|
- [Requirements](https://github.com/christophe-duc/lazypodman#requirements)
|
||||||
- [Installation](https://github.com/jesseduffield/lazydocker#installation)
|
- [Installation](https://github.com/christophe-duc/lazypodman#installation)
|
||||||
- [Usage](https://github.com/jesseduffield/lazydocker#usage)
|
- [Usage](https://github.com/christophe-duc/lazypodman#usage)
|
||||||
- [Keybindings](/docs/keybindings)
|
- [Keybindings](/docs/keybindings)
|
||||||
- [Cool Features](https://github.com/jesseduffield/lazydocker#cool-features)
|
- [Cool Features](https://github.com/christophe-duc/lazypodman#cool-features)
|
||||||
- [Contributing](https://github.com/jesseduffield/lazydocker#contributing)
|
- [Contributing](https://github.com/christophe-duc/lazypodman#contributing)
|
||||||
- [Video Tutorial](https://youtu.be/NICqQPxwJWw)
|
- [Video Tutorial](https://youtu.be/NICqQPxwJWw)
|
||||||
- [Config Docs](/docs/Config.md)
|
- [Config Docs](/docs/Config.md)
|
||||||
- [Twitch Stream](https://www.twitch.tv/jesseduffield)
|
- [Twitch Stream](https://www.twitch.tv/jesseduffield)
|
||||||
- [FAQ](https://github.com/jesseduffield/lazydocker#faq)
|
- [FAQ](https://github.com/christophe-duc/lazypodman#faq)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
|
@ -93,55 +93,55 @@ Memorising docker commands is hard. Memorising aliases is slightly less hard. Ke
|
||||||
|
|
||||||
### Homebrew
|
### Homebrew
|
||||||
|
|
||||||
Normally `lazydocker` formula can be found in the Homebrew core but we suggest you to tap our formula to get frequently updated one. It works with Linux, too.
|
Normally `lazypodman` formula can be found in the Homebrew core but we suggest you to tap our formula to get frequently updated one. It works with Linux, too.
|
||||||
|
|
||||||
**Tap**:
|
**Tap**:
|
||||||
```sh
|
```sh
|
||||||
brew install jesseduffield/lazydocker/lazydocker
|
brew install christophe-duc/lazypodman/lazypodman
|
||||||
```
|
```
|
||||||
|
|
||||||
**Core**:
|
**Core**:
|
||||||
```sh
|
```sh
|
||||||
brew install lazydocker
|
brew install lazypodman
|
||||||
```
|
```
|
||||||
|
|
||||||
### Scoop (Windows)
|
### Scoop (Windows)
|
||||||
|
|
||||||
You can install `lazydocker` using [scoop](https://scoop.sh/):
|
You can install `lazypodman` using [scoop](https://scoop.sh/):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
scoop install lazydocker
|
scoop install lazypodman
|
||||||
```
|
```
|
||||||
### Chocolatey (Windows)
|
### Chocolatey (Windows)
|
||||||
|
|
||||||
You can install `lazydocker` using [Chocolatey](https://chocolatey.org/):
|
You can install `lazypodman` using [Chocolatey](https://chocolatey.org/):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
choco install lazydocker
|
choco install lazypodman
|
||||||
```
|
```
|
||||||
### asdf-vm
|
### asdf-vm
|
||||||
|
|
||||||
You can install [asdf-lazydocker plugin](https://github.com/comdotlinux/asdf-lazydocker) using [asdf-vm](https://asdf-vm.com/):
|
You can install [asdf-lazypodman plugin](https://github.com/comdotlinux/asdf-lazypodman) using [asdf-vm](https://asdf-vm.com/):
|
||||||
#### Setup (Once)
|
#### Setup (Once)
|
||||||
```sh
|
```sh
|
||||||
asdf plugin add lazydocker https://github.com/comdotlinux/asdf-lazydocker.git
|
asdf plugin add lazypodman https://github.com/comdotlinux/asdf-lazypodman.git
|
||||||
```
|
```
|
||||||
|
|
||||||
#### For Install / Upgrade
|
#### For Install / Upgrade
|
||||||
```sh
|
```sh
|
||||||
asdf list all lazydocker
|
asdf list all lazypodman
|
||||||
asdf install lazydocker latest
|
asdf install lazypodman latest
|
||||||
asdf global lazydocker latest
|
asdf global lazypodman latest
|
||||||
```
|
```
|
||||||
|
|
||||||
### Binary Release (Linux/OSX/Windows)
|
### Binary Release (Linux/OSX/Windows)
|
||||||
|
|
||||||
You can manually download a binary release from [the release page](https://github.com/jesseduffield/lazydocker/releases).
|
You can manually download a binary release from [the release page](https://github.com/christophe-duc/lazypodman/releases).
|
||||||
|
|
||||||
Automated install/update, don't forget to always verify what you're piping into bash:
|
Automated install/update, don't forget to always verify what you're piping into bash:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
|
curl https://raw.githubusercontent.com/christophe-duc/lazypodman/master/scripts/install_update_linux.sh | bash
|
||||||
```
|
```
|
||||||
The script installs downloaded binary to `$HOME/.local/bin` directory by default, but it can be changed by setting `DIR` environment variable.
|
The script installs downloaded binary to `$HOME/.local/bin` directory by default, but it can be changed by setting `DIR` environment variable.
|
||||||
|
|
||||||
|
|
@ -150,58 +150,58 @@ The script installs downloaded binary to `$HOME/.local/bin` directory by default
|
||||||
Required Go Version >= **1.19**
|
Required Go Version >= **1.19**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go install github.com/jesseduffield/lazydocker@latest
|
go install github.com/christophe-duc/lazypodman@latest
|
||||||
```
|
```
|
||||||
|
|
||||||
Required Go version >= **1.8**, <= **1.17**
|
Required Go version >= **1.8**, <= **1.17**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go get github.com/jesseduffield/lazydocker
|
go get github.com/christophe-duc/lazypodman
|
||||||
```
|
```
|
||||||
|
|
||||||
### Arch Linux AUR
|
### Arch Linux AUR
|
||||||
|
|
||||||
You can install lazydocker using the [AUR](https://aur.archlinux.org/packages/lazydocker) by running:
|
You can install lazypodman using the [AUR](https://aur.archlinux.org/packages/lazypodman) by running:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yay -S lazydocker
|
yay -S lazypodman
|
||||||
```
|
```
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
[](https://hub.docker.com/r/lazyteam/lazydocker)
|
[](https://hub.docker.com/r/christophe-duc/lazypodman)
|
||||||
[](https://hub.docker.com/r/lazyteam/lazydocker)
|
[](https://hub.docker.com/r/christophe-duc/lazypodman)
|
||||||
[](https://hub.docker.com/r/lazyteam/lazydocker)
|
[](https://hub.docker.com/r/christophe-duc/lazypodman)
|
||||||
|
|
||||||
1. <details><summary>Click if you have an ARM device</summary><p>
|
1. <details><summary>Click if you have an ARM device</summary><p>
|
||||||
|
|
||||||
- If you have a ARM 32 bit v6 architecture
|
- If you have a ARM 32 bit v6 architecture
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker build -t lazyteam/lazydocker \
|
docker build -t christophe-duc/lazypodman \
|
||||||
--build-arg BASE_IMAGE_BUILDER=arm32v6/golang \
|
--build-arg BASE_IMAGE_BUILDER=arm32v6/golang \
|
||||||
--build-arg GOARCH=arm \
|
--build-arg GOARCH=arm \
|
||||||
--build-arg GOARM=6 \
|
--build-arg GOARM=6 \
|
||||||
https://github.com/jesseduffield/lazydocker.git
|
https://github.com/christophe-duc/lazypodman.git
|
||||||
```
|
```
|
||||||
|
|
||||||
- If you have a ARM 32 bit v7 architecture
|
- If you have a ARM 32 bit v7 architecture
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker build -t lazyteam/lazydocker \
|
docker build -t christophe-duc/lazypodman \
|
||||||
--build-arg BASE_IMAGE_BUILDER=arm32v7/golang \
|
--build-arg BASE_IMAGE_BUILDER=arm32v7/golang \
|
||||||
--build-arg GOARCH=arm \
|
--build-arg GOARCH=arm \
|
||||||
--build-arg GOARM=7 \
|
--build-arg GOARM=7 \
|
||||||
https://github.com/jesseduffield/lazydocker.git
|
https://github.com/christophe-duc/lazypodman.git
|
||||||
```
|
```
|
||||||
|
|
||||||
- If you have a ARM 64 bit v8 architecture
|
- If you have a ARM 64 bit v8 architecture
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker build -t lazyteam/lazydocker \
|
docker build -t christophe-duc/lazypodman \
|
||||||
--build-arg BASE_IMAGE_BUILDER=arm64v8/golang \
|
--build-arg BASE_IMAGE_BUILDER=arm64v8/golang \
|
||||||
--build-arg GOARCH=arm64 \
|
--build-arg GOARCH=arm64 \
|
||||||
https://github.com/jesseduffield/lazydocker.git
|
https://github.com/christophe-duc/lazypodman.git
|
||||||
```
|
```
|
||||||
|
|
||||||
</p></details>
|
</p></details>
|
||||||
|
|
@ -211,16 +211,16 @@ yay -S lazydocker
|
||||||
```sh
|
```sh
|
||||||
docker run --rm -it -v \
|
docker run --rm -it -v \
|
||||||
/var/run/docker.sock:/var/run/docker.sock \
|
/var/run/docker.sock:/var/run/docker.sock \
|
||||||
-v /yourpath:/.config/jesseduffield/lazydocker \
|
-v /yourpath:/.config/christophe-duc/lazypodman \
|
||||||
lazyteam/lazydocker
|
christophe-duc/lazypodman
|
||||||
```
|
```
|
||||||
|
|
||||||
- Don't forget to change `/yourpath` to an actual path you created to store lazydocker's config
|
- Don't forget to change `/yourpath` to an actual path you created to store lazypodman's config
|
||||||
- You can also use this [docker-compose.yml](https://github.com/jesseduffield/lazydocker/blob/master/docker-compose.yml)
|
- You can also use this [docker-compose.yml](https://github.com/christophe-duc/lazypodman/blob/master/docker-compose.yml)
|
||||||
- You might want to create an alias, for example:
|
- You might want to create an alias, for example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo "alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /yourpath/config:/.config/jesseduffield/lazydocker lazyteam/lazydocker'" >> ~/.zshrc
|
echo "alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /yourpath/config:/.config/christophe-duc/lazypodman christophe-duc/lazypodman'" >> ~/.zshrc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -228,9 +228,9 @@ yay -S lazydocker
|
||||||
For development, you can build the image using:
|
For development, you can build the image using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/jesseduffield/lazydocker.git
|
git clone https://github.com/christophe-duc/lazypodman.git
|
||||||
cd lazydocker
|
cd lazypodman
|
||||||
docker build -t lazyteam/lazydocker \
|
docker build -t christophe-duc/lazypodman \
|
||||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||||
--build-arg VERSION=`git describe --abbrev=0 --tag` \
|
--build-arg VERSION=`git describe --abbrev=0 --tag` \
|
||||||
|
|
@ -246,8 +246,8 @@ so that the bundled docker binary matches your host docker binary version.
|
||||||
You'll need to [install Go](https://golang.org/doc/install)
|
You'll need to [install Go](https://golang.org/doc/install)
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/jesseduffield/lazydocker.git
|
git clone https://github.com/christophe-duc/lazypodman.git
|
||||||
cd lazydocker
|
cd lazypodman
|
||||||
go install
|
go install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -255,10 +255,10 @@ You can also use `go run main.go` to compile and run in one go (pun definitely i
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Call `lazydocker` in your terminal. I personally use this a lot so I've made an alias for it like so:
|
Call `lazypodman` in your terminal. I personally use this a lot so I've made an alias for it like so:
|
||||||
|
|
||||||
```
|
```
|
||||||
echo "alias lzd='lazydocker'" >> ~/.zshrc
|
echo "alias lzd='lazypodman'" >> ~/.zshrc
|
||||||
```
|
```
|
||||||
|
|
||||||
(you can substitute .zshrc for whatever rc file you're using)
|
(you can substitute .zshrc for whatever rc file you're using)
|
||||||
|
|
@ -289,7 +289,7 @@ For contributor discussion about things not better discussed here in the repo, j
|
||||||
|
|
||||||
## Donate
|
## Donate
|
||||||
|
|
||||||
If you would like to support the development of lazydocker, consider [sponsoring me](https://github.com/sponsors/jesseduffield) (github is matching all donations dollar-for-dollar for 12 months)
|
If you would like to support the development of lazypodman, consider [sponsoring me](https://github.com/sponsors/jesseduffield) (github is matching all donations dollar-for-dollar for 12 months)
|
||||||
|
|
||||||
## Social
|
## Social
|
||||||
|
|
||||||
|
|
@ -301,7 +301,7 @@ If you want to see what I (Jesse) am up to in terms of development, follow me on
|
||||||
|
|
||||||
### How do I edit my config?
|
### How do I edit my config?
|
||||||
|
|
||||||
By opening lazydocker, clicking on the 'project' panel in the top left, and pressing 'o' (or 'e' if your editor is vim). See [Config Docs](/docs/Config.md)
|
By opening lazypodman, clicking on the 'project' panel in the top left, and pressing 'o' (or 'e' if your editor is vim). See [Config Docs](/docs/Config.md)
|
||||||
|
|
||||||
### How do I get text to wrap in my main panel?
|
### How do I get text to wrap in my main panel?
|
||||||
|
|
||||||
|
|
@ -311,16 +311,16 @@ In the future I want to make this the default, but for now there are some CPU is
|
||||||
|
|
||||||
Because we support mouse events, you will need to hold option while dragging the mouse to indicate you're trying to select text rather than click on something. Alternatively you can disable mouse events via the `gui.ignoreMouseEvents` config value.
|
Because we support mouse events, you will need to hold option while dragging the mouse to indicate you're trying to select text rather than click on something. Alternatively you can disable mouse events via the `gui.ignoreMouseEvents` config value.
|
||||||
|
|
||||||
Mac Users: See [Issue #190](https://github.com/jesseduffield/lazydocker/issues/190) for other options.
|
Mac Users: See [Issue #190](https://github.com/christophe-duc/lazypodman/issues/190) for other options.
|
||||||
|
|
||||||
### Why can't I see my container's logs?
|
### Why can't I see my container's logs?
|
||||||
|
|
||||||
By default we only show logs from the last hour, so that we're not putting too much strain on the machine. This may be why you can't see logs when you first start lazydocker. This can be overwritten in the config's `commandTemplates`
|
By default we only show logs from the last hour, so that we're not putting too much strain on the machine. This may be why you can't see logs when you first start lazypodman. This can be overwritten in the config's `commandTemplates`
|
||||||
|
|
||||||
If you are running lazydocker in Docker container, it is a know bug, that you can't see logs or CPU usage.
|
If you are running lazypodman in Docker container, it is a know bug, that you can't see logs or CPU usage.
|
||||||
|
|
||||||
## Alternatives
|
## Alternatives
|
||||||
|
|
||||||
- [docui](https://github.com/skanehira/docui) - Skanehira beat me to the punch on making a docker terminal UI, so definitely check out that repo as well! I think the two repos can live in harmony though: lazydocker is more about managing existing containers/services, and docui is more about creating and configuring them.
|
- [docui](https://github.com/skanehira/docui) - Skanehira beat me to the punch on making a docker terminal UI, so definitely check out that repo as well! I think the two repos can live in harmony though: lazypodman is more about managing existing containers/services, and docui is more about creating and configuring them.
|
||||||
- [Portainer](https://github.com/portainer/portainer) - Portainer tries to solve the same problem but it's accessed via your browser rather than your terminal. It also supports docker swarm.
|
- [Portainer](https://github.com/portainer/portainer) - Portainer tries to solve the same problem but it's accessed via your browser rather than your terminal. It also supports docker swarm.
|
||||||
- See [Awesome Docker list](https://github.com/veggiemonk/awesome-docker/blob/master/README.md#terminal) for similar tools to work with Docker.
|
- See [Awesome Docker list](https://github.com/veggiemonk/awesome-docker/blob/master/README.md#terminal) for similar tools to work with Docker.
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
lazydocker:
|
lazypodman:
|
||||||
build:
|
build:
|
||||||
context: https://github.com/jesseduffield/lazydocker.git
|
context: https://github.com/christophe-duc/lazypodman.git
|
||||||
args:
|
args:
|
||||||
BASE_IMAGE_BUILDER: golang
|
BASE_IMAGE_BUILDER: golang
|
||||||
GOARCH: amd64
|
GOARCH: amd64
|
||||||
GOARM:
|
GOARM:
|
||||||
image: lazyteam/lazydocker
|
image: christophe-duc/lazypodman
|
||||||
container_name: lazydocker
|
container_name: lazypodman
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
tty: true
|
tty: true
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- ./config:/.config/jesseduffield/lazydocker
|
- ./config:/.config/christophe-duc/lazypodman
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
## Opening The User Config
|
## Opening The User Config
|
||||||
|
|
||||||
The location of the user config will differ depending on your OS. You can open it via lazydocker by opening the application, clicking on the 'project' panel at the top left and pressing 'o' (or pressing 'e' if your files open in vim).
|
The location of the user config will differ depending on your OS. You can open it via lazypodman by opening the application, clicking on the 'project' panel at the top left and pressing 'o' (or pressing 'e' if your files open in vim).
|
||||||
|
|
||||||
Changes to the user config will only take place after closing and re-opening lazydocker
|
Changes to the user config will only take place after closing and re-opening lazypodman
|
||||||
|
|
||||||
### Locations:
|
### Locations:
|
||||||
|
|
||||||
- OSX: `~/Library/Application Support/jesseduffield/lazydocker/config.yml`
|
- OSX: `~/Library/Application Support/christophe-duc/lazypodman/config.yml`
|
||||||
- Linux: `~/.config/lazydocker/config.yml`
|
- Linux: `~/.config/lazypodman/config.yml`
|
||||||
- Windows: `C:\Users\<User>\AppData\Roaming\lazydocker\config.yml`
|
- Windows: `C:\Users\<User>\AppData\Roaming\lazypodman\config.yml`
|
||||||
|
|
||||||
JSON schema is available for `config.yml` so that IntelliSense in Visual Studio Code
|
JSON schema is available for `config.yml` so that IntelliSense in Visual Studio Code
|
||||||
(completion and error checking) is automatically enabled when the [YAML Red Hat][yaml]
|
(completion and error checking) is automatically enabled when the [YAML Red Hat][yaml]
|
||||||
|
|
@ -19,7 +19,7 @@ if your config file is in one of the standard paths mentioned above. If you
|
||||||
override the path to the file, you can still make IntelliSense work by adding
|
override the path to the file, you can still make IntelliSense work by adding
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# yaml-language-server: $schema=https://json.schemastore.org/lazydocker.json
|
# yaml-language-server: $schema=https://json.schemastore.org/lazypodman.json
|
||||||
```
|
```
|
||||||
|
|
||||||
to the top of your config file or via [Visual Studio Code settings.json config][settings].
|
to the top of your config file or via [Visual Studio Code settings.json config][settings].
|
||||||
|
|
@ -95,7 +95,7 @@ stats:
|
||||||
color: green
|
color: green
|
||||||
```
|
```
|
||||||
|
|
||||||
## To see what all of the config options mean, and what other options you can set, see [here](https://godoc.org/github.com/jesseduffield/lazydocker/pkg/config)
|
## To see what all of the config options mean, and what other options you can set, see [here](https://godoc.org/github.com/christophe-duc/lazypodman/pkg/config)
|
||||||
|
|
||||||
## Color Attributes:
|
## Color Attributes:
|
||||||
|
|
||||||
|
|
@ -130,8 +130,8 @@ customCommands:
|
||||||
|
|
||||||
You may use the following go templates (such as `{{ .Container.ID }}` above) in your commands:
|
You may use the following go templates (such as `{{ .Container.ID }}` above) in your commands:
|
||||||
- `{{ .DockerCompose }}`: the docker compose command (default: `docker-compose`)
|
- `{{ .DockerCompose }}`: the docker compose command (default: `docker-compose`)
|
||||||
- [`{{ .Container }}`](https://pkg.go.dev/github.com/jesseduffield/lazydocker@v0.20.0/pkg/commands#Container) and its fields. For example: `{{ .Container.Container.ImageID }}`
|
- [`{{ .Container }}`](https://pkg.go.dev/github.com/christophe-duc/lazypodman@v0.20.0/pkg/commands#Container) and its fields. For example: `{{ .Container.Container.ImageID }}`
|
||||||
- [`{{ .Service }}`](https://pkg.go.dev/github.com/jesseduffield/lazydocker@v0.20.0/pkg/commands#Service) and its fields. For example: `{{ .Service.Name }}`
|
- [`{{ .Service }}`](https://pkg.go.dev/github.com/christophe-duc/lazypodman@v0.20.0/pkg/commands#Service) and its fields. For example: `{{ .Service.Name }}`
|
||||||
|
|
||||||
## Replacements
|
## Replacements
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## Projekt
|
## Projekt
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: bearbeite lazydocker Konfiguration
|
<kbd>e</kbd>: bearbeite lazypodman Konfiguration
|
||||||
<kbd>o</kbd>: öffne lazydocker Konfiguration
|
<kbd>o</kbd>: öffne lazypodman Konfiguration
|
||||||
<kbd>m</kbd>: zeige Protokolle
|
<kbd>m</kbd>: zeige Protokolle
|
||||||
<kbd>enter</kbd>: fokussieren aufs Hauptpanel
|
<kbd>enter</kbd>: fokussieren aufs Hauptpanel
|
||||||
<kbd>[</kbd>: vorheriges Tab
|
<kbd>[</kbd>: vorheriges Tab
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## Project
|
## Project
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: edit lazydocker config
|
<kbd>e</kbd>: edit lazypodman config
|
||||||
<kbd>o</kbd>: open lazydocker config
|
<kbd>o</kbd>: open lazypodman config
|
||||||
<kbd>m</kbd>: view logs
|
<kbd>m</kbd>: view logs
|
||||||
<kbd>enter</kbd>: focus main panel
|
<kbd>enter</kbd>: focus main panel
|
||||||
<kbd>[</kbd>: previous tab
|
<kbd>[</kbd>: previous tab
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## Proyecto
|
## Proyecto
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: editar configuración de lazydocker
|
<kbd>e</kbd>: editar configuración de lazypodman
|
||||||
<kbd>o</kbd>: abrir configuración de lazydocker
|
<kbd>o</kbd>: abrir configuración de lazypodman
|
||||||
<kbd>m</kbd>: ver logs
|
<kbd>m</kbd>: ver logs
|
||||||
<kbd>enter</kbd>: enfocar panel principal
|
<kbd>enter</kbd>: enfocar panel principal
|
||||||
<kbd>[</kbd>: anterior pestaña
|
<kbd>[</kbd>: anterior pestaña
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## Projet
|
## Projet
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: modifier la configuration lazydocker
|
<kbd>e</kbd>: modifier la configuration lazypodman
|
||||||
<kbd>o</kbd>: ouvrir la configuration lazydocker
|
<kbd>o</kbd>: ouvrir la configuration lazypodman
|
||||||
<kbd>m</kbd>: voir les enregistrements
|
<kbd>m</kbd>: voir les enregistrements
|
||||||
<kbd>enter</kbd>: focus panneau principal
|
<kbd>enter</kbd>: focus panneau principal
|
||||||
<kbd>[</kbd>: onglet précédent
|
<kbd>[</kbd>: onglet précédent
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## Project
|
## Project
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: verander de lazydocker configuratie
|
<kbd>e</kbd>: verander de lazypodman configuratie
|
||||||
<kbd>o</kbd>: open de lazydocker configuratie
|
<kbd>o</kbd>: open de lazypodman configuratie
|
||||||
<kbd>m</kbd>: bekijk logs
|
<kbd>m</kbd>: bekijk logs
|
||||||
<kbd>enter</kbd>: focus hoofdpaneel
|
<kbd>enter</kbd>: focus hoofdpaneel
|
||||||
<kbd>[</kbd>: vorige tab
|
<kbd>[</kbd>: vorige tab
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## Projeto
|
## Projeto
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: editar configuração do lazydocker
|
<kbd>e</kbd>: editar configuração do lazypodman
|
||||||
<kbd>o</kbd>: abrir configuração do lazydocker
|
<kbd>o</kbd>: abrir configuração do lazypodman
|
||||||
<kbd>m</kbd>: ver logs
|
<kbd>m</kbd>: ver logs
|
||||||
<kbd>enter</kbd>: focar no painel principal
|
<kbd>enter</kbd>: focar no painel principal
|
||||||
<kbd>[</kbd>: aba anterior
|
<kbd>[</kbd>: aba anterior
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: lazzydocker ayarlarını düzenle
|
<kbd>e</kbd>: lazzydocker ayarlarını düzenle
|
||||||
<kbd>o</kbd>: lazydocker ayarlarını aç
|
<kbd>o</kbd>: lazypodman ayarlarını aç
|
||||||
<kbd>m</kbd>: kayıt defterini görüntüle
|
<kbd>m</kbd>: kayıt defterini görüntüle
|
||||||
<kbd>enter</kbd>: ana panele odaklan
|
<kbd>enter</kbd>: ana panele odaklan
|
||||||
<kbd>[</kbd>: önceki sekme
|
<kbd>[</kbd>: önceki sekme
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
||||||
## 项目
|
## 项目
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<kbd>e</kbd>: 编辑lazydocker配置
|
<kbd>e</kbd>: 编辑lazypodman配置
|
||||||
<kbd>o</kbd>: 打开lazydocker配置
|
<kbd>o</kbd>: 打开lazypodman配置
|
||||||
<kbd>m</kbd>: 查看日志
|
<kbd>m</kbd>: 查看日志
|
||||||
<kbd>enter</kbd>: 聚焦主面板
|
<kbd>enter</kbd>: 聚焦主面板
|
||||||
<kbd>[</kbd>: 上一个选项卡
|
<kbd>[</kbd>: 上一个选项卡
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -1,4 +1,4 @@
|
||||||
module github.com/jesseduffield/lazydocker
|
module github.com/christophe-duc/lazypodman
|
||||||
|
|
||||||
go 1.22
|
go 1.22
|
||||||
|
|
||||||
|
|
|
||||||
BIN
lazypodman
Executable file
BIN
lazypodman
Executable file
Binary file not shown.
16
main.go
16
main.go
|
|
@ -11,9 +11,9 @@ import (
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
"github.com/go-errors/errors"
|
"github.com/go-errors/errors"
|
||||||
"github.com/integrii/flaggy"
|
"github.com/integrii/flaggy"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/app"
|
"github.com/christophe-duc/lazypodman/pkg/app"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/jesseduffield/yaml"
|
"github.com/jesseduffield/yaml"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
@ -44,9 +44,9 @@ func main() {
|
||||||
runtime.GOARCH,
|
runtime.GOARCH,
|
||||||
)
|
)
|
||||||
|
|
||||||
flaggy.SetName("lazydocker")
|
flaggy.SetName("lazypodman")
|
||||||
flaggy.SetDescription("The lazier way to manage everything docker")
|
flaggy.SetDescription("The lazier way to manage everything podman")
|
||||||
flaggy.DefaultParser.AdditionalHelpPrepend = "https://github.com/jesseduffield/lazydocker"
|
flaggy.DefaultParser.AdditionalHelpPrepend = "https://github.com/christophe-duc/lazypodman"
|
||||||
|
|
||||||
flaggy.Bool(&configFlag, "c", "config", "Print the current default config")
|
flaggy.Bool(&configFlag, "c", "config", "Print the current default config")
|
||||||
flaggy.Bool(&debuggingFlag, "d", "debug", "a boolean")
|
flaggy.Bool(&debuggingFlag, "d", "debug", "a boolean")
|
||||||
|
|
@ -71,7 +71,7 @@ func main() {
|
||||||
log.Fatal(err.Error())
|
log.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
appConfig, err := config.NewAppConfig("lazydocker", version, commit, date, buildSource, debuggingFlag, composeFiles, projectDir)
|
appConfig, err := config.NewAppConfig("lazypodman", version, commit, date, buildSource, debuggingFlag, composeFiles, projectDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err.Error())
|
log.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
@ -109,7 +109,7 @@ func updateBuildInfo() {
|
||||||
})
|
})
|
||||||
if ok {
|
if ok {
|
||||||
commit = revision.Value
|
commit = revision.Value
|
||||||
// if lazydocker was built from source we'll show the version as the
|
// if lazypodman was built from source we'll show the version as the
|
||||||
// abbreviated commit hash
|
// abbreviated commit hash
|
||||||
version = utils.SafeTruncate(revision.Value, 7)
|
version = utils.SafeTruncate(revision.Value, 7)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,12 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui"
|
"github.com/christophe-duc/lazypodman/pkg/gui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/log"
|
"github.com/christophe-duc/lazypodman/pkg/log"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/app"
|
"github.com/christophe-duc/lazypodman/pkg/app"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui"
|
"github.com/christophe-duc/lazypodman/pkg/gui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -33,7 +33,7 @@ func Generate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateAtDir(dir string) {
|
func generateAtDir(dir string) {
|
||||||
mConfig, err := config.NewAppConfig("lazydocker", "", "", "", "", true, nil, "")
|
mConfig, err := config.NewAppConfig("lazypodman", "", "", "", "", true, nil, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import (
|
||||||
|
|
||||||
func Check() {
|
func Check() {
|
||||||
dir := GetKeybindingsDir()
|
dir := GetKeybindingsDir()
|
||||||
tmpDir := filepath.Join(os.TempDir(), "lazydocker_cheatsheet")
|
tmpDir := filepath.Join(os.TempDir(), "lazypodman_cheatsheet")
|
||||||
|
|
||||||
err := os.RemoveAll(tmpDir)
|
err := os.RemoveAll(tmpDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ import (
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
"github.com/go-errors/errors"
|
"github.com/go-errors/errors"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/sasha-s/go-deadlock"
|
"github.com/sasha-s/go-deadlock"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,10 @@ import (
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
"github.com/imdario/mergo"
|
"github.com/imdario/mergo"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands/ssh"
|
"github.com/christophe-duc/lazypodman/pkg/commands/ssh"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/sasha-s/go-deadlock"
|
"github.com/sasha-s/go-deadlock"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ package commands
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ func NewDummyOSCommand() *OSCommand {
|
||||||
// NewDummyAppConfig creates a new dummy AppConfig for testing
|
// NewDummyAppConfig creates a new dummy AppConfig for testing
|
||||||
func NewDummyAppConfig() *config.AppConfig {
|
func NewDummyAppConfig() *config.AppConfig {
|
||||||
appConfig := &config.AppConfig{
|
appConfig := &config.AppConfig{
|
||||||
Name: "lazydocker",
|
Name: "lazypodman",
|
||||||
Version: "unversioned",
|
Version: "unversioned",
|
||||||
Commit: "",
|
Commit: "",
|
||||||
BuildDate: "",
|
BuildDate: "",
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/docker/docker/api/types/image"
|
"github.com/docker/docker/api/types/image"
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ import (
|
||||||
"github.com/go-errors/errors"
|
"github.com/go-errors/errors"
|
||||||
|
|
||||||
"github.com/jesseduffield/kill"
|
"github.com/jesseduffield/kill"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/mgutz/str"
|
"github.com/mgutz/str"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ func (t *tunneledDockerHost) Close() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *SSHHandler) createDockerHostTunnel(ctx context.Context, remoteHost string) (*tunneledDockerHost, error) {
|
func (self *SSHHandler) createDockerHostTunnel(ctx context.Context, remoteHost string) (*tunneledDockerHost, error) {
|
||||||
socketDir, err := self.tempDir("/tmp", "lazydocker-sshtunnel-")
|
socketDir, err := self.tempDir("/tmp", "lazypodman-sshtunnel-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("create ssh tunnel tmp file: %w", err)
|
return nil, fmt.Errorf("create ssh tunnel tmp file: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,20 +51,20 @@ func TestSSHHandlerHandleSSHDockerHost(t *testing.T) {
|
||||||
|
|
||||||
tempDir := func(dir string, pattern string) (string, error) {
|
tempDir := func(dir string, pattern string) (string, error) {
|
||||||
assert.Equal(t, "/tmp", dir)
|
assert.Equal(t, "/tmp", dir)
|
||||||
assert.Equal(t, "lazydocker-sshtunnel-", pattern)
|
assert.Equal(t, "lazypodman-sshtunnel-", pattern)
|
||||||
|
|
||||||
return "/tmp/lazydocker-ssh-tunnel-12345", nil
|
return "/tmp/lazypodman-ssh-tunnel-12345", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
setenv := func(key, value string) error {
|
setenv := func(key, value string) error {
|
||||||
assert.Equal(t, "DOCKER_HOST", key)
|
assert.Equal(t, "DOCKER_HOST", key)
|
||||||
assert.Equal(t, "unix:///tmp/lazydocker-ssh-tunnel-12345/dockerhost.sock", value)
|
assert.Equal(t, "unix:///tmp/lazypodman-ssh-tunnel-12345/dockerhost.sock", value)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
startCmdCount := 0
|
startCmdCount := 0
|
||||||
startCmd := func(cmd *exec.Cmd) error {
|
startCmd := func(cmd *exec.Cmd) error {
|
||||||
assert.EqualValues(t, []string{"ssh", "-L", "/tmp/lazydocker-ssh-tunnel-12345/dockerhost.sock:/var/run/docker.sock", "192.168.5.178", "-N"}, cmd.Args)
|
assert.EqualValues(t, []string{"ssh", "-L", "/tmp/lazypodman-ssh-tunnel-12345/dockerhost.sock:/var/run/docker.sock", "192.168.5.178", "-N"}, cmd.Args)
|
||||||
|
|
||||||
startCmdCount++
|
startCmdCount++
|
||||||
|
|
||||||
|
|
@ -74,7 +74,7 @@ func TestSSHHandlerHandleSSHDockerHost(t *testing.T) {
|
||||||
dialContextCount := 0
|
dialContextCount := 0
|
||||||
dialContext := func(ctx context.Context, network string, address string) (io.Closer, error) {
|
dialContext := func(ctx context.Context, network string, address string) (io.Closer, error) {
|
||||||
assert.Equal(t, "unix", network)
|
assert.Equal(t, "unix", network)
|
||||||
assert.Equal(t, "/tmp/lazydocker-ssh-tunnel-12345/dockerhost.sock", address)
|
assert.Equal(t, "/tmp/lazypodman-ssh-tunnel-12345/dockerhost.sock", address)
|
||||||
|
|
||||||
dialContextCount++
|
dialContextCount++
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Package config handles all the user-configuration. The fields here are
|
// Package config handles all the user-configuration. The fields here are
|
||||||
// all in PascalCase but in your actual config.yml they'll be in camelCase.
|
// all in PascalCase but in your actual config.yml they'll be in camelCase.
|
||||||
// You can view the default config with `lazydocker --config`.
|
// You can view the default config with `lazypodman --config`.
|
||||||
// You can open your config file by going to the status panel (using left-arrow)
|
// You can open your config file by going to the status panel (using left-arrow)
|
||||||
// and pressing 'o'.
|
// and pressing 'o'.
|
||||||
// You can directly edit the file (e.g. in vim) by pressing 'e' instead.
|
// You can directly edit the file (e.g. in vim) by pressing 'e' instead.
|
||||||
|
|
@ -53,7 +53,7 @@ type UserConfig struct {
|
||||||
// OS determines what defaults are set for opening files and links
|
// OS determines what defaults are set for opening files and links
|
||||||
OS OSConfig `yaml:"oS,omitempty"`
|
OS OSConfig `yaml:"oS,omitempty"`
|
||||||
|
|
||||||
// Stats determines how long lazydocker will gather container stats for, and
|
// Stats determines how long lazypodman will gather container stats for, and
|
||||||
// what stat info to graph
|
// what stat info to graph
|
||||||
Stats StatsConfig `yaml:"stats,omitempty"`
|
Stats StatsConfig `yaml:"stats,omitempty"`
|
||||||
|
|
||||||
|
|
@ -106,9 +106,9 @@ type GuiConfig struct {
|
||||||
ShowAllContainers bool `yaml:"showAllContainers,omitempty"`
|
ShowAllContainers bool `yaml:"showAllContainers,omitempty"`
|
||||||
|
|
||||||
// ReturnImmediately determines whether you get the 'press enter to return to
|
// ReturnImmediately determines whether you get the 'press enter to return to
|
||||||
// lazydocker' message after a subprocess has completed. You would set this to
|
// lazypodman' message after a subprocess has completed. You would set this to
|
||||||
// true if you often want to see the output of subprocesses before returning
|
// true if you often want to see the output of subprocesses before returning
|
||||||
// to lazydocker. I would default this to false but then people who want it
|
// to lazypodman. I would default this to false but then people who want it
|
||||||
// set to true won't even know the config option exists.
|
// set to true won't even know the config option exists.
|
||||||
ReturnImmediately bool `yaml:"returnImmediately,omitempty"`
|
ReturnImmediately bool `yaml:"returnImmediately,omitempty"`
|
||||||
|
|
||||||
|
|
@ -254,7 +254,7 @@ type GraphConfig struct {
|
||||||
|
|
||||||
// This is the path to the stat that you want to display. It is based on the
|
// This is the path to the stat that you want to display. It is based on the
|
||||||
// RecordedStats struct in container_stats.go, so feel free to look there to
|
// RecordedStats struct in container_stats.go, so feel free to look there to
|
||||||
// see all the options available. Alternatively if you go into lazydocker and
|
// see all the options available. Alternatively if you go into lazypodman and
|
||||||
// go to the stats tab, you'll see that same struct in JSON format, so you can
|
// go to the stats tab, you'll see that same struct in JSON format, so you can
|
||||||
// just PascalCase the path and you'll have a valid path. E.g.
|
// just PascalCase the path and you'll have a valid path. E.g.
|
||||||
// ClientStats.blkio_stats -> "ClientStats.BlkioStats"
|
// ClientStats.blkio_stats -> "ClientStats.BlkioStats"
|
||||||
|
|
@ -336,7 +336,7 @@ type CustomCommand struct {
|
||||||
// the customCommand config.
|
// the customCommand config.
|
||||||
ServiceNames []string `yaml:"serviceNames"`
|
ServiceNames []string `yaml:"serviceNames"`
|
||||||
|
|
||||||
// InternalFunction is the name of a function inside lazydocker that we want to run, as opposed to a command-line command. This is only used internally and can't be configured by the user
|
// InternalFunction is the name of a function inside lazypodman that we want to run, as opposed to a command-line command. This is only used internally and can't be configured by the user
|
||||||
InternalFunction func() error `yaml:"-"`
|
InternalFunction func() error `yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -477,13 +477,13 @@ func GetDefaultConfig() UserConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AppConfig contains the base configuration fields required for lazydocker.
|
// AppConfig contains the base configuration fields required for lazypodman.
|
||||||
type AppConfig struct {
|
type AppConfig struct {
|
||||||
Debug bool `long:"debug" env:"DEBUG" default:"false"`
|
Debug bool `long:"debug" env:"DEBUG" default:"false"`
|
||||||
Version string `long:"version" env:"VERSION" default:"unversioned"`
|
Version string `long:"version" env:"VERSION" default:"unversioned"`
|
||||||
Commit string `long:"commit" env:"COMMIT"`
|
Commit string `long:"commit" env:"COMMIT"`
|
||||||
BuildDate string `long:"build-date" env:"BUILD_DATE"`
|
BuildDate string `long:"build-date" env:"BUILD_DATE"`
|
||||||
Name string `long:"name" env:"NAME" default:"lazydocker"`
|
Name string `long:"name" env:"NAME" default:"lazypodman"`
|
||||||
BuildSource string `long:"build-source" env:"BUILD_SOURCE" default:""`
|
BuildSource string `long:"build-source" env:"BUILD_SOURCE" default:""`
|
||||||
UserConfig *UserConfig
|
UserConfig *UserConfig
|
||||||
ConfigDir string
|
ConfigDir string
|
||||||
|
|
@ -532,7 +532,7 @@ func configDirForVendor(vendor string, projectName string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func configDir(projectName string) string {
|
func configDir(projectName string) string {
|
||||||
legacyConfigDirectory := configDirForVendor("jesseduffield", projectName)
|
legacyConfigDirectory := configDirForVendor("christophe-duc", projectName)
|
||||||
if _, err := os.Stat(legacyConfigDirectory); !os.IsNotExist(err) {
|
if _, err := os.Stat(legacyConfigDirectory); !os.IsNotExist(err) {
|
||||||
return legacyConfigDirectory
|
return legacyConfigDirectory
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type appStatus struct {
|
type appStatus struct {
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ package gui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/lazycore/pkg/boxlayout"
|
"github.com/jesseduffield/lazycore/pkg/boxlayout"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/mattn/go-runewidth"
|
"github.com/mattn/go-runewidth"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,9 @@ import (
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/docker/docker/pkg/stdcopy"
|
"github.com/docker/docker/pkg/stdcopy"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) renderContainerLogsToMain(container *commands.Container) tasks.TaskFunc {
|
func (gui *Gui) renderContainerLogsToMain(container *commands.Container) tasks.TaskFunc {
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ import (
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ package gui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package gui
|
||||||
import (
|
import (
|
||||||
"github.com/gookit/color"
|
"github.com/gookit/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var gocuiColorMap = map[string]gocui.Attribute{
|
var gocuiColorMap = map[string]gocui.Attribute{
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,12 @@ import (
|
||||||
throttle "github.com/boz/go-throttle"
|
throttle "github.com/boz/go-throttle"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
lcUtils "github.com/jesseduffield/lazycore/pkg/utils"
|
lcUtils "github.com/jesseduffield/lazycore/pkg/utils"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/sasha-s/go-deadlock"
|
"github.com/sasha-s/go-deadlock"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
@ -182,7 +182,7 @@ func (gui *Gui) goEvery(interval time.Duration, function func() error) {
|
||||||
|
|
||||||
// Run setup the gui with keybindings and start the mainloop
|
// Run setup the gui with keybindings and start the mainloop
|
||||||
func (gui *Gui) Run() error {
|
func (gui *Gui) Run() error {
|
||||||
// closing our task manager which in turn closes the current task if there is any, so we aren't leaving processes lying around after closing lazydocker
|
// closing our task manager which in turn closes the current task if there is any, so we aren't leaving processes lying around after closing lazypodman
|
||||||
defer gui.taskManager.Close()
|
defer gui.taskManager.Close()
|
||||||
|
|
||||||
g, err := gocui.NewGui(gocui.NewGuiOpts{
|
g, err := gocui.NewGui(gocui.NewGuiOpts{
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,13 @@ import (
|
||||||
"github.com/docker/docker/api/types/image"
|
"github.com/docker/docker/api/types/image"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package gui
|
package gui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateMenuOptions struct {
|
type CreateMenuOptions struct {
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ import (
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
|
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) getBindings(v *gocui.View) []*Binding {
|
func (gui *Gui) getBindings(v *gocui.View) []*Binding {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package gui
|
package gui
|
||||||
|
|
||||||
import "github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
import "github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
|
|
||||||
func (gui *Gui) intoInterface() panels.IGui {
|
func (gui *Gui) intoInterface() panels.IGui {
|
||||||
return gui
|
return gui
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package panels
|
package panels
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ import (
|
||||||
|
|
||||||
"github.com/go-errors/errors"
|
"github.com/go-errors/errors"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ import (
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/asciigraph"
|
"github.com/jesseduffield/asciigraph"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/mcuadros/go-lookup"
|
"github.com/mcuadros/go-lookup"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@ import (
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package presentation
|
package presentation
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetImageDisplayStrings(image *commands.Image) []string {
|
func GetImageDisplayStrings(image *commands.Image) []string {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package presentation
|
package presentation
|
||||||
|
|
||||||
import "github.com/jesseduffield/lazydocker/pkg/gui/types"
|
import "github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
|
|
||||||
func GetMenuItemDisplayStrings(menuItem *types.MenuItem) []string {
|
func GetMenuItemDisplayStrings(menuItem *types.MenuItem) []string {
|
||||||
return menuItem.LabelColumns
|
return menuItem.LabelColumns
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package presentation
|
package presentation
|
||||||
|
|
||||||
import "github.com/jesseduffield/lazydocker/pkg/commands"
|
import "github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
|
|
||||||
func GetNetworkDisplayStrings(network *commands.Network) []string {
|
func GetNetworkDisplayStrings(network *commands.Network) []string {
|
||||||
return []string{network.Network.Driver, network.Name}
|
return []string{network.Network.Driver, network.Name}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package presentation
|
package presentation
|
||||||
|
|
||||||
import "github.com/jesseduffield/lazydocker/pkg/commands"
|
import "github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
|
|
||||||
func GetProjectDisplayStrings(project *commands.Project) []string {
|
func GetProjectDisplayStrings(project *commands.Project) []string {
|
||||||
return []string{project.Name}
|
return []string{project.Name}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ package presentation
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetServiceDisplayStrings(guiConfig *config.GuiConfig, service *commands.Service) []string {
|
func GetServiceDisplayStrings(guiConfig *config.GuiConfig, service *commands.Service) []string {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package presentation
|
package presentation
|
||||||
|
|
||||||
import "github.com/jesseduffield/lazydocker/pkg/commands"
|
import "github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
|
|
||||||
func GetVolumeDisplayStrings(volume *commands.Volume) []string {
|
func GetVolumeDisplayStrings(volume *commands.Volume) []string {
|
||||||
return []string{volume.Volume.Driver, volume.Name}
|
return []string{volume.Volume.Driver, volume.Name}
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ import (
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/jesseduffield/yaml"
|
"github.com/jesseduffield/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -101,13 +101,13 @@ func (gui *Gui) creditsStr() string {
|
||||||
|
|
||||||
return strings.Join(
|
return strings.Join(
|
||||||
[]string{
|
[]string{
|
||||||
lazydockerTitle(),
|
lazypodmanTitle(),
|
||||||
"Copyright (c) 2019 Jesse Duffield",
|
"Copyright (c) 2019 Jesse Duffield",
|
||||||
"Keybindings: https://github.com/jesseduffield/lazydocker/blob/master/docs/keybindings",
|
"Keybindings: https://github.com/christophe-duc/lazypodman/blob/master/docs/keybindings",
|
||||||
"Config Options: https://github.com/jesseduffield/lazydocker/blob/master/docs/Config.md",
|
"Config Options: https://github.com/christophe-duc/lazypodman/blob/master/docs/Config.md",
|
||||||
"Raise an Issue: https://github.com/jesseduffield/lazydocker/issues",
|
"Raise an Issue: https://github.com/christophe-duc/lazypodman/issues",
|
||||||
utils.ColoredString("Buy Jesse a coffee: https://github.com/sponsors/jesseduffield", color.FgMagenta), // caffeine ain't free
|
utils.ColoredString("Buy Jesse a coffee: https://github.com/sponsors/jesseduffield", color.FgMagenta), // caffeine ain't free
|
||||||
"Here's your lazydocker config when merged in with the defaults (you can open your config by pressing 'o'):",
|
"Here's your lazypodman config when merged in with the defaults (you can open your config by pressing 'o'):",
|
||||||
utils.ColoredYamlString(configBuf.String()),
|
utils.ColoredYamlString(configBuf.String()),
|
||||||
}, "\n\n")
|
}, "\n\n")
|
||||||
}
|
}
|
||||||
|
|
@ -158,7 +158,7 @@ func (gui *Gui) handleEditConfig(g *gocui.Gui, v *gocui.View) error {
|
||||||
return gui.editFile(gui.Config.ConfigFilename())
|
return gui.editFile(gui.Config.ConfigFilename())
|
||||||
}
|
}
|
||||||
|
|
||||||
func lazydockerTitle() string {
|
func lazypodmanTitle() string {
|
||||||
return `
|
return `
|
||||||
_ _ _
|
_ _ _
|
||||||
| | | | | |
|
| | | | | |
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,13 @@ import (
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) runSubprocess(cmd *exec.Cmd) error {
|
func (gui *Gui) runSubprocess(cmd *exec.Cmd) error {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) QueueTask(f func(ctx context.Context)) error {
|
func (gui *Gui) QueueTask(f func(ctx context.Context)) error {
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
"github.com/spkg/bom"
|
"github.com/spkg/bom"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ import (
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
"github.com/christophe-duc/lazypodman/pkg/commands"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/panels"
|
"github.com/christophe-duc/lazypodman/pkg/gui/panels"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/presentation"
|
"github.com/christophe-duc/lazypodman/pkg/gui/presentation"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/gui/types"
|
"github.com/christophe-duc/lazypodman/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/tasks"
|
"github.com/christophe-duc/lazypodman/pkg/tasks"
|
||||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
"github.com/christophe-duc/lazypodman/pkg/utils"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package gui
|
package gui
|
||||||
|
|
||||||
// func (gui *Gui) currentWindow() string {
|
// func (gui *Gui) currentWindow() string {
|
||||||
// // at the moment, we only have one view per window in lazydocker, so we
|
// // at the moment, we only have one view per window in lazypodman, so we
|
||||||
// // are using the view name as the window name
|
// // are using the view name as the window name
|
||||||
// return gui.currentViewName()
|
// return gui.currentViewName()
|
||||||
// }
|
// }
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ func chineseSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "没有匹配 newLineFocused switch 语句的视图",
|
NoViewMachingNewLineFocusedSwitchStatement: "没有匹配 newLineFocused switch 语句的视图",
|
||||||
|
|
||||||
ErrorOccurred: "发生错误!请在 https://github.com/jesseduffield/lazydocker/issues 上创建一个问题",
|
ErrorOccurred: "发生错误!请在 https://github.com/christophe-duc/lazypodman/issues 上创建一个问题",
|
||||||
ConnectionFailed: "无法连接到 Docker 客户端。您可能需要重新启动 Docker 客户端",
|
ConnectionFailed: "无法连接到 Docker 客户端。您可能需要重新启动 Docker 客户端",
|
||||||
UnattachableContainerError: "容器不支持 attaching。您必须使用“-it”标志运行服务,或者在docker-compose.yml文件中使用`stdin_open: true,tty: true`",
|
UnattachableContainerError: "容器不支持 attaching。您必须使用“-it”标志运行服务,或者在docker-compose.yml文件中使用`stdin_open: true,tty: true`",
|
||||||
WaitingForContainerInfo: "在 Docker 给我们更多关于容器的信息之前,无法继续。请几分钟后重试。",
|
WaitingForContainerInfo: "在 Docker 给我们更多关于容器的信息之前,无法继续。请几分钟后重试。",
|
||||||
CannotAttachStoppedContainerError: "您不能 attach 到已停止的容器,您需要先启动它(您可以用 'r' 键来执行此操作)(是的,我懒得为您自动执行此操作)(很酷的是,我可以通过错误消息与您进行一对一的通讯)",
|
CannotAttachStoppedContainerError: "您不能 attach 到已停止的容器,您需要先启动它(您可以用 'r' 键来执行此操作)(是的,我懒得为您自动执行此操作)(很酷的是,我可以通过错误消息与您进行一对一的通讯)",
|
||||||
CannotAccessDockerSocketError: "无法访问 Docker 套接字:unix:///var/run/docker.sock\n请以 root 用户身份运行 lazydocker 或阅读https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "无法访问 Docker 套接字:unix:///var/run/docker.sock\n请以 root 用户身份运行 lazypodman 或阅读https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
CannotKillChildError: "等待三秒钟以停止子进程。可能有一个孤儿进程在您的系统上继续运行。",
|
CannotKillChildError: "等待三秒钟以停止子进程。可能有一个孤儿进程在您的系统上继续运行。",
|
||||||
|
|
||||||
Donate: "捐赠",
|
Donate: "捐赠",
|
||||||
|
|
@ -37,8 +37,8 @@ func chineseSet() TranslationSet {
|
||||||
Menu: "菜单",
|
Menu: "菜单",
|
||||||
MenuTitle: "菜单",
|
MenuTitle: "菜单",
|
||||||
Scroll: "滚动",
|
Scroll: "滚动",
|
||||||
OpenConfig: "打开lazydocker配置",
|
OpenConfig: "打开lazypodman配置",
|
||||||
EditConfig: "编辑lazydocker配置",
|
EditConfig: "编辑lazypodman配置",
|
||||||
Cancel: "取消",
|
Cancel: "取消",
|
||||||
Remove: "移除",
|
Remove: "移除",
|
||||||
HideStopped: "隐藏/显示已停止的容器",
|
HideStopped: "隐藏/显示已停止的容器",
|
||||||
|
|
@ -124,7 +124,7 @@ func chineseSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "您确定要删除所有未使用的网络吗?",
|
ConfirmPruneNetworks: "您确定要删除所有未使用的网络吗?",
|
||||||
StopService: "您确定要停止此服务的容器吗?",
|
StopService: "您确定要停止此服务的容器吗?",
|
||||||
StopContainer: "您确定要停止此容器吗?",
|
StopContainer: "您确定要停止此容器吗?",
|
||||||
PressEnterToReturn: "按 enter 返回 lazydocker(您可以在配置文件中设置 `gui.returnImmediately: true` 来禁用此提示)",
|
PressEnterToReturn: "按 enter 返回 lazypodman(您可以在配置文件中设置 `gui.returnImmediately: true` 来禁用此提示)",
|
||||||
|
|
||||||
No: "否",
|
No: "否",
|
||||||
Yes: "是",
|
Yes: "是",
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,11 @@ func dutchSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
||||||
|
|
||||||
ErrorOccurred: "Er is iets fout gegaan! Zou je hier een issue aan willen maken: https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "Er is iets fout gegaan! Zou je hier een issue aan willen maken: https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "connectie naar de docker client mislukt. Het zou kunnen dat je de docker client moet herstarten",
|
ConnectionFailed: "connectie naar de docker client mislukt. Het zou kunnen dat je de docker client moet herstarten",
|
||||||
UnattachableContainerError: "Container heeft geen ondersteuning voor vastmaken. Je zou de service met het '-it' argument kunnen draaien of stop dit in je `stdin_open: true, tty: true` docker-compose.yml",
|
UnattachableContainerError: "Container heeft geen ondersteuning voor vastmaken. Je zou de service met het '-it' argument kunnen draaien of stop dit in je `stdin_open: true, tty: true` docker-compose.yml",
|
||||||
CannotAttachStoppedContainerError: "Je kan niet een vastgemaakte container stoppen, je moet het eerst starten (dit kan je doen met de 'r' toets) (ja ik ben te leu om dat voor je te doen automatisch)",
|
CannotAttachStoppedContainerError: "Je kan niet een vastgemaakte container stoppen, je moet het eerst starten (dit kan je doen met de 'r' toets) (ja ik ben te leu om dat voor je te doen automatisch)",
|
||||||
CannotAccessDockerSocketError: "Kan de docker socket niet bereiken: unix:///var/run/docker.sock\nDraai lazydocker als root of lees https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "Kan de docker socket niet bereiken: unix:///var/run/docker.sock\nDraai lazypodman als root of lees https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
|
|
||||||
Donate: "Doneer",
|
Donate: "Doneer",
|
||||||
Confirm: "Bevestigen",
|
Confirm: "Bevestigen",
|
||||||
|
|
@ -27,8 +27,8 @@ func dutchSet() TranslationSet {
|
||||||
Menu: "menu",
|
Menu: "menu",
|
||||||
MenuTitle: "Menu",
|
MenuTitle: "Menu",
|
||||||
Scroll: "scroll",
|
Scroll: "scroll",
|
||||||
OpenConfig: "open de lazydocker configuratie",
|
OpenConfig: "open de lazypodman configuratie",
|
||||||
EditConfig: "verander de lazydocker configuratie",
|
EditConfig: "verander de lazypodman configuratie",
|
||||||
Cancel: "annuleren",
|
Cancel: "annuleren",
|
||||||
Remove: "verwijder",
|
Remove: "verwijder",
|
||||||
HideStopped: "verberg gestopte containers",
|
HideStopped: "verberg gestopte containers",
|
||||||
|
|
@ -92,7 +92,7 @@ func dutchSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Weet je zeker dat je alle niet gebruikte networks wil vernietigen?",
|
ConfirmPruneNetworks: "Weet je zeker dat je alle niet gebruikte networks wil vernietigen?",
|
||||||
StopService: "Weet je zeker dat je deze service zijn containers wil stoppen?",
|
StopService: "Weet je zeker dat je deze service zijn containers wil stoppen?",
|
||||||
StopContainer: "Weet je zeker dat je deze container wil stoppen?",
|
StopContainer: "Weet je zeker dat je deze container wil stoppen?",
|
||||||
PressEnterToReturn: "Druk op enter om terug te gaan naar lazydocker (Deze popup kan uit gezet worden door in de config dit neer te zetten `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Druk op enter om terug te gaan naar lazypodman (Deze popup kan uit gezet worden door in de config dit neer te zetten `gui.returnImmediately: true`)",
|
||||||
DetachFromContainerShortCut: "Als u wilt loskoppelen van de container, drukt u standaard op ctrl-p en vervolgens op ctrl-q",
|
DetachFromContainerShortCut: "Als u wilt loskoppelen van de container, drukt u standaard op ctrl-p en vervolgens op ctrl-q",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -153,12 +153,12 @@ func englishSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
||||||
|
|
||||||
ErrorOccurred: "An error occurred! Please create an issue at https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "An error occurred! Please create an issue at https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "connection to docker client failed. You may need to restart the docker client",
|
ConnectionFailed: "connection to docker client failed. You may need to restart the docker client",
|
||||||
UnattachableContainerError: "Container does not support attaching. You must either run the service with the '-it' flag or use `stdin_open: true, tty: true` in the docker-compose.yml file",
|
UnattachableContainerError: "Container does not support attaching. You must either run the service with the '-it' flag or use `stdin_open: true, tty: true` in the docker-compose.yml file",
|
||||||
WaitingForContainerInfo: "Cannot proceed until docker gives us more information about the container. Please retry in a few moments.",
|
WaitingForContainerInfo: "Cannot proceed until docker gives us more information about the container. Please retry in a few moments.",
|
||||||
CannotAttachStoppedContainerError: "You cannot attach to a stopped container, you need to start it first (which you can actually do with the 'r' key) (yes I'm too lazy to do this automatically for you) (pretty cool that I get to communicate one-on-one with you in the form of an error message though)",
|
CannotAttachStoppedContainerError: "You cannot attach to a stopped container, you need to start it first (which you can actually do with the 'r' key) (yes I'm too lazy to do this automatically for you) (pretty cool that I get to communicate one-on-one with you in the form of an error message though)",
|
||||||
CannotAccessDockerSocketError: "Can't access docker socket at: unix:///var/run/docker.sock\nRun lazydocker as root or read https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "Can't access docker socket at: unix:///var/run/docker.sock\nRun lazypodman as root or read https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
CannotKillChildError: "Waited three seconds for child process to stop. There may be an orphan process that continues to run on your system.",
|
CannotKillChildError: "Waited three seconds for child process to stop. There may be an orphan process that continues to run on your system.",
|
||||||
|
|
||||||
Donate: "Donate",
|
Donate: "Donate",
|
||||||
|
|
@ -174,8 +174,8 @@ func englishSet() TranslationSet {
|
||||||
Menu: "menu",
|
Menu: "menu",
|
||||||
MenuTitle: "Menu",
|
MenuTitle: "Menu",
|
||||||
Scroll: "scroll",
|
Scroll: "scroll",
|
||||||
OpenConfig: "open lazydocker config",
|
OpenConfig: "open lazypodman config",
|
||||||
EditConfig: "edit lazydocker config",
|
EditConfig: "edit lazypodman config",
|
||||||
Cancel: "cancel",
|
Cancel: "cancel",
|
||||||
Remove: "remove",
|
Remove: "remove",
|
||||||
HideStopped: "hide/show stopped containers",
|
HideStopped: "hide/show stopped containers",
|
||||||
|
|
@ -261,7 +261,7 @@ func englishSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Are you sure you want to prune all unused networks?",
|
ConfirmPruneNetworks: "Are you sure you want to prune all unused networks?",
|
||||||
StopService: "Are you sure you want to stop this service's containers?",
|
StopService: "Are you sure you want to stop this service's containers?",
|
||||||
StopContainer: "Are you sure you want to stop this container?",
|
StopContainer: "Are you sure you want to stop this container?",
|
||||||
PressEnterToReturn: "Press enter to return to lazydocker (this prompt can be disabled in your config by setting `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Press enter to return to lazypodman (this prompt can be disabled in your config by setting `gui.returnImmediately: true`)",
|
||||||
DetachFromContainerShortCut: "By default, to detach from the container press ctrl-p then ctrl-q",
|
DetachFromContainerShortCut: "By default, to detach from the container press ctrl-p then ctrl-q",
|
||||||
|
|
||||||
No: "no",
|
No: "no",
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,13 @@ func frenchSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "Aucune vue correspondant au switch newLineFocused",
|
NoViewMachingNewLineFocusedSwitchStatement: "Aucune vue correspondant au switch newLineFocused",
|
||||||
|
|
||||||
ErrorOccurred: "Une erreur s'est produite ! Veuillez créer un rapport d'erreur sur https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "Une erreur s'est produite ! Veuillez créer un rapport d'erreur sur https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "Erreur lors de la connexion au client Docker. Essayez de redémarrer votre client Docker",
|
ConnectionFailed: "Erreur lors de la connexion au client Docker. Essayez de redémarrer votre client Docker",
|
||||||
UnattachableContainerError: "Le conteneur ne peut pas être attaché. Vous devez exécuter le service avec le drapeau 'it' ou bien utiliser `stdin_open: true, tty: true` dans votre fichier docker-compose.yml",
|
UnattachableContainerError: "Le conteneur ne peut pas être attaché. Vous devez exécuter le service avec le drapeau 'it' ou bien utiliser `stdin_open: true, tty: true` dans votre fichier docker-compose.yml",
|
||||||
WaitingForContainerInfo: "Le processus ne peut pas continuer avant que Docker ne fournisse plus d'informations. Veuillez réessayer dans quelques instants.",
|
WaitingForContainerInfo: "Le processus ne peut pas continuer avant que Docker ne fournisse plus d'informations. Veuillez réessayer dans quelques instants.",
|
||||||
|
|
||||||
CannotAttachStoppedContainerError: "Vous ne pouvez pas vous attacher à un conteneur arrêté, vous devez le démarrer en amont (ce que vous pouvez faire avec la touche 'r') (oui, je suis trop paresseux pour le faire automatiquement pour vous) (plutôt cool que je puisse communiquer en tête-à-tête avec vous au travers d'un message d'erreur, cependant)",
|
CannotAttachStoppedContainerError: "Vous ne pouvez pas vous attacher à un conteneur arrêté, vous devez le démarrer en amont (ce que vous pouvez faire avec la touche 'r') (oui, je suis trop paresseux pour le faire automatiquement pour vous) (plutôt cool que je puisse communiquer en tête-à-tête avec vous au travers d'un message d'erreur, cependant)",
|
||||||
CannotAccessDockerSocketError: "Impossible d'accéder au socket Docker à : unix:///var/run/docker.sock\nLancez lazydocker en tant que root ou alors lisez https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "Impossible d'accéder au socket Docker à : unix:///var/run/docker.sock\nLancez lazypodman en tant que root ou alors lisez https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
CannotKillChildError: "Trois secondes se sont écoulées depuis la demande d'arrêt des processus enfants. Il se peut qu'un processus orphelin continue à tourner sur votre système.",
|
CannotKillChildError: "Trois secondes se sont écoulées depuis la demande d'arrêt des processus enfants. Il se peut qu'un processus orphelin continue à tourner sur votre système.",
|
||||||
|
|
||||||
Donate: "Donner",
|
Donate: "Donner",
|
||||||
|
|
@ -33,8 +33,8 @@ func frenchSet() TranslationSet {
|
||||||
Menu: "menu",
|
Menu: "menu",
|
||||||
MenuTitle: "Menu",
|
MenuTitle: "Menu",
|
||||||
Scroll: "faire défiler",
|
Scroll: "faire défiler",
|
||||||
OpenConfig: "ouvrir la configuration lazydocker",
|
OpenConfig: "ouvrir la configuration lazypodman",
|
||||||
EditConfig: "modifier la configuration lazydocker",
|
EditConfig: "modifier la configuration lazypodman",
|
||||||
Cancel: "annuler",
|
Cancel: "annuler",
|
||||||
Remove: "supprimer",
|
Remove: "supprimer",
|
||||||
HideStopped: "cacher/montrer les conteneurs arrêtés",
|
HideStopped: "cacher/montrer les conteneurs arrêtés",
|
||||||
|
|
@ -111,7 +111,7 @@ func frenchSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Êtes-vous certain de vouloir détruire tous les réseaux non utilisés ?",
|
ConfirmPruneNetworks: "Êtes-vous certain de vouloir détruire tous les réseaux non utilisés ?",
|
||||||
StopService: "Êtes-vous certain de vouloir arrêter le conteneur de ce service ?",
|
StopService: "Êtes-vous certain de vouloir arrêter le conteneur de ce service ?",
|
||||||
StopContainer: "Êtes-vous certain de vouloir arrêter ce conteneur ?",
|
StopContainer: "Êtes-vous certain de vouloir arrêter ce conteneur ?",
|
||||||
PressEnterToReturn: "Appuyez sur Entrée pour revenir à lazydocker (ce message peut être désactivé dans vos configurations en appliquant `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Appuyez sur Entrée pour revenir à lazypodman (ce message peut être désactivé dans vos configurations en appliquant `gui.returnImmediately: true`)",
|
||||||
DetachFromContainerShortCut: "Par défaut, pour se détacher du conteneur appuyez sur CTRL-P puis CTRL-Q",
|
DetachFromContainerShortCut: "Par défaut, pour se détacher du conteneur appuyez sur CTRL-P puis CTRL-Q",
|
||||||
|
|
||||||
No: "non",
|
No: "non",
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,11 @@ func germanSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
||||||
|
|
||||||
ErrorOccurred: "Es ist ein Fehler aufgetreten! Bitte erstelle ein Issue hier: https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "Es ist ein Fehler aufgetreten! Bitte erstelle ein Issue hier: https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "Verbindung zum Docker Client fehlgeschlagen. Du musst ggf. den Docker Client neustarten.",
|
ConnectionFailed: "Verbindung zum Docker Client fehlgeschlagen. Du musst ggf. den Docker Client neustarten.",
|
||||||
UnattachableContainerError: "Der Container bietet keine Unterstützung für das Anbinden. Du musst den Dienst entweder mit der '-it' Flagge benutzen oder `stdin_open: true, tty: true` in der docker-compose.yml Datei setzen.",
|
UnattachableContainerError: "Der Container bietet keine Unterstützung für das Anbinden. Du musst den Dienst entweder mit der '-it' Flagge benutzen oder `stdin_open: true, tty: true` in der docker-compose.yml Datei setzen.",
|
||||||
CannotAttachStoppedContainerError: "Du kannst keinen angehaltenen Container anbinden. Du musst ihn erst starten (was du tun kannst, indem du 'r' drückst), (ja, ich bin zu faul um das zu automatisieren) (aber ist schon cool, dass ich so eine Konversation durch eine Fehlermeldung mit dir führen kann)",
|
CannotAttachStoppedContainerError: "Du kannst keinen angehaltenen Container anbinden. Du musst ihn erst starten (was du tun kannst, indem du 'r' drückst), (ja, ich bin zu faul um das zu automatisieren) (aber ist schon cool, dass ich so eine Konversation durch eine Fehlermeldung mit dir führen kann)",
|
||||||
CannotAccessDockerSocketError: "Kann nicht auf den Socket zugreifen: unix:///var/run/docker.sock\nFühre lazydocker als root aus oder lese https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "Kann nicht auf den Socket zugreifen: unix:///var/run/docker.sock\nFühre lazypodman als root aus oder lese https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
|
|
||||||
Donate: "Spenden",
|
Donate: "Spenden",
|
||||||
Confirm: "Bestätigen",
|
Confirm: "Bestätigen",
|
||||||
|
|
@ -27,8 +27,8 @@ func germanSet() TranslationSet {
|
||||||
Menu: "menü",
|
Menu: "menü",
|
||||||
MenuTitle: "Menü",
|
MenuTitle: "Menü",
|
||||||
Scroll: "scrollen",
|
Scroll: "scrollen",
|
||||||
OpenConfig: "öffne lazydocker Konfiguration",
|
OpenConfig: "öffne lazypodman Konfiguration",
|
||||||
EditConfig: "bearbeite lazydocker Konfiguration",
|
EditConfig: "bearbeite lazypodman Konfiguration",
|
||||||
Cancel: "abbrechen",
|
Cancel: "abbrechen",
|
||||||
Remove: "entfernen",
|
Remove: "entfernen",
|
||||||
ForceRemove: "Entfernen erzwingen",
|
ForceRemove: "Entfernen erzwingen",
|
||||||
|
|
@ -91,7 +91,7 @@ func germanSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Bist du dir sicher, dass du alle unbenutzen Netzwerk entfernen möchtest?",
|
ConfirmPruneNetworks: "Bist du dir sicher, dass du alle unbenutzen Netzwerk entfernen möchtest?",
|
||||||
StopService: "Bist du dir sicher, dass du den Dienst dieses Containers anhalten möchtest?",
|
StopService: "Bist du dir sicher, dass du den Dienst dieses Containers anhalten möchtest?",
|
||||||
StopContainer: "Bist du dir sicher, dass du den Container anhalten möchtest?",
|
StopContainer: "Bist du dir sicher, dass du den Container anhalten möchtest?",
|
||||||
PressEnterToReturn: "Drücke Eingabe um zu lazydocker zurückzukehren. (Diese Nachfrage kann in Deiner Konfiguration deaktiviert werden, indem du folgenden Wert setzt: `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Drücke Eingabe um zu lazypodman zurückzukehren. (Diese Nachfrage kann in Deiner Konfiguration deaktiviert werden, indem du folgenden Wert setzt: `gui.returnImmediately: true`)",
|
||||||
DetachFromContainerShortCut: "Um sich vom Container zu trennen, drücken Sie standardmäßig ctrl-p und dann ctrl-q",
|
DetachFromContainerShortCut: "Um sich vom Container zu trennen, drücken Sie standardmäßig ctrl-p und dann ctrl-q",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ func polishSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "Żaden widok nie odpowiada instrukcji przełączenia newLineFocused",
|
NoViewMachingNewLineFocusedSwitchStatement: "Żaden widok nie odpowiada instrukcji przełączenia newLineFocused",
|
||||||
|
|
||||||
ErrorOccurred: "Wystąpił błąd! Proszę go zgłosić na https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "Wystąpił błąd! Proszę go zgłosić na https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "Błąd połączenia z Dockerem. Być może należy go zrestartować.",
|
ConnectionFailed: "Błąd połączenia z Dockerem. Być może należy go zrestartować.",
|
||||||
UnattachableContainerError: "Kontener nie obsługuje przyczepiania (attach). Musisz albo użyć flag '-it', albo `stdin_open: true, tty: true` w pliku docker-compose.yml.",
|
UnattachableContainerError: "Kontener nie obsługuje przyczepiania (attach). Musisz albo użyć flag '-it', albo `stdin_open: true, tty: true` w pliku docker-compose.yml.",
|
||||||
CannotAttachStoppedContainerError: "Nie można przyczepić się do zatrzymanego kontenera, należy go najpierw uruchomić (co można wykonać wciskając przycisk 'r')",
|
CannotAttachStoppedContainerError: "Nie można przyczepić się do zatrzymanego kontenera, należy go najpierw uruchomić (co można wykonać wciskając przycisk 'r')",
|
||||||
|
|
@ -91,7 +91,7 @@ func polishSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Na pewno wyczyścić wszystkie nieużywane sieci?",
|
ConfirmPruneNetworks: "Na pewno wyczyścić wszystkie nieużywane sieci?",
|
||||||
StopService: "Na pewno zatrzymać kontenery tego serwisu?",
|
StopService: "Na pewno zatrzymać kontenery tego serwisu?",
|
||||||
StopContainer: "Na pewno zatrzymać ten kontener?",
|
StopContainer: "Na pewno zatrzymać ten kontener?",
|
||||||
PressEnterToReturn: "Wciśnij enter aby powrócić do lazydockera (ten komunikat może być wyłączony w konfiguracji poprzez ustawienie `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Wciśnij enter aby powrócić do lazypodmana (ten komunikat może być wyłączony w konfiguracji poprzez ustawienie `gui.returnImmediately: true`)",
|
||||||
DetachFromContainerShortCut: "Domyślnie, aby odłączyć się od kontenera, naciśnij ctrl-p, a następnie ctrl-q",
|
DetachFromContainerShortCut: "Domyślnie, aby odłączyć się od kontenera, naciśnij ctrl-p, a następnie ctrl-q",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ func portugueseSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
NoViewMachingNewLineFocusedSwitchStatement: "No view matching newLineFocused switch statement",
|
||||||
|
|
||||||
ErrorOccurred: "Um erro ocorreu! Por favor, crie uma issue em https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "Um erro ocorreu! Por favor, crie uma issue em https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "Falha na conexão com o cliente Docker. Você pode precisar reiniciar o seu cliente Docker",
|
ConnectionFailed: "Falha na conexão com o cliente Docker. Você pode precisar reiniciar o seu cliente Docker",
|
||||||
UnattachableContainerError: "O contêiner não suporta anexação. Você deve executar o serviço com a flag '-it' ou usar `stdin_open: true, tty: true` no arquivo docker-compose.yml",
|
UnattachableContainerError: "O contêiner não suporta anexação. Você deve executar o serviço com a flag '-it' ou usar `stdin_open: true, tty: true` no arquivo docker-compose.yml",
|
||||||
WaitingForContainerInfo: "Não é possível prosseguir até que o Docker forneça mais informações sobre o contêiner. Por favor, tente novamente em alguns momentos.",
|
WaitingForContainerInfo: "Não é possível prosseguir até que o Docker forneça mais informações sobre o contêiner. Por favor, tente novamente em alguns momentos.",
|
||||||
CannotAttachStoppedContainerError: "Você não pode anexar a um contêiner parado, você precisa iniciá-lo primeiro (o que você pode fazer com a tecla 'r') (sim, sou preguiçoso demais para fazer isso automaticamente para você) (aliás, bem legal que eu posso me comunicar diretamente com você na forma de uma mensagem de erro)",
|
CannotAttachStoppedContainerError: "Você não pode anexar a um contêiner parado, você precisa iniciá-lo primeiro (o que você pode fazer com a tecla 'r') (sim, sou preguiçoso demais para fazer isso automaticamente para você) (aliás, bem legal que eu posso me comunicar diretamente com você na forma de uma mensagem de erro)",
|
||||||
CannotAccessDockerSocketError: "Não é possível acessar o sôquete docker em: unix:///var/run/docker.sock\nExecute o lazydocker como root ou leia https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "Não é possível acessar o sôquete docker em: unix:///var/run/docker.sock\nExecute o lazypodman como root ou leia https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
CannotKillChildError: "Três segundos foram esperarados para que os processos filhos parassem. Pode haver um processo órfão que continua em execução em seu sistema.",
|
CannotKillChildError: "Três segundos foram esperarados para que os processos filhos parassem. Pode haver um processo órfão que continua em execução em seu sistema.",
|
||||||
|
|
||||||
Donate: "Doar",
|
Donate: "Doar",
|
||||||
|
|
@ -37,8 +37,8 @@ func portugueseSet() TranslationSet {
|
||||||
Menu: "menu",
|
Menu: "menu",
|
||||||
MenuTitle: "Menu",
|
MenuTitle: "Menu",
|
||||||
Scroll: "rolar",
|
Scroll: "rolar",
|
||||||
OpenConfig: "abrir configuração do lazydocker",
|
OpenConfig: "abrir configuração do lazypodman",
|
||||||
EditConfig: "editar configuração do lazydocker",
|
EditConfig: "editar configuração do lazypodman",
|
||||||
Cancel: "cancelar",
|
Cancel: "cancelar",
|
||||||
Remove: "remover",
|
Remove: "remover",
|
||||||
HideStopped: "ocultar/mostrar contêineres parados",
|
HideStopped: "ocultar/mostrar contêineres parados",
|
||||||
|
|
@ -124,7 +124,7 @@ func portugueseSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Tem certeza que deseja destruir todas as redes não utilizadas?",
|
ConfirmPruneNetworks: "Tem certeza que deseja destruir todas as redes não utilizadas?",
|
||||||
StopService: "Tem certeza que deseja parar os contêineres deste serviço?",
|
StopService: "Tem certeza que deseja parar os contêineres deste serviço?",
|
||||||
StopContainer: "Tem certeza que deseja parar este contêiner?",
|
StopContainer: "Tem certeza que deseja parar este contêiner?",
|
||||||
PressEnterToReturn: "Pressione enter para retornar ao lazydocker (este prompt pode ser desativado em sua configuração definindo `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Pressione enter para retornar ao lazypodman (este prompt pode ser desativado em sua configuração definindo `gui.returnImmediately: true`)",
|
||||||
DetachFromContainerShortCut: "Por padrão, para desanexar do contêiner, pressione ctrl-p e depois ctrl-q",
|
DetachFromContainerShortCut: "Por padrão, para desanexar do contêiner, pressione ctrl-p e depois ctrl-q",
|
||||||
|
|
||||||
No: "não",
|
No: "não",
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,11 @@ func spanishSet() TranslationSet {
|
||||||
RunningCustomCommandStatus: "ejecutando comando personalizado",
|
RunningCustomCommandStatus: "ejecutando comando personalizado",
|
||||||
RunningBulkCommandStatus: "ejecutando comando masivo",
|
RunningBulkCommandStatus: "ejecutando comando masivo",
|
||||||
|
|
||||||
ErrorOccurred: "¡Hubo un error! Por favor crea un issue en https://github.com/jesseduffield/lazydocker/issues",
|
ErrorOccurred: "¡Hubo un error! Por favor crea un issue en https://github.com/christophe-duc/lazypodman/issues",
|
||||||
ConnectionFailed: "Falló la conexión con el docker client. Quizá necesitas reiniciar tu docker client",
|
ConnectionFailed: "Falló la conexión con el docker client. Quizá necesitas reiniciar tu docker client",
|
||||||
UnattachableContainerError: "Container does not support attaching. You must either run the service with the '-it' flag or use `stdin_open: true, tty: true` in the docker-compose.yml file",
|
UnattachableContainerError: "Container does not support attaching. You must either run the service with the '-it' flag or use `stdin_open: true, tty: true` in the docker-compose.yml file",
|
||||||
WaitingForContainerInfo: "No podemos proceder hasta que docker nos de más información sobre el contenedor. Inténtalo otra vez en unos segundos.",
|
WaitingForContainerInfo: "No podemos proceder hasta que docker nos de más información sobre el contenedor. Inténtalo otra vez en unos segundos.",
|
||||||
CannotAccessDockerSocketError: "No es posible acceder al docker socket en: unix:///var/run/docker.sock\nEjecuta lazydocker como root o lee https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "No es posible acceder al docker socket en: unix:///var/run/docker.sock\nEjecuta lazypodman como root o lee https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
CannotKillChildError: "Esperamos tres segundos a que el proceso hijo se detenga. Debe de haber un proceso huérfano que continua activo en tu sistema.",
|
CannotKillChildError: "Esperamos tres segundos a que el proceso hijo se detenga. Debe de haber un proceso huérfano que continua activo en tu sistema.",
|
||||||
|
|
||||||
Donate: "Donar",
|
Donate: "Donar",
|
||||||
|
|
@ -33,8 +33,8 @@ func spanishSet() TranslationSet {
|
||||||
Quit: "salir",
|
Quit: "salir",
|
||||||
Menu: "menú",
|
Menu: "menú",
|
||||||
MenuTitle: "Menú",
|
MenuTitle: "Menú",
|
||||||
OpenConfig: "abrir configuración de lazydocker",
|
OpenConfig: "abrir configuración de lazypodman",
|
||||||
EditConfig: "editar configuración de lazydocker",
|
EditConfig: "editar configuración de lazypodman",
|
||||||
Cancel: "cancelar",
|
Cancel: "cancelar",
|
||||||
Remove: "borrar",
|
Remove: "borrar",
|
||||||
HideStopped: "esconder/mostrar contenedores parados",
|
HideStopped: "esconder/mostrar contenedores parados",
|
||||||
|
|
@ -119,7 +119,7 @@ func spanishSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "¿Realmente quieres limpiar todas las redes sin usar?",
|
ConfirmPruneNetworks: "¿Realmente quieres limpiar todas las redes sin usar?",
|
||||||
StopService: "¿Realmente quieres detener los contenedores de este servicio?",
|
StopService: "¿Realmente quieres detener los contenedores de este servicio?",
|
||||||
StopContainer: "¿Realmente quieres detener este contenedor?",
|
StopContainer: "¿Realmente quieres detener este contenedor?",
|
||||||
PressEnterToReturn: "Presionar [enter] para volver a lazydocker (este mensaje puede ser desactivado en tu configuración poniendo `gui.returnImmediately: true`)",
|
PressEnterToReturn: "Presionar [enter] para volver a lazypodman (este mensaje puede ser desactivado en tu configuración poniendo `gui.returnImmediately: true`)",
|
||||||
|
|
||||||
No: "no",
|
No: "no",
|
||||||
Yes: "sí",
|
Yes: "sí",
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,11 @@ func turkishSet() TranslationSet {
|
||||||
|
|
||||||
NoViewMachingNewLineFocusedSwitchStatement: "NewLineFocused anahtar deyimi ile eşleşen görünüm yok",
|
NoViewMachingNewLineFocusedSwitchStatement: "NewLineFocused anahtar deyimi ile eşleşen görünüm yok",
|
||||||
|
|
||||||
ErrorOccurred: "Bir hata oluştu! Lütfen https://github.com/jesseduffield/lazydocker/issues adresinden bir hataya ilişkin konu oluşturun",
|
ErrorOccurred: "Bir hata oluştu! Lütfen https://github.com/christophe-duc/lazypodman/issues adresinden bir hataya ilişkin konu oluşturun",
|
||||||
ConnectionFailed: "Docker bağlantısı başarısız oldu. Docker' ı yeniden başlatmanız gerekebilir",
|
ConnectionFailed: "Docker bağlantısı başarısız oldu. Docker' ı yeniden başlatmanız gerekebilir",
|
||||||
UnattachableContainerError: "Konteyner attaching modunda çalışmayı desteklemiyor. Hizmeti '-it' opsiyonu ile çalıştırmanız veya docker-compose.yml dosyasında `stdin_open: true, tty: true` kullanmanız gerekir.",
|
UnattachableContainerError: "Konteyner attaching modunda çalışmayı desteklemiyor. Hizmeti '-it' opsiyonu ile çalıştırmanız veya docker-compose.yml dosyasında `stdin_open: true, tty: true` kullanmanız gerekir.",
|
||||||
CannotAttachStoppedContainerError: "Durdurulan konteynera bağlanamazsınız, ilk önce başlatmanız gerekir (aslında başlatmayı r tuşu ile yapabilirsiniz) (evet, senin için bunu otomatik olarak yapabilirim fakat çok tembelim) (hata mesajı ile seninle birebir iletişim kurmam çok daha güzel)",
|
CannotAttachStoppedContainerError: "Durdurulan konteynera bağlanamazsınız, ilk önce başlatmanız gerekir (aslında başlatmayı r tuşu ile yapabilirsiniz) (evet, senin için bunu otomatik olarak yapabilirim fakat çok tembelim) (hata mesajı ile seninle birebir iletişim kurmam çok daha güzel)",
|
||||||
CannotAccessDockerSocketError: "Docker' a şu adresten erişilemiyor : unix:///var/run/docker.sock\n lazydocker' ı root(kök kullanıcı) olarak çalıştır veya şu adresteki adımları takip et : https://docs.docker.com/install/linux/linux-postinstall/",
|
CannotAccessDockerSocketError: "Docker' a şu adresten erişilemiyor : unix:///var/run/docker.sock\n lazypodman' ı root(kök kullanıcı) olarak çalıştır veya şu adresteki adımları takip et : https://docs.docker.com/install/linux/linux-postinstall/",
|
||||||
|
|
||||||
Donate: "Bağış",
|
Donate: "Bağış",
|
||||||
Confirm: "Onayla",
|
Confirm: "Onayla",
|
||||||
|
|
@ -27,7 +27,7 @@ func turkishSet() TranslationSet {
|
||||||
Menu: "menü",
|
Menu: "menü",
|
||||||
MenuTitle: "Menü",
|
MenuTitle: "Menü",
|
||||||
Scroll: "kaydır",
|
Scroll: "kaydır",
|
||||||
OpenConfig: "lazydocker ayarlarını aç",
|
OpenConfig: "lazypodman ayarlarını aç",
|
||||||
EditConfig: "lazzydocker ayarlarını düzenle",
|
EditConfig: "lazzydocker ayarlarını düzenle",
|
||||||
Cancel: "iptal",
|
Cancel: "iptal",
|
||||||
Remove: "kaldır",
|
Remove: "kaldır",
|
||||||
|
|
@ -91,7 +91,7 @@ func turkishSet() TranslationSet {
|
||||||
ConfirmPruneNetworks: "Kullanılmayan tüm ağları temizlemek istediğinizden emin misiniz?",
|
ConfirmPruneNetworks: "Kullanılmayan tüm ağları temizlemek istediğinizden emin misiniz?",
|
||||||
StopService: "Bu servisin konteynerlerini durdurmak istediğinize emin misiniz?",
|
StopService: "Bu servisin konteynerlerini durdurmak istediğinize emin misiniz?",
|
||||||
StopContainer: "Bu konteyneri durdurmak istediğinize emin misiniz?",
|
StopContainer: "Bu konteyneri durdurmak istediğinize emin misiniz?",
|
||||||
PressEnterToReturn: "lazydocker' a geri dönmek için enter tuşuna basın ( Bu uyarı, `gui.return Immediately: true` ayarıyla devre dışı bırakılabilir)",
|
PressEnterToReturn: "lazypodman' a geri dönmek için enter tuşuna basın ( Bu uyarı, `gui.return Immediately: true` ayarıyla devre dışı bırakılabilir)",
|
||||||
DetachFromContainerShortCut: "Varsayılan olarak, kaptan ayırmak için ctrl-p ve ardından ctrl-q tuşlarına basın",
|
DetachFromContainerShortCut: "Varsayılan olarak, kaptan ayırmak için ctrl-p ve ardından ctrl-q tuşlarına basın",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/config"
|
"github.com/christophe-duc/lazypodman/pkg/config"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
"github.com/sasha-s/go-deadlock"
|
"github.com/sasha-s/go-deadlock"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/cheatsheet"
|
"github.com/christophe-duc/lazypodman/pkg/cheatsheet"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,12 @@ case $ARCH in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# prepare the download URL
|
# prepare the download URL
|
||||||
GITHUB_LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' https://github.com/jesseduffield/lazydocker/releases/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
|
GITHUB_LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' https://github.com/christophe-duc/lazypodman/releases/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
|
||||||
GITHUB_FILE="lazydocker_${GITHUB_LATEST_VERSION//v/}_$(uname -s)_${ARCH}.tar.gz"
|
GITHUB_FILE="lazypodman_${GITHUB_LATEST_VERSION//v/}_$(uname -s)_${ARCH}.tar.gz"
|
||||||
GITHUB_URL="https://github.com/jesseduffield/lazydocker/releases/download/${GITHUB_LATEST_VERSION}/${GITHUB_FILE}"
|
GITHUB_URL="https://github.com/christophe-duc/lazypodman/releases/download/${GITHUB_LATEST_VERSION}/${GITHUB_FILE}"
|
||||||
|
|
||||||
# install/update the local binary
|
# install/update the local binary
|
||||||
curl -L -o lazydocker.tar.gz $GITHUB_URL
|
curl -L -o lazypodman.tar.gz $GITHUB_URL
|
||||||
tar xzvf lazydocker.tar.gz lazydocker
|
tar xzvf lazypodman.tar.gz lazypodman
|
||||||
install -Dm 755 lazydocker -t "$DIR"
|
install -Dm 755 lazypodman -t "$DIR"
|
||||||
rm lazydocker lazydocker.tar.gz
|
rm lazypodman lazypodman.tar.gz
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"github.com/jesseduffield/lazydocker/pkg/i18n"
|
"github.com/christophe-duc/lazypodman/pkg/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue