From 5081ef9962f32e4922fd1a9f60d05389d7c2fb44 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Tue, 2 May 2017 13:06:05 +0200
Subject: [PATCH] Add PHP xdebug for command line too

---
 src/Handler.php                   | 25 +++++++++++++++++++++++++
 templates/docker-compose.yml.twig |  4 ++++
 2 files changed, 29 insertions(+)

diff --git a/src/Handler.php b/src/Handler.php
index 9f7efdf..4f1bf15 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -222,6 +222,9 @@ class Handler {
     $extra = $this->composer->getPackage()->getExtra() + ['docker4drupal' => []];
     $options = $extra['docker4drupal'] + [
         'projectname' => str_replace([' ', '-', '_', '.'], '', basename(getcwd())),
+        'docker0' => [
+          'ip' => $this->getLocalIpv4('docker0'),
+        ],
         'drupal' => [
           'version' => '8',
         ],
@@ -259,4 +262,26 @@ class Handler {
     }
   }
 
+  private function getLocalIpv4($interface = NULL) {
+    $out = explode(PHP_EOL, shell_exec('LC_ALL=C /sbin/ifconfig'));
+    $local_addrs = array();
+    $ifname = 'unknown';
+    foreach ($out as $str) {
+      $matches = array();
+      if (preg_match('/^([a-z0-9]+)(:\d{1,2})?(\s)+Link/', $str, $matches)) {
+        $ifname = $matches[1];
+        if(strlen($matches[2])>0) {
+          $ifname .= $matches[2];
+        }
+      } elseif (preg_match('/inet addr:((?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3})\s/', $str, $matches)) {
+        $local_addrs[$ifname] = $matches[1];
+      }
+    }
+
+    if (!isset($interface)) {
+      return $local_addrs;
+    }
+    return isset($local_addrs[$interface]) ? $local_addrs[$interface] : '127.0.0.1';
+  }
+
 }
diff --git a/templates/docker-compose.yml.twig b/templates/docker-compose.yml.twig
index d6ae7cb..d508628 100644
--- a/templates/docker-compose.yml.twig
+++ b/templates/docker-compose.yml.twig
@@ -16,6 +16,10 @@ services:
 {% if php.xdebug %}
       PHP_XDEBUG: 1
       PHP_XDEBUG_DEFAULT_ENABLE: 1
+      PHP_XDEBUG_REMOTE_AUTOSTART: 1
+      PHP_XDEBUG_REMOTE_HOST: {{ docker0.ip }}
+      PHP_IDE_CONFIG: serverName=Docker
+      PHP_XDEBUG_REMOTE_CONNECT_BACK: 1
 {% endif %}
     volumes:
       - ./:/var/www/html
-- 
GitLab