Fix bug where saving a file resets the permissions (when owner/root at least)

pull/13/head
Kelvin Schoofs 7 years ago
parent 94cc382446
commit 201a9ad4ee

@ -48,6 +48,7 @@ This will add a Workspace folder linked to a SSH (SFTP) session:
![Workspace folder added](./media/screenshot-explorer.png) ![Workspace folder added](./media/screenshot-explorer.png)
## TO DO *(in order of most likely to implement first)* ## TO DO *(in order of most likely to implement first)*
* ~~Fix bug where saving a file resets the permissions (when owner/root at least)~~ **DONE**
* Fix bug where the Explorer shows a loading bar forever * Fix bug where the Explorer shows a loading bar forever
* Fix bug where VSCode shows an error message about `no provider for ssh://NAME/` * Fix bug where VSCode shows an error message about `no provider for ssh://NAME/`
* An icon for the extension * An icon for the extension

@ -71,9 +71,10 @@ export class SSHFileSystem implements vscode.FileSystemProvider {
}); });
} }
public writeFile(uri: vscode.Uri, content: Uint8Array, options: { create: boolean; overwrite: boolean; }): void | Promise<void> { public writeFile(uri: vscode.Uri, content: Uint8Array, options: { create: boolean; overwrite: boolean; }): void | Promise<void> {
return new Promise((resolve, reject) => { return new Promise(async (resolve, reject) => {
const stat = await toPromise<ssh2s.Stats>(cb => this.sftp.stat(this.relative(uri.path), cb));
const array = new Buffer(0); const array = new Buffer(0);
const stream = this.sftp.createWriteStream(this.relative(uri.path)); const stream = this.sftp.createWriteStream(this.relative(uri.path), { mode: stat.mode });
stream.on('error', reject); stream.on('error', reject);
stream.end(content, resolve); stream.end(content, resolve);
}); });

Loading…
Cancel
Save