Skip to content

Commit

Permalink
Add cli option: --truffle-build-directory to specify custom truffle b…
Browse files Browse the repository at this point in the history
…uild directory (fix #187)
  • Loading branch information
montyly committed Apr 2, 2019
1 parent b778696 commit 32646e7
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
8 changes: 8 additions & 0 deletions slither/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ def process_truffle(dirname, args, detector_classes, printer_classes):
disable_solc_warnings=args.disable_solc_warnings,
solc_arguments=args.solc_args,
is_truffle=True,
truffle_build_directory=args.truffle_build_directory,
filter_paths=parse_filter_paths(args),
triage_mode=args.triage_mode)

Expand Down Expand Up @@ -285,6 +286,7 @@ def parse_filter_paths(args):
'disable_color': False,
'filter_paths': None,
'ignore_truffle_compile': False,
'truffle_build_directory': 'build/contracts',
'legacy_ast': False
}

Expand Down Expand Up @@ -405,6 +407,12 @@ def parse_args(detector_classes, printer_classes):
dest='ignore_truffle_compile',
default=defaults_flag_in_config['ignore_truffle_compile'])

group_misc.add_argument('--truffle-build-directory',
help='Do not run truffle compile',
action='store',
dest='truffle_build_directory',
default=defaults_flag_in_config['truffle_build_directory'])

group_misc.add_argument('--triage-mode',
help='Run triage mode (save results in slither.db.json)',
action='store_true',
Expand Down
10 changes: 5 additions & 5 deletions slither/slither.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def __init__(self, contract, **kwargs):
solc_argeuments (str): solc arguments (default '')
ast_format (str): ast format (default '--ast-compact-json')
is_truffle (bool): is a truffle directory (default false)
truffle_build_directory (str): build truffle directory (default 'build/contracts')
filter_paths (list(str)): list of path to filter (default [])
triage_mode (bool): if true, switch to triage mode (default false)
'''
Expand All @@ -37,7 +38,7 @@ def __init__(self, contract, **kwargs):

# truffle directory
if is_truffle:
self._init_from_truffle(contract)
self._init_from_truffle(contract, kwargs.get('truffle_build_directory', 'build/contracts'))
# list of files provided (see --splitted option)
elif isinstance(contract, list):
self._init_from_list(contract)
Expand All @@ -57,13 +58,12 @@ def __init__(self, contract, **kwargs):

self._analyze_contracts()

def _init_from_truffle(self, contract):
if not os.path.isdir(os.path.join(contract, 'build'))\
or not os.path.isdir(os.path.join(contract, 'build', 'contracts')):
def _init_from_truffle(self, contract, build_directory):
if not os.path.isdir(os.path.join(contract, build_directory)):
logger.info(red('No truffle build directory found, did you run `truffle compile`?'))
sys.exit(-1)
super(Slither, self).__init__('')
filenames = glob.glob(os.path.join(contract, 'build', 'contracts', '*.json'))
filenames = glob.glob(os.path.join(contract, build_directory, '*.json'))
for filename in filenames:
with open(filename, encoding='utf8') as f:
contract_loaded = json.load(f)
Expand Down

0 comments on commit 32646e7

Please sign in to comment.