├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .subuser.json ├── COMMUNITY.rst ├── CONTRIBUTING.rst ├── COPYING.LGPL ├── Makefile ├── README.rst ├── VERSION ├── docs ├── .gitignore ├── Makefile ├── README.md ├── _themes │ └── sphinx_rtd_theme │ │ ├── __init__.py │ │ ├── breadcrumbs.html │ │ ├── footer.html │ │ ├── layout.html │ │ ├── layout_old.html │ │ ├── search.html │ │ ├── searchbox.html │ │ ├── static │ │ ├── css │ │ │ ├── badge_only.css │ │ │ └── theme.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── images │ │ │ ├── subuser-dev-freecad.mp4 │ │ │ ├── subuser-logo.png │ │ │ ├── subuser-vision.mp4 │ │ │ └── subuser-website.svg │ │ └── js │ │ │ └── theme.js │ │ ├── theme.conf │ │ └── versions.html ├── commands │ ├── generate-command-docs.py │ └── index.rst.head ├── community-guidelines.rst ├── community.rst ├── conf.py ├── deploy.sh ├── developers │ ├── code-docs.rst │ ├── code-docs │ │ ├── config.rst │ │ ├── docker.rst │ │ ├── installed-images.rst │ │ ├── registry.rst │ │ └── user.rst │ ├── common-tasks.rst │ ├── contributing.rst │ ├── index.rst │ ├── object-hierarchy.uxf │ └── restructure-pylint-output ├── docs-dev │ ├── image │ │ └── SubuserImagefile │ └── permissions.json ├── features.rst ├── flaws.rst ├── images │ ├── codigo.png │ ├── containerjournal.jpg │ ├── habra.svg │ ├── heise.png │ ├── infoworld.png │ ├── linuxfr.png │ ├── pro-linux.png │ └── usually_looks_scarier_than_it_is.png ├── index.rst ├── installation.rst ├── news.rst ├── news │ ├── 0.3.rst │ ├── 0.4.rst │ ├── 0.5.rst │ ├── 0.6.rst │ ├── virtualbox.uxf │ ├── wayland.uxf │ └── x11-bridge.uxf ├── packaging.rst ├── presentations.rst ├── press.rst ├── related-projects.rst ├── screenshots.rst ├── screenshots │ ├── emacs+texttest.png │ ├── libreoffice.png │ ├── liferea+firefox.png │ └── subuser-dev-tg.png ├── security.rst ├── subuser-standard │ ├── generate-permissions-rst.py │ ├── image-source-identifiers.rst │ ├── repositories.rst │ ├── serializations.rst │ ├── serializations │ │ ├── broken-images-dot-json-file-format.rst │ │ ├── config-dot-json-file-format.rst │ │ ├── installed-images-dot-json-file-format.rst │ │ ├── locked-subusers-dot-json-file-format.rst │ │ ├── registry │ │ │ ├── registry-dot-lock.rst │ │ │ ├── registry.rst │ │ │ ├── repositories-dot-json-file-format.rst │ │ │ ├── repository-states-dot-json-file-format.rst │ │ │ ├── subuser-permissions.rst │ │ │ └── subusers-dot-json-file-format.rst │ │ ├── runtime-cache.rst │ │ └── service-lock-files.rst │ ├── special-files.rst │ ├── standard.rst │ └── subuser-names.rst ├── tutorial-use.rst └── use-cases.rst ├── logic ├── execute-json-from-fifo ├── interactive-image-builder ├── preload-repl.py ├── subuser └── test ├── pre-release ├── refactor ├── resources ├── man │ ├── execute-json-from-fifo.1 │ └── subuser.1 └── subuser_bash_completion.sh ├── setup.py ├── subuserlib ├── ) ├── __init__.py ├── builtInCommands │ ├── __init__.py │ ├── describe.py │ ├── dev.py │ ├── list.py │ ├── pkg.py │ ├── print-dependency-info.py │ ├── ps.py │ ├── registry.py │ ├── remove-old-images.py │ ├── repair.py │ ├── repository.py │ ├── run.py │ ├── subuser.py │ ├── update.py │ └── version.py ├── classes │ ├── __init__.py │ ├── brokenImages.py │ ├── config.py │ ├── describable.py │ ├── docker │ │ ├── __init__.py │ │ ├── container.py │ │ ├── dockerDaemon.py │ │ └── mockDockerDaemon.py │ ├── endUser.py │ ├── exceptions.py │ ├── fileBackedObject.py │ ├── fileStructure.py │ ├── gitRepository.py │ ├── imageSource.py │ ├── installationTask.py │ ├── installedImage.py │ ├── installedImages.py │ ├── jsonStateSerializer.py │ ├── operation.py │ ├── permissions.py │ ├── permissionsAccepters │ │ ├── __init__.py │ │ ├── acceptPermissionsAtCLI.py │ │ └── permissionsAccepter.py │ ├── registry.py │ ├── repositories.py │ ├── repository.py │ ├── service.py │ ├── subuser.py │ ├── subuserSubmodules │ │ ├── __init__.py │ │ └── run │ │ │ ├── __init__.py │ │ │ ├── runReadyImage.py │ │ │ ├── runtime.py │ │ │ ├── runtimeCache.py │ │ │ └── x11Bridge.py │ ├── subusers.py │ ├── uhttpConnection.py │ ├── user.py │ └── userOwnedObject.py ├── commandLineArguments.py ├── commands.py ├── data │ ├── VERSION │ ├── config.json │ └── repositories.json ├── docker.py ├── executablePath.py ├── loadMultiFallbackJsonConfigFile.py ├── lock.py ├── paths.py ├── permissions.py ├── print.py ├── profile.py ├── registry.py ├── removeOldImages.py ├── repository.py ├── resolve.py ├── subprocessExtras.py ├── subuser.py ├── terminalColors.py ├── test.py ├── update.py ├── verify.py └── version.py └── test ├── Weird-repositories ├── With-subuser-foo-having-broken-permissions │ ├── Describe-image-foo-full-path │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-image-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-subuser-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Dryrun-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-subusers-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── edit-permissions-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── remove-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-subuser-foo-having-no-installed-image │ ├── Describe-image-foo-full-path │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-image-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-subuser-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Dryrun-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-subusers-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── edit-permissions-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── remove-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run-foo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── add-broken-non-existant-dependency │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-broken-permissions-file │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-broken-syntax │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── image-source-with-spaces │ ├── config.texttest │ ├── options.texttest │ ├── run.sh │ ├── stderr.texttest │ └── stdout.texttest ├── incorrect-permission-types │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── subuser-add-€-from-€@local-test-repo-§€č │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── base-executable ├── --help │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── No-arguments │ ├── stderr.texttest │ └── stdout.texttest ├── Non-existant-subuser-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── config.texttest └── testsuite.texttest ├── config.texttest ├── describe ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-one-subuser-installed-from-a-temporary-repo-named-foo │ ├── Describe-image-foo-full-path │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-image-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-subuser-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-one-subuser-named-foo │ ├── Describe-image-foo-full-path │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-image-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Describe-subuser-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── run.sh │ └── testsuite.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── docker └── images.json ├── environment.texttest ├── global-doctests ├── hashtest ├── bar │ ├── New York │ └── abacus └── blah ├── home └── .subuser │ └── repositories.json ├── list ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── List-available-from-URI │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── List-available-from-UTF8-URI │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── List-available-from-invalid-URI │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── List-available-from-non-existant-URI │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-one-subuser-installed-from-a-temporary-repo-named-foo │ ├── List-available-long │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-available-specifying-repo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-available │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-installed-images-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-installed-images │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-repositories-long │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-repositories │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-subusers-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-subusers │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-one-subuser-named-foo │ ├── List-available-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-available │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-installed-images-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-installed-images │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-repositories-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-repositories │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-subusers-long │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── List-subusers │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── run.sh │ └── testsuite.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── pkg ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-initialized-repo │ ├── Add-repository │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Add-with-non-standard-paths │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Init-with-non-standard-images-dir │ │ ├── .texttest │ │ ├── config.texttest │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ ├── stdout.texttest │ │ └── subuser-json.texttest │ ├── Init │ │ ├── config.texttest │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ ├── stdout.texttest │ │ └── subuser-json.texttest │ ├── config.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-uninitialized-repo │ ├── Add-repository │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Add-with-non-standard-paths │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── Init-with-non-standard-images-dir │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ ├── stdout.texttest │ │ └── subuser-json.texttest │ ├── Init │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ ├── stdout.texttest │ │ └── subuser-json.texttest │ └── testsuite.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── prepare-test-repos-and-run.sh ├── prepare-test-repos.sh ├── print-dependency-info ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── Doesn't-crash-for-non-existant-image-sources │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── Printing-works-for-existing-image-sources │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── registry ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-one-subuser-named-foo │ ├── config.texttest │ ├── log │ │ ├── config.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── rollback │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── log │ ├── config.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── rollback │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── remove-old-images ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-subuser-dependent-added-then-removed │ ├── config.texttest │ ├── dry-run │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── no-aguments │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-subuser-foo-added-then-removed │ ├── config.texttest │ ├── dry-run │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── no-aguments │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── no-aguments │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── repair ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── no-arguments │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── repository ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-local-test-repo-§€č-added │ ├── With-subuser-blah-added-from-§€č │ │ ├── config.texttest │ │ ├── remove-repo-§€č │ │ │ ├── exitcode.texttest │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── run.sh │ │ └── testsuite.texttest │ ├── config.texttest │ ├── remove-non-existant-repo │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── remove-§€č │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── add-local-test-repo-§€č │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-non-existant │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-remote-test-repo │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── run ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-one-subuser-installed-from-a-temporary-repo-named-foo │ ├── config.texttest │ ├── run---dry-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-one-subuser-named-foo │ ├── --entrypoint-set │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── run---dry-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── With-one-subuser-supa-which-has-all-the-permissions │ ├── config.texttest │ ├── dry-run-supa │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── no-arguments │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── run-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── subuser ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-one-subuser-named-foo │ ├── Foo-with-entrypoints-exposed │ │ ├── config.texttest │ │ ├── hide-entrypoints-foo │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── run.sh │ │ └── testsuite.texttest │ ├── With-foo-added-then-removed │ │ ├── config.texttest │ │ ├── git-diff │ │ │ ├── config.texttest │ │ │ ├── options.texttest │ │ │ ├── run.sh │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── list-subusers │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── registry-log │ │ │ ├── config.texttest │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── run.sh │ │ └── testsuite.texttest │ ├── add-foo-despite-foo-already-existin │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── add-to-path-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── edit-permissions-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── expose-entrypoints-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── hide-entry-points-foo │ │ └── options.texttest │ ├── remove-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── remove-from-path-foo │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ └── testsuite.texttest ├── add-foo-bar@non-existant-repo-path │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-foo-bar@non-existant-repo │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-foo-non-existant-image-source │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-subuser-foo │ ├── config.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-subuser-supa-which-has-all-the-permissions │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-subuser-§€č │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── add-to-path-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── edit-permissions-no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── edit-permissions-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── expose-entrypoints-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── hide-entrypoints-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── no-arguments │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── remove-from-path-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── remove-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── testsuite.texttest ├── test-repos ├── default-test-repo │ ├── foo │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ ├── subuser-internal-xpra-client │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ └── subuser-internal-xpra-server │ │ ├── image │ │ └── SubuserImagefile │ │ └── permissions.json ├── different-sets-of-permissions │ └── all-permissions │ │ ├── image │ │ └── SubuserImagefile │ │ └── permissions.json ├── local-test-repo-§€č │ ├── blah │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ ├── image source with spaces │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ ├── permissions-with-incorrect-types │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ └── € │ │ ├── image │ │ └── SubuserImagefile │ │ └── permissions.json ├── remote-test-repo │ ├── .subuser.json │ ├── dependent │ │ ├── image-dir │ │ │ └── SubuserImagefile │ │ └── permissions.json │ └── images │ │ ├── bar │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ ├── broken-non-existant-dependency │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ ├── broken-permissions-file │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ ├── broken-syntax │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ ├── dependency1 │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ ├── dependency2 │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ ├── dependency3 │ │ ├── image │ │ │ └── SubuserImagefile │ │ └── permissions.json │ │ └── intermediary │ │ ├── image │ │ └── SubuserImagefile │ │ └── permissions.json └── version-constrained-test-repo │ ├── .subuser.json │ └── bip │ ├── image │ └── SubuserImagefile │ └── permissions.json ├── test ├── config.texttest ├── doctests │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── run.sh └── testsuite.texttest ├── testsuite.texttest ├── texttest-dev ├── image │ └── SubuserImagefile └── permissions.json ├── update ├── -h │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── With-subuser-dependent │ ├── With-intermediate-image-source-changed │ │ ├── all │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── config.texttest │ │ ├── run.sh │ │ ├── subusers-dependent │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ └── testsuite.texttest │ ├── With-subuser-dependent-locked │ │ ├── With-intermediate-image-source-changed │ │ │ ├── all │ │ │ │ ├── options.texttest │ │ │ │ ├── stderr.texttest │ │ │ │ └── stdout.texttest │ │ │ ├── config.texttest │ │ │ ├── run.sh │ │ │ ├── subusers-dependent │ │ │ │ ├── options.texttest │ │ │ │ ├── stderr.texttest │ │ │ │ └── stdout.texttest │ │ │ └── testsuite.texttest │ │ ├── With-subuser-dependent-with-changed-permissions │ │ │ ├── all │ │ │ │ ├── options.texttest │ │ │ │ ├── stderr.texttest │ │ │ │ └── stdout.texttest │ │ │ ├── config.texttest │ │ │ ├── run.sh │ │ │ ├── subusers-dependent │ │ │ │ ├── options.texttest │ │ │ │ ├── stderr.texttest │ │ │ │ └── stdout.texttest │ │ │ └── testsuite.texttest │ │ ├── all │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── config.texttest │ │ ├── lock-subuser-to-depedent-non-existant-commit │ │ │ ├── exitcode.texttest │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── run.sh │ │ ├── subusers-dependent │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── testsuite.texttest │ │ └── unlock-dependent │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ ├── With-subuser-dependent-with-changed-permissions │ │ ├── all │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ ├── config.texttest │ │ ├── run.sh │ │ ├── subusers-dependent │ │ │ ├── options.texttest │ │ │ ├── stderr.texttest │ │ │ └── stdout.texttest │ │ └── testsuite.texttest │ ├── all │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── config.texttest │ ├── lock-subuser-to-depedent-HEAD │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── lock-subuser-to-depedent-non-existant-commit │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── run.sh │ ├── subusers-dependent │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ ├── testsuite.texttest │ ├── unlock-dependent-despite-not-being-locked │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest │ └── update-subusers-dependent-as-well-as-non-existant-subuser │ │ ├── exitcode.texttest │ │ ├── options.texttest │ │ ├── stderr.texttest │ │ └── stdout.texttest ├── lock-subuser-to-no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── lock-subuser-to-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── non-existant-sub-command │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── testsuite.texttest ├── unlock-subuser-no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── unlock-subuser-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── update-all │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest ├── update-subusers-no-arguments │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── update-subusers-non-existant-subuser │ ├── exitcode.texttest │ ├── options.texttest │ ├── stderr.texttest │ └── stdout.texttest └── version ├── --json ├── options.texttest ├── stderr.texttest └── stdout.texttest ├── -h ├── options.texttest ├── stderr.texttest └── stdout.texttest ├── no-arguments ├── options.texttest ├── stderr.texttest └── stdout.texttest └── testsuite.texttest /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v2 15 | - name: Set up Python 16 | uses: actions/setup-python@v1 17 | with: 18 | python-version: 3.9 19 | - name: Test 20 | run: | 21 | python setup.py bdist_wheel 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.swo 3 | *.pyc 4 | .docs-build-environment 5 | *~ 6 | .bash_history 7 | .pylint.d 8 | *#*# 9 | .#* 10 | /dist/ 11 | /*.egg-info 12 | /*.egg 13 | /build/ 14 | .subuser-dev 15 | /code-reader/ 16 | test/mock-home 17 | .mypy_cache 18 | -------------------------------------------------------------------------------- /.subuser.json: -------------------------------------------------------------------------------- 1 | { 2 | "explicit-image-sources": { 3 | "texttest-dev": { 4 | "image-file": "test/texttest-dev/image/SubuserImagefile", 5 | "permissions-file": "test/texttest-dev/permissions.json", 6 | "build-context": "test/texttest-dev/image/" 7 | }, 8 | "docs-dev": { 9 | "image-file": "docs/docs-dev/image/SubuserImagefile", 10 | "permissions-file": "docs/docs-dev/permissions.json", 11 | "build-context": "docs/docs-dev/image" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | subuserlib/data/VERSION -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | commands/* 3 | !commands/index.rst.head 4 | !commands/generate-command-docs.py 5 | _themes/sphinx_rtd_theme/static/images/subuser-website.svg 6 | _themes/sphinx_rtd_theme/static/images/subuser-vision.mp4 7 | subuser-standard/permissions-dot-json-file-format.rst 8 | developers/pylint.rst 9 | developers/images/* 10 | news/images/* 11 | ?/* 12 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | To build the docs, cd to this repositories root, run `subuser dev docs-dev` and run `make html` in the docs directory: 2 | 3 | cd .. 4 | subuser dev docs-dev 5 | cd docs 6 | make html 7 | -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/__init__.py: -------------------------------------------------------------------------------- 1 | """Sphinx ReadTheDocs theme. 2 | 3 | From https://github.com/ryan-roemer/sphinx-bootstrap-theme. 4 | 5 | """ 6 | import os 7 | 8 | VERSION = (0, 1, 5) 9 | 10 | __version__ = ".".join(str(v) for v in VERSION) 11 | __version_full__ = __version__ 12 | 13 | 14 | def get_html_theme_path(): 15 | """Return list of HTML theme paths.""" 16 | cur_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) 17 | return cur_dir 18 | -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/searchbox.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/_themes/sphinx_rtd_theme/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/images/subuser-dev-freecad.mp4: -------------------------------------------------------------------------------- 1 | ../../../../../.git/annex/objects/QM/99/SHA256E-s63428378--6fadca40972428fa8fe4b9a58a163fe807776e32672a2b1d499e8f4101116f79.mp4/SHA256E-s63428378--6fadca40972428fa8fe4b9a58a163fe807776e32672a2b1d499e8f4101116f79.mp4 -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/images/subuser-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/_themes/sphinx_rtd_theme/static/images/subuser-logo.png -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/images/subuser-vision.mp4: -------------------------------------------------------------------------------- 1 | ../../../../../.git/annex/objects/GG/fm/SHA256E-s116733386--779e6e3726c5edd676b777172cca80dc5d2e4b24840085f5036f35e1686190df.mp4/SHA256E-s116733386--779e6e3726c5edd676b777172cca80dc5d2e4b24840085f5036f35e1686190df.mp4 -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/static/images/subuser-website.svg: -------------------------------------------------------------------------------- 1 | ../../../../../.git/annex/objects/wg/ZZ/SHA256E-s717475--f20f06ce7bc0ac1c940026f583ec2268706c18b2f904568c66ba90cb0901fdfe.svg/SHA256E-s717475--f20f06ce7bc0ac1c940026f583ec2268706c18b2f904568c66ba90cb0901fdfe.svg -------------------------------------------------------------------------------- /docs/_themes/sphinx_rtd_theme/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = css/theme.css 4 | 5 | [options] 6 | typekit_id = hiw1hhg 7 | analytics_id = 8 | sticky_navigation = False 9 | -------------------------------------------------------------------------------- /docs/commands/index.rst.head: -------------------------------------------------------------------------------- 1 | Using subuser - commands 2 | ======================== 3 | 4 | subuser, when run from the command line, has a number of commands and subcommands. You can see a list of commands by running:: 5 | 6 | $ subuser 7 | 8 | You can get help for a specific command by running:: 9 | 10 | $ subuser --help 11 | 12 | .. toctree:: 13 | 14 | -------------------------------------------------------------------------------- /docs/community-guidelines.rst: -------------------------------------------------------------------------------- 1 | ../COMMUNITY.rst -------------------------------------------------------------------------------- /docs/deploy.sh: -------------------------------------------------------------------------------- 1 | #/bin/sh 2 | rsync -ru ./_build/html/ might@37.205.9.176:/home/might/web/subuser.org/ 3 | -------------------------------------------------------------------------------- /docs/developers/code-docs/config.rst: -------------------------------------------------------------------------------- 1 | User configuration 2 | ------------------ 3 | 4 | Most paths and some other settings are stored in the ``Config`` object. You should access these settings through this object. 5 | 6 | .. automodule:: subuserlib.classes.config 7 | :members: 8 | :undoc-members: 9 | 10 | The config object uses ``loadMultiFallbackJsonConfigFile`` module to help it load settings: 11 | 12 | .. automodule:: subuserlib.loadMultiFallbackJsonConfigFile 13 | :members: 14 | :undoc-members: 15 | 16 | -------------------------------------------------------------------------------- /docs/developers/code-docs/docker.rst: -------------------------------------------------------------------------------- 1 | Communicating with Docker 2 | ========================= 3 | 4 | DockerDaemon 5 | ------------ 6 | 7 | .. automodule:: subuserlib.classes.docker.dockerDaemon 8 | :members: 9 | :undoc-members: 10 | 11 | Container 12 | --------- 13 | 14 | .. automodule:: subuserlib.classes.docker.container 15 | :members: 16 | :undoc-members: 17 | 18 | Helper functions 19 | ---------------- 20 | 21 | .. automodule:: subuserlib.docker 22 | :members: 23 | :undoc-members: 24 | 25 | -------------------------------------------------------------------------------- /docs/developers/code-docs/installed-images.rst: -------------------------------------------------------------------------------- 1 | Installed images 2 | ---------------- 3 | 4 | .. automodule:: subuserlib.classes.installedImages 5 | :members: 6 | :undoc-members: 7 | 8 | .. automodule:: subuserlib.classes.installedImage 9 | :members: 10 | :undoc-members: 11 | 12 | -------------------------------------------------------------------------------- /docs/developers/code-docs/user.rst: -------------------------------------------------------------------------------- 1 | The User object 2 | --------------- 3 | 4 | .. automodule:: subuserlib.classes.user 5 | :members: 6 | :undoc-members: 7 | 8 | .. toctree:: 9 | 10 | registry 11 | installed-images 12 | config 13 | docker 14 | 15 | -------------------------------------------------------------------------------- /docs/developers/contributing.rst: -------------------------------------------------------------------------------- 1 | ../../CONTRIBUTING.rst -------------------------------------------------------------------------------- /docs/developers/index.rst: -------------------------------------------------------------------------------- 1 | Developers Corner 2 | ----------------- 3 | 4 | .. toctree:: 5 | 6 | contributing 7 | code-docs 8 | Travis-ci status 9 | pylint 10 | common-tasks 11 | -------------------------------------------------------------------------------- /docs/docs-dev/image/SubuserImagefile: -------------------------------------------------------------------------------- 1 | FROM-SUBUSER-IMAGE libdebian@default 2 | RUN apt-get update && apt-get install -y python3-pip umlet pylint 3 | RUN pip3 install --upgrade sphinx requests 4 | ENV SUBUSER_TESTING TRUE 5 | -------------------------------------------------------------------------------- /docs/docs-dev/permissions.json: -------------------------------------------------------------------------------- 1 | { 2 | "stateful-home": true, 3 | "maintainer": "Timothy Hobbs ", 4 | "executable": "/bin/bash", 5 | "basic-common-permissions": true, 6 | "access-working-directory": true, 7 | "description": "Docs build envirionment for subuser." 8 | } -------------------------------------------------------------------------------- /docs/images/codigo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/images/codigo.png -------------------------------------------------------------------------------- /docs/images/containerjournal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/images/containerjournal.jpg -------------------------------------------------------------------------------- /docs/images/habra.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/heise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/images/heise.png -------------------------------------------------------------------------------- /docs/images/infoworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/images/infoworld.png -------------------------------------------------------------------------------- /docs/images/linuxfr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/images/linuxfr.png -------------------------------------------------------------------------------- /docs/images/pro-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/docs/images/pro-linux.png -------------------------------------------------------------------------------- /docs/images/usually_looks_scarier_than_it_is.png: -------------------------------------------------------------------------------- 1 | ../../.git/annex/objects/Xp/5k/SHA256E-s128147--eb266bb367c1d95bea92c38647de309d1cdba35e8b8a96f3c7df8c847d678cff.png/SHA256E-s128147--eb266bb367c1d95bea92c38647de309d1cdba35e8b8a96f3c7df8c847d678cff.png -------------------------------------------------------------------------------- /docs/news.rst: -------------------------------------------------------------------------------- 1 | News 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | news/0.6 8 | news/0.5 9 | news/0.4 10 | news/0.3 11 | -------------------------------------------------------------------------------- /docs/screenshots/emacs+texttest.png: -------------------------------------------------------------------------------- 1 | ../../.git/annex/objects/fp/7Q/SHA256E-s138841--1677bbc936ba863af41f49022c893fa62eef4df84f4f8a356e45cff15782789e.png/SHA256E-s138841--1677bbc936ba863af41f49022c893fa62eef4df84f4f8a356e45cff15782789e.png -------------------------------------------------------------------------------- /docs/screenshots/libreoffice.png: -------------------------------------------------------------------------------- 1 | ../../.git/annex/objects/W8/mp/SHA256E-s93434--d6ecd5ab0be1e575632268dd9492d5c1690bd75b4413d3f62e2722e2ae3fa50a.png/SHA256E-s93434--d6ecd5ab0be1e575632268dd9492d5c1690bd75b4413d3f62e2722e2ae3fa50a.png -------------------------------------------------------------------------------- /docs/screenshots/liferea+firefox.png: -------------------------------------------------------------------------------- 1 | ../../.git/annex/objects/k4/Wz/SHA256E-s187713--7f32f70216b7ab7e2bf24dab05d8c7fbf2663700b40e89f59dc25c0f8a64b5b5.png/SHA256E-s187713--7f32f70216b7ab7e2bf24dab05d8c7fbf2663700b40e89f59dc25c0f8a64b5b5.png -------------------------------------------------------------------------------- /docs/screenshots/subuser-dev-tg.png: -------------------------------------------------------------------------------- 1 | ../../.git/annex/objects/J4/jQ/SHA256E-s175035--90a1e3fcfdf0e504e0c3d0076ff485955c3373d30aa15fecd7edc4471bb6a8c6.png/SHA256E-s175035--90a1e3fcfdf0e504e0c3d0076ff485955c3373d30aa15fecd7edc4471bb6a8c6.png -------------------------------------------------------------------------------- /docs/subuser-standard/generate-permissions-rst.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | import sys,subprocess 3 | sys.path.append("../../logic") 4 | import subuserlib.permissions 5 | 6 | with open("permissions-dot-json-file-format.rst","w") as permissions_format_file: 7 | permissions_format_file.write(subuserlib.permissions.getDocs()) 8 | -------------------------------------------------------------------------------- /docs/subuser-standard/serializations/registry/registry-dot-lock.rst: -------------------------------------------------------------------------------- 1 | The registry.lock file format 2 | ================================= 3 | 4 | The ``registry.lock`` file exists in the ``lock-dir`` when a subuser process is modifying the registry. 5 | 6 | -------------------------------------------------------------------------------- /docs/subuser-standard/serializations/registry/registry.rst: -------------------------------------------------------------------------------- 1 | The subuser registry 2 | -------------------------------- 3 | 4 | Each user is to have a registry of subusers, repositories, and repository states. This registry is a git repository with the following files: 5 | 6 | .. toctree:: 7 | 8 | registry-dot-lock 9 | subusers-dot-json-file-format 10 | repositories-dot-json-file-format 11 | repository-states-dot-json-file-format 12 | subuser-permissions 13 | 14 | -------------------------------------------------------------------------------- /docs/subuser-standard/subuser-names.rst: -------------------------------------------------------------------------------- 1 | Subuser names 2 | ------------- 3 | 4 | Subuser names may contain any character allowed in file names by the host systems file system. However, subuser names beginning with the symbol ``!`` may not be created by the user, as these names are reserved for internal use by the system. 5 | -------------------------------------------------------------------------------- /logic/preload-repl.py: -------------------------------------------------------------------------------- 1 | import subuserlib.classes.user 2 | import subuserlib.classes.gitRepository 3 | import subuserlib.classes.fileStructure 4 | import os 5 | u = subuserlib.classes.user.User() 6 | g = subuserlib.classes.gitRepository.GitRepository(u,os.path.expanduser("~/.subuser/repositories/default/")) 7 | fs = subuserlib.classes.fileStructure.BasicFileStructure(os.path.expanduser("~/.subuser/repositories/default")) 8 | fsac = g.getFileStructureAtCommit("latest") 9 | -------------------------------------------------------------------------------- /refactor: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | git grep $1 3 | read -r -p "Continue? [y/N] " response 4 | if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]] 5 | then 6 | git grep -l $1 | xargs sed -i "s/$1/$2/g" 7 | else 8 | echo "Bye." 9 | fi 10 | -------------------------------------------------------------------------------- /subuserlib/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/builtInCommands/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/builtInCommands/describe.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | #external imports 5 | #import ... 6 | #internal imports 7 | import subuserlib.builtInCommands.list 8 | 9 | @subuserlib.profile.do_cprofile 10 | def runCommand(sysargs): 11 | subuserlib.builtInCommands.list.runCommand(sysargs) 12 | -------------------------------------------------------------------------------- /subuserlib/classes/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/classes/describable.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | If you want to print a description of an object to standard output, make that object describable. 5 | """ 6 | 7 | #external imports 8 | import abc 9 | #internal imports 10 | #import ... 11 | 12 | class Describable(object): 13 | __metaclass__ = abc.ABCMeta 14 | 15 | @abc.abstractmethod 16 | def describe(self): 17 | """ Print out a human readable description of the object. """ 18 | pass 19 | -------------------------------------------------------------------------------- /subuserlib/classes/docker/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/classes/exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | This is a collection of exceptions which are raised throughout the sourcecode. 4 | """ 5 | 6 | #external imports 7 | #import ... 8 | #internal imports 9 | #import .. 10 | 11 | class ImageBuildException(Exception): 12 | """ 13 | This exception is raised any time an image fails to build and subuser is not at fault. 14 | """ 15 | pass 16 | -------------------------------------------------------------------------------- /subuserlib/classes/permissionsAccepters/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/classes/subuserSubmodules/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/classes/subuserSubmodules/run/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /subuserlib/classes/userOwnedObject.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | All objects in subuser are owned by the C{subuserlib.classes.user.User} object. 5 | """ 6 | 7 | #external imports 8 | #import ... 9 | #internal imports 10 | #import ... 11 | 12 | class UserOwnedObject(object): 13 | def __init__(self,user): 14 | self.user = user 15 | -------------------------------------------------------------------------------- /subuserlib/data/VERSION: -------------------------------------------------------------------------------- 1 | 0.6.2 2 | -------------------------------------------------------------------------------- /subuserlib/data/repositories.json: -------------------------------------------------------------------------------- 1 | { 2 | "default" : {"git-origin" : "https://github.com/subuser-security/subuser-default-repository.git"} 3 | } 4 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo-full-path/options.texttest: -------------------------------------------------------------------------------- 1 | describe image foo@default 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo-full-path/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo-full-path/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo-full-path/stdout.texttest: -------------------------------------------------------------------------------- 1 | foo@default 2 | To install this image run: 3 | subuser subuser add foo@default 4 | 5 | 6 | Prelude: 7 | - executable: /usr/bin/foo 8 | - entrypoints: 'foo', 'bar' 9 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo/options.texttest: -------------------------------------------------------------------------------- 1 | describe image foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-image-foo/stdout.texttest: -------------------------------------------------------------------------------- 1 | foo@default 2 | To install this image run: 3 | subuser subuser add foo@default 4 | 5 | 6 | Prelude: 7 | - executable: /usr/bin/foo 8 | - entrypoints: 'foo', 'bar' 9 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-subuser-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-subuser-foo/options.texttest: -------------------------------------------------------------------------------- 1 | describe subuser foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-subuser-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | Subuser foo does not exist. 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Describe-subuser-foo/stdout.texttest: -------------------------------------------------------------------------------- 1 | The following subusers are registered. 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Dryrun-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Dryrun-foo/options.texttest: -------------------------------------------------------------------------------- 1 | run --dry foo -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Dryrun-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | Subuser foo not found. 2 | Use --help for help. 3 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/Dryrun-foo/stdout.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/Dryrun-foo/stdout.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/List-subusers-long/options.texttest: -------------------------------------------------------------------------------- 1 | list subusers --long 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/List-subusers-long/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/List-subusers-long/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/List-subusers-long/stdout.texttest: -------------------------------------------------------------------------------- 1 | The following subusers are registered. 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/config.texttest: -------------------------------------------------------------------------------- 1 | executable:/pwd/test/Weird-repositories/With-subuser-foo-having-broken-permissions/run.sh -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/edit-permissions-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/edit-permissions-foo/options.texttest: -------------------------------------------------------------------------------- 1 | subuser edit-permissions foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/edit-permissions-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | Subuser foo does not exist. 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/edit-permissions-foo/stdout.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/edit-permissions-foo/stdout.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/remove-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/remove-foo/options.texttest: -------------------------------------------------------------------------------- 1 | subuser remove foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/remove-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | Subuser foo does not exist. 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/remove-foo/stdout.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/remove-foo/stdout.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/run-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/run-foo/options.texttest: -------------------------------------------------------------------------------- 1 | run foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/run-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | Subuser foo not found. 2 | Use --help for help. 3 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/run-foo/stdout.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-broken-permissions/run-foo/stdout.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | /pwd/test/prepare-test-repos.sh 3 | /pwd/logic/subuser subuser --accept add foo broken-permissions-file@file:///$TEXTTEST_SANDBOX/test-repos/remote-test-repo > /dev/null 2> /dev/null 4 | /pwd/logic/subuser $@ 5 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-broken-permissions/testsuite.texttest: -------------------------------------------------------------------------------- 1 | run-foo 2 | Describe-image-foo 3 | Describe-image-foo-full-path 4 | Describe-subuser-foo 5 | Dryrun-foo 6 | List-subusers-long 7 | edit-permissions-foo 8 | remove-foo 9 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo-full-path/options.texttest: -------------------------------------------------------------------------------- 1 | describe image foo@default 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo-full-path/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo-full-path/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo-full-path/stdout.texttest: -------------------------------------------------------------------------------- 1 | foo@default 2 | To install this image run: 3 | subuser subuser add foo@default 4 | 5 | 6 | Prelude: 7 | - executable: /usr/bin/foo 8 | - entrypoints: 'foo', 'bar' 9 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo/options.texttest: -------------------------------------------------------------------------------- 1 | describe image foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-image-foo/stdout.texttest: -------------------------------------------------------------------------------- 1 | foo@default 2 | To install this image run: 3 | subuser subuser add foo@default 4 | 5 | 6 | Prelude: 7 | - executable: /usr/bin/foo 8 | - entrypoints: 'foo', 'bar' 9 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-subuser-foo/options.texttest: -------------------------------------------------------------------------------- 1 | describe subuser foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-subuser-foo/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-subuser-foo/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Describe-subuser-foo/stdout.texttest: -------------------------------------------------------------------------------- 1 | The following subusers are registered. 2 | Subuser: foo 3 | ------------------ 4 | Warning: This subuser has no image, nor does it have a valid image source to install an image from. 5 | Docker image Id: None 6 | Prelude: 7 | - description: broken-syntax 8 | - maintainer: fred 9 | - executable: /usr/bin/foo 10 | 11 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Dryrun-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Dryrun-foo/options.texttest: -------------------------------------------------------------------------------- 1 | run --dry foo -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Dryrun-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | There is no installed image for this subuser. Cannot run. 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/Dryrun-foo/stdout.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/Dryrun-foo/stdout.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/List-subusers-long/options.texttest: -------------------------------------------------------------------------------- 1 | list subusers --long 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/List-subusers-long/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/List-subusers-long/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/List-subusers-long/stdout.texttest: -------------------------------------------------------------------------------- 1 | The following subusers are registered. 2 | Subuser: foo 3 | ------------------ 4 | Warning: This subuser has no image, nor does it have a valid image source to install an image from. 5 | Docker image Id: None 6 | Prelude: 7 | - description: broken-syntax 8 | - maintainer: fred 9 | - executable: /usr/bin/foo 10 | 11 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/config.texttest: -------------------------------------------------------------------------------- 1 | executable:/pwd/test/Weird-repositories/With-subuser-foo-having-no-installed-image/run.sh -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/edit-permissions-foo/options.texttest: -------------------------------------------------------------------------------- 1 | subuser edit-permissions foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/edit-permissions-foo/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/edit-permissions-foo/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/remove-foo/options.texttest: -------------------------------------------------------------------------------- 1 | subuser remove foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/remove-foo/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/remove-foo/stderr.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/run-foo/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/run-foo/options.texttest: -------------------------------------------------------------------------------- 1 | run foo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/run-foo/stderr.texttest: -------------------------------------------------------------------------------- 1 | No runnable image for subuser foo found. Use 2 | 3 | $ subuser repair 4 | 5 | To repair your instalation. 6 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/run-foo/stdout.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/Weird-repositories/With-subuser-foo-having-no-installed-image/run-foo/stdout.texttest -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | /pwd/test/prepare-test-repos.sh 3 | /pwd/logic/subuser subuser --accept add foo broken-syntax@file:///$TEXTTEST_SANDBOX/test-repos/remote-test-repo > /dev/null 2> /dev/null 4 | /pwd/logic/subuser $@ 5 | -------------------------------------------------------------------------------- /test/Weird-repositories/With-subuser-foo-having-no-installed-image/testsuite.texttest: -------------------------------------------------------------------------------- 1 | run-foo 2 | Describe-image-foo 3 | Describe-image-foo-full-path 4 | Describe-subuser-foo 5 | Dryrun-foo 6 | List-subusers-long 7 | edit-permissions-foo 8 | remove-foo -------------------------------------------------------------------------------- /test/Weird-repositories/add-broken-non-existant-dependency/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/add-broken-non-existant-dependency/options.texttest: -------------------------------------------------------------------------------- 1 | subuser add --accept broken-non-existant-dependency broken-non-existant-dependency@file:///$TEXTTEST_SANDBOX/test-repos/remote-test-repo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/add-broken-permissions-file/options.texttest: -------------------------------------------------------------------------------- 1 | subuser add --accept broken-permissions-file broken-permissions-file@file:///$TEXTTEST_SANDBOX/test-repos/remote-test-repo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/add-broken-permissions-file/stderr.texttest: -------------------------------------------------------------------------------- 1 | Cloning into '/home/timothy/.texttest/tmp/texttest.19Mar162658.1117/texttest/Weird-repositories/add-broken-permissions-file/.subuser/repositories/default'... 2 | Cloning into '/home/timothy/.texttest/tmp/texttest.19Mar162658.1117/texttest/Weird-repositories/add-broken-permissions-file/.subuser/repositories/0'... 3 | -------------------------------------------------------------------------------- /test/Weird-repositories/add-broken-syntax/exitcode.texttest: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/add-broken-syntax/options.texttest: -------------------------------------------------------------------------------- 1 | subuser add --accept broken-syntax broken-syntax@file:///$TEXTTEST_SANDBOX/test-repos/remote-test-repo 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/image-source-with-spaces/config.texttest: -------------------------------------------------------------------------------- 1 | executable:/pwd/test/Weird-repositories/image-source-with-spaces/run.sh -------------------------------------------------------------------------------- /test/Weird-repositories/image-source-with-spaces/options.texttest: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/image-source-with-spaces/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | /pwd/test/prepare-test-repos.sh 3 | /pwd/logic/subuser subuser add foo "image source with spaces@$TEXTTEST_SANDBOX/test-repos/local-test-repo-§€č" 4 | -------------------------------------------------------------------------------- /test/Weird-repositories/image-source-with-spaces/stderr.texttest: -------------------------------------------------------------------------------- 1 | Cloning into '/home/timothy/.texttest/tmp/texttest.19Mar170057.18316/texttest/Weird-repositories/image-source-with-spaces/.subuser/repositories/default'... 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/incorrect-permission-types/options.texttest: -------------------------------------------------------------------------------- 1 | subuser add foo permissions-with-incorrect-types@/$TEXTTEST_SANDBOX/test-repos/local-test-repo-§€č 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/incorrect-permission-types/stderr.texttest: -------------------------------------------------------------------------------- 1 | Cloning into '/home/timothy/.texttest/tmp/texttest.18Feb171335.31928/texttest/Weird-repositories/incorrect-permission-types/.subuser/repositories/default'... 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/subuser-add-€-from-€@local-test-repo-§€č/options.texttest: -------------------------------------------------------------------------------- 1 | subuser add € €@/$TEXTTEST_SANDBOX/test-repos/local-test-repo-§€č 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/subuser-add-€-from-€@local-test-repo-§€č/stderr.texttest: -------------------------------------------------------------------------------- 1 | Cloning into '/home/timothy/.texttest/tmp/texttest.19Mar162658.1117/texttest/Weird-repositories/subuser-add-€-from-€@local-test-repo-§€č/.subuser/repositories/default'... 2 | -------------------------------------------------------------------------------- /test/Weird-repositories/testsuite.texttest: -------------------------------------------------------------------------------- 1 | # Copy of add-broken-syntax 2 | add-broken-permissions-file 3 | 4 | # Copy of add-broken-syntax 5 | add-broken-non-existant-dependency 6 | add-broken-syntax 7 | subuser-add-€-from-€@local-test-repo-§€č 8 | image-source-with-spaces 9 | incorrect-permission-types 10 | With-subuser-foo-having-broken-permissions 11 | With-subuser-foo-having-no-installed-image 12 | -------------------------------------------------------------------------------- /test/base-executable/--help/options.texttest: -------------------------------------------------------------------------------- 1 | --help 2 | -------------------------------------------------------------------------------- /test/base-executable/--help/stderr.texttest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subuser-security/subuser/b03fdd62631aaaadc3a1b4e66473fba7410e65a8/test/base-executable/--help/stderr.texttest -------------------------------------------------------------------------------- /test/base-executable/--help/stdout.texttest: -------------------------------------------------------------------------------- 1 | You can use one of the following commands: 2 | run 3 | repair 4 | update 5 | subuser 6 | remove-old-images 7 | pkg 8 | dev 9 | print-dependency-info 10 | repository 11 | version 12 | ps 13 | registry 14 | list 15 | describe 16 | for more info about each option use: subuser