BlockCatIO / solidity-flattener

A python utility to flatten Solidity code with imports into a single file.
MIT License
267 stars 98 forks source link

--solc-paths not working for multiple folders #34

Closed pstuermlinger closed 6 years ago

pstuermlinger commented 6 years ago

I have to flatten two contracts. Both depend on node_modules/openzeppelin-solidity. One of them additionally depends on installed_contracts/oraclize-api.

While the first works with --solc-paths="openzeppelin-solidity/=$(pwd)/node_modules/openzeppelin-solidity/" the second one can't fine any files. I tried several formats without success:

--solc-paths="openzeppelin-solidity/=$(pwd)/node_modules/openzeppelin-solidity/,oraclize-api/=$(pwd)/installed_contracts/oraclize-api/" --solc-paths="openzeppelin-solidity/=$(pwd)/node_modules/openzeppelin-solidity/ oraclize-api/=$(pwd)/installed_contracts/oraclize-api/" --solc-paths="openzeppelin-solidity/=$(pwd)/node_modules/openzeppelin-solidity/,$(pwd)/installed_contracts/oraclize-api/" --solc-paths="solc --allow-paths $(pwd)/node_modules/openzeppelin-solidity/ $(pwd)/installed_contracts/"

Error:

contracts/MyContract.sol:7:1: Error: Source "/home/.../node_modules/openzeppelin-solidity/,oraclize-api/=/home/.../installed_contracts/oraclize-api/,contracts/math/SafeMath.sol" not found: File not found.
import "openzeppelin-solidity/contracts/math/SafeMath.sol";
^---------------------------------------------------------^
contracts/MyContract.sol:8:1: Error: Source "oraclize-api/contracts/usingOraclize.sol" not found: File outside of allowed directories.
import "oraclize-api/contracts/usingOraclize.sol";
^------------------------------------------------^
Traceback (most recent call last):
  File "/home/.../.local/bin/solidity_flattener", line 4, in <module>
    flattener.core.main()
  File "/home/.../.local/lib/python3.5/site-packages/flattener/core.py", line 97, in main
    solc_proc.check_returncode()
  File "/usr/lib/python3.5/subprocess.py", line 659, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['solc', 'openzeppelin-solidity/=/home/.../node_modules/openzeppelin-solidity/,oraclize-api/=/home/.../installed_contracts/oraclize-api/,', '--ast', 'contracts/MyContract.sol']' returned non-zero exit status 1

Imports:

import "openzeppelin-solidity/contracts/math/SafeMath.sol";
import "oraclize-api/contracts/usingOraclize.sol";

Any idea what could be wrong?

pstuermlinger commented 6 years ago

Duplicate of #5