Giter Site home page Giter Site logo

toolship's Introduction

🚢 toolship

toolship is a small framework to containerize dev tools. It comes with a few tools ready to use, and you can easily add your own. Read more here

Usage

git clone https://github.com/yapret/toolship.git
cd toolship
./build.zsh

Tools

Provided tools include:

  • ansible
  • aws-cli
  • diagrams.py
  • hugo
  • jq
  • kubectl
  • node & npm
  • packer
  • python
  • terraform
  • wrangler

Those provided tools' installations are opinionated, and not necessarily consistent with each other, as I've accumulated them over the years. For example:

  • aws-cli uses the latest version, where python is set to 3.11
  • Some tools are "pure"/as-is, others have additional dependencies built-in (e.g. requests for python, which I use frequently)

Architecture

toolship is built on top of Docker. The src folder contains one directory per tool, each of which contains :

  • (optional) a Dockerfile to build the tool's image
  • (required) a functions.zsh script which defines functions named after the tool's commands, which will be used to run the tool's image. References to the tool's image should be made using the $TOOLSHIP_IMAGE_NAME.

The build.zsh script runs through each tool directory, builds the image if a Dockerfile is present, then adds the tool's functions to a global .toolship.zsh script. This script can then be sourced in your .zshenv.

Adding tools

To add a tool, create a directory in src named after the tool, and add a Dockerfile and functions.zsh script. They will automatically be picked up on the next build.zsh run. See the existing tools for examples.

toolship's People

Contributors

yapret avatar

Stargazers

Roger Miret avatar John McAndrews avatar Dushko Davchev avatar Darkham avatar Fábio Luciano avatar Youssef Azani avatar Derek Nance avatar Michele Finotto avatar Tiago Posse avatar  avatar Andrew avatar Tanner Johnson avatar Samier Saeed avatar YK avatar Shaan avatar arbadacarba avatar Max Lewin avatar Alex Templeton avatar Mahesh Narayanamurthi avatar Michael Ladd avatar Kevin Jiang avatar Adam Lundrigan avatar  avatar Nikolay Kolev avatar  avatar A.s. avatar Kam Woods avatar Michael Geiger avatar daly avatar Pratik Borole avatar rohit sohlot avatar Nikita Dudnik avatar Garun Vagidov avatar Michael Grassotti avatar Abdessalam Benharira avatar

Watchers

 avatar

toolship's Issues

Project has similar goals to nix

I came across your blog post on hacker news and I couldn't help but notice the similarities in philosophy with nix.

Besides acting like a traditional package manager (think homebrew, pacman, apt etc) nix has other benefits I think you might be interested in.

Ad hoc shell environments

These are ephemereal shells that start with predifined nix packages. As soon as you exit the shell you lose access to the packages you initiated the shell with (the files are cached until you clean them with the nix-collect-garbage --delete-old command).

Nix flakes

Flakes can be used to contain a whole development environment within a flake.nix file. When you run the nix develop command in a directory containing a flake, nix spins up a shell with all the packages you specified and optionally runs some scripts (npm run dev for example).

With flakes and ad hoc shells you can keep your installed package count low and your workstation secure.

The main goal of the whole nix ecosystem is to keep systems reproducible, and the examples above are just scratching the surface of what nix can do (tbh I'm quite a beginner myself).

I opened this issue to let you know about this tool I think you might find useful. Feel free to close it. I apologize if I caused any inconvenience.

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.