An open API service indexing awesome lists of open source software.

https://github.com/rios0rios0/dev-toolkit

Developer toolkit CLI written in Go. Manages Git repositories across multiple providers (GitHub, Azure DevOps, GitLab, Codeberg) with parallel cloning, syncing, project bootstrapping, and language-aware build/test/lint/SAST commands.
https://github.com/rios0rios0/dev-toolkit

automation cli developer-tools git golang repository-management

Last synced: about 2 months ago
JSON representation

Developer toolkit CLI written in Go. Manages Git repositories across multiple providers (GitHub, Azure DevOps, GitLab, Codeberg) with parallel cloning, syncing, project bootstrapping, and language-aware build/test/lint/SAST commands.

Awesome Lists containing this project

README

          

Dev-Toolkit




Latest Release


License


Build Status


OpenSSF Best Practices

Dev-Toolkit is a developer workspace toolkit that manages Git repositories across multiple providers and bootstraps projects by detecting their language. It consolidates [gitforge](https://github.com/rios0rios0/gitforge) and [langforge](https://github.com/rios0rios0/langforge) into a single CLI.

## Features

- **Repository Cloning**: discovers repos from GitHub, Azure DevOps, or GitLab and clones missing ones via SSH in parallel
- **Repository Syncing**: fetches and rebases all repos under a directory, preserving uncommitted work via WIP branches
- **Gist Cloning & Syncing**: discovers GitHub gists for a user, clones missing ones via SSH using a description-derived slug, and syncs them with the same WIP-aware workflow as repos
- **Fork Syncing**: detects forked repos via provider API, syncs with upstream parent, and handles conflicts by creating reference branches
- **Branch Pruning**: deletes local branches merged into the default branch across all repos
- **Docker Management**: lists container IPs and resets the Docker environment (stop, prune)
- **System Cleanup**: reclaims disk space by clearing caches across Go, Node, Python, Gradle, JetBrains, Terra, and SDKMAN, pruning obsolete CLI-agent binary versions, and wiping transient state -- credentials, SDKs, and shell history are preserved
- **Multi-Provider Support**: automatic provider detection from directory path with per-provider auth tokens

## Installation

```bash
curl -fsSL https://raw.githubusercontent.com/rios0rios0/dev-toolkit/main/install.sh | sh
```

Or build from source:

```bash
go install github.com/rios0rios0/dev-toolkit/cmd/dev-toolkit@latest
```

Download pre-built binaries from the [releases page](https://github.com/rios0rios0/dev-toolkit/releases).

## Usage

```bash
# Clone all repos for a GitHub user/org
dev repo clone [root-dir]
dev repo clone mine ~/Development/github.com/rios0rios0
dev repo clone my-org ~/Development/dev.azure.com/my-org
dev repo clone mine --dry-run # preview without cloning

# Sync all repos under a directory
dev repo sync [root-dir]
dev repo sync ~/Development/github.com/rios0rios0

# Sync forked repos with their upstream parent
dev repo fork-sync [root-dir]
dev repo fork-sync ~/Development/github.com/rios0rios0
dev repo fork-sync --dry-run # preview without syncing

# Delete local merged branches
dev repo prune [root-dir]
dev repo prune ~/Development/github.com/rios0rios0 --dry-run

# Clone all GitHub gists for a user (slug derived from description; falls back to gist ID)
dev gist clone [root-dir]
dev gist clone mine ~/Development/gist.github.com/rios0rios0
dev gist clone mine ~/Development/gist.github.com/rios0rios0 --dry-run

# Sync all gists under a directory
dev gist sync [root-dir]
dev gist sync ~/Development/gist.github.com/rios0rios0

# Docker environment management
dev docker ips # list container IP addresses
dev docker reset # stop all containers, prune everything
dev docker reset --dry-run # preview without executing
```

### Authentication

Set the appropriate environment variable for your provider:

| Provider | Environment Variable |
|----------|---------------------|
| GitHub | `GH_TOKEN` |
| Azure DevOps | `AZURE_DEVOPS_EXT_PAT` |
| GitLab | `GITLAB_TOKEN` |

### SSH Aliases

The clone command uses SSH config aliases (e.g., `github.com-mine`). Configure these in `~/.ssh/config`:

```
Host github.com-mine
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
```

## Contributing

Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

## License

See [LICENSE](LICENSE) file for details.