From cd16383fa65e46b5b11ac47496bdee1a354e06bf Mon Sep 17 00:00:00 2001
From: Alex Grintsvayg <grin@lbry.io>
Date: Wed, 26 Apr 2017 14:18:41 -0400
Subject: [PATCH] use git version when in dev

---
 lbrynet/conf.py                  |  2 ++
 lbrynet/core/system_info.py      | 26 +++++++++++++++++++++-----
 lbrynet/lbrynet_daemon/Daemon.py |  8 ++++----
 3 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/lbrynet/conf.py b/lbrynet/conf.py
index 36140c9ba..d194f459e 100644
--- a/lbrynet/conf.py
+++ b/lbrynet/conf.py
@@ -10,6 +10,8 @@ from lbrynet.core import utils
 
 log = logging.getLogger(__name__)
 
+ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
 ENV_NAMESPACE = 'LBRY_'
 
 LBRYCRD_WALLET = 'lbrycrd'
diff --git a/lbrynet/core/system_info.py b/lbrynet/core/system_info.py
index c5430c025..05300c910 100644
--- a/lbrynet/core/system_info.py
+++ b/lbrynet/core/system_info.py
@@ -1,14 +1,30 @@
 import platform
 import json
+import subprocess
+import os
 
 from urllib2 import urlopen
 
-from lbrynet import __version__ as lbrynet_version
-from lbrynet import build_type
-from lbryum.version import LBRYUM_VERSION as lbryum_version
+from lbrynet import build_type, __version__ as lbrynet_version
+from lbrynet.conf import ROOT_DIR
+from lbryum.version import LBRYUM_VERSION
 from lbryschema import __version__ as lbryschema_version
 
 
+def get_lbrynet_version():
+    if build_type.BUILD == "dev":
+        try:
+            with open(os.devnull, 'w') as devnull:
+                git_dir = ROOT_DIR + '/.git'
+                return subprocess.check_output(
+                    ['git', '--git-dir='+git_dir, 'describe', '--dirty', '--always'],
+                    stderr=devnull
+                ).strip()
+        except (subprocess.CalledProcessError, OSError):
+            print "failed to get version from git"
+    return lbrynet_version
+
+
 def get_platform(get_ip=True):
     p = {
         "processor": platform.processor(),
@@ -16,8 +32,8 @@ def get_platform(get_ip=True):
         "platform": platform.platform(),
         "os_release": platform.release(),
         "os_system": platform.system(),
-        "lbrynet_version": lbrynet_version,
-        "lbryum_version": lbryum_version,
+        "lbrynet_version": get_lbrynet_version(),
+        "lbryum_version": LBRYUM_VERSION,
         "lbryschema_version": lbryschema_version,
         "build": build_type.BUILD,  # CI server sets this during build step
     }
diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py
index 34168bc46..c1fb7f0a8 100644
--- a/lbrynet/lbrynet_daemon/Daemon.py
+++ b/lbrynet/lbrynet_daemon/Daemon.py
@@ -21,7 +21,7 @@ from lbryschema.error import URIParseError
 
 # TODO: importing this when internet is disabled raises a socket.gaierror
 from lbryum.version import LBRYUM_VERSION
-from lbrynet import __version__ as LBRYNET_VERSION
+from lbrynet.core.system_info import get_lbrynet_version
 from lbrynet import conf, analytics
 from lbrynet.conf import LBRYCRD_WALLET, LBRYUM_WALLET, PTC_WALLET
 from lbrynet.reflector import reupload
@@ -178,8 +178,8 @@ class Daemon(AuthJSONRPCServer):
             'is_running', 'is_first_run', 'get_time_behind_blockchain', 'daemon_status',
             'get_start_notice',
         ]
-        last_version = {'last_version': {'lbrynet': LBRYNET_VERSION, 'lbryum': LBRYUM_VERSION}}
-        conf.settings.update(last_version)
+        conf.settings.set('last_version',
+                          {'lbrynet': get_lbrynet_version(), 'lbryum': LBRYUM_VERSION})
         self.db_dir = conf.settings['data_dir']
         self.download_directory = conf.settings['download_directory']
         if conf.settings['BLOBFILES_DIR'] == "blobfiles":
@@ -1159,7 +1159,7 @@ class Daemon(AuthJSONRPCServer):
             message,
             conf.settings.installation_id,
             platform_name,
-            LBRYNET_VERSION
+            get_lbrynet_version()
         )
         return self._render_response(True)