You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
57 lines
1.7 KiB
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
import os
|
|
from Naked.toolshed.system import file_exists, dir_exists, stderr, exit_success
|
|
|
|
class Profiler:
|
|
def __init__(self, dir_levels = 6):
|
|
self.number_of_dir_levels = dir_levels # number of directory levels to bottom to top search
|
|
|
|
def run(self):
|
|
lib_found = False
|
|
for i in range(self.number_of_dir_levels):
|
|
if not self._is_lib_at_this_level():
|
|
os.chdir(os.pardir)
|
|
else:
|
|
lib_found = True
|
|
break
|
|
if lib_found:
|
|
os.chdir('lib') # chdir to the lib directory if it is found
|
|
if file_exists('profiler.py'): # confirm that profiler.py exists
|
|
os.system('python profiler.py') # run the profiler.py file
|
|
exit_success()
|
|
else:
|
|
stderr("Unable to locate a profiler.py file in your lib directory.", 1)
|
|
else:
|
|
stderr("Unable to locate your profiler.py file. Please navigate to your project directory.", 1)
|
|
|
|
def _is_lib_at_this_level(self):
|
|
if dir_exists('lib'):
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def help():
|
|
from Naked.toolshed.system import exit_success
|
|
help_string = """
|
|
Naked profile Command Help
|
|
==========================
|
|
The profile command runs cProfile and pstats on the code that you enter in test code block of your PROJECT/lib/profiler.py file.
|
|
|
|
USAGE
|
|
naked profile
|
|
|
|
SECONDARY COMMANDS
|
|
none
|
|
|
|
OPTIONS
|
|
none
|
|
|
|
This command searches bottom to top (from the working directory) through up to 6 directory levels to identify the lib/profiler.py path."""
|
|
|
|
print(help_string)
|
|
exit_success()
|
|
|