Skip to content

Latest commit

 

History

History
346 lines (237 loc) · 6.45 KB

README.md

File metadata and controls

346 lines (237 loc) · 6.45 KB

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.

Getting Started

Prerequisites

  • Go: Version 1.20 or later.
  • Mise: Install from the Mise GitHub page.
  • Prettier: Ensure Prettier is installed for formatting YAML and Markdown.

Installation

To install DevEx:

task install

Configuration

Custom Configuration Files

Custom configurations are stored under ~/.devex/:

~/.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

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:

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.
    task default

Build Tasks

  • build: Builds the Go project.

    task build
  • build:local: Builds the Go project for local development.

    task build:local

Installation Task

  • install: Installs DevEx.
    task install

Setup Python Environment

  • setup:python: Sets up Python environment and installs requirements.
    task setup:python

Manage Go Modules

  • mod: Downloads and tidies Go modules.
    task mod

Clean Up Temporary Files

  • clean: Cleans temp files and folders.
    task clean

Linting Tasks

  • lint: Runs golangci-lint.

    task lint
  • lint:fix: Runs golangci-lint and fixes issues.

    task lint:fix
  • lint:staticcheck: Runs staticcheck.

    task lint:staticcheck

Vulnerability Checks

  • vulncheck: Runs vulnerability checks.
    task vulncheck

Testing Tasks

  • 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

Mock Generation

  • mockgen: Generates mocks for interfaces.
    task mockgen

Prettier Formatting

  • prettier:check: Checks if files are formatted with Prettier.

    task prettier:check
  • prettier:fix: Formats files with Prettier.

    task prettier:fix

Documentation Tasks

  • docs:build: Builds the MkDocs site.

    task docs:build
  • docs:serve: Serves MkDocs documentation locally.

    task docs:serve

Code Visualization

  • callvis: Generates a visualization of code.
    task callvis

Static Analysis

  • gocritic: Runs Go Critic for advanced analysis.
    task gocritic

CLI Tasks

  • cli:generate: Generates CLI commands.
    task cli:generate

GoReleaser Tasks

  • goreleaser:test: Tests the release process without publishing.

    task goreleaser:test
  • goreleaser:install: Installs GoReleaser.

    task goreleaser:install

Release Management

  • release:*: Prepares the project for a new release.
    task release:<version>

Package Listing

  • packages: Lists Go packages.
    task packages

To execute tasks, simply run:

task <task-name>

Development

Testing

Run all tests:

task test

Linting

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

Building

Build the application:

go build -o bin/devex cmd/devex/main.go

Automated Releases

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).


Community and Support

GitHub Features

  • 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.

Website

Visit the official website at devex.sh for documentation, guides, and updates.


Contributing

Contributions are welcome! Refer to the Contributing Guide for details.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct.


License

DevEx is licensed under the GNU GPL v3 License.


Security

For security concerns, please refer to our Security Policy.