I am trying to develop an extension for VSCode and I need to search for the exact file path where my extension is saved. I've tried this code:
var text;
const directoryPath = path.join(Os.homedir(), '.vscode/extensions');
fs.readdir(directoryPath, function (err, files) {
if (err) {
y2.appendLine('Unable to scan directory: ' err);
}
for (let i=0;i<files.length;i ){
if (files[i].startsWith("MY_EXTENSION")){
text = files[i];
y2.appendLine(text);
break;
}
}
});
y2.appendLine(text);
y2
is only an output channel I added.
The outcome of this code is:
undefined
MY_EXTENSION
If I take out the second y2.appendLine(text)
I receive only MY_EXTENSION
but I don't get how to make text
global or how to modify the value of the global variable text
inside readdir
.
I also don't understand why it first executes y2.appendLine(text)
and then readdir
.
It is really important and I would be grateful to have your help!
CodePudding user response:
I'm not sure what exactly you are trying to do there, but looking at your code it seems like you are trying to save some data for your extension in particular.
For this purpose, you probably want to use the globalStorage
object instead.
You can learn more about it in the Data storage section and the ExtensionContext documentation.
CodePudding user response:
For the path to your extension, use the context
object and its properties:
extensionPath
The absolute file path of the directory containing the extension. Shorthand notation for
ExtensionContext.extensionUri.fsPath
(independent of the uri scheme).
extensionUri
The uri of the directory containing the extension.
From ExtensionContext. If it is just for the purpose of storage, see @mausworks's answer about globalStorage
or storagePath
, ets.
CodePudding user response:
You could put it in a function like this:
function searchExt() {
const directoryPath = path.join(Os.homedir(), '.vscode/extensions');
fs.readdir(directoryPath, (err, files) => {
let text = null;
if (err) {
y2.appendLine(`Unable to scan directory: ${err}`);
} else {
for (let i = 0; i < files.length; i ) {
if (files[i].startsWith('MY_EXTENSION')) {
text = files[i];
break;
}
}
}
return text;
});
}
const searchResult = searchExt();