2013-11-14 08:52:00 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
wakatime.projects.projectmap
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
Information from ~/.waka-projectmap mapping folders (relative to home folder)
|
|
|
|
to project names
|
|
|
|
|
|
|
|
:author: 3onyc
|
|
|
|
:license: BSD, see LICENSE for more details.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import logging
|
|
|
|
import os
|
2013-12-12 09:09:14 +00:00
|
|
|
from functools import partial
|
2013-11-14 08:52:00 +00:00
|
|
|
|
|
|
|
from ..packages import simplejson as json
|
|
|
|
|
|
|
|
from .base import BaseProject
|
|
|
|
|
|
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
class ProjectMap(BaseProject):
|
|
|
|
def process(self):
|
2013-12-12 09:09:14 +00:00
|
|
|
if not self.settings:
|
|
|
|
return False
|
2013-11-14 08:52:00 +00:00
|
|
|
|
2013-12-12 09:09:14 +00:00
|
|
|
self.project = self._find_project()
|
|
|
|
return self.project != None
|
|
|
|
|
|
|
|
def _find_project(self):
|
|
|
|
has_option = partial(self.settings.has_option, 'projectmap')
|
|
|
|
get_option = partial(self.settings.get, 'projectmap')
|
|
|
|
paths = self._path_generator()
|
|
|
|
|
|
|
|
projects = map(get_option, filter(has_option, paths))
|
|
|
|
return projects[0] if projects else None
|
2013-11-14 08:52:00 +00:00
|
|
|
|
|
|
|
def branch(self):
|
|
|
|
return None
|
|
|
|
|
|
|
|
def name(self):
|
2013-12-12 09:09:14 +00:00
|
|
|
return self.project
|
2013-11-14 08:52:00 +00:00
|
|
|
|
|
|
|
def _path_generator(self):
|
2013-12-12 09:09:14 +00:00
|
|
|
"""
|
|
|
|
Generates paths from the current directory up to the user's home folder
|
|
|
|
stripping anything in the path before the home path
|
|
|
|
"""
|
|
|
|
|
2013-11-14 08:52:00 +00:00
|
|
|
path = self.path.replace(os.environ['HOME'], '')
|
|
|
|
while path != os.path.dirname(path):
|
|
|
|
yield path
|
|
|
|
path = os.path.dirname(path)
|