Compare commits

..

6 Commits
7.0.1 ... 7.0.3

Author SHA1 Message Date
09754849be v7.0.3 2016-05-16 16:09:32 +02:00
25ad48a97a upgrade wakatime-cli to v6.0.2 2016-05-16 16:08:58 +02:00
3b2520afa9 use common resources folder location 2016-05-12 12:07:24 +02:00
77c2041ad3 rename activity callback 2016-04-30 00:01:25 +02:00
8af3b53937 v7.0.2 2016-04-29 16:57:54 +02:00
5ef2e6954e prevent implicit decoding from string format 2016-04-29 16:56:48 +02:00
4 changed files with 66 additions and 30 deletions

View File

@ -3,6 +3,20 @@ History
-------
7.0.3 (2016-05-16)
++++++++++++++++++
- Upgrade wakatime-cli to v6.0.2.
- Prevent popup on Mac when xcode-tools is not installed.
7.0.2 (2016-04-29)
++++++++++++++++++
- Prevent implicit unicode decoding from string format when logging output
from Python version check.
7.0.1 (2016-04-28)
++++++++++++++++++

View File

@ -7,7 +7,7 @@ Website: https://wakatime.com/
==========================================================="""
__version__ = '7.0.1'
__version__ = '7.0.3'
import sublime
@ -46,7 +46,6 @@ if is_py2:
if text is None:
return None
try:
text = str(text)
return text.decode('utf-8')
except:
try:
@ -141,6 +140,13 @@ def log(lvl, message, *args, **kwargs):
set_timeout(lambda: log(lvl, message, *args, **kwargs), 0)
def resources_folder():
if platform.system() == 'Windows':
return os.path.join(os.getenv('APPDATA'), 'WakaTime')
else:
return os.path.join(os.path.expanduser('~'), '.wakatime')
def update_status_bar(status):
"""Updates the status bar."""
@ -158,7 +164,7 @@ def update_status_bar(status):
set_timeout(lambda: update_status_bar(status), 0)
def createConfigFile():
def create_config_file():
"""Creates the .wakatime.cfg INI file in $HOME directory, if it does
not already exist.
"""
@ -179,7 +185,7 @@ def createConfigFile():
def prompt_api_key():
global SETTINGS
createConfigFile()
create_config_file()
default_key = ''
try:
@ -212,7 +218,7 @@ def python_binary():
# look for python in PATH and common install locations
paths = [
os.path.join(os.path.expanduser('~'), '.wakatime', 'python'),
os.path.join(resources_folder(), 'python'),
None,
'/',
'/usr/local/bin/',
@ -318,7 +324,7 @@ def find_python_in_folder(folder, headless=True):
if not retcode and pattern.search(output):
return path
except:
log(DEBUG, u('Python Version Output: {0}').format(u(sys.exc_info()[1])))
log(DEBUG, u(sys.exc_info()[1]))
if headless:
path = find_python_in_folder(folder, headless=False)
@ -387,7 +393,7 @@ def is_view_active(view):
return False
def handle_heartbeat(view, is_write=False):
def handle_activity(view, is_write=False):
window = view.window()
if window is not None:
entity = view.file_name()
@ -573,10 +579,10 @@ class DownloadPython(threading.Thread):
arch=arch,
)
if not os.path.exists(os.path.join(os.path.expanduser('~'), '.wakatime')):
os.makedirs(os.path.join(os.path.expanduser('~'), '.wakatime'))
if not os.path.exists(resources_folder()):
os.makedirs(resources_folder())
zip_file = os.path.join(os.path.expanduser('~'), '.wakatime', 'python.zip')
zip_file = os.path.join(resources_folder(), 'python.zip')
try:
urllib.urlretrieve(url, zip_file)
except AttributeError:
@ -584,7 +590,7 @@ class DownloadPython(threading.Thread):
log(INFO, 'Extracting Python...')
with ZipFile(zip_file) as zf:
path = os.path.join(os.path.expanduser('~'), '.wakatime', 'python')
path = os.path.join(resources_folder(), 'python')
zf.extractall(path)
try:
@ -626,15 +632,15 @@ if ST_VERSION < 3000:
class WakatimeListener(sublime_plugin.EventListener):
def on_post_save(self, view):
handle_heartbeat(view, is_write=True)
handle_activity(view, is_write=True)
def on_selection_modified(self, view):
if is_view_active(view):
handle_heartbeat(view)
handle_activity(view)
def on_modified(self, view):
if is_view_active(view):
handle_heartbeat(view)
handle_activity(view)
class WakatimeDashboardCommand(sublime_plugin.ApplicationCommand):

View File

@ -1,7 +1,7 @@
__title__ = 'wakatime'
__description__ = 'Common interface to the WakaTime api.'
__url__ = 'https://github.com/wakatime/wakatime'
__version_info__ = ('6', '0', '1')
__version_info__ = ('6', '0', '2')
__version__ = '.'.join(__version_info__)
__author__ = 'Alan Hamlett'
__author_email__ = 'alan@wakatime.com'

View File

@ -62,21 +62,22 @@ class Subversion(BaseProject):
def _get_info(self, path):
info = OrderedDict()
stdout = None
try:
os.environ['LANG'] = 'en_US'
stdout, stderr = Popen([
self._find_binary(), 'info', os.path.realpath(path)
], stdout=PIPE, stderr=PIPE).communicate()
except OSError:
pass
else:
if stdout:
for line in stdout.splitlines():
line = u(line)
line = line.split(': ', 1)
if len(line) == 2:
info[line[0]] = line[1]
if not self._is_mac() or self._has_xcode_tools():
stdout = None
try:
os.environ['LANG'] = 'en_US'
stdout, stderr = Popen([
self._find_binary(), 'info', os.path.realpath(path)
], stdout=PIPE, stderr=PIPE).communicate()
except OSError:
pass
else:
if stdout:
for line in stdout.splitlines():
line = u(line)
line = line.split(': ', 1)
if len(line) == 2:
info[line[0]] = line[1]
return info
def _find_project_base(self, path, found=False):
@ -97,3 +98,18 @@ class Subversion(BaseProject):
return found
return self._find_project_base(split_path[0], found)
def _is_mac(self):
return platform.system() == 'Darwin'
def _has_xcode_tools(self):
try:
with open(os.devnull, 'wb') as DEVNULL:
proc = Popen(['/usr/bin/xcode-select', '-p'], stdout=DEVNULL, stderr=DEVNULL)
proc.communicate()
retval = proc.wait()
if retval == 0:
return True
except:
pass
return False