Skip to content

A tiny manager on app settings as JSON key-value pairs stored in file

License

Notifications You must be signed in to change notification settings

nabbisen/app-json-settings-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

App JSON Settings

App settings as JSON format stored in file and available via read-by-key and write-by-key.

Aims a tiny settings manager with reasonably few dependencies.

crates.io Documentation License Dependency Status

Examples

Rust - as Tauri backend

use app_json_settings::JsonSettigs;

#[tauri::command]
fn settings_read_by_key(key: &str) -> Result<KeyValue, String> {
    JsonSettigs::exe_dir().read_by_key(key).map_err(|err| err.to_string())
}

#[tauri::command]
fn settings_write_by_key(key: &str, value: Value) -> Result<(), String> {
    JsonSettigs::exe_dir().write_by_key(key, &value).map_err(|err| err.to_string())
}

Instead of JsonSettigs::exe_dir() above, where to store the settings file has options.

fn where to store
exe_dir() the same to where the executable is
config_dir() points to app dir in user config dir. the app dir name is automatically defined due to the executable name
new(filepath) custom path and file name

TypeScript - as Tauri frontend

import { invoke } from '@tauri-apps/api/core'

interface ReadByKeyResponse {
  key: string
  value: unknown
  file_exists: boolean
  key_exists: boolean
}

const read = (key: string): Promise<unknown> => {
  return invoke('settings_read_by_key', { key: key }).then((res) => {
    const _res = res as ReadByKeyResponse
    if (!_res.file_exists || !_res.key_exists) return undefined
    return _res.value
  })
}

const write = (key: string, value: any) => {
  invoke('settings_write_by_key', { key: key, value: value })
}

settings.json

{
  "keyBoolean": true,
  "keyNumber": 1000,
  "keyString": "Hello world."
}

Acknowledgements

Depends on: serde / serde_json .

About

A tiny manager on app settings as JSON key-value pairs stored in file

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages