public function buildFromDefinition()
 {
     foreach ($this->definition['types'] as $entityType => $bundles) {
         foreach ($bundles as $bundleName => $info) {
             $class = $this->getClassForEntity($entityType);
             /** @var $builder AbstractEntityTypeBuilder */
             $builder = new $class($bundleName, $info['label'], $info['description']);
             $builder->build();
         }
     }
     foreach ($this->definition['fields'] as $fieldName => $fieldType) {
         $builder = new FieldBuilder($fieldName, $fieldType);
         $builder->build();
     }
     foreach ($this->definition['instances'] as $entityType => $bundles) {
         foreach ($bundles as $bundleName => $fieldInfo) {
             foreach ($fieldInfo as $fieldName => $widgetType) {
                 $instanceBuilder = new AttachedInstanceBuilder($fieldName, $fieldName, new WidgetBuilder($widgetType));
                 $instanceBuilder->setEntityType($entityType);
                 $instanceBuilder->setBundle($bundleName);
                 $instanceBuilder->build();
             }
         }
     }
 }
 protected function createField()
 {
     $name = $this->dialog->ask($this->output, 'Field machine name: field_');
     $field_types = FieldBuilder::getFieldTypes();
     $list = array();
     foreach ($field_types as $field => $definition) {
         $list[$field] = sprintf("%s (%s)", $definition['label'], $field);
     }
     $values = array_keys($list);
     $type = $this->dialog->select($this->output, 'Field Type', array_values($list), 0);
     $type = $values[$type];
     $fieldBuilder = new FieldBuilder('field_' . $name, $type);
     $fieldBuilder->build();
     $this->output->writeln("Added Field {$name} ({$type})");
     $this->mainQuestion();
 }