GithubHelp home page GithubHelp logo

contains-io / containment Goto Github PK

View Code? Open in Web Editor NEW
5.0 4.0 4.0 29 KB

Automate the creation and management of development containers.

License: MIT License

Python 99.55% Shell 0.45%
python docker dev tools developer-tools docker-container rkt containers automation

containment's People

Contributors

dangle avatar zancas avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

containment's Issues

The preferences parser is untested.

This issue is complete when (pytest) tests exist that validate correct operation of the parser.

Cases covered should (at a minimum) include:

  • missing preferences.ini
  • missing section headers (various types)
  • section types not available
  • malformed section contents (what does this mean)?

Note we don't necessarily need to recap tests of the basic parsing functionality.

README

  • add travis-ci badge
  • do slack channel magic (slackin) and add badge
  • explain branching (all work happens off development; master is for releases ONLY)
  • design stuff in #3

Need to implement preferences parser.

This issue is complete when the specification of the preferences file (1.0) is complete, a parser has been implemented, tested, and documented.

The spec should include (at a minimum):

  • more than 1 example "preferences.ini" file
  • A first-draft list of ini heading "technologies", e.g. ".py", ".js",...
  • An abstract specification of section names
  • a vocabulary for discussing the components of the file

All of the above in some clear readable, format/location

Dockerfile

  • mount $HOME:$HOME (this allows us to use the .bash_profile/.bashrc customizations, i.e., make inside the container feel and look like outside the container)
  • entry point will be a script that:
    • accepts a set of env variables from the RUN script and sets them internally
    • creates the right users, groups, and IDs
    • ???

Things to be addressed later:

  • mounting $HOME can make docker builds too big and unwieldy
  • security issues (from others and from self)

Architecture notes

There are two sources of configuration information:

(0) CORE: (version 0.1) inferred from project stored as: PROJECT/.containenv/Dockerfile
(1) SUGGESTED_PREFERENCES: (version 0.2) in PROJECT/.containenv/SUGGESTED (overridden by PREFERENCES)
(2) PREFERENCES: (version 0.1) ${HOME_ENV}/containenv/preferences.ini

containenv should be language-agnostic

virtualenv is for python projects.
Our alternative should, initially, inherently support python (3), go, & node.js. Other languages can be added later.

Docs

We need to figure out how we want to handle docs.
@zancas

Implement image publish

After init completes, there should be a PROJECT containenv image published in a consistent location.

A Complete Flow for `containenv init` on an extant project needs to be implemented.

So, the project is already there... containenv should have explicit tools that manipulate state in this case. e.g. Maybe you know that the new ubuntu from image is different in some desirable way. Perhaps containenv should provide a convenience flag to allow you to force a rebuild.

This process will be more natural once containenv init is broken into natural constituents:
containenv init write_config and containenv init build and containenv init publish perhaps?

There are no docs for preferences

This issue is closed when theres a succinct explanation of the preferences.ini file, including:

  • design
  • contents
  • how to modify
  • how it's used.

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.