Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No way to specify additional PROVIDERS in ImportsResolver.groovy #40

Open
antonydenyer opened this issue Aug 10, 2021 · 7 comments
Open
Assignees
Labels
enhancement New feature or request

Comments

@antonydenyer
Copy link
Contributor

I want to be able to specify different providers so I don't have to provide pathRemappings.

@xaviarias
Copy link
Contributor

Hi @antonydenyer ! Ok which provider would you want? We can add it for the next release.

For now the only extension mechanism is specifying your own package.json file and add path remappings.

Or, would you have another suggestion on how to add providers dynamically?

Thanks

@xaviarias xaviarias added the enhancement New feature or request label Sep 6, 2021
@antonydenyer
Copy link
Contributor Author

👋

It's basically to get around having to do the following in my build gradle

solidity {
  resolvePackages = false
  pathRemappings = ['@consensys-software' : "$rootDir/permissioning-smartcontracts/node_modules/@consensys-software"]
}

Ideally, I'd like to be able to just add @consensys-software to the list of providers something like:

solidity {
  providers = ['@consensys-software']
}

perhaps?

@xaviarias
Copy link
Contributor

The issue with that is @consensys-software is not the NPM package, but @consensys-software/permissioning-smart-contracts.

Maybe if we add a property named packages or npmPackages instead of providers, then that would be clear that the package name is required in order for this to work.

What do you think @antonydenyer ?

@xaviarias
Copy link
Contributor

xaviarias commented Sep 6, 2021

In any case, we can already add this package to the defaults.

@antonydenyer
Copy link
Contributor Author

Ahh yes:

solidity {
  providers += '@consensys-software/permissioning-smart-contracts'
}

is what we want.

I think it's probably worth explaining what we are trying to achieve.

We want the following import to work as it does with truffle.

import "@consensys-software/permissioning-smart-contracts/contracts/NodeRules.sol";

In an ideal world having the defaults would be enough.
So maybe doing something to match the import with package.json and resolve it to node_modules?

@xaviarias xaviarias self-assigned this Sep 7, 2021
@xaviarias
Copy link
Contributor

xaviarias commented Sep 7, 2021

We could just add it to the ImportsResolver and release a new plugin version. This would add it to the path remappings as well as the allowed paths.

The only objection I have is that the Consensys permissioning contracts do not implement any standard, so that would mean adding to the default packages a non-EIP library, opening the door to many other user packages.

I think we should stick to a clear demarcation criteria on what should be added as a plugin default provider, and for now EIP implementations are the only reason I think a package should be added.

@jclagache
Copy link

Workaround to use the @uniswap/v3-core package instead of the out of date @uniswap/lib :
package.json :

{
    ...
    "dependencies": {
        "@uniswap/v3-core": "1.0.1"
    }
}

build.gradle :

solidity {
    evmVersion = "constantinople"
    resolvePackages = false
    pathRemappings = ['@uniswap' : "$projectDir/node_modules/@uniswap"]
}

You can then import Uniswap contracts, libraries and interfaces :

import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants