mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-11-13 04:09:27 +00:00
[ATL-1454] Refactor pull/push to edit files in place (#464)
* improve push/pull process * improved diff tree performance generation * skip some files to be synced Co-authored-by: Francesco Stasi <f.stasi@me.com>
This commit is contained in:
committed by
GitHub
parent
57b9eb95bb
commit
65152731f9
@@ -93,7 +93,11 @@ export class CreateApi {
|
||||
|
||||
async readDirectory(
|
||||
posixPath: string,
|
||||
options: { recursive?: boolean; match?: string } = {}
|
||||
options: {
|
||||
recursive?: boolean;
|
||||
match?: string;
|
||||
skipSketchCache?: boolean;
|
||||
} = {}
|
||||
): Promise<Create.Resource[]> {
|
||||
const url = new URL(
|
||||
`${this.domain()}/files/d/$HOME/sketches_v2${posixPath}`
|
||||
@@ -106,21 +110,29 @@ export class CreateApi {
|
||||
}
|
||||
const headers = await this.headers();
|
||||
|
||||
return this.run<Create.RawResource[]>(url, {
|
||||
method: 'GET',
|
||||
headers,
|
||||
})
|
||||
.then(async (result) => {
|
||||
// add arduino_secrets.h to the results, when reading a sketch main folder
|
||||
if (posixPath.length && posixPath !== posix.sep) {
|
||||
const sketch = this.sketchCache.getSketch(posixPath);
|
||||
const cachedSketch = this.sketchCache.getSketch(posixPath);
|
||||
|
||||
const sketchPromise = options.skipSketchCache
|
||||
? (cachedSketch && this.sketch(cachedSketch.id)) || Promise.resolve(null)
|
||||
: Promise.resolve(this.sketchCache.getSketch(posixPath));
|
||||
|
||||
return Promise.all([
|
||||
sketchPromise,
|
||||
this.run<Create.RawResource[]>(url, {
|
||||
method: 'GET',
|
||||
headers,
|
||||
}),
|
||||
])
|
||||
.then(async ([sketch, result]) => {
|
||||
if (posixPath.length && posixPath !== posix.sep) {
|
||||
if (sketch && sketch.secrets && sketch.secrets.length > 0) {
|
||||
result.push(this.getSketchSecretStat(sketch));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return result.filter(
|
||||
(res) => !Create.do_not_sync_files.includes(res.name)
|
||||
);
|
||||
})
|
||||
.catch((reason) => {
|
||||
if (reason?.status === 404) return [] as Create.Resource[];
|
||||
|
||||
@@ -30,8 +30,6 @@ import { SketchesService } from '../../common/protocol';
|
||||
import { ArduinoPreferences } from '../arduino-preferences';
|
||||
import { Create } from './typings';
|
||||
|
||||
export const REMOTE_ONLY_FILES = ['sketch.json'];
|
||||
|
||||
@injectable()
|
||||
export class CreateFsProvider
|
||||
implements
|
||||
@@ -109,14 +107,10 @@ export class CreateFsProvider
|
||||
const resources = await this.getCreateApi.readDirectory(
|
||||
uri.path.toString()
|
||||
);
|
||||
return resources
|
||||
.filter((res) => !REMOTE_ONLY_FILES.includes(res.name))
|
||||
.map(({ name, type }) => [name, this.toFileType(type)]);
|
||||
return resources.map(({ name, type }) => [name, this.toFileType(type)]);
|
||||
}
|
||||
|
||||
async delete(uri: URI, opts: FileDeleteOptions): Promise<void> {
|
||||
return;
|
||||
|
||||
if (!opts.recursive) {
|
||||
throw new Error(
|
||||
'Arduino Create file-system provider does not support non-recursive deletion.'
|
||||
|
||||
@@ -21,7 +21,7 @@ export namespace Create {
|
||||
|
||||
export type ResourceType = 'sketch' | 'folder' | 'file';
|
||||
export const arduino_secrets_file = 'arduino_secrets.h';
|
||||
export const do_not_sync_files = ['.theia'];
|
||||
export const do_not_sync_files = ['.theia', 'sketch.json'];
|
||||
export interface Resource {
|
||||
readonly name: string;
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user