From 303e379caf22d61e3cf7c026a60c177aa7adab55 Mon Sep 17 00:00:00 2001 From: 0mkar <0mkar@protonmail.com> Date: Thu, 4 Mar 2021 13:02:12 +0530 Subject: [PATCH] Connect to ethcode deploy API (experimental) --- package.json | 5 +++++ src/extension.ts | 18 ++++++++++++++++-- src/plugins/native_solidity_plugin.ts | 10 +--------- src/types.ts | 13 +++++++++++++ 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 7865168..65e38bf 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,11 @@ "command": "rmxPlugins.languageSelector", "title": "Language selector", "category": "Remix IDE" + }, + { + "command": "rmxPlugins.deploy", + "title": "Deploy contracts through Ethcode", + "category": "Remix IDE" } ], "keybindings": [ diff --git a/src/extension.ts b/src/extension.ts index 2d5c8ab..0a9cd18 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,5 +1,5 @@ "use strict"; -import { window, commands, workspace, InputBoxOptions, ExtensionContext, QuickPickItem } from "vscode"; +import { window, commands, extensions, workspace, InputBoxOptions, ExtensionContext, QuickPickItem } from "vscode"; import { PluginManager, Engine } from '@remixproject/engine'; import { ThemeUrls} from '@remixproject/plugin-api' import { VscodeAppManager, WebviewPlugin, ThemePlugin, FileManagerPlugin, EditorPlugin, EditorOptions, transformCmd, ThemeOptions, ContentImportPlugin } from '@remixproject/engine-vscode'; @@ -8,7 +8,7 @@ import { RmxPluginsProvider } from "./rmxPlugins"; import NativeSolcPlugin from "./plugins/native_solidity_plugin"; import { pluginActivate, pluginDeactivate, pluginUninstall } from './optionInputs'; import { ToViewColumn, GetPluginData } from "./utils"; -import { PluginInfo, CompilerInputOptions } from "./types"; +import { PluginInfo, CompilerInputOptions, ICompilationResult } from "./types"; import { Profile } from '@remixproject/plugin-utils'; class VscodeManager extends VscodeAppManager { @@ -205,4 +205,18 @@ export async function activate(context: ExtensionContext) { console.log(error); } }); + // extension connector + commands.registerCommand('rmxPlugins.deploy', async () => { + console.log('should deploy'); + const ethcode = extensions.getExtension('ethential.ethcode'); + await ethcode.activate(); + await manager.activatePlugin(['solidity']); + const compilationResult: ICompilationResult = solpl.getCompilationResult(); + console.log(compilationResult); + + if(ethcode.isActive) { + const ethcodeApi = ethcode.exports; + ethcodeApi.loadCompiled(compilationResult); + } + }) } diff --git a/src/plugins/native_solidity_plugin.ts b/src/plugins/native_solidity_plugin.ts index 0b1db4f..10bd9d0 100644 --- a/src/plugins/native_solidity_plugin.ts +++ b/src/plugins/native_solidity_plugin.ts @@ -2,7 +2,7 @@ import { CommandPlugin } from "@remixproject/engine-vscode"; import { window, OutputChannel, workspace } from "vscode"; import { fork, ChildProcess } from "child_process"; import * as path from "path"; -import { ISources, CompilerInput, CompilerInputOptions } from "../types"; +import { ISources, CompilerInput, CompilerInputOptions, ICompilationResult } from "../types"; const profile = { name: 'solidity', @@ -16,14 +16,6 @@ const profile = { methods: ['getCompilationResult', 'compile', 'compileWithParameters', 'setCompilerConfig'] }; -interface ICompilationResult { - source: { - target: string; - sources: ISources; - }; - data: any; -} - export default class NativeSolcPlugin extends CommandPlugin { private version: string = 'latest'; private versions: Array; diff --git a/src/types.ts b/src/types.ts index d31341a..7e30ce7 100644 --- a/src/types.ts +++ b/src/types.ts @@ -18,6 +18,19 @@ interface Notifications { udapp?: string[] | null; network?: string[] | null; } +/** + * Compilation result interface + */ +export interface ICompilationResult { + source: { + target: string; + sources: ISources; + }; + data: any; +} +/** + * Compiler input interface + */ export interface CompilerInput { // Required: Source code language. Currently supported are "Solidity" and "Yul". language: Language,