docs: readme.me updated
This commit is contained in:
@@ -32,13 +32,9 @@ cargo install oxker
|
|||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
Published on <a href='https://hub.docker.com/r/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'>Docker Hub</a> and <a href='https://ghcr.io/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'>ghcr.io</a>,
|
Published on <a href='https://ghcr.io/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'>ghcr.io</a> and <a href='https://hub.docker.com/r/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'>Docker Hub</a>,
|
||||||
with images built for `linux/amd64`, `linux/arm64`, and `linux/arm/v6`
|
with images built for `linux/amd64`, `linux/arm64`, and `linux/arm/v6`
|
||||||
|
|
||||||
**via Docker Hub**
|
|
||||||
```shell
|
|
||||||
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker
|
|
||||||
```
|
|
||||||
|
|
||||||
**via ghcr.io**
|
**via ghcr.io**
|
||||||
|
|
||||||
@@ -46,6 +42,11 @@ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=alway
|
|||||||
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker
|
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**via Docker Hub**
|
||||||
|
```shell
|
||||||
|
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker
|
||||||
|
```
|
||||||
|
|
||||||
### Nix
|
### Nix
|
||||||
Using nix flakes, oxker can be ran directly with
|
Using nix flakes, oxker can be ran directly with
|
||||||
|
|
||||||
@@ -126,7 +127,7 @@ Available command line arguments
|
|||||||
|```-t```| Remove timestamps from each log entry.|
|
|```-t```| Remove timestamps from each log entry.|
|
||||||
|```-s```| If running via Docker, will display the oxker container.|
|
|```-s```| If running via Docker, will display the oxker container.|
|
||||||
|```-g```| No TUI, essentially a debugging mode with limited functionality, for now.|
|
|```-g```| No TUI, essentially a debugging mode with limited functionality, for now.|
|
||||||
|```--config-file [string]```| Location of a `config.toml`/`config.json`/`config.jsonc`. By default will check the users local config figuration directory.|
|
|```--config-file [string]```| Location of a `config.toml`/`config.json`/`config.jsonc`. By default will check the users local config directory.|
|
||||||
|```--host [string]```| Connect to Docker with a custom hostname. Defaults to `/var/run/docker.sock`. Will use `$DOCKER_HOST` environment variable if set.|
|
|```--host [string]```| Connect to Docker with a custom hostname. Defaults to `/var/run/docker.sock`. Will use `$DOCKER_HOST` environment variable if set.|
|
||||||
|```--no-stderr```| Do not include stderr output in logs.|
|
|```--no-stderr```| Do not include stderr output in logs.|
|
||||||
|```--save-dir [string]```| Save exported logs into a custom directory. Defaults to `$HOME`.|
|
|```--save-dir [string]```| Save exported logs into a custom directory. Defaults to `$HOME`.|
|
||||||
@@ -136,18 +137,19 @@ Available command line arguments
|
|||||||
### Config File
|
### Config File
|
||||||
|
|
||||||
|
|
||||||
A config file enables the user to persist settings, it also enables the user to create a custom keymap, and set the color scheme used by the application.
|
A config file enables the user to persist settings, create a custom keymap, set the color scheme used by the application, and more.
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
By default, if not found, `oxker` will create a config file in the user's local config directory. Command line arguments take priority over values from the config file.
|
Examples of the config file, alsong with explanations of each value, can be found in the [example_config](https://github.com/mrjackwills/oxker/tree/main/example_config) directory. `oxker` supports `.toml`,`.json`, and `.jsonc` file formats.
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
`oxker` supports `.toml`,`.json`, and `.jsonc` file formats. Examples of each can be found in the [example_config](https://github.com/mrjackwills/oxker/tree/main/example_config) directory.
|
If not config file is found, `oxker` will create a `config.toml` in the user's local config directory. Command line arguments will take priority over values from the config file.
|
||||||
|
<br>
|
||||||
If running an `oxker` container, the default config location will be `/config.toml` rather than the automatically detected platform-specific local config directory.
|
<br>
|
||||||
|
If running an `oxker` container, the default config location will be `/` rather than the automatically detected platform-specific local config directory, and can be mounted as follows;
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro -v /some/location/config.toml:/config.toml:ro oxker
|
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro -v /some_location/config.toml:/config.toml:ro ghcr.io/mrjackwills/oxker
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build step
|
## Build step
|
||||||
|
|||||||
@@ -1,190 +0,0 @@
|
|||||||
{
|
|
||||||
"color_logs": false,
|
|
||||||
"docker_interval": 1000,
|
|
||||||
"gui": true,
|
|
||||||
"host": "/var/run/docker.sock",
|
|
||||||
"raw_logs": false,
|
|
||||||
"show_self": false,
|
|
||||||
"show_std_err": false,
|
|
||||||
"show_timestamp": true,
|
|
||||||
"timezone": "Etc/UTC",
|
|
||||||
"timestamp_format": "%Y-%m-%dT%H:%M:%S.%8f",
|
|
||||||
"use_cli": false,
|
|
||||||
"colors": {
|
|
||||||
"borders": {
|
|
||||||
"selected": "lightcyan",
|
|
||||||
"unselected": "grey"
|
|
||||||
},
|
|
||||||
"chart_cpu": {
|
|
||||||
"background": "reset",
|
|
||||||
"border": "white",
|
|
||||||
"max": "#FFB224",
|
|
||||||
"points": "magenta",
|
|
||||||
"title": "green",
|
|
||||||
"y_axis": "white"
|
|
||||||
},
|
|
||||||
"chart_memory": {
|
|
||||||
"background": "reset",
|
|
||||||
"border": "white",
|
|
||||||
"max": "#FFB224",
|
|
||||||
"points": "cyan",
|
|
||||||
"title": "green",
|
|
||||||
"y_axis": "white"
|
|
||||||
},
|
|
||||||
"chart_ports": {
|
|
||||||
"background": "reset",
|
|
||||||
"border": "white",
|
|
||||||
"headings": "yellow",
|
|
||||||
"text": "white",
|
|
||||||
"title": "green"
|
|
||||||
},
|
|
||||||
"commands": {
|
|
||||||
"background": "reset",
|
|
||||||
"delete": "gray",
|
|
||||||
"pause": "yellow",
|
|
||||||
"restart": "magenta",
|
|
||||||
"resume": "blue",
|
|
||||||
"start": "green",
|
|
||||||
"stop": "red"
|
|
||||||
},
|
|
||||||
"container_state": {
|
|
||||||
"dead": "red",
|
|
||||||
"exited": "red",
|
|
||||||
"paused": "yellow",
|
|
||||||
"removing": "lightred",
|
|
||||||
"restarting": "lightgreen",
|
|
||||||
"running_healthy": "green",
|
|
||||||
"running_unhealthy": "#FFB224",
|
|
||||||
"unknown": "red"
|
|
||||||
},
|
|
||||||
"containers": {
|
|
||||||
"background": "reset",
|
|
||||||
"icon": "white",
|
|
||||||
"text": "blue",
|
|
||||||
"text_rx": "#FFE9C1",
|
|
||||||
"text_tx": "#CD8C8C"
|
|
||||||
},
|
|
||||||
"filter": {
|
|
||||||
"background": "reset",
|
|
||||||
"text": "gray",
|
|
||||||
"selected_filter_background": "gray",
|
|
||||||
"selected_filter_text": "black",
|
|
||||||
"highlight": "magenta"
|
|
||||||
},
|
|
||||||
"headers_bar": {
|
|
||||||
"background": "magenta",
|
|
||||||
"loading_spinner": "white",
|
|
||||||
"text": "black",
|
|
||||||
"text_selected": "gray"
|
|
||||||
},
|
|
||||||
"logs": {
|
|
||||||
"background": "reset",
|
|
||||||
"text": "reset"
|
|
||||||
},
|
|
||||||
"popup_delete": {
|
|
||||||
"background": "white",
|
|
||||||
"text": "black",
|
|
||||||
"text_highlight": "red"
|
|
||||||
},
|
|
||||||
"popup_error": {
|
|
||||||
"background": "red",
|
|
||||||
"text": "white"
|
|
||||||
},
|
|
||||||
"popup_help": {
|
|
||||||
"background": "magenta",
|
|
||||||
"text": "black",
|
|
||||||
"text_highlight": "white"
|
|
||||||
},
|
|
||||||
"popup_info": {
|
|
||||||
"background": "blue",
|
|
||||||
"text": "white"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"keymap": {
|
|
||||||
"clear": [
|
|
||||||
"c",
|
|
||||||
"esc"
|
|
||||||
],
|
|
||||||
"delete_confirm": [
|
|
||||||
"y"
|
|
||||||
],
|
|
||||||
"delete_deny": [
|
|
||||||
"n"
|
|
||||||
],
|
|
||||||
"exec": [
|
|
||||||
"e"
|
|
||||||
],
|
|
||||||
"filter_mode": [
|
|
||||||
"/",
|
|
||||||
"F1"
|
|
||||||
],
|
|
||||||
"quit": [
|
|
||||||
"q"
|
|
||||||
],
|
|
||||||
"save_logs": [
|
|
||||||
"s"
|
|
||||||
],
|
|
||||||
"scroll_down_many": [
|
|
||||||
"pagedown"
|
|
||||||
],
|
|
||||||
"scroll_down_one": [
|
|
||||||
"down",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"scroll_end": [
|
|
||||||
"end"
|
|
||||||
],
|
|
||||||
"scroll_start": [
|
|
||||||
"home"
|
|
||||||
],
|
|
||||||
"scroll_up_many": [
|
|
||||||
"pageup"
|
|
||||||
],
|
|
||||||
"scroll_up_one": [
|
|
||||||
"up",
|
|
||||||
"k"
|
|
||||||
],
|
|
||||||
"select_next_panel": [
|
|
||||||
"tab"
|
|
||||||
],
|
|
||||||
"select_previous_panel": [
|
|
||||||
"backtab"
|
|
||||||
],
|
|
||||||
"sort_by_cpu": [
|
|
||||||
"4"
|
|
||||||
],
|
|
||||||
"sort_by_id": [
|
|
||||||
"6"
|
|
||||||
],
|
|
||||||
"sort_by_image": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"sort_by_memory": [
|
|
||||||
"5"
|
|
||||||
],
|
|
||||||
"sort_by_name": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"sort_by_rx": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"sort_by_state": [
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"sort_by_status": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"sort_by_tx": [
|
|
||||||
"9"
|
|
||||||
],
|
|
||||||
"sort_reset": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"toggle_help": [
|
|
||||||
"h"
|
|
||||||
],
|
|
||||||
"toggle_mouse_capture": [
|
|
||||||
"m"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -224,15 +224,6 @@ mod tests {
|
|||||||
assert_eq!(Keymap::from(result.keymap), Keymap::new());
|
assert_eq!(Keymap::from(result.keymap), Keymap::new());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
/// make sure example.config.json matches the default keymap
|
|
||||||
fn test_parse_config_keymap_json() {
|
|
||||||
let example_json = include_str!("../../example_config/example.config.json");
|
|
||||||
let result = ConfigFile::parse(super::ConfigFileType::Json, example_json).unwrap();
|
|
||||||
assert!(result.keymap.is_some());
|
|
||||||
assert_eq!(Keymap::from(result.keymap), Keymap::new());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
/// All configs parsed and are equal
|
/// All configs parsed and are equal
|
||||||
fn test_parse_config_keymap_all() {
|
fn test_parse_config_keymap_all() {
|
||||||
@@ -241,11 +232,6 @@ mod tests {
|
|||||||
assert!(result_jsonc.keymap.is_some());
|
assert!(result_jsonc.keymap.is_some());
|
||||||
let result_jsonc = result_jsonc.keymap.unwrap();
|
let result_jsonc = result_jsonc.keymap.unwrap();
|
||||||
|
|
||||||
let example_json = include_str!("../../example_config/example.config.json");
|
|
||||||
let result_json = ConfigFile::parse(super::ConfigFileType::Json, example_json).unwrap();
|
|
||||||
assert!(result_json.keymap.is_some());
|
|
||||||
let result_json = result_json.keymap.unwrap();
|
|
||||||
|
|
||||||
let example_toml = include_str!("./config.toml");
|
let example_toml = include_str!("./config.toml");
|
||||||
let result_toml = ConfigFile::parse(super::ConfigFileType::Toml, example_toml).unwrap();
|
let result_toml = ConfigFile::parse(super::ConfigFileType::Toml, example_toml).unwrap();
|
||||||
assert!(result_toml.keymap.is_some());
|
assert!(result_toml.keymap.is_some());
|
||||||
@@ -253,7 +239,6 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(Keymap::from(Some(result_toml.clone())), Keymap::new());
|
assert_eq!(Keymap::from(Some(result_toml.clone())), Keymap::new());
|
||||||
assert_eq!(result_toml, result_jsonc);
|
assert_eq!(result_toml, result_jsonc);
|
||||||
assert_eq!(result_jsonc, result_json);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -274,15 +259,6 @@ mod tests {
|
|||||||
assert_eq!(AppColors::from(result.colors), AppColors::new());
|
assert_eq!(AppColors::from(result.colors), AppColors::new());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
/// make sure config.toml matches the default app colors
|
|
||||||
fn test_parse_config_colors_json() {
|
|
||||||
let example_json = include_str!("../../example_config/example.config.json");
|
|
||||||
let result = ConfigFile::parse(super::ConfigFileType::Json, example_json).unwrap();
|
|
||||||
assert!(result.colors.is_some());
|
|
||||||
assert_eq!(AppColors::from(result.colors), AppColors::new());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
/// All configs parsed and are equal
|
/// All configs parsed and are equal
|
||||||
fn test_parse_config_colors_all() {
|
fn test_parse_config_colors_all() {
|
||||||
@@ -291,11 +267,6 @@ mod tests {
|
|||||||
assert!(result_jsonc.colors.is_some());
|
assert!(result_jsonc.colors.is_some());
|
||||||
let result_jsonc = result_jsonc.colors.unwrap();
|
let result_jsonc = result_jsonc.colors.unwrap();
|
||||||
|
|
||||||
let example_json = include_str!("../../example_config/example.config.json");
|
|
||||||
let result_json = ConfigFile::parse(super::ConfigFileType::Json, example_json).unwrap();
|
|
||||||
assert!(result_json.colors.is_some());
|
|
||||||
let result_json = result_json.colors.unwrap();
|
|
||||||
|
|
||||||
let example_toml = include_str!("./config.toml");
|
let example_toml = include_str!("./config.toml");
|
||||||
let result_toml = ConfigFile::parse(super::ConfigFileType::Toml, example_toml).unwrap();
|
let result_toml = ConfigFile::parse(super::ConfigFileType::Toml, example_toml).unwrap();
|
||||||
assert!(result_toml.colors.is_some());
|
assert!(result_toml.colors.is_some());
|
||||||
@@ -303,6 +274,5 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(AppColors::from(Some(result_toml.clone())), AppColors::new());
|
assert_eq!(AppColors::from(Some(result_toml.clone())), AppColors::new());
|
||||||
assert_eq!(result_toml, result_jsonc);
|
assert_eq!(result_toml, result_jsonc);
|
||||||
assert_eq!(result_jsonc, result_json);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user