always parse args from sys.argv
This commit is contained in:
parent
271e457654
commit
f818a64d3d
5 changed files with 26 additions and 32 deletions
|
@ -1,10 +1,10 @@
|
||||||
usage: nosetests [-h] --file file [--key KEY] [--write] [--plugin PLUGIN]
|
usage: wakatime [-h] --file file [--key KEY] [--write] [--plugin PLUGIN]
|
||||||
[--time time] [--lineno LINENO] [--cursorpos CURSORPOS]
|
[--time time] [--lineno LINENO] [--cursorpos CURSORPOS]
|
||||||
[--notfile] [--proxy PROXY] [--project PROJECT]
|
[--notfile] [--proxy PROXY] [--project PROJECT]
|
||||||
[--alternate-project ALTERNATE_PROJECT] [--hostname HOSTNAME]
|
[--alternate-project ALTERNATE_PROJECT] [--hostname HOSTNAME]
|
||||||
[--disableoffline] [--hidefilenames] [--exclude EXCLUDE]
|
[--disableoffline] [--hidefilenames] [--exclude EXCLUDE]
|
||||||
[--include INCLUDE] [--logfile LOGFILE] [--apiurl API_URL]
|
[--include INCLUDE] [--logfile LOGFILE] [--apiurl API_URL]
|
||||||
[--config CONFIG] [--verbose] [--version]
|
[--config CONFIG] [--verbose] [--version]
|
||||||
|
|
||||||
Common interface for the WakaTime api.
|
Common interface for the WakaTime api.
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
usage: nosetests [-h] --file file [--key KEY] [--write] [--plugin PLUGIN]
|
usage: wakatime [-h] --file file [--key KEY] [--write] [--plugin PLUGIN]
|
||||||
[--time time] [--lineno LINENO] [--cursorpos CURSORPOS]
|
[--time time] [--lineno LINENO] [--cursorpos CURSORPOS]
|
||||||
[--notfile] [--proxy PROXY] [--project PROJECT]
|
[--notfile] [--proxy PROXY] [--project PROJECT]
|
||||||
[--alternate-project ALTERNATE_PROJECT] [--hostname HOSTNAME]
|
[--alternate-project ALTERNATE_PROJECT] [--hostname HOSTNAME]
|
||||||
[--disableoffline] [--hidefilenames] [--exclude EXCLUDE]
|
[--disableoffline] [--hidefilenames] [--exclude EXCLUDE]
|
||||||
[--include INCLUDE] [--logfile LOGFILE] [--apiurl API_URL]
|
[--include INCLUDE] [--logfile LOGFILE] [--apiurl API_URL]
|
||||||
[--config CONFIG] [--verbose] [--version]
|
[--config CONFIG] [--verbose] [--version]
|
||||||
nosetests: error: Missing api key
|
wakatime: error: Missing api key
|
||||||
|
|
|
@ -18,7 +18,7 @@ from wakatime.base import main
|
||||||
class BaseTestCase(utils.TestCase):
|
class BaseTestCase(utils.TestCase):
|
||||||
|
|
||||||
def test_help_contents(self, mock_requests):
|
def test_help_contents(self, mock_requests):
|
||||||
args = ['', '--help']
|
args = ['--help']
|
||||||
with self.assertRaises(SystemExit):
|
with self.assertRaises(SystemExit):
|
||||||
main(args)
|
main(args)
|
||||||
expected_stdout = open('tests/samples/output/test_help_contents').read()
|
expected_stdout = open('tests/samples/output/test_help_contents').read()
|
||||||
|
@ -29,7 +29,7 @@ class BaseTestCase(utils.TestCase):
|
||||||
response = Response()
|
response = Response()
|
||||||
response.status_code = 201
|
response.status_code = 201
|
||||||
mock_requests.return_value = response
|
mock_requests.return_value = response
|
||||||
args = ['', '--file', 'tests/samples/emptyfile.txt', '--key', '123', '--config', 'foo']
|
args = ['--file', 'tests/samples/emptyfile.txt', '--key', '123', '--config', 'foo']
|
||||||
retval = main(args)
|
retval = main(args)
|
||||||
self.assertEquals(retval, 0)
|
self.assertEquals(retval, 0)
|
||||||
expected_stdout = u("Error: Could not read from config file foo\n")
|
expected_stdout = u("Error: Could not read from config file foo\n")
|
||||||
|
@ -37,7 +37,7 @@ class BaseTestCase(utils.TestCase):
|
||||||
self.assertEquals(sys.stderr.getvalue(), '')
|
self.assertEquals(sys.stderr.getvalue(), '')
|
||||||
|
|
||||||
def test_missing_config_file(self, mock_requests):
|
def test_missing_config_file(self, mock_requests):
|
||||||
args = ['', '--file', 'tests/samples/emptyfile.txt', '--config', 'foo']
|
args = ['--file', 'tests/samples/emptyfile.txt', '--config', 'foo']
|
||||||
with self.assertRaises(SystemExit):
|
with self.assertRaises(SystemExit):
|
||||||
main(args)
|
main(args)
|
||||||
expected_stdout = u("Error: Could not read from config file foo\n")
|
expected_stdout = u("Error: Could not read from config file foo\n")
|
||||||
|
@ -49,14 +49,14 @@ class BaseTestCase(utils.TestCase):
|
||||||
response = Response()
|
response = Response()
|
||||||
response.status_code = 201
|
response.status_code = 201
|
||||||
mock_requests.return_value = response
|
mock_requests.return_value = response
|
||||||
args = ['', '--file', 'tests/samples/emptyfile.txt', '--config', 'tests/samples/sample.cfg']
|
args = ['--file', 'tests/samples/emptyfile.txt', '--config', 'tests/samples/sample.cfg']
|
||||||
retval = main(args)
|
retval = main(args)
|
||||||
self.assertEquals(retval, 0)
|
self.assertEquals(retval, 0)
|
||||||
self.assertEquals(sys.stdout.getvalue(), '')
|
self.assertEquals(sys.stdout.getvalue(), '')
|
||||||
self.assertEquals(sys.stderr.getvalue(), '')
|
self.assertEquals(sys.stderr.getvalue(), '')
|
||||||
|
|
||||||
def test_parse_bad_config_file(self, mock_requests):
|
def test_parse_bad_config_file(self, mock_requests):
|
||||||
args = ['', '--file', 'tests/samples/emptyfile.txt', '--config', 'tests/samples/bad_config.cfg']
|
args = ['--file', 'tests/samples/emptyfile.txt', '--config', 'tests/samples/bad_config.cfg']
|
||||||
retval = main(args)
|
retval = main(args)
|
||||||
self.assertEquals(retval, 103)
|
self.assertEquals(retval, 103)
|
||||||
self.assertIn('ParsingError', sys.stdout.getvalue())
|
self.assertIn('ParsingError', sys.stdout.getvalue())
|
||||||
|
|
|
@ -79,17 +79,12 @@ def parseConfigFile(configFile=None):
|
||||||
return configs
|
return configs
|
||||||
|
|
||||||
|
|
||||||
def parseArguments(argv):
|
def parseArguments():
|
||||||
"""Parse command line arguments and configs from ~/.wakatime.cfg.
|
"""Parse command line arguments and configs from ~/.wakatime.cfg.
|
||||||
Command line arguments take precedence over config file settings.
|
Command line arguments take precedence over config file settings.
|
||||||
Returns instances of ArgumentParser and SafeConfigParser.
|
Returns instances of ArgumentParser and SafeConfigParser.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
|
||||||
sys.argv
|
|
||||||
except AttributeError:
|
|
||||||
sys.argv = argv
|
|
||||||
|
|
||||||
# define supported command line arguments
|
# define supported command line arguments
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description='Common interface for the WakaTime api.')
|
description='Common interface for the WakaTime api.')
|
||||||
|
@ -151,7 +146,7 @@ def parseArguments(argv):
|
||||||
parser.add_argument('--version', action='version', version=__version__)
|
parser.add_argument('--version', action='version', version=__version__)
|
||||||
|
|
||||||
# parse command line arguments
|
# parse command line arguments
|
||||||
args = parser.parse_args(args=argv[1:])
|
args = parser.parse_args()
|
||||||
|
|
||||||
# use current unix epoch timestamp by default
|
# use current unix epoch timestamp by default
|
||||||
if not args.timestamp:
|
if not args.timestamp:
|
||||||
|
@ -384,11 +379,10 @@ def send_heartbeat(project=None, branch=None, hostname=None, stats={}, key=None,
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def main(argv=None):
|
def main(argv):
|
||||||
if not argv:
|
sys.argv = ['wakatime'] + argv
|
||||||
argv = sys.argv
|
|
||||||
|
|
||||||
args, configs = parseArguments(argv)
|
args, configs = parseArguments()
|
||||||
if configs is None:
|
if configs is None:
|
||||||
return 103 # config file parsing error
|
return 103 # config file parsing error
|
||||||
|
|
||||||
|
|
|
@ -32,4 +32,4 @@ except TypeError:
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(wakatime.main(sys.argv))
|
sys.exit(wakatime.main(sys.argv[1:]))
|
||||||
|
|
Loading…
Reference in a new issue