passed config file to compiler

compilerCong
lianahus 3 years ago
parent 5daf82cc2f
commit 47e80aa3f9
  1. 14
      apps/solidity-compiler/src/app/compiler.ts
  2. 24
      libs/remix-solidity/src/compiler/compiler.ts
  3. 2
      libs/remix-solidity/src/compiler/types.ts
  4. 9
      libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx
  5. 16
      libs/remix-ui/solidity-compiler/src/lib/logic/compileTabLogic.ts

@ -19,18 +19,14 @@ const profile = {
methods: ['getCompilationResult', 'compile', 'compileWithParameters', 'setCompilerConfig', 'compileFile', 'getCompilerState'] methods: ['getCompilationResult', 'compile', 'compileWithParameters', 'setCompilerConfig', 'compileFile', 'getCompilerState']
} }
const defaultAppParameters = {
hideWarnings: false,
autoCompile: false,
includeNightlies: false
}
const defaultCompilerParameters = { const defaultCompilerParameters = {
runs: '200', runs: '200',
optimize: false, optimize: false,
version: 'soljson-v0.8.7+commit.e28d00a7', version: 'soljson-v0.8.7+commit.e28d00a7',
evmVersion: null, // compiler default evmVersion: null, // compiler default
language: 'Solidity' language: 'Solidity',
useFileConfiguration: false,
configFileContent: ''
} }
export class CompilerClientApi extends CompilerApiMixin(PluginClient) implements ICompilerApi { export class CompilerClientApi extends CompilerApiMixin(PluginClient) implements ICompilerApi {
constructor () { constructor () {
@ -48,7 +44,9 @@ export class CompilerClientApi extends CompilerApiMixin(PluginClient) implements
optimize: localStorage.getItem('optimize') === 'true', optimize: localStorage.getItem('optimize') === 'true',
version: localStorage.getItem('version') || defaultCompilerParameters.version, version: localStorage.getItem('version') || defaultCompilerParameters.version,
evmVersion: localStorage.getItem('evmVersion') || defaultCompilerParameters.evmVersion, // default evmVersion: localStorage.getItem('evmVersion') || defaultCompilerParameters.evmVersion, // default
language: localStorage.getItem('language') || defaultCompilerParameters.language language: localStorage.getItem('language') || defaultCompilerParameters.language,
useFileConfiguration: localStorage.getItem('useFileConfiguration') || defaultCompilerParameters.useFileConfiguration,
configFileContent: localStorage.getItem('configFileContent') || defaultCompilerParameters.configFileContent
} }
return params return params
} }

@ -31,6 +31,8 @@ export class Compiler {
language: 'Solidity', language: 'Solidity',
compilationStartTime: null, compilationStartTime: null,
target: null, target: null,
useFileConfiguration: false,
configFileContent: '',
lastCompilationResult: { lastCompilationResult: {
data: null, data: null,
source: null source: null
@ -115,7 +117,13 @@ export class Compiler {
try { try {
if (source && source.sources) { if (source && source.sources) {
const { optimize, runs, evmVersion, language } = this.state const { optimize, runs, evmVersion, language } = this.state
input = compilerInput(source.sources, { optimize, runs, evmVersion, language }) let params = { optimize, runs, evmVersion, language }
if (this.state.useFileConfiguration) {
params = JSON.parse(this.state.configFileContent)
}
input = compilerInput(source.sources, params)
result = JSON.parse(compiler.compile(input, { import: missingInputsCallback })) result = JSON.parse(compiler.compile(input, { import: missingInputsCallback }))
} }
} catch (exception) { } catch (exception) {
@ -186,8 +194,13 @@ export class Compiler {
let input: string let input: string
try { try {
if (source && source.sources) { if (source && source.sources) {
const { optimize, runs, evmVersion, language } = this.state const { optimize, runs, evmVersion, language, useFileConfiguration, configFileContent } = this.state
input = compilerInput(source.sources, { optimize, runs, evmVersion, language }) let params = { optimize, runs, evmVersion, language }
if (useFileConfiguration) {
params = JSON.parse(configFileContent)
}
input = compilerInput(source.sources, params)
result = JSON.parse(remoteCompiler.compile(input, { import: missingInputsCallback })) result = JSON.parse(remoteCompiler.compile(input, { import: missingInputsCallback }))
} }
} catch (exception) { } catch (exception) {
@ -291,6 +304,11 @@ export class Compiler {
if (source && source.sources) { if (source && source.sources) {
const { optimize, runs, evmVersion, language } = this.state const { optimize, runs, evmVersion, language } = this.state
jobs.push({ sources: source }) jobs.push({ sources: source })
let params = { optimize, runs, evmVersion, language }
if (this.state.useFileConfiguration) {
params = JSON.parse(this.state.configFileContent)
}
this.state.worker.postMessage({ this.state.worker.postMessage({
cmd: 'compile', cmd: 'compile',
job: jobs.length - 1, job: jobs.length - 1,

@ -164,6 +164,8 @@ export interface CompilerState {
language: Language, language: Language,
compilationStartTime: number| null, compilationStartTime: number| null,
target: string | null, target: string | null,
useFileConfiguration: false,
configFileContent: '',
lastCompilationResult: { lastCompilationResult: {
data: CompilationResult | null, data: CompilationResult | null,
source: SourceWithTarget | null | undefined source: SourceWithTarget | null | undefined

@ -160,6 +160,11 @@ export const CompilerContainer = (props: CompilerContainerProps) => {
} }
}, [compilerContainer.editor.mode]) }, [compilerContainer.editor.mode])
useEffect(() => {
compileTabLogic.setUseFileConfiguration(!manualConfig)
if (!manualConfig) compileTabLogic.setConfigFilePath(configFilePath)
}, [manualConfig])
useEffect(() => { useEffect(() => {
if (configurationSettings) { if (configurationSettings) {
setConfiguration(configurationSettings) setConfiguration(configurationSettings)
@ -176,6 +181,7 @@ export const CompilerContainer = (props: CompilerContainerProps) => {
setConfigFilePath(configFilePathInput.current.value) setConfigFilePath(configFilePathInput.current.value)
} }
const handleConfigPathChange = async () => { const handleConfigPathChange = async () => {
if (configFilePathInput.current.value !== '') {
if (await api.fileExists(configFilePathInput.current.value)) if (await api.fileExists(configFilePathInput.current.value))
setConfigFilePath(configFilePathInput.current.value) setConfigFilePath(configFilePathInput.current.value)
else { else {
@ -187,7 +193,10 @@ export const CompilerContainer = (props: CompilerContainerProps) => {
() => {} () => {}
) )
} }
}
setShowFilePathInput(false) setShowFilePathInput(false)
compileTabLogic.setConfigFilePath(configFilePath)
} }
const _retrieveVersion = (version?) => { const _retrieveVersion = (version?) => {

@ -18,6 +18,8 @@ export class CompileTabLogic {
public compilerImport public compilerImport
public event public event
public evmVersions: Array<string> public evmVersions: Array<string>
public useFileConfiguration: boolean
public configFilePath: string
constructor (public api: ICompilerApi, public contentImport) { constructor (public api: ICompilerApi, public contentImport) {
this.event = new EventEmitter() this.event = new EventEmitter()
@ -46,6 +48,8 @@ export class CompileTabLogic {
this.api.setCompilerParameters({ evmVersion: this.evmVersion }) this.api.setCompilerParameters({ evmVersion: this.evmVersion })
this.compiler.set('evmVersion', this.evmVersion) this.compiler.set('evmVersion', this.evmVersion)
this.useFileConfiguration = false
this.configFilePath = ''
this.language = getValidLanguage(this.api.getCompilerParameters().language) this.language = getValidLanguage(this.api.getCompilerParameters().language)
if (this.language != null) { if (this.language != null) {
this.compiler.set('language', this.language) this.compiler.set('language', this.language)
@ -58,6 +62,18 @@ export class CompileTabLogic {
this.compiler.set('optimize', this.optimize) this.compiler.set('optimize', this.optimize)
} }
setUseFileConfiguration (useFileConfiguration) {
this.useFileConfiguration = useFileConfiguration
this.compiler.set('useFileConfiguration', useFileConfiguration)
}
setConfigFilePath (path) {
this.configFilePath = path
this.api.readFile(path).then( content => {
this.compiler.set('configFileContent', content)
})
}
setRuns (runs) { setRuns (runs) {
this.runs = runs this.runs = runs
this.api.setCompilerParameters({ runs: this.runs }) this.api.setCompilerParameters({ runs: this.runs })

Loading…
Cancel
Save