Skip to content

Commit

Permalink
Merge pull request #64 from multiversx/new-sdk-path
Browse files Browse the repository at this point in the history
Handle SDK renaming: elrondsdk -> multiversx-sdk, erdpy -> mxpy
  • Loading branch information
andreibancioiu committed Jan 18, 2023
2 parents f83e943 + ad29257 commit 3eaa67f
Show file tree
Hide file tree
Showing 11 changed files with 165 additions and 140 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@ MultiversX IDE can be installed from the Visual Studio Code Marketplace.
- **Windows** is not supported yet
- **MacOS** is supported

If you experience any issues, please let us know [on Github](https://github.com/multiversx/mx-ide-vscode/issues) or [on Telegram](https://t.me/MultiversXDevelopers).
If you experience any issues, please let us know [on Github](https://github.com/multiversx/mx-ide-vscode/issues), on [Discord](http://discord.gg/MultiversXBuilders) or [on Telegram](https://t.me/MultiversXDevelopers).

### [erdpy](https://github.com/multiversx/mx-sdk-erdpy)
### [mxpy](https://github.com/multiversx/mx-sdk-py-cli)

**erdpy** is the backend of the Visual Studio Code extension. **erdpy** is **required** by the MultiversX IDE. In order to install it, please follow [these steps](https://docs.multiversx.com/sdk-and-tools/erdpy/installing-erdpy).
**mxpy** is the backend of the Visual Studio Code extension. **mxpy** is **required** by the MultiversX IDE. In order to install it, please follow [these steps](https://docs.multiversx.com/sdk-and-tools/sdk-py/installing-mxpy).

### Other dependencies

The extension, via `erdpy`, will automatically download its external dependencies, so you do not have to worry much about setting up the development environment. These automatically installed dependencies include:
The extension, via `mxpy`, will automatically download its external dependencies, so you do not have to worry much about setting up the development environment. These automatically installed dependencies include:

* `RUST` buildchain
* `VM Tools` (e.g. Mandos framework)
* `VM Tools` (e.g. tests / scenarios framework)
* `LLVM (clang, llc, wasm-ld etc.)`

## Extension Commands
Expand All @@ -51,7 +51,7 @@ This extension contributes the following commands (`Ctrl+Shift+P`):
* `newFromTemplate`
* `buildContract`
* `cleanContract`
* `runMandosTests`
* `runScenarios`
* `runContractSnippet`

## Installing the rust debugger pretty printer script
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 16 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "vscode-elrond-ide",
"displayName": "MultiversX IDE",
"description": "MultiversX IDE for developing Smart Contracts",
"version": "0.14.1",
"version": "0.15.0",
"publisher": "Elrond",
"repository": {
"type": "git",
Expand All @@ -21,7 +21,7 @@
"activationEvents": [
"onCommand:multiversx.setupWorkspace",
"onCommand:multiversx.installRustDebuggerPrettyPrinterScript",
"workspaceContains:**/elrond.workspace.json"
"workspaceContains:**/multiversx.workspace.json"
],
"main": "./out/extension.js",
"contributes": {
Expand Down Expand Up @@ -85,8 +85,8 @@
"category": "multiversx"
},
{
"command": "multiversx.runMandosTests",
"title": "Run Mandos Tests",
"command": "multiversx.runScenarios",
"title": "Run Scenarios",
"category": "multiversx"
},
{
Expand All @@ -110,16 +110,16 @@
"category": "multiversx"
},
{
"command": "multiversx.setupErdjsSnippets",
"title": "Setup erdjs-snippets",
"command": "multiversx.setupJavaScriptSnippets",
"title": "Setup JavaScript snippets",
"category": "multiversx"
}
],
"menus": {
"explorer/context": [
{
"command": "multiversx.buildContract",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != erdjs-snippets && resourceFilename != interaction",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != js-snippets && resourceFilename != interaction",
"group": "multiversx"
},
{
Expand All @@ -129,7 +129,7 @@
},
{
"command": "multiversx.cleanContract",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != erdjs-snippets && resourceFilename != interaction",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != js-snippets && resourceFilename != interaction",
"group": "multiversx"
},
{
Expand All @@ -139,7 +139,7 @@
},
{
"command": "multiversx.runContractSnippet",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != erdjs-snippets",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != js-snippets",
"group": "multiversx"
},
{
Expand All @@ -148,13 +148,13 @@
"group": "multiversx"
},
{
"command": "multiversx.runMandosTests",
"command": "multiversx.runScenarios",
"when": "resourceFilename =~ /.scen.json/",
"group": "multiversx"
},
{
"command": "multiversx.runMandosTests",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != erdjs-snippets && resourceFilename != interaction",
"command": "multiversx.runScenarios",
"when": "explorerResourceIsFolder && resourceFilename != output && resourceFilename != debug && resourceFilename != target && resourceFilename != js-snippets && resourceFilename != interaction",
"group": "multiversx"
},
{
Expand Down Expand Up @@ -199,7 +199,7 @@
"when": "false"
},
{
"command": "multiversx.runMandosTests",
"command": "multiversx.runScenarios",
"when": "false"
},
{
Expand Down Expand Up @@ -246,7 +246,7 @@
"when": "view == smartContracts && viewItem == contract"
},
{
"command": "multiversx.runMandosTests",
"command": "multiversx.runScenarios",
"when": "view == smartContracts && viewItem == contract"
},
{
Expand All @@ -263,9 +263,9 @@
"configuration": {
"title": "vscode-elrond-ide",
"properties": {
"multiversx.elrondsdk": {
"multiversx.sdkPath": {
"type": "string",
"default": "~/elrondsdk"
"default": "~/multiversx-sdk"
}
}
},
Expand Down
30 changes: 15 additions & 15 deletions src/environment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ export class Environment {
Environment.saveOld();
}

let sdkPath = MySettings.getElrondSdk();
let erdpyEnvFolder = path.join(sdkPath, "erdpy-venv");
let erdpyBinFolder = path.join(erdpyEnvFolder, "bin");
let sdkPath = MySettings.getSdkPath();
let mxpyVenvFolder = path.join(sdkPath, "mxpy-venv");
let mxpyBinFolder = path.join(mxpyVenvFolder, "bin");
let vmToolsFolder = path.join(sdkPath, "vmtools");
let rustFolder = path.join(sdkPath, "vendor-rust");
let rustBinFolder = path.join(rustFolder, "bin");
Expand All @@ -20,34 +20,34 @@ export class Environment {

// This is required for other VS Code extensions to work well and use the custom (Rust) environment.
delete process.env["PYTHONHOME"];
process.env["PATH"] = `${rustBinFolder}:${erdpyBinFolder}:${vmToolsFolder}:${nodeJsBinFolder}:${process.env["PATH"]}`;
process.env["VIRTUAL_ENV"] = erdpyEnvFolder;
process.env["PATH"] = `${rustBinFolder}:${mxpyBinFolder}:${vmToolsFolder}:${nodeJsBinFolder}:${process.env["PATH"]}`;
process.env["VIRTUAL_ENV"] = mxpyVenvFolder;
process.env["RUSTUP_HOME"] = rustFolder;
process.env["CARGO_HOME"] = rustFolder;
}

static getForVsCodeFiles(): any {
let sdkPath = path.join("${env:HOME}", MySettings.getElrondSdkRelativeToHome());
let erdpyEnvFolder = path.join(sdkPath, "erdpy-venv");
let erdpyBinFolder = path.join(erdpyEnvFolder, "bin");
let sdkPath = path.join("${env:HOME}", MySettings.getSdkPathRelativeToHome());
let mxpyVenvFolder = path.join(sdkPath, "mxpy-venv");
let mxpyBinFolder = path.join(mxpyVenvFolder, "bin");
let vmToolsFolder = path.join(sdkPath, "vmtools");
let rustFolder = path.join(sdkPath, "vendor-rust");
let rustBinFolder = path.join(rustFolder, "bin");
let nodeJsFolder = path.join(sdkPath, "nodejs", "latest");
let nodeJsBinFolder = path.join(nodeJsFolder, "bin");

return {
"PATH": `${rustBinFolder}:${erdpyBinFolder}:${vmToolsFolder}:${nodeJsBinFolder}:\${env:PATH}`,
"VIRTUAL_ENV": erdpyEnvFolder,
"PATH": `${rustBinFolder}:${mxpyBinFolder}:${vmToolsFolder}:${nodeJsBinFolder}:\${env:PATH}`,
"VIRTUAL_ENV": mxpyVenvFolder,
"RUSTUP_HOME": rustFolder,
"CARGO_HOME": rustFolder
};
}

static getForTerminal(): any {
let sdkPath = path.join("${env:HOME}", MySettings.getElrondSdkRelativeToHome());
let erdpyEnvFolder = path.join(sdkPath, "erdpy-venv");
let erdpyBinFolder = path.join(erdpyEnvFolder, "bin");
let sdkPath = path.join("${env:HOME}", MySettings.getSdkPathRelativeToHome());
let mxpyVenvFolder = path.join(sdkPath, "mxpy-venv");
let mxpyBinFolder = path.join(mxpyVenvFolder, "bin");
let vmToolsFolder = path.join(sdkPath, "vmtools");
let rustFolder = path.join(sdkPath, "vendor-rust");
let rustBinFolder = path.join(rustFolder, "bin");
Expand All @@ -56,8 +56,8 @@ export class Environment {

return {
"PYTHONHOME": null,
"PATH": `${rustBinFolder}:${erdpyBinFolder}:${vmToolsFolder}:${nodeJsBinFolder}:${process.env["PATH"]}`,
"VIRTUAL_ENV": erdpyEnvFolder,
"PATH": `${rustBinFolder}:${mxpyBinFolder}:${vmToolsFolder}:${nodeJsBinFolder}:${process.env["PATH"]}`,
"VIRTUAL_ENV": mxpyVenvFolder,
"RUSTUP_HOME": rustFolder,
"CARGO_HOME": rustFolder
};
Expand Down
36 changes: 18 additions & 18 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import * as vscode from 'vscode';
import { Root } from './root';
import { Feedback } from './feedback';
import * as sdk from "./sdk";
import { TemplatesViewModel as TemplatesViewModel, ContractTemplate } from './templates';
import * as workspace from "./workspace";
import * as erdjsSnippets from "./erdjsSnippets";
import * as presenter from "./presenter";
import { Uri } from 'vscode';
import { SmartContract, SmartContractsViewModel } from './contracts';
import { Environment } from './environment';
import * as javaScriptSnippets from "./javaScriptSnippets";
import * as errors from './errors';
import { Feedback } from './feedback';
import * as presenter from "./presenter";
import { Root } from './root';
import * as sdk from "./sdk";
import * as snippets from './snippets';
import { SmartContractsViewModel, SmartContract } from './contracts';
import { Uri } from 'vscode';
import { ContractTemplate, TemplatesViewModel } from './templates';
import * as workspace from "./workspace";
import path = require("path");


Expand All @@ -31,7 +31,7 @@ export async function activate(context: vscode.ExtensionContext) {
vscode.commands.registerCommand("multiversx.gotoContract", gotoContract);
vscode.commands.registerCommand("multiversx.buildContract", buildContract);
vscode.commands.registerCommand("multiversx.runContractSnippet", runContractSnippet);
vscode.commands.registerCommand("multiversx.runMandosTests", runMandosTests);
vscode.commands.registerCommand("multiversx.runScenarios", runScenarios);
vscode.commands.registerCommand("multiversx.runFreshTestnet", runFreshTestnet);
vscode.commands.registerCommand("multiversx.resumeExistingTestnet", resumeExistingTestnet);
vscode.commands.registerCommand("multiversx.stopTestnet", stopTestnet);
Expand All @@ -41,7 +41,7 @@ export async function activate(context: vscode.ExtensionContext) {
vscode.commands.registerCommand("multiversx.newFromTemplate", newFromTemplate);
vscode.commands.registerCommand("multiversx.refreshContracts", async () => await refreshViewModel(contractsViewModel));

vscode.commands.registerCommand("multiversx.setupErdjsSnippets", setupErdjsSnippets);
vscode.commands.registerCommand("multiversx.setupJavaScriptSnippets", setupJavaScriptSnippets);

Environment.set();
}
Expand Down Expand Up @@ -150,7 +150,7 @@ async function runContractSnippet(contract: any) {
function getContractFolder(contract: any): string {
if (contract instanceof Uri) {
let fsPath = contract.fsPath;
if (fsPath.includes("elrond.json")) {
if (fsPath.includes("multiversx.json")) {
return path.dirname(fsPath);
} else if (fsPath.includes("snippets.sh")) {
return path.dirname(fsPath);
Expand All @@ -162,12 +162,12 @@ function getContractFolder(contract: any): string {
return (contract as SmartContract).getPath();
}

async function runMandosTests(item: any) {
async function runScenarios(item: any) {
try {
if (item instanceof Uri) {
await sdk.runMandosTests(item.fsPath);
await sdk.runScenarios(item.fsPath);
} else {
await sdk.runMandosTests((item as SmartContract).getPath());
await sdk.runScenarios((item as SmartContract).getPath());
}
} catch (error) {
errors.caughtTopLevel(error);
Expand Down Expand Up @@ -203,9 +203,9 @@ async function ensureInstalledBuildchains() {
await sdk.ensureInstalledBuildchains(languages);
}

async function setupErdjsSnippets() {
let destinationFolder = await presenter.askOpenFolder(`Please select a destination for "erdjs-snippets":`);
async function setupJavaScriptSnippets() {
let destinationFolder = await presenter.askOpenFolder(`Please select a destination for "js-snippets":`);
if (destinationFolder) {
await erdjsSnippets.setup(destinationFolder);
await javaScriptSnippets.setup(destinationFolder);
}
}
File renamed without changes.
14 changes: 7 additions & 7 deletions src/presenter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,18 @@ For a better experience when debugging Smart Contracts, we recommed allowing thi
return answer;
}

export async function askInstallErdpy(requiredVersion: Version): Promise<boolean> {
let answer = await askYesNo(`MultiversX IDE requires erdpy ${requiredVersion}, which isn't available in your environment.
export async function askInstallMxpy(requiredVersion: Version): Promise<boolean> {
let answer = await askYesNo(`MultiversX IDE requires mxpy ${requiredVersion}, which isn't available in your environment.
Do you agree to install it?`);
return answer;
}

export async function askErdpyVersion(defaultVersion: Version): Promise<Version> {
export async function askMxpyVersion(defaultVersion: Version): Promise<Version> {
const result = await vscode.window.showInputBox({
prompt: "Enter the erdpy version to install",
prompt: "Enter the mxpy version to install",
value: defaultVersion.toString(),
ignoreFocusOut: true,
placeHolder: "For example: 1.0.0",
placeHolder: "For example: 5.6.7",
validateInput: text => {
return text.length > 0 ? null : "Should not be empty.";
}
Expand All @@ -56,8 +56,8 @@ export async function askErdpyVersion(defaultVersion: Version): Promise<Version>
return Version.parse(result);
}

export async function askInstallErdpyGroup(group: string): Promise<boolean> {
let answer = await askYesNo(`It seems that your workspace requires the dependency group "${group}", which isn't available in your erdpy environment.
export async function askInstallMxpyGroup(group: string): Promise<boolean> {
let answer = await askYesNo(`It seems that your workspace requires the dependency group "${group}", which isn't available in your environment.
Do you agree to install it?`);
return answer;
}
Expand Down
Loading

0 comments on commit 3eaa67f

Please sign in to comment.