Initial upload of ConfSync project
This commit is contained in:
214
app/README.md
Normal file
214
app/README.md
Normal file
@@ -0,0 +1,214 @@
|
||||
# ConfSync - Intelligent Developer Configuration Sync CLI
|
||||
|
||||
A powerful CLI tool that automatically detects, catalogs, and syncs developer configuration files across different tools and machines.
|
||||
|
||||
## Features
|
||||
|
||||
- **Auto-detect Config Files**: Automatically discover configuration files from popular developer tools like VS Code, Vim, Neovim, Git, Zsh, Fish, Tmux, and more
|
||||
- **Build Unified Manifest**: Create structured YAML manifests that catalog all detected configurations
|
||||
- **Validate Configurations**: Check configs for conflicts, errors, and inconsistencies before syncing
|
||||
- **Cross-Machine Sync**: Synchronize configurations using encrypted storage with Git backend
|
||||
- **Intelligent Merge**: Multiple merge strategies that preserve local overrides
|
||||
- **Change History & Rollback**: Track changes and enable rollback to previous states
|
||||
|
||||
## Installation
|
||||
|
||||
### From PyPI (Coming Soon)
|
||||
|
||||
```bash
|
||||
pip install confsync
|
||||
```
|
||||
|
||||
### From Source
|
||||
|
||||
```bash
|
||||
git clone https://github.com/yourusername/confsync.git
|
||||
cd confsync
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Detect Configuration Files
|
||||
|
||||
Scan your system for configuration files:
|
||||
|
||||
```bash
|
||||
confsync detect all
|
||||
```
|
||||
|
||||
Filter by category:
|
||||
|
||||
```bash
|
||||
confsync detect editor # VS Code, Vim, Neovim, etc.
|
||||
confsync detect terminal # Zsh, Fish, Tmux, etc.
|
||||
confsync detect git # .gitconfig, .gitignore, etc.
|
||||
confsync detect shell # Bash, sh profiles, etc.
|
||||
```
|
||||
|
||||
### 2. Create a Manifest
|
||||
|
||||
Initialize a configuration manifest:
|
||||
|
||||
```bash
|
||||
confsync manifest init -o my_configs.yaml
|
||||
```
|
||||
|
||||
View manifest contents:
|
||||
|
||||
```bash
|
||||
confsync manifest show -p my_configs.yaml
|
||||
```
|
||||
|
||||
Export manifest with configs:
|
||||
|
||||
```bash
|
||||
confsync manifest export -p my_configs.yaml -o backup.zip
|
||||
```
|
||||
|
||||
### 3. Validate Configurations
|
||||
|
||||
Validate all detected configurations:
|
||||
|
||||
```bash
|
||||
confsync validate all
|
||||
```
|
||||
|
||||
Validate a specific file:
|
||||
|
||||
```bash
|
||||
confsync validate file ~/.vimrc
|
||||
```
|
||||
|
||||
Generate a validation report:
|
||||
|
||||
```bash
|
||||
confsync validate report -p my_configs.yaml -o validation_report.txt
|
||||
```
|
||||
|
||||
### 4. Synchronize Configurations
|
||||
|
||||
Push configurations to a remote repository:
|
||||
|
||||
```bash
|
||||
confsync sync push -r https://github.com/username/configs.git -m "Update shell configs"
|
||||
```
|
||||
|
||||
Pull configurations from a remote repository:
|
||||
|
||||
```bash
|
||||
confsync sync pull -r https://github.com/username/configs.git
|
||||
```
|
||||
|
||||
Encrypt configurations before syncing:
|
||||
|
||||
```bash
|
||||
confsync sync push -r https://github.com/username/configs.git --encrypt
|
||||
```
|
||||
|
||||
### 5. Merge Configurations
|
||||
|
||||
Merge two configuration files:
|
||||
|
||||
```bash
|
||||
confsync merge file ~/.vimrc ~/.vimrc.remote -o ~/.vimrc.merged
|
||||
```
|
||||
|
||||
Preview merge result:
|
||||
|
||||
```bash
|
||||
confsync merge preview ~/.vimrc ~/.vimrc.remote
|
||||
```
|
||||
|
||||
List available merge strategies:
|
||||
|
||||
```bash
|
||||
confsync merge strategies
|
||||
```
|
||||
|
||||
### 6. View History
|
||||
|
||||
View configuration change history:
|
||||
|
||||
```bash
|
||||
confsync history list -l 10
|
||||
```
|
||||
|
||||
Show details of a specific commit:
|
||||
|
||||
```bash
|
||||
confsync history show abc1234
|
||||
```
|
||||
|
||||
Rollback to a previous state:
|
||||
|
||||
```bash
|
||||
confsync history rollback abc1234 --dry-run # Preview first
|
||||
confsync history rollback abc1234 # Apply rollback
|
||||
```
|
||||
|
||||
## Configuration Detection
|
||||
|
||||
ConfSync can detect configurations for the following tools:
|
||||
|
||||
### Editors
|
||||
- VS Code (`settings.json`, `keybindings.json`)
|
||||
- Vim (`.vimrc`, `vimrc`, `.vim/`)
|
||||
- Neovim (`init.vim`, `init.lua`, `.config/nvim/`)
|
||||
|
||||
### Terminal
|
||||
- Zsh (`.zshrc`, `.zshenv`, `.zprofile`, `.oh-my-zsh/`)
|
||||
- Fish (`config.fish`, `fishfile`, `.config/fish/`)
|
||||
- Tmux (`.tmux.conf`, `.tmux.conf.local`)
|
||||
|
||||
### Shell
|
||||
- Bash (`.bashrc`, `.bash_profile`, `.bash_logout`)
|
||||
- Generic Shell (`.profile`, `.shrc`, `.exports`, `.aliases`)
|
||||
|
||||
### Git
|
||||
- Git Config (`.gitconfig`, `.gitattributes`, `.gitignore`)
|
||||
- XDG Config (`~/.config/git/`)
|
||||
|
||||
### Other
|
||||
- SSH (`~/.ssh/config`, `~/.ssh/known_hosts`)
|
||||
- Docker (`~/.docker/config.json`, `~/.docker/daemon.json`)
|
||||
|
||||
## Merge Strategies
|
||||
|
||||
ConfSync supports multiple merge strategies:
|
||||
|
||||
| Strategy | Description | Use Case |
|
||||
|----------|-------------|----------|
|
||||
| `keep_local` | Keep local changes, ignore remote | Preserve local overrides |
|
||||
| `keep_remote` | Keep remote changes, ignore local | Overwrite with remote |
|
||||
| `keep_common` | Keep only common lines | Find shared configuration |
|
||||
| `three_way` | Standard three-way merge | When both sides have changes |
|
||||
| `union` | Combine both, remove duplicates | Union of all settings |
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `CONFSYNC_HOME` | Custom config directory for confsync |
|
||||
| `CONFSYNC_KEY_FILE` | Path to encryption key file |
|
||||
| `CONFSYNC_REPO` | Default sync repository URL |
|
||||
| `CONFSYNC_VERBOSE` | Enable verbose output |
|
||||
|
||||
## Configuration Files
|
||||
|
||||
- `confsync.yaml` - Main configuration file for tool settings
|
||||
- `manifest.yaml` - Auto-generated manifest of detected configs
|
||||
- `.confsyncignore` - Patterns to exclude from detection
|
||||
- `confsync.toml` - User preferences and merge rules
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
||||
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
||||
4. Push to the branch (`git push origin feature/amazing-feature`)
|
||||
5. Open a Pull Request
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see LICENSE file for details.
|
||||
Reference in New Issue
Block a user