├── .appenv ├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── TODO.md ├── docs ├── api.md ├── configuration.md ├── connections.md ├── internals.md ├── persistent-sessions.md ├── repl.md ├── reporting.md ├── sessions.md └── variants.md ├── examples ├── 001-packages-ensure.py ├── helloworld-local.py ├── helloworld-remote-mitogen.py ├── helloworld-remote-parallel-ssh.py ├── helloworld-remote.py └── tmux.py ├── setup.py ├── src └── py │ └── cuisine │ ├── __init__.py │ ├── __main__.py │ ├── api │ ├── __init__.py │ ├── __main__.py │ ├── _impl.py │ ├── _repl.py │ ├── _stub.py │ ├── command.py │ ├── config.py │ ├── connection.py │ ├── dir.py │ ├── env.py │ ├── file.py │ ├── group.py │ ├── locale.py │ ├── logging.py │ ├── package.py │ ├── packages_python.py │ ├── process.py │ ├── ssh.py │ ├── system.py │ ├── text.py │ ├── tmux.py │ ├── tools.py │ ├── user.py │ └── util │ │ └── config.py │ ├── connection │ ├── __init__.py │ ├── local.py │ ├── mitogen.py │ ├── parallelssh.py │ ├── paramiko.py │ └── tmux.py │ ├── decorators.py │ ├── logging.py │ └── utils.py └── tests ├── api-user.py ├── bugs └── 124-file_write.py ├── command-cd.py ├── connection-context.py ├── connection-local.py ├── connection-mitogen.py ├── connection-parallelssh.py ├── connection-paramiko.py ├── connection-streaming.py ├── connection-tmux.py ├── harness.py ├── linux └── all.py ├── primitive-reporting.py ├── repl.py ├── transport-mitogen.py ├── transport-parallelssh.py ├── transport-paramiko.py ├── transport-sshcommand.py ├── transport-tmux.py └── utils-quotes.py /.appenv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/.appenv -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/README.md -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/TODO.md -------------------------------------------------------------------------------- /docs/api.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/api.md -------------------------------------------------------------------------------- /docs/configuration.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/configuration.md -------------------------------------------------------------------------------- /docs/connections.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/connections.md -------------------------------------------------------------------------------- /docs/internals.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/internals.md -------------------------------------------------------------------------------- /docs/persistent-sessions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/persistent-sessions.md -------------------------------------------------------------------------------- /docs/repl.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/repl.md -------------------------------------------------------------------------------- /docs/reporting.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/reporting.md -------------------------------------------------------------------------------- /docs/sessions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/sessions.md -------------------------------------------------------------------------------- /docs/variants.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/docs/variants.md -------------------------------------------------------------------------------- /examples/001-packages-ensure.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/examples/001-packages-ensure.py -------------------------------------------------------------------------------- /examples/helloworld-local.py: -------------------------------------------------------------------------------- 1 | from cuisine import * 2 | print(run("echo 'Hello, World!'")) 3 | -------------------------------------------------------------------------------- /examples/helloworld-remote-mitogen.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/examples/helloworld-remote-mitogen.py -------------------------------------------------------------------------------- /examples/helloworld-remote-parallel-ssh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/examples/helloworld-remote-parallel-ssh.py -------------------------------------------------------------------------------- /examples/helloworld-remote.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/examples/helloworld-remote.py -------------------------------------------------------------------------------- /examples/tmux.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/examples/tmux.py -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/setup.py -------------------------------------------------------------------------------- /src/py/cuisine/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/__init__.py -------------------------------------------------------------------------------- /src/py/cuisine/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/__main__.py -------------------------------------------------------------------------------- /src/py/cuisine/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/__init__.py -------------------------------------------------------------------------------- /src/py/cuisine/api/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/__main__.py -------------------------------------------------------------------------------- /src/py/cuisine/api/_impl.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/_impl.py -------------------------------------------------------------------------------- /src/py/cuisine/api/_repl.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/_repl.py -------------------------------------------------------------------------------- /src/py/cuisine/api/_stub.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/_stub.py -------------------------------------------------------------------------------- /src/py/cuisine/api/command.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/command.py -------------------------------------------------------------------------------- /src/py/cuisine/api/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/config.py -------------------------------------------------------------------------------- /src/py/cuisine/api/connection.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/connection.py -------------------------------------------------------------------------------- /src/py/cuisine/api/dir.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/dir.py -------------------------------------------------------------------------------- /src/py/cuisine/api/env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/env.py -------------------------------------------------------------------------------- /src/py/cuisine/api/file.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/file.py -------------------------------------------------------------------------------- /src/py/cuisine/api/group.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/group.py -------------------------------------------------------------------------------- /src/py/cuisine/api/locale.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/locale.py -------------------------------------------------------------------------------- /src/py/cuisine/api/logging.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/logging.py -------------------------------------------------------------------------------- /src/py/cuisine/api/package.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/package.py -------------------------------------------------------------------------------- /src/py/cuisine/api/packages_python.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/packages_python.py -------------------------------------------------------------------------------- /src/py/cuisine/api/process.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/process.py -------------------------------------------------------------------------------- /src/py/cuisine/api/ssh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/ssh.py -------------------------------------------------------------------------------- /src/py/cuisine/api/system.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/system.py -------------------------------------------------------------------------------- /src/py/cuisine/api/text.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/text.py -------------------------------------------------------------------------------- /src/py/cuisine/api/tmux.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/tmux.py -------------------------------------------------------------------------------- /src/py/cuisine/api/tools.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/tools.py -------------------------------------------------------------------------------- /src/py/cuisine/api/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/user.py -------------------------------------------------------------------------------- /src/py/cuisine/api/util/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/api/util/config.py -------------------------------------------------------------------------------- /src/py/cuisine/connection/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/connection/__init__.py -------------------------------------------------------------------------------- /src/py/cuisine/connection/local.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/connection/local.py -------------------------------------------------------------------------------- /src/py/cuisine/connection/mitogen.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/connection/mitogen.py -------------------------------------------------------------------------------- /src/py/cuisine/connection/parallelssh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/connection/parallelssh.py -------------------------------------------------------------------------------- /src/py/cuisine/connection/paramiko.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/connection/paramiko.py -------------------------------------------------------------------------------- /src/py/cuisine/connection/tmux.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/connection/tmux.py -------------------------------------------------------------------------------- /src/py/cuisine/decorators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/decorators.py -------------------------------------------------------------------------------- /src/py/cuisine/logging.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/logging.py -------------------------------------------------------------------------------- /src/py/cuisine/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/src/py/cuisine/utils.py -------------------------------------------------------------------------------- /tests/api-user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/api-user.py -------------------------------------------------------------------------------- /tests/bugs/124-file_write.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/bugs/124-file_write.py -------------------------------------------------------------------------------- /tests/command-cd.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/command-cd.py -------------------------------------------------------------------------------- /tests/connection-context.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-context.py -------------------------------------------------------------------------------- /tests/connection-local.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-local.py -------------------------------------------------------------------------------- /tests/connection-mitogen.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-mitogen.py -------------------------------------------------------------------------------- /tests/connection-parallelssh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-parallelssh.py -------------------------------------------------------------------------------- /tests/connection-paramiko.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-paramiko.py -------------------------------------------------------------------------------- /tests/connection-streaming.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-streaming.py -------------------------------------------------------------------------------- /tests/connection-tmux.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/connection-tmux.py -------------------------------------------------------------------------------- /tests/harness.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/harness.py -------------------------------------------------------------------------------- /tests/linux/all.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/linux/all.py -------------------------------------------------------------------------------- /tests/primitive-reporting.py: -------------------------------------------------------------------------------- 1 | from cuisine import * 2 | 3 | run("tar fxz package.tar.gz") 4 | # EOF 5 | -------------------------------------------------------------------------------- /tests/repl.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/repl.py -------------------------------------------------------------------------------- /tests/transport-mitogen.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/transport-mitogen.py -------------------------------------------------------------------------------- /tests/transport-parallelssh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/transport-parallelssh.py -------------------------------------------------------------------------------- /tests/transport-paramiko.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/transport-paramiko.py -------------------------------------------------------------------------------- /tests/transport-sshcommand.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/transport-sshcommand.py -------------------------------------------------------------------------------- /tests/transport-tmux.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/transport-tmux.py -------------------------------------------------------------------------------- /tests/utils-quotes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sebastien/cuisine/HEAD/tests/utils-quotes.py --------------------------------------------------------------------------------