#!/usr/bin/python

import json, os, sys

SMC = os.path.split(os.path.realpath(__file__))[0]
os.chdir(SMC)

status = {}

def done():
    print json.dumps(status)
    sys.exit(0)

def set(prop, val):
    status[prop] = val

def read(prop, filename, strip=False, int_value=False, to_int=False):
    try:
        s = open(filename).read()
        if strip:
            s = s.strip()
        if '.port' in prop:
            try:
                s = int(s)
            except TypeError:
                pass
        if int_value:
            s = int(s.split('=')[1])
        if to_int:
            s = int(s)
        status[prop] = s
    except:
        status[prop] = False

read('version', os.path.join(SMC, "salvus_version.js"), strip=True, int_value=True)

# a simple test that the node modules are probably installed.
set('installed', os.path.exists(os.path.join(SMC, 'installed')))

## set('disk_usage', int(os.popen('du -s "%s"'%project_path).read().split()[0]))

for daemon in ['local_hub', 'sage_server', 'console_server']:
    pidfile = os.path.join(SMC, 'data', daemon) + '.pid'
    if os.path.exists(pidfile):
        try:
            pid = int(open(pidfile).read())
            os.kill(pid, 0)
            set(daemon+'.pid', pid)
        except:
            set(daemon+'.pid', False)
    else:
        set(daemon+'.pid', False)

for name in ['secret_token', 'local_hub.port', 'raw.port', 'console_server.port', 'sage_server.port']:
    to_int = 'port' in name
    read(name, os.path.join(SMC, 'data', name), to_int=to_int)

done()

