Skip to content

Commit

Permalink
Add settings to open container terminal as root
Browse files Browse the repository at this point in the history
  • Loading branch information
cedelavergne-ledger committed Oct 16, 2024
1 parent 7e73f07 commit 35ce2f3
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,11 @@ This extension contributes the following settings:
* `ledgerDevTools.onboardingPin`: Set the device quick onboarding PIN code.
* `ledgerDevTools.onboardingSeed`: Set the device quick onboarding 24-word Seed phrase.
* `ledgerDevTools.dockerImage`: Set the Ledger developer tools Docker image.
* `ledgerDevTools.dockerRunArgs`: Any additional command line args to pass to the `docker run` command for the Ledger developer tools Docker image.
* `ledgerDevTools.dockerRunArgs`: Any additional command line args to pass to the `docker run`
command for the Ledger developer tools Docker image.
* `ledgerDevTools.additionalReqsPerApp`: Add prerequisites for current app's functional tests (for instance 'apk add python3-protobuf').
* `ledgerDevTools.keepTerminal`: Indicates to keep the Terminal window opened after a successful task execution.
* `ledgerDevTools.openContainerAsRoot`: Open docker container using `root`:`root` user.
* `ledgerDevTools.containerUpdateRetries`: Set the max number of Container Update retries.
* `ledgerDevTools.userScpPrivateKey`: Use the host's `SCP_PRIVKEY` environment variable when loading/deleting app on device.
Cf. <https://developers.ledger.com/docs/embedded-app/pin-bypass>
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,11 @@
"default": true,
"markdownDescription": "Keep the Terminal window opened after a successful task execution."
},
"ledgerDevTools.openContainerAsRoot": {
"type": "boolean",
"default": true,
"markdownDescription": "Open docker container using root user."
},
"ledgerDevTools.containerUpdateRetries": {
"type": "number",
"default": 5,
Expand Down
10 changes: 8 additions & 2 deletions src/taskProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,13 @@ export class TaskProvider implements vscode.TaskProvider {
private openTerminalExec(): string {
// Get the Selected target SDK to export inside the container
let sdk: string = this.tgtSelector.getSelectedSDK();
const exec = `docker exec -it -u 0 -e "BOLOS_SDK=${sdk}" ${this.containerName} bash`;
let userOpt: string = "";
// Get settings to open terminal as root or not
const conf = vscode.workspace.getConfiguration("ledgerDevTools");
if (conf.get<boolean>("openContainerAsRoot") === true) {
userOpt = `-u 0`;
}
const exec = `docker exec -it ${userOpt} -e "BOLOS_SDK=${sdk}" ${this.containerName} bash`;
return exec;
}

Expand Down Expand Up @@ -557,7 +563,7 @@ export class TaskProvider implements vscode.TaskProvider {
console.log(`Ledger: Installing additional dependencies : ${addReqsExec}`);
}
const reqFilePath = this.functionalTestsDir + "/requirements.txt";
const exec = `docker exec -it -u 0 ${this.containerName} bash -c '${addReqsExec} [ -f ${reqFilePath} ] && pip install -r ${reqFilePath}'`;
const exec = `docker exec -it -u 0 ${this.containerName} bash -c '${addReqsExec} [ -f ${reqFilePath} ] && pip install -r ${reqFilePath}'`;
return exec;
}

Expand Down
10 changes: 10 additions & 0 deletions src/treeView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,16 @@ export class TreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
let buidUseCaseItem = this.data.find((item) => item.label && item.label.toString().startsWith("Build"));
let selectVariantItem = this.data.find((item) => item.label && item.label.toString().startsWith("Select variant"));

this.data.forEach((item) => {
if (item.label?.toString().startsWith("Docker Container")) {
const terminalItem = item.children?.find((child) => child.label && child.label.toString().startsWith("Open terminal"));
if (terminalItem) {
const conf = vscode.workspace.getConfiguration("ledgerDevTools");
terminalItem.label = conf.get<boolean>("openContainerAsRoot") ? "Open terminal [root]" : "Open terminal";
}
}
});

if (selectAppItem) {
selectAppItem.label = `Select app [${currentApp.folderName}]`;
}
Expand Down

0 comments on commit 35ce2f3

Please sign in to comment.