1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
use std::io::{self, BufRead};
use serde::{Deserialize, Serialize};
use crate::args;
use crate::r_io_utils;
#[derive(Debug, Serialize, Deserialize, Clone)]
struct DfData {
filesystem: String,
one_k_blocks: i64,
used: i64,
available: i64,
use_percent: i16,
mounted_on: String
}
pub fn parse(output_type: args::OutputTypes) {
let handle = io::stdin().lock();
let mut drives = vec![];
let mut lines = handle.lines();
let separator_line = lines.next().unwrap().unwrap();
let mut separators = separator_line.split_whitespace();
let filesystem_space = separators.next().unwrap().len();
let mut one_k_blocks_space = separators.next().unwrap().len();
let mut used_space = separators.next().unwrap().len();
let mut available_space = separators.next().unwrap().len();
let mut use_space = separators.next().unwrap().len();
// let mut use_space = separators.next().unwrap().len();
one_k_blocks_space = filesystem_space + 1 + one_k_blocks_space;
used_space = one_k_blocks_space + 1 + used_space;
available_space = used_space + 1 + available_space;
use_space = available_space + 1 + use_space;
for line in lines {
let sl = line.unwrap();
let mut line_parts = sl.split("\t");
println!("{:?}", line_parts.next());
// println!("{}, {}, {}, {}, {}, {}", sl[..filesystem_space].trim(),
// sl[filesystem_space..one_k_blocks_space].trim(),
// sl[one_k_blocks_space..used_space].trim(),
// sl[used_space..available_space].trim(),
// sl[available_space..use_space-1].trim(),
// sl[use_space..].trim()
// );
// drives.push(DfData {
// filesystem: String::from(sl[..filesystem_space].trim()),
// one_k_blocks: sl[filesystem_space..one_k_blocks_space].trim().parse::<i64>().unwrap(),
// used: sl[one_k_blocks_space..used_space].trim().parse::<i64>().unwrap(),
// available: sl[used_space..available_space].trim().parse::<i64>().unwrap(),
// use_percent: sl[available_space..use_space-1].trim().parse::<i16>().unwrap(),
// mounted_on: String::from(sl[use_space..].trim()),
// });
// println!("{}", sl);
}
r_io_utils::print_output::<Vec<DfData>>(
&drives,
output_type,
);
}