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.
- Custom Configuration Management: Tailor application, GNOME extension, and programming language setups with YAML files.
- Automated Releases: Leverage
commitizen
,semantic-release
, andgoreleaser
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.
- Go: Version 1.20 or later.
- Mise: Install from the Mise GitHub page.
- Prettier: Ensure Prettier is installed for formatting YAML and Markdown.
To install DevEx:
task install
Custom configurations are stored under ~/.devex/
:
~/.devex/
├── apps.yaml
├── gnome_extensions.yaml
├── programming_languages.yaml
├── config/
│ └── additional_configs.yaml
└── themes.yaml
DevEx prioritizes custom configurations in ~/.devex/
. If not found, it falls back to defaults in the assets/
directory.
apps:
- name: "Visual Studio Code"
description: "Code editor from Microsoft"
category: "Editors"
install_method: "apt"
install_command: "code"
dependencies:
- "gnome-shell"
- "git"
To format configuration files, run:
prettier --write "**/*.{yaml,md}"
We use Task
for task automation. Below is an overview of the Taskfile.yml
:
- default: Runs linting and testing.
task default
-
build: Builds the Go project.
task build
-
build:local: Builds the Go project for local development.
task build:local
- install: Installs DevEx.
task install
- setup:python: Sets up Python environment and installs requirements.
task setup:python
- mod: Downloads and tidies Go modules.
task mod
- clean: Cleans temp files and folders.
task clean
-
lint: Runs golangci-lint.
task lint
-
lint:fix: Runs golangci-lint and fixes issues.
task lint:fix
-
lint:staticcheck: Runs staticcheck.
task lint:staticcheck
- vulncheck: Runs vulnerability checks.
task vulncheck
-
test: Runs test suite.
task test
-
test:all: Runs test suite with additional tags.
task test:all
-
test:testify: Runs tests with testify.
task test:testify
-
test:ginkgo: Runs tests with Ginkgo.
task test:ginkgo
- mockgen: Generates mocks for interfaces.
task mockgen
-
prettier:check: Checks if files are formatted with Prettier.
task prettier:check
-
prettier:fix: Formats files with Prettier.
task prettier:fix
-
docs:build: Builds the MkDocs site.
task docs:build
-
docs:serve: Serves MkDocs documentation locally.
task docs:serve
- callvis: Generates a visualization of code.
task callvis
- gocritic: Runs Go Critic for advanced analysis.
task gocritic
- cli:generate: Generates CLI commands.
task cli:generate
-
goreleaser:test: Tests the release process without publishing.
task goreleaser:test
-
goreleaser:install: Installs GoReleaser.
task goreleaser:install
- release:*: Prepares the project for a new release.
task release:<version>
- packages: Lists Go packages.
task packages
To execute tasks, simply run:
task <task-name>
Run all tests:
task test
Install golangci-lint
:
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:
task lint
Build the application:
go build -o bin/devex cmd/devex/main.go
DevEx uses commitizen
, semantic-release
, and goreleaser
for automated versioning and releases.
To prepare a release:
task release:<version>
Where <version>
can be major
, minor
, patch
, or a specific semantic version (e.g., 1.2.3
).
- Issues: Report bugs or request features.
- Discussions: Ask questions or share ideas.
- Projects: Track project progress.
- Wiki: Access in-depth documentation.
- Security: Report vulnerabilities.
- Pulse: View project activity.
Visit the official website at devex.sh for documentation, guides, and updates.
Contributions are welcome! Refer to the Contributing Guide for details.
We expect all contributors to adhere to our Code of Conduct.
DevEx is licensed under the GNU GPL v3 License.
For security concerns, please refer to our Security Policy.