Skip to content

leftstache/dkr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dkr

Extensible Docker CLI Client

To Use

dkr --help for use.

To Install

pip install dkr

To Extend

Add any .py file to ~/.dkr/commands/. It should have the following functions:

  • command(): returns a str or list of str. The name of the subcommand(s).
  • help_summary(str): takes a str returns a str. The returned string is what is displayed for the given command in --help.
  • import_command(docker_client, args, state): Takes the docker-py docker client and a subparser for argparse.ArgumentParser for the command. The state is a simple dictionary that remains persistent between running the dkr command. You can use this to track state, e.g. to remember what the last container was used so you can provide a shortcut.
    args.set_defaults(func=somefunc) should be called. somefunc will be invoked when your particular command is run from the CLI. It should accept the same three arguments as import_command.

Create Options

The dkr create command has the --option (-o) flag that can be specified multiple times. The format is explained below. This can be used to specify any docker create arg, using the naming conventions used by docker-py

Create Options Format

These arguments get expanded to a dict. For example:

dkr create -o key=value image_name

Is expanded to:

{
   "key": "value"
}

This also handles nested values:

dkr create -o nested.key=value image_name

Is expanded to:

{
   "nested": {
       "key": "value"
   }
}

You can also specify raw json values:

dkr create -o nested.key:=true image_name

Is expanded to:

{
   "nested": {
       "key": True
   }
}

And:

dkr create -o "nested.key:=[true, false, 0]" image_name

Is expanded to:

{
   "nested": {
       "key": [True, False, 0]
   }
}

You can use multiple options:

dkr create -o "nested.key:=[true, false, 0]" -o "nested.key2=value" image_name

Is expanded to:

{
   "nested": {
       "key": [True, False, 0],
       "key2": "value"
   }
}

You can test this yourself by running dkr_core/cmd_to_json.py with naked arguments. i.e. no -o:

python3 dkr_core/cmd_to_json.py "nested.key:=[true, false, 0]" "nested.key2=value"

Releases

No releases published

Packages

No packages published

Languages