Skip to content

Commit d6ffc2a

Browse files
committed
All the small things...
1 parent 72f1658 commit d6ffc2a

File tree

3 files changed

+39
-25
lines changed

3 files changed

+39
-25
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "kee"
33
version = "1.0.0"
4-
edition = "2024"
4+
edition = "2021"
55
description = "AWS CLI session manager with SSO support"
66
authors = ["Stefan Aichholzer <[email protected]>"]
77
license = "MIT"

README.md

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ A simple tool to manage multiple AWS accounts with SSO support and easy account
1010

1111
🦀 — This is the **Rust** implementation of the original [Python implementation](https://github.com/KeeCLI/kee.py), providing identical functionality with the performance and safety benefits of Rust, while maintaining complete compatibility with existing configurations and workflows.
1212

13-
1413
## Why Rust?
1514

1615
- 🚀 **Performance**: Compiled binary, faster startup times
@@ -24,6 +23,7 @@ A simple tool to manage multiple AWS accounts with SSO support and easy account
2423
## Installation
2524

2625
### Prerequisites
26+
2727
- Rust 1.80+ (install from [rustup.rs](https://rustup.rs/)) (On Mac with brew: `brew install rust`)
2828
- AWS CLI v2 installed and configured
2929
- Access to AWS SSO
@@ -37,13 +37,16 @@ git clone https://github.com/keecli/kee.rs.git ~/.kee
3737
### Build and install
3838

3939
**Option 1: Automated (recommended)**
40+
4041
```bash
4142
cd ~/.kee
4243
./install.sh
4344
```
45+
4446
> This script will build an optimized `Kee` binary, install it (in `~/.cargo/bin`), and add the folder to your `PATH`.
4547
4648
**Option 2: Manual**
49+
4750
```bash
4851
cd ~/.kee
4952

@@ -60,6 +63,7 @@ source ~/.zshrc # or ~/.bashrc
6063
```
6164

6265
**Option 3: Direct copy**
66+
6367
```bash
6468
cd ~/.kee
6569

@@ -70,20 +74,20 @@ cp target/release/kee ~/.local/bin/ # Make sure ~/.local/bin is in your PATH
7074

7175
## Feature comparison
7276

73-
| Feature | Python Version | Rust Version | Notes |
74-
|---------|---------------|--------------|-------|
75-
| **SSO integration** ||| Identical AWS CLI integration |
76-
| **Sub-shell isolation** ||| Same environment management |
77-
| **Account management** ||| Add, use, list, remove accounts |
78-
| **Session management** ||| Prevents nested sessions |
79-
| **Config file format** ||| Same JSON structure |
80-
| **AWS config management** ||| Same file handling |
81-
| **Cross-platform** ||| Windows, macOS, Linux |
82-
| **Error handling** ||| Comprehensive error management |
83-
| **Performance** | Good | **Excellent** | Compiled binary |
84-
| **Memory usage** | Higher | **Lower** | No runtime overhead |
85-
| **Startup time** | ~100ms | **~5ms** | No interpreter startup |
86-
| **Binary size** | N/A | **~1.5MB** | Single executable |
77+
| Feature | Python Version | Rust Version | Notes |
78+
| ------------------------- | -------------- | ------------- | ------------------------------- |
79+
| **SSO integration** | | | Identical AWS CLI integration |
80+
| **Sub-shell isolation** | | | Same environment management |
81+
| **Account management** | | | Add, use, list, remove accounts |
82+
| **Session management** | | | Prevents nested sessions |
83+
| **Config file format** | | | Same JSON structure |
84+
| **AWS config management** | | | Same file handling |
85+
| **Cross-platform** | | | Windows, macOS, Linux |
86+
| **Error handling** | | | Comprehensive error management |
87+
| **Performance** | Good | **Excellent** | Compiled binary |
88+
| **Memory usage** | Higher | **Lower** | No runtime overhead |
89+
| **Startup time** | ~100ms | **~5ms** | No interpreter startup |
90+
| **Binary size** | N/A | **~1.5MB** | Single executable |
8791

8892
## Usage
8993

@@ -110,6 +114,7 @@ kee --help
110114
## Development
111115

112116
### Building
117+
113118
```bash
114119
# Debug build
115120
cargo build
@@ -127,34 +132,38 @@ cargo clippy
127132

128133
## Performance benchmarks
129134

130-
| Operation | Python | Rust | Improvement |
131-
|-----------|---------------|--------------|-------------|
132-
| **Startup** | ~100ms | ~5ms | **20x faster** |
133-
| **Config load** | ~10ms | ~1ms | **10x faster** |
134-
| **Memory usage** | ~25MB | ~2MB | **12x less** |
135-
| **Binary size** | N/A | ~1.5MB | Single file |
135+
| Operation | Python | Rust | Improvement |
136+
| ---------------- | ------ | ------ | -------------- |
137+
| **Startup** | ~100ms | ~5ms | **20x faster** |
138+
| **Config load** | ~10ms | ~1ms | **10x faster** |
139+
| **Memory usage** | ~25MB | ~2MB | **12x less** |
140+
| **Binary size** | N/A | ~1.5MB | Single file |
136141

137142
## Cross-platform support
138143

139144
**Identical support across:**
145+
140146
- **macOS**: Full support with shell prompt integration
141147
- **Linux**: Full support with shell prompt integration
142148
- **Windows**: Full support (prompt integration not available)
143149

144150
**Platform-specific optimizations:**
151+
145152
- **Windows**: Uses `COMSPEC` for shell detection
146153
- **Unix**: Uses `SHELL` environment variable
147154
- **All**: Proper path handling with `std::path`
148155

149156
## Migration from the Python version
150157

151158
**Zero migration required:**
159+
152160
- Same configuration files (`~/.aws/kee.json`)
153161
- Same AWS config format
154162
- Same command-line interface
155163
- Same environment variables
156164

157165
**Drop-in Replacement:**
166+
158167
```bash
159168
# Remove the Python version
160169
rm /usr/local/bin/kee
@@ -178,12 +187,14 @@ cargo install --path . --force
178187
## Distribution
179188

180189
**Binary distribution:**
190+
181191
- Single executable file
182192
- No runtime dependencies
183193
- Easy deployment to servers
184194
- Container-friendly
185195

186196
**Package managers:**
197+
187198
- **Cargo**: `cargo install kee`
188199
- **Homebrew**: `brew install kee` (when published)
189200
- **Scoop**: `scoop install kee` (Windows, when published)
@@ -200,6 +211,7 @@ Same contribution guidelines as Python version, plus:
200211
5. Submit a pull request
201212

202213
**Rust-specific:**
214+
203215
- Follow `rustfmt` formatting
204216
- Pass `clippy` lints
205217

@@ -216,4 +228,8 @@ MIT License - see LICENSE file for details.
216228

217229
## Support
218230

219-
For issues, questions, or contributions, please visit the project repository or create an issue.
231+
RTFM, then RTFC... If you are still stuck or just need an additional feature, file an [issue](https://github.com/KeeCLI/kee.py/issues).
232+
233+
<div align="center">
234+
✌🏼
235+
</div>

src/main.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use std::process::Command;
1010
const BOLD_WHITE: &str = "\x1b[1;37m";
1111
const RESET: &str = "\x1b[0m";
1212
const KEE_ART: &str = r#"
13-
1413
██╗ ██╗███████╗███████╗
1514
██║ ██╔╝██╔════╝██╔════╝
1615
█████╔╝ █████╗ █████╗
@@ -486,7 +485,6 @@ impl KeeManager {
486485
println!(" Session: {}", hlt(account_name));
487486
println!("\n Starting a sub-shell for this session...");
488487
println!(" Type '{}' to return to your main shell.", hlt("exit"));
489-
println!();
490488

491489
// Start subshell with environment
492490
let mut cmd = Command::new(&shell);

0 commit comments

Comments
 (0)