Merge pull request #117 from wakatime/feature/api-key-vault-cmd

Support for api key vault cmd config
This commit is contained in:
Alan Hamlett 2022-11-12 12:32:59 -06:00 committed by GitHub
commit c34eccad4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 4 deletions

View File

@ -3,6 +3,12 @@ History
------- -------
11.1.0 (2022-11-11)
++++++++++++++++++
- Support for api key vault cmd config
11.0.8 (2022-08-23) 11.0.8 (2022-08-23)
++++++++++++++++++ ++++++++++++++++++

View File

@ -4,7 +4,6 @@
[WakaTime][wakatime] is an open source Sublime Text plugin for metrics, insights, and time tracking automatically generated from your programming activity. [WakaTime][wakatime] is an open source Sublime Text plugin for metrics, insights, and time tracking automatically generated from your programming activity.
## Installation ## Installation
1. Install [Package Control](https://packagecontrol.io/installation). 1. Install [Package Control](https://packagecontrol.io/installation).
@ -19,12 +18,10 @@
6. Use Sublime and your coding activity will be displayed on your [WakaTime dashboard](https://wakatime.com). 6. Use Sublime and your coding activity will be displayed on your [WakaTime dashboard](https://wakatime.com).
## Screen Shots ## Screen Shots
![Project Overview](https://wakatime.com/static/img/ScreenShots/Screen-Shot-2016-03-21.png) ![Project Overview](https://wakatime.com/static/img/ScreenShots/Screen-Shot-2016-03-21.png)
## Unresponsive Plugin Warning ## Unresponsive Plugin Warning
In Sublime Text 2, if you get a warning message: In Sublime Text 2, if you get a warning message:
@ -35,7 +32,6 @@ To fix this, go to `Preferences → Settings - User` then add the following sett
`"detect_slow_plugins": false` `"detect_slow_plugins": false`
## Troubleshooting ## Troubleshooting
First, turn on debug mode in your `WakaTime.sublime-settings` file. First, turn on debug mode in your `WakaTime.sublime-settings` file.

View File

@ -186,6 +186,7 @@ class ApiKey(object):
self._key = key self._key = key
return self._key return self._key
configs = None
try: try:
configs = parseConfigFile(CONFIG_FILE) configs = parseConfigFile(CONFIG_FILE)
if configs: if configs:
@ -197,8 +198,38 @@ class ApiKey(object):
except: except:
pass pass
key = self.api_key_from_vault_cmd(configs)
if key:
self._key = key
return self._key return self._key
return self._key
def api_key_from_vault_cmd(self, configs):
vault_cmd = SETTINGS.get('api_key_vault_cmd')
if not vault_cmd and configs:
try:
if configs.has_option('settings', 'api_key_vault_cmd'):
vault_cmd = configs.get('settings', 'api_key_vault_cmd')
except:
pass
if not vault_cmd or not vault_cmd.strip():
return None
try:
process = Popen(vault_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
stdout, stderr = process.communicate()
retcode = process.poll()
if retcode:
log(ERROR, 'Vault command error ({retcode}): {stderr}'.format(retcode=retcode, stderr=u(stderr)))
return None
return stdout.strip() or None
except:
log(ERROR, traceback.format_exc())
return None
def write(self, key): def write(self, key):
global SETTINGS global SETTINGS
self._key = key self._key = key