mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-21 02:06:34 +00:00
updated pseudo code
This commit is contained in:
parent
355dec8aaa
commit
80ade4c37e
@ -7,33 +7,40 @@ import {
|
|||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class MonitorSettingsProviderImpl implements MonitorSettingsProvider {
|
export class MonitorSettingsProviderImpl implements MonitorSettingsProvider {
|
||||||
|
// this is populated with all settings coming from the CLI. This should never get modified
|
||||||
|
// as it is used to double actual values set by the user
|
||||||
|
private monitorSettings: MonitorSettings;
|
||||||
|
|
||||||
|
// this contains values for setting of the monitorSettings
|
||||||
|
// the key is MonitorSetting.id, the value should be one of the MonitorSetting.values
|
||||||
|
private monitorSettingsValues: Record<string, any>;
|
||||||
|
|
||||||
init(
|
init(
|
||||||
id: string,
|
id: string,
|
||||||
coreClientProvider: CoreClientProvider
|
coreClientProvider: CoreClientProvider
|
||||||
): Promise<MonitorSettings> {
|
): Promise<MonitorSettings> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
|
|
||||||
// query the CLI (via coreClientProvider) and return all available settings for the pluggable monitor.
|
// 1. query the CLI (via coreClientProvider) and return all available settings for the pluggable monitor.
|
||||||
// store these for later checkings
|
// store these in `monitorSettings` for later checkings
|
||||||
|
|
||||||
// check for the settings file in the user's home directory
|
// 2. check for the settings file in the user's home directory
|
||||||
// if it doesn't exist, create it
|
// a. if it doesn't exist, create it as an empty json file
|
||||||
|
// 3. search the file, looking for the longest prefix matching the id
|
||||||
// if it does exist, start searching for the longest prefix matching the id
|
// a. miss: populate `monitorSettingsValues` with all default settings from `monitorSettings`
|
||||||
|
// b. hit: populate `monitorSettingsValues` with the result for the search
|
||||||
// at the end of the search you can have a hit or a miss
|
// i. purge the `monitorSettingsValues` removing keys that are not defined in `monitorSettings`
|
||||||
|
// and adding those that are missing
|
||||||
// if you have a miss, create a new entry with the id and all default settings coming from the CLI
|
// ii. save the `monitorSettingsValues` in the file, using the id as the key
|
||||||
|
|
||||||
// if you have a hit, check if the existing settings are present in the settings from the CLI
|
|
||||||
// if they are not present in the CLI, remove from the settings file
|
|
||||||
// if there are settings in the CLI that are not in the file, add to the file with the default from the CLI
|
|
||||||
// save the updated settings file
|
|
||||||
}
|
}
|
||||||
get(): Promise<MonitorSettings> {
|
get(): Promise<MonitorSettings> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
}
|
}
|
||||||
set(settings: MonitorSettings): Promise<MonitorSettings> {
|
set(settings: MonitorSettings): Promise<MonitorSettings> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
|
|
||||||
|
// 1. parse the settings parameter and remove any setting that is not defined in `monitorSettings`
|
||||||
|
// 2. update `monitorSettingsValues` accordingly
|
||||||
|
// 3. save it to the file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user