I've just sent a commit (https://github.com/bcarneiro/django-tenant-schemas/commit/92d505eb3a88b8bb2548b14f5c74f80527acfe0e) refactoring the code a little bit. I accidentally found out that your code can be shortened and that we don't need to explicitly use `sys.argv[2]`. `*args` already had the command name inside, so all I had to do is to simply call `call_command(*args, **options)` to get the expected behavior (calling the command name contained in `sys.argv[2]`).

I've also moved the interactive console logic to get a tenant to a separate class `InteractiveTenantOption` to avoid code duplication, as it was also be needed in other places.

I created a new class `TenantWrappedCommand` that can be used for wrapping django's default commands and I've already wrapped the first command, `createsuperuser`. Calling `createsuperuser` will now work exactly like `tenant_command createsuperuser` **previously** did. Note that calling `tenant_command createsuperuser` **now** may result in funky behavior, as it'd be basically wrapping the command twice.

I tried wrapping `dumpdata` and it's apparently not so trivial. It needs to be smart enough to consider `TENANT_APPS` and `SHARED_APPS` when appropriate.