All Projects → JonathonReinhart → Scuba

JonathonReinhart / Scuba

Licence: mit
Simple Container-Utilizing Build Apparatus

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Scuba

Gon
Sign, notarize, and package macOS CLI tools and applications written in any language. Available as both a CLI and a Go library.
Stars: ✭ 929 (+1501.72%)
Mutual labels:  build-tool
Pi Builder
Extensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using Docker
Stars: ✭ 31 (-46.55%)
Mutual labels:  build-tool
Ltx2any
Yet another LaTeX build wrapper, with one or two nifty features
Stars: ✭ 48 (-17.24%)
Mutual labels:  build-tool
Wonderbuild
Wonderbuild is an extremely fast, extensible build tool
Stars: ✭ 9 (-84.48%)
Mutual labels:  build-tool
Yb
A new build tool optimized for local + remote development
Stars: ✭ 29 (-50%)
Mutual labels:  build-tool
Forgemodbuilder
Build, setup, update and refresh your modding environment!
Stars: ✭ 37 (-36.21%)
Mutual labels:  build-tool
Cargo Make
Rust task runner and build tool.
Stars: ✭ 895 (+1443.1%)
Mutual labels:  build-tool
Phing
PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.
Stars: ✭ 1,085 (+1770.69%)
Mutual labels:  build-tool
Athena
O2前端流程工具
Stars: ✭ 959 (+1553.45%)
Mutual labels:  build-tool
Html Modules Toolkit
Transforming HTML standards of the future into JavaScript standards of the past
Stars: ✭ 45 (-22.41%)
Mutual labels:  build-tool
Elm Kitchen
Easily bootstrap a new Elm SPA
Stars: ✭ 21 (-63.79%)
Mutual labels:  build-tool
Godo
godo is an improved `go run`
Stars: ✭ 28 (-51.72%)
Mutual labels:  build-tool
Phaser Node Kit
Rapid Game Development with PhaserJS and Node for Modern Browsers
Stars: ✭ 39 (-32.76%)
Mutual labels:  build-tool
Gulp Boilerplate
A boilerplate for building web projects with Gulp.js.
Stars: ✭ 840 (+1348.28%)
Mutual labels:  build-tool
Buck
A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages.
Stars: ✭ 8,162 (+13972.41%)
Mutual labels:  build-tool
Hopp
Crazy rapid build system.
Stars: ✭ 24 (-58.62%)
Mutual labels:  build-tool
Doit
task management & automation tool
Stars: ✭ 972 (+1575.86%)
Mutual labels:  build-tool
Scons
SCons - a software construction tool
Stars: ✭ 1,091 (+1781.03%)
Mutual labels:  build-tool
Dawn
🌅 Dawn is a lightweight task management and build tool for front-end and nodejs.
Stars: ✭ 1,057 (+1722.41%)
Mutual labels:  build-tool
Bashful
Use a yaml file to stitch together commands and bash snippits and run them with a bit of style. Why? Because your bash script should be quiet and shy-like (...and not such a loud mouth).
Stars: ✭ 1,018 (+1655.17%)
Mutual labels:  build-tool

SCUBA Build Status codecov.io PyPI Gitter

Simple Container-Utilizing Build Apparatus

SCUBA is a simple tool that makes it easier to use Docker containers in everyday development. It is intended to be used by developers in 'make' or 'scons' based build environments, where the entire build environment is encapsulated in a Docker container.

Its purpose is to lower the barrier to using Docker for everyday builds. SCUBA keeps you from having to remember a complex docker run command line, and turns this

$ docker run -it --rm -v $(pwd):/build:z -w /build -u $(id -u):$(id -g) gcc:5.1 make myprogram

into this:

$ scuba make myprogram

Installation

Install via pip

Scuba is hosted at PyPI.

To install:

$ sudo pip install scuba

To install with argcomplete (for bash completion support):

$ sudo pip install scuba[argcomplete]

To uninstall:

$ sudo pip uninstall scuba

Install from source

Scuba can be built from source on Linux only (due to the fact that scubainit must be compiled):

  1. Run make to build scubainit
  2. Run ./run_nosetests.py to run the unit tests
  3. Run sudo python setup.py install to install scuba
  4. Run ./run_full_tests.py to test the installed version of scuba

If musl-libc is installed, it can be used to reduce the size of scubainit, by overriding the CC environment variable in step 1:

CC=/usr/local/musl/bin/musl-gcc make

Note that installing from source in this manner can lead to an installation with increased startup times for Scbua. See #71 for more details. This can be remedied by forcing a wheel to be installed, as such:

$ export CC=/usr/local/musl/bin/musl-gcc    # (optional)
$ sudo pip install wheel
$ python setup.py bdist_wheel
$ sudo pip install dist/scuba-<version>-py3-none-any.whl

Configuration

Configuration is done using a YAML file named .scuba.yml in the root directory of your project. It is expected that .scuba.yml be checked in to version control. Full documentation on .scuba.yml can be found in doc/yaml-reference.md, and specific examples can be found in the example directory.

An example .scuba.yml file might look like this:

image: gcc:5.1

aliases:
  build: make -j4

In this example, scuba build foo would execute make -j4 foo in a gcc:5.1 container.

Environment

Scuba defines the following environment variables in the container:

  • SCUBA_ROOT the root of the scuba working directory mount; the directory where .scuba.yml was found.

Bash Completion

Scuba supports command-line completion using the argcomplete package. Per the argcomplete README, command-line completion can be activated by:

  • Running eval "$(register-python-argcomplete scuba)" manually to enable completion in the current shell instance
  • Adding eval "$(register-python-argcomplete scuba)" to ~/.bash_completion
  • Running activate-global-python-argcomplete --user to install the script ~/.bash_completion.d/python-argcomplete.
    • NOTE: The generated file must be sourced, which is not the default behavior. Adding the following code block to ~/.bash_completion is one possible solution.
      for bcfile in ~/.bash_completion.d/*; do
          [ -f "$bcfile" ] && . "$bcfile"
      done
      
  • Running activate-global-python-argcomplete as root (or sudo) to use argcomplete for all users

License

This software is released under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].