Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/robinvandernoord/libsecret.v
Minimal implementation of libsecret (Secret Service API) for managing secrets in Vlang.
https://github.com/robinvandernoord/libsecret.v
v v-lang vlang vlang-package
Last synced: about 1 month ago
JSON representation
Minimal implementation of libsecret (Secret Service API) for managing secrets in Vlang.
- Host: GitHub
- URL: https://github.com/robinvandernoord/libsecret.v
- Owner: robinvandernoord
- Created: 2024-01-19T14:42:34.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-08-04T10:49:33.000Z (5 months ago)
- Last Synced: 2024-08-04T11:50:23.187Z (5 months ago)
- Topics: v, v-lang, vlang, vlang-package
- Language: C
- Homepage: https://vpm.vlang.io/packages/robinvandernoord.libsecret
- Size: 130 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# libsecret.v
Minimal implementation of libsecret (Secret Service API) for managing secrets in Vlang.
The examples from the [C docs](https://gnome.pages.gitlab.gnome.org/libsecret/libsecret-c-examples.html#remove-a-password) are implemented.## Installation
This library uses the `libsecret/secret.h` C-headers.
The following dependencies are required:
- `libsecret-1-0`
- `libsecret-1-dev`On Debian-based distro's, these can be installed via:
```bash
sudo apt install -y libsecret-1-0 libsecret-1-dev
```Note: `libsecret` expects this to be exected on a GUI-system.
If you try to run this on a headless server, you may get an error like `Cannot autolaunch D-Bus without X11 $DISPLAY`.```bash
v install robinvandernoord.libsecret
```## Usage
```v
import robinvandernoord.libsecret// initial setup:
struct Metadata {
// you can store anything you like here!
// It will be converted to JSON.text string
}schema := libsecret.get_schema()
// save a password:
schema.store_password("Label Description", "my-password", Metadata {"text string"})// load password with metadata:
mut metadata := Metadata {} // start with an empty object to fillpassword := schema.load_password("Label Description", mut metadata)
println(password or {"missing password"}) // -> "my-password"
println(metadata) // Metadata { text: "text string" }// remove password:
assert schema.remove_password("Label Description")
```![Example in Seahorse](example.png)