CHANGES
=======

1.2.1
-----

* Added interactive flag to `skipper make` and `skipper run`
* Create docker group inside the build container even if there is already a group with the same GID

1.2.0
-----

* Updated README
* Before running command inside build container, test if the build container exist (locally or remotely)
* Adjust `skipper images` and `skipper rmi` commands: 1. Local images are not prefixed with the registry anymore. 2. Replace the 'REMOTE' column with 'REGISTRY' column in `skipper images` output
* Tag the image with the registry before pushing, and remove the tag after pushing
* Now `skipper build` won't add the registry to the tag of the image, since the registry is needed only when pushing the image

1.1.3
-----

* Use currnet user_name & user_id when adding user to container This is required for cases where the build container already has a user with the same id as the user_id which may cause permission problem
* Fixed bash completion of makefile targets

1.1.2
-----

* Updated readme
* Added tests for getting environment variables from skipper.yaml
* Pass specified environment variables to make, run & shell commands. Interpolate environment variables in skipper.yaml

1.1.1
-----

* Create docker group inside the build container with gid from the host

1.1.0
-----

* Added support in building multiple images. Now we can build single image, multiple images or all images: - Single image: skipper build my-image - Multiple images: skipper build my-image1 my-image2 - All images: skipper build
* Added shell sub-command
* Don't run commands in interactive mode by default
* Runner: Now the workspace and project are retrieved only when running inside a build container

1.0.3
-----

* Don't allow wheel distribution. Wheel distribution doesn't support absolute paths for data_files (see: https://bitbucket.org/pypa/wheel/issues/92)
* Added support in interactive mode. Now we can get shell in containers by running 'skipper run bash'
* The runner doesn't really need to connect to the subprocess stdout via PIPE in order to print the its output
* Bug Fix: images command didn't handle correctly multiple local tags for the the same image. When multiple local tags exits for the same image, 'docker images' returns one line per tag, where each line is a separate json string (i.e. {"name": image_name, "tag: image_tag}). This means that each line should be decoded as a json separately
* Set the workdir path inside the buid container to be the same path as in the host. Note that skipper communicates with the docker daemon that is running on the host, so using the same path for the workdir will allow us to run containers with mounts inside the build container (i.e. by running docker-compose)

1.0.2
-----

* Now 'make all' will only build the package (and not also run the tests). This is will allow one to build the package without installing dev requirements (i.e. pytest)
* Moved to pbr
* Added *requirements.txt file for describing the dependencies: 1. requirements.txt specifies the required packages for installation. 2. dev-requirements.txt specifies the additional packages for testing
* Do not print empty lines while running command as subprocess
* Skipper is now licensed under the Apache 2.0 license
* Added --upgrade to install target recipe
* Relaxed the requests requirement
* Now skipper creates a user (same user from the host) right after launching the build container, and executes the given command with this user
* Fixed README

1.0.1
-----

* Necessary changes before uploading to PyPi
* Added some logging
* Enhanced bash completion: 1. Support docker images completion. 2. Support makefiles completions. 3. Support makefile targets completion
* Surround strings with '' instead of "" (for consistency purposes)
* Use pseudo-tty when running running commands inside a container. This is needed if we want to take advantage of advanced terminal features, like colored output
* Increased converage threshold to 95%
* Improved images command tests
* If no tag was supplied for build container - build it from scratch
* Added UT for failed rmi operations
* Added UT for rmi command
* Added rmi operation to README.md
* Added rmi operation to skipper 'skipper rmi' will delete image from local docker 'skipper rmi -r' will delete image from remote registry
* Extended global parameters validation. Note the registry is mandatory for all commands while build-container-image and build-container-tag are mandatory only for run and make commands
* Now 'images' command works even if no image is found locally
* Fixed get_images_from_dockerfiles(): The Dockerfile name was incorrect
* Install bash completion script only when running the installation script as root. This is also a workaround for a bug that prevents tox from install the above script while creating the virtual environment
* Added support in bash completion
* Updated README
* Changed dockerfile name notation from {image}.Dockerfile to Dockerfile.{image}
* Replaced use of "" with '' (just for consistency)
* Removed dependency in docker-py
* Added context validation
* Removed --nested/--no-nested options: 1. No need to run docker related commands inside build container. 2. 'make' and 'run' commands should always run inside build container
* Added 'images' command for list local & remote images of the repository
* Moved cli::_generate_fqdn_image() --> utils::generate_fqdn_image(). Also, Improved _generate_fqdn_image() to support empty registry / tag
* Fixed logging: 1. Use separate logger for skipper (instead of the root logger). 2. Separate logging messages from commands outputs. 3. Replaces '--quiet' with '--verbose' parameter for controling the verbosity of skipper. 4. Use print() instead of print, for future support in python 3
* Increased coverage threshold
* Added tests for running the cli with defaults loaded from config file
* Added config module for config file related functions. Also, moved main::_load_defaults() --> config::load_defaults()
* Refactored CLI tests
* Added default makefile for make command
* Populate the return code of the commands upstream
* Don't suppress stderr messages
* Added validation of global options for nested mode
* Now the config file (skipper.yaml) is compatible with the CLI sub-commands and parameters hierarchy
* Fixed commands help messages
* Improved CLI tests
* Updated README
* Renamed global options '--image' and '--tag' to '--build-container-image' and ''--build-container-tag' (respectively). Now each sub-command creates the build container full name in order to assure that it is done after the processing of the sub-command parameters (especially the '--help' parameter)
* Fixed help message of make sub-command
* Suppress stderr output
* Added push command
* Don't print empty lines from terminated subprocess
* Fixed entry_point (returned main function)
* API Change: Now all commands (build, run & make) can be executed inside or outside a container. It is determined by the --nested/--no-nested global parameter (default=nested). In nested mode, the container defined by the global parameters - registry, image and tag - will be used
* Added runner module for running commands inside and outside a container
* Take defaults from skipper.yaml config file
* Changed the way the makefile was passed to the make sub-command. Previously, it was passed as an argument, and now it is passed as an option. The new behavior is more compatible with the make utility
* Now clean target also deletes build directory
* Replaced argparse with click for constructing the CLI interface. Click allows us to create a CLI command by wrapping the function that implements the command logic with decorators. This way the code is more testable and self documented. Also removed depscheck command, because it is not belong here
* Load defaults from skipper.yaml (per-project config file)
* Derive the name of the dockerfile from the supplied image name - {image_name}.Dockerfile. Also, set the default tag to 'latest'
* Now the help message of the each subcommand will include the options defaults (if there are any)
* Added support in setting environment variables for run/make subcommands
* Fixed README
* Updated README
* Now unittests are more readable and maintainable
* Don't assume USER environment variable exists
* By default tag docker image with full hash
* Updated list of lines to exclude from coverage
* First commit
