taud/util.rs
1/* This file is part of DarkFi (https://dark.fi)
2 *
3 * Copyright (C) 2020-2025 Dyne.org foundation
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Affero General Public License as
7 * published by the Free Software Foundation, either version 3 of the
8 * License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
18
19use std::{
20 fs::{File, OpenOptions},
21 os::unix::prelude::OpenOptionsExt,
22 path::Path,
23};
24
25use log::debug;
26
27use darkfi::{Error, Result};
28use rand::{distributions::Alphanumeric, rngs::OsRng, Rng};
29
30use crate::task_info::{TaskEvent, TaskInfo};
31
32pub fn set_event(task_info: &mut TaskInfo, action: &str, author: &str, content: &str) {
33 debug!(target: "tau", "TaskInfo::set_event()");
34 if !content.is_empty() {
35 task_info.events.push(TaskEvent::new(action.into(), author.into(), content.into()));
36 }
37}
38
39pub fn pipe_write<P: AsRef<Path>>(path: P) -> Result<File> {
40 OpenOptions::new().append(true).custom_flags(libc::O_NONBLOCK).open(path).map_err(Error::from)
41}
42
43pub fn gen_id(len: usize) -> String {
44 OsRng.sample_iter(&Alphanumeric).take(len).map(char::from).collect()
45}