Initial import
This commit is contained in:
parent
fc5bbc3b9d
commit
0955a38ee2
4 changed files with 213 additions and 0 deletions
|
@ -11,6 +11,7 @@ members = [
|
||||||
"imag-ref",
|
"imag-ref",
|
||||||
"imag-store",
|
"imag-store",
|
||||||
"imag-tag",
|
"imag-tag",
|
||||||
|
"imag-timetrack",
|
||||||
"imag-todo",
|
"imag-todo",
|
||||||
"imag-view",
|
"imag-view",
|
||||||
"libimagannotation",
|
"libimagannotation",
|
||||||
|
|
38
imag-timetrack/Cargo.toml
Normal file
38
imag-timetrack/Cargo.toml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
[package]
|
||||||
|
name = "imag-timetrack"
|
||||||
|
version = "0.3.0"
|
||||||
|
authors = ["Matthias Beyer <mail@beyermatthias.de>"]
|
||||||
|
|
||||||
|
description = "Part of the imag core distribution: imag-tag command"
|
||||||
|
|
||||||
|
keywords = ["imag", "PIM", "personal", "information", "management"]
|
||||||
|
readme = "../README.md"
|
||||||
|
license = "LGPL-2.1"
|
||||||
|
|
||||||
|
documentation = "https://matthiasbeyer.github.io/imag/imag_documentation/index.html"
|
||||||
|
repository = "https://github.com/matthiasbeyer/imag"
|
||||||
|
homepage = "http://imag-pim.org"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
clap = "2.*"
|
||||||
|
log = "0.3"
|
||||||
|
version = "2.0.1"
|
||||||
|
semver = "0.2"
|
||||||
|
toml = "^0.4"
|
||||||
|
chrono = "^0.4"
|
||||||
|
|
||||||
|
[dependencies.libimagstore]
|
||||||
|
path = "../libimagstore"
|
||||||
|
|
||||||
|
[dependencies.libimagrt]
|
||||||
|
path = "../libimagrt"
|
||||||
|
|
||||||
|
[dependencies.libimagerror]
|
||||||
|
path = "../libimagerror"
|
||||||
|
|
||||||
|
[dependencies.libimagentrytimetrack]
|
||||||
|
path = "../libimagentrytimetrack"
|
||||||
|
|
||||||
|
[dependencies.libimagutil]
|
||||||
|
path = "../libimagutil"
|
||||||
|
|
24
imag-timetrack/src/main.rs
Normal file
24
imag-timetrack/src/main.rs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
//
|
||||||
|
// imag - the personal information management suite for the commandline
|
||||||
|
// Copyright (C) 2015, 2016 Matthias Beyer <mail@beyermatthias.de> and contributors
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; version
|
||||||
|
// 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
//
|
||||||
|
|
||||||
|
mod ui;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
}
|
150
imag-timetrack/src/ui.rs
Normal file
150
imag-timetrack/src/ui.rs
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
//
|
||||||
|
// imag - the personal information management suite for the commandline
|
||||||
|
// Copyright (C) 2015, 2016 Matthias Beyer <mail@beyermatthias.de> and contributors
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; version
|
||||||
|
// 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
//
|
||||||
|
|
||||||
|
use clap::{Arg, App, SubCommand};
|
||||||
|
|
||||||
|
pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> {
|
||||||
|
app.subcommand(SubCommand::with_name("start")
|
||||||
|
.about("Start time tracking")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("start-time")
|
||||||
|
.index(1)
|
||||||
|
.required(false)
|
||||||
|
.help("Start-time when to start the timetracking"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.index(2)
|
||||||
|
.required(true)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Tags to start"))
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("stop")
|
||||||
|
.about("Stop time tracking")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("end-time")
|
||||||
|
.index(1)
|
||||||
|
.required(false)
|
||||||
|
.help("End-time when to stop the timetracking"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.index(2)
|
||||||
|
.required(true)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Tags to stop"))
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("track")
|
||||||
|
.about("Track time in given range")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("start-time")
|
||||||
|
.index(1)
|
||||||
|
.required(true)
|
||||||
|
.help("Start-time when to start the timetracking"))
|
||||||
|
.arg(Arg::with_name("end-time")
|
||||||
|
.index(2)
|
||||||
|
.required(true)
|
||||||
|
.help("End-time when to stop the timetracking"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.index(3)
|
||||||
|
.required(true)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Tags to stop"))
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("continue")
|
||||||
|
.about("Continue last stopped time tracking")
|
||||||
|
.version("0.1")
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("day")
|
||||||
|
.about("Print stats about day")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("start")
|
||||||
|
.index(1)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, start time (default: today, 00:00:00)"))
|
||||||
|
.arg(Arg::with_name("end")
|
||||||
|
.index(2)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, end time (default: today, 23:59:59)"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.long("tags")
|
||||||
|
.short("t")
|
||||||
|
.required(false)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Limit to certain tags"))
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("week")
|
||||||
|
.about("Print stats about week")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("start")
|
||||||
|
.index(1)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, start time (default: today, 00:00:00)"))
|
||||||
|
.arg(Arg::with_name("end")
|
||||||
|
.index(2)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, end time (default: today, 23:59:59)"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.long("tags")
|
||||||
|
.short("t")
|
||||||
|
.required(false)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Limit to certain tags"))
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("month")
|
||||||
|
.about("Print stats about month")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("start")
|
||||||
|
.index(1)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, start time (default: today, 00:00:00)"))
|
||||||
|
.arg(Arg::with_name("end")
|
||||||
|
.index(2)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, end time (default: today, 23:59:59)"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.long("tags")
|
||||||
|
.short("t")
|
||||||
|
.required(false)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Limit to certain tags"))
|
||||||
|
)
|
||||||
|
|
||||||
|
.subcommand(SubCommand::with_name("year")
|
||||||
|
.about("Print stats about year")
|
||||||
|
.version("0.1")
|
||||||
|
.arg(Arg::with_name("start")
|
||||||
|
.index(1)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, start time (default: today, 00:00:00)"))
|
||||||
|
.arg(Arg::with_name("end")
|
||||||
|
.index(2)
|
||||||
|
.required(false)
|
||||||
|
.help("Limit to specific date and time, end time (default: today, 23:59:59)"))
|
||||||
|
.arg(Arg::with_name("tags")
|
||||||
|
.long("tags")
|
||||||
|
.short("t")
|
||||||
|
.required(false)
|
||||||
|
.multiple(true)
|
||||||
|
.help("Limit to certain tags"))
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue