Git Product home page Git Product logo

dada's Introduction

Managing development tools

I'm looking for a tool to manage development tools like linters, test runners, etc.

The current approaches available are

  • install the tools in my system

    Here I'm left with manual management of tools versions. Even if pipx supports installation of multiple versions, there's no easy way to active the required versions for the project. And that's just for python tools.

  • install the tools as dev dependencies

    It's really not what dev dependencies are meant for. Besides, only works for tools written in the same language as the project (or wrapped in a package for the language). But the bigger problem is that they share the execution environment with the project and with each other, which leads to dependency hell.

  • use Nix

    I've had one encounter with Nix and I didn't like it. I was expecting make-grade tool, instead it took a couple of hours to install, it downloaded gigabytes of packages and sources to build. It was supposed to use some online cache on the way but that's failed. Oh, and it required root access, and created some extra users in the OS on the way.

  • use pre-commit

    I like pre-commit a lot, but again, it's not intended as a dev-tool-manager.

    It does have some great features. It pulls packages from git repository (no bin repository needed), install them for a single user (no root access needed) together with dependencies in separated environments (no dependency hell) and use declared versions for the project (no need for manual version management).

    This is all great, but it's literal gits pre-commit utility, which means it wants to be really fast and have predictable executions. It's not intended as a general purpose dev-tool manager - it doesn't provide the tolls with full project environment (so it doesn't include dependencies) so it doesn't support test runners (also because testing is to slow for a pre-commit hook) and even support for some linters (see pythons mypy) is suboptimal (again, mypy works best with access to dependencies).

    It seems to have some issues with integrity checks that causes buggy package updates creep in and break executions.

I think pre-commit would be a either a good tool to wrap into a generic tool-manager, or a good starting point for a fork.

And it's pure python.

dada's People

Contributors

rafalkrupinski avatar

Watchers

 avatar  avatar

dada's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.