tangled
alpha
login
or
join now
ngp.computer
/
tsk
A file-based task manager
0
fork
atom
overview
issues
pulls
pipelines
Basic task creation done
ngp.computer
1 year ago
e1404430
2c7d894a
+6
-9
1 changed file
expand all
collapse all
unified
split
src
workspace.rs
+6
-9
src/workspace.rs
···
3
4
use crate::errors::{Error, Result};
5
use std::fs::File;
6
-
use std::io::{BufReader, Seek};
7
use std::path::PathBuf;
8
-
use std::{
9
-
fs::OpenOptions,
10
-
io::{BufRead, Write},
11
-
};
12
13
pub struct Id(u32);
14
···
43
if !tsk_dir.exists() {
44
return Err(Error::Uninitialized);
45
} else {
46
-
Ok(Self { path })
47
}
48
}
49
···
51
let file = OpenOptions::new()
52
.read(true)
53
.write(true)
54
-
.create(true)
55
.open(self.path.join("next"))?;
56
let mut lock =
57
Flock::lock(file, FlockArg::LockExclusive).map_err(|(_, errno)| Error::Lock(errno))?;
58
let mut buf = String::new();
59
-
BufReader::new(&*lock).read_line(&mut buf)?;
60
let id = buf.trim().parse::<u32>()?;
61
// reset the files contents
62
lock.set_len(0)?;
···
74
.read(true)
75
.write(true)
76
.create(true)
77
-
.open(self.path.join(format!("tsk-{}.tsk", id.0)))?;
78
let mut file =
79
Flock::lock(file, FlockArg::LockExclusive).map_err(|(_, errno)| Error::Lock(errno))?;
80
file.write_all(format!("{title}\n\n{body}").as_bytes())?;
···
3
4
use crate::errors::{Error, Result};
5
use std::fs::File;
6
+
use std::io::{Read, Seek};
7
use std::path::PathBuf;
8
+
use std::{fs::OpenOptions, io::Write};
0
0
0
9
10
pub struct Id(u32);
11
···
40
if !tsk_dir.exists() {
41
return Err(Error::Uninitialized);
42
} else {
43
+
Ok(Self { path: tsk_dir })
44
}
45
}
46
···
48
let file = OpenOptions::new()
49
.read(true)
50
.write(true)
51
+
.create(false)
52
.open(self.path.join("next"))?;
53
let mut lock =
54
Flock::lock(file, FlockArg::LockExclusive).map_err(|(_, errno)| Error::Lock(errno))?;
55
let mut buf = String::new();
56
+
lock.read_to_string(&mut buf)?;
57
let id = buf.trim().parse::<u32>()?;
58
// reset the files contents
59
lock.set_len(0)?;
···
71
.read(true)
72
.write(true)
73
.create(true)
74
+
.open(self.path.join("tasks").join(format!("tsk-{}.tsk", id.0)))?;
75
let mut file =
76
Flock::lock(file, FlockArg::LockExclusive).map_err(|(_, errno)| Error::Lock(errno))?;
77
file.write_all(format!("{title}\n\n{body}").as_bytes())?;