https://github.com/jameswlane/devex
CLI tool for efficiently setting up and managing development environments.
https://github.com/jameswlane/devex
cli developer-tools
Last synced: 1 day ago
JSON representation
CLI tool for efficiently setting up and managing development environments.
- Host: GitHub
- URL: https://github.com/jameswlane/devex
- Owner: jameswlane
- License: gpl-3.0
- Created: 2024-06-28T13:33:34.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-04-07T21:57:32.000Z (29 days ago)
- Last Synced: 2025-05-05T20:13:37.989Z (1 day ago)
- Topics: cli, developer-tools
- Language: Go
- Homepage: https://devex.sh
- Size: 16.1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# DevEx
DevEx is a powerful CLI tool designed to streamline the setup and management of development environments. It simplifies the installation of applications, configuration of programming languages, and customization of themes.
---
## Features
- **Custom Configuration Management**: Tailor application, GNOME extension, and programming language setups with YAML files.
- **Automated Releases**: Leverage `commitizen`, `semantic-release`, and `goreleaser` for seamless versioning and publishing.
- **Task Automation**: Use `Taskfile` for efficient script execution and workflow management.
- **Community Support**: Engage with contributors through GitHub Issues, Discussions, and Wiki.
- **Prettier Formatting**: Standardize YAML and Markdown files with Prettier.
- **Comprehensive Website**: Access guides, documentation, and updates at [devex.sh](https://devex.sh).---
## Getting Started
### Prerequisites
- **Go**: Version 1.20 or later.
- **Mise**: Install from the [Mise GitHub page](https://github.com/mise/mise).
- **Prettier**: Ensure Prettier is installed for formatting YAML and Markdown.### Installation
To install DevEx:
```bash
task install
```---
## Configuration
### Custom Configuration Files
Custom configurations are stored under `~/.devex/`:
```plaintext
~/.devex/
├── apps.yaml
├── gnome_extensions.yaml
├── programming_languages.yaml
├── config/
│ └── additional_configs.yaml
└── themes.yaml
```### Default vs Custom Configuration
DevEx prioritizes custom configurations in `~/.devex/`. If not found, it falls back to defaults in the `assets/` directory.
#### Example: `apps.yaml`
```yaml
apps:
- name: "Visual Studio Code"
description: "Code editor from Microsoft"
category: "Editors"
install_method: "apt"
install_command: "code"
dependencies:
- "gnome-shell"
- "git"
```### Formatting
To format configuration files, run:
```bash
prettier --write "**/*.{yaml,md}"
```---
## Taskfile Integration
We use `Task` for task automation. Below is an overview of the `Taskfile.yml`:
### Default Task
- **default**: Runs linting and testing.
```bash
task default
```### Build Tasks
- **build**: Builds the Go project.
```bash
task build
```- **build:local**: Builds the Go project for local development.
```bash
task build:local
```### Installation Task
- **install**: Installs DevEx.
```bash
task install
```### Setup Python Environment
- **setup:python**: Sets up Python environment and installs requirements.
```bash
task setup:python
```### Manage Go Modules
- **mod**: Downloads and tidies Go modules.
```bash
task mod
```### Clean Up Temporary Files
- **clean**: Cleans temp files and folders.
```bash
task clean
```### Linting Tasks
- **lint**: Runs golangci-lint.
```bash
task lint
```- **lint:fix**: Runs golangci-lint and fixes issues.
```bash
task lint:fix
```- **lint:staticcheck**: Runs staticcheck.
```bash
task lint:staticcheck
```### Vulnerability Checks
- **vulncheck**: Runs vulnerability checks.
```bash
task vulncheck
```### Testing Tasks
- **test**: Runs test suite.
```bash
task test
```- **test:all**: Runs test suite with additional tags.
```bash
task test:all
```- **test:testify**: Runs tests with testify.
```bash
task test:testify
```- **test:ginkgo**: Runs tests with Ginkgo.
```bash
task test:ginkgo
```### Mock Generation
- **mockgen**: Generates mocks for interfaces.
```bash
task mockgen
```### Prettier Formatting
- **prettier:check**: Checks if files are formatted with Prettier.
```bash
task prettier:check
```- **prettier:fix**: Formats files with Prettier.
```bash
task prettier:fix
```### Documentation Tasks
- **docs:build**: Builds the MkDocs site.
```bash
task docs:build
```- **docs:serve**: Serves MkDocs documentation locally.
```bash
task docs:serve
```### Code Visualization
- **callvis**: Generates a visualization of code.
```bash
task callvis
```### Static Analysis
- **gocritic**: Runs Go Critic for advanced analysis.
```bash
task gocritic
```### CLI Tasks
- **cli:generate**: Generates CLI commands.
```bash
task cli:generate
```### GoReleaser Tasks
- **goreleaser:test**: Tests the release process without publishing.
```bash
task goreleaser:test
```- **goreleaser:install**: Installs GoReleaser.
```bash
task goreleaser:install
```### Release Management
- **release:\***: Prepares the project for a new release.
```bash
task release:
```### Package Listing
- **packages**: Lists Go packages.
```bash
task packages
```To execute tasks, simply run:
```bash
task
```---
## Development
### Testing
Run all tests:
```bash
task test
```### Linting
Install `golangci-lint`:
```bash
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.61.0
```Run the linter:
```bash
task lint
```### Building
Build the application:
```bash
go build -o bin/devex cmd/main.go
```---
## Automated Releases
DevEx uses `commitizen`, `semantic-release`, and `goreleaser` for automated versioning and releases.
To prepare a release:
```bash
task release:
```Where `` can be `major`, `minor`, `patch`, or a specific semantic version (e.g., `1.2.3`).
---
## Community and Support
### GitHub Features
- **[Issues](https://github.com/jameswlane/devex/issues)**: Report bugs or request features.
- **[Discussions](https://github.com/jameswlane/devex/discussions)**: Ask questions or share ideas.
- **[Docs](https://docs.devex.sh)**: View documentation.
- **[Projects](https://github.com/jameswlane/devex/projects)**: Track project progress.
- **[Wiki](https://github.com/jameswlane/devex/wiki)**: Access in-depth documentation.
- **[Security](https://github.com/jameswlane/devex/security)**: Report vulnerabilities.
- **[Pulse](https://github.com/jameswlane/devex/pulse)**: View project activity.### Website
Visit the official website at [devex.sh](https://devex.sh) for documentation, guides, and updates.
---
## Contributing
Contributions are welcome! Refer to the [Contributing Guide](.github/CONTRIBUTING.md) for details.
### Code of Conduct
We expect all contributors to adhere to our [Code of Conduct](CODE_OF_CONDUCT.md).
---
## License
DevEx is licensed under the [GNU GPL v3 License](LICENSE).
---
## Security
For security concerns, please refer to our [Security Policy](SECURITY.md).