private function configureContainer(ContainerInterface $container)
{
// Add the services.
$container->share('request', Request::class);
$container->inflector(RequestAwareInterface::class)->invokeMethod('setRequest', ['request']);
$session_store = new FileStore($this->config->get('cache_dir'));
$session = new Session($session_store);
$container->share('session', $session);
$container->inflector(SessionAwareInterface::class)->invokeMethod('setSession', ['session']);
$token_store = new FileStore($this->config->get('tokens_dir'));
$container->inflector(SavedTokens::class)->invokeMethod('setDataStore', [$token_store]);
// Add the models and collections
$container->add(User::class);
$container->add(SavedTokens::class);
$container->add(SavedToken::class);
$container->add(PaymentMethods::class);
$container->add(PaymentMethod::class);
$container->add(SSHKeys::class);
$container->add(SSHKey::class);
$container->add(Workflows::class);
$container->add(Workflow::class);
$container->add(WorkflowOperation::class);
$container->add(MachineTokens::class);
$container->add(MachineToken::class);
$container->add(Upstream::class);
$container->add(Upstreams::class);
$container->add(UserSiteMemberships::class);
$container->add(UserSiteMembership::class);
$container->add(UserOrganizationMemberships::class);
$container->add(UserOrganizationMembership::class);
$container->add(OrganizationSiteMemberships::class);
$container->add(OrganizationSiteMembership::class);
$container->add(OrganizationUserMemberships::class);
$container->add(OrganizationUserMembership::class);
$container->add(Organization::class);
$container->add(Branches::class);
$container->add(Branch::class);
$container->add(SiteUserMemberships::class);
$container->add(SiteUserMembership::class);
$container->add(SiteOrganizationMemberships::class);
$container->add(SiteOrganizationMembership::class);
$container->add(Site::class);
$container->add(Redis::class);
$container->add(Solr::class);
$container->add(Environments::class);
$container->add(Environment::class);
$container->add(Backups::class);
$container->add(Backup::class);
$container->add(Lock::class);
$container->add(Bindings::class);
$container->add(Binding::class);
$container->add(Domains::class);
$container->add(Domain::class);
$container->add(Commits::class);
$container->add(Commit::class);
$container->add(NewRelic::class);
$container->add(Tags::class);
$container->add(Tag::class);
$container->share('sites', Sites::class);
$container->inflector(SiteAwareInterface::class)->invokeMethod('setSites', ['sites']);
// Add the commands.
$factory = $container->get('commandFactory');
$factory->setIncludeAllPublicMethods(false);
$commands_directory = __DIR__ . '/Commands';
$top_namespace = 'Pantheon\\Terminus\\Commands';
$this->commands = $this->getCommands(['path' => $commands_directory, 'namespace' => $top_namespace]);
$this->commands[] = 'Pantheon\\Terminus\\Authorizer';
}