aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorDenis Evsyukov <[email protected]>2020-02-24 15:24:05 +0300
committerDenis Evsyukov <[email protected]>2020-02-24 15:24:05 +0300
commit5ddc828da8de15b3f1bd758e465e267c609f06b1 (patch)
treea352f2094de3c895435ee5cef20b37c43efced82 /src/main.cpp
parent[~] fix (diff)
downloadt-5ddc828da8de15b3f1bd758e465e267c609f06b1.tar.xz
t-5ddc828da8de15b3f1bd758e465e267c609f06b1.zip
[+] work with several tasks
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp99
1 files changed, 43 insertions, 56 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 7d75618..2dc4d5a 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -28,16 +28,18 @@ std::string prefix(std::string hash) {
std::string prefix;
for (size_t i = 1; i <= hash.length(); i++) {
prefix = hash.substr(0, i);
- if (tasks.find(prefix) == tasks.end())
+ if (prefixes.find(prefix) == prefixes.end())
return prefix;
}
return hash;
}
-void get_prefixes() {
- for (const auto &n : tasks) {
- prefixes[prefix(n.first)] = n.first;
+std::string getPrefixByHash(std::string hash) {
+ for (const auto &n : prefixes) {
+ if (n.second == hash)
+ return n.first;
}
+ return "";
}
void readFiles() {
@@ -60,7 +62,9 @@ void readFiles() {
}
indonefile.close();
- get_prefixes();
+ for (const auto &n : tasks) {
+ prefixes[prefix(n.first)] = n.first;
+ }
}
void writeFiles() {
@@ -170,28 +174,31 @@ int main(int argc, char *argv[]) {
// finish task
if (result.count("finish")) {
auto task_prefix = result["finish"].as<std::string>();
- auto task_hash = prefixes[task_prefix];
- if (tasks.find(task_hash) != tasks.end()) {
- tasksDone[task_hash] = tasks[task_hash];
- tasks.erase(task_hash);
- writeFiles();
- } else {
- std::cout << "Task not found: " << task_prefix << std::endl;
+ for (const auto &el : split(task_prefix, ',')) {
+ auto task_hash = prefixes[el];
+ if (tasks.find(task_hash) != tasks.end()) {
+ tasksDone[task_hash] = tasks[task_hash];
+ tasks.erase(task_hash);
+ } else {
+ std::cout << "Task not found: " << el << std::endl;
+ }
}
+ writeFiles();
exit(0);
}
// remove task
if (result.count("remove")) {
- std::cout << "remove task" << std::endl;
auto task_prefix = result["remove"].as<std::string>();
- auto task_hash = prefixes[task_prefix];
- if (tasks.find(task_hash) != tasks.end()) {
- tasks.erase(task_hash);
- writeFiles();
- } else {
- std::cout << "Task not found: " << task_prefix << std::endl;
+ for (const auto &el : split(task_prefix, ',')) {
+ auto task_hash = prefixes[el];
+ if (tasks.find(task_hash) != tasks.end()) {
+ tasks.erase(task_hash);
+ } else {
+ std::cout << "Task not found: " << el << std::endl;
+ }
}
+ writeFiles();
exit(0);
}
@@ -216,47 +223,27 @@ int main(int argc, char *argv[]) {
for (const auto &n : tasksDone) {
std::cout << n.second << std::endl;
}
+ exit(0);
+ }
+
+ std::string word;
+ if (result.count("grep")) {
+ word = result["grep"].as<std::string>();
} else {
- if (result.count("quiet")) {
- if (result.count("grep")) {
- auto word = result["grep"].as<std::string>();
- for (const auto &n : tasks) {
- if (n.second.find(word) != std::string::npos) {
- std::cout << n.second << std::endl;
- }
- }
- } else {
- for (const auto &n : tasks) {
- std::cout << n.second << std::endl;
- }
- }
- } else if (result.count("verbose")) {
- if (result.count("grep")) {
- auto word = result["grep"].as<std::string>();
- for (const auto &n : tasks) {
- if (n.second.find(word) != std::string::npos) {
- std::cout << n.first << ": " << n.second << std::endl;
- }
- }
- } else {
- for (const auto &n : tasks) {
- std::cout << n.first << ": " << n.second << std::endl;
- }
- }
- } else {
- if (result.count("grep")) {
- auto word = result["grep"].as<std::string>();
- for (const auto &n : prefixes) {
- if (tasks[n.second].find(word) != std::string::npos) {
- std::cout << n.first << ": " << tasks[n.second] << std::endl;
- }
- }
+ word = "";
+ }
+
+ for (const auto &n : tasks) {
+ if (n.second.find(word) != std::string::npos) {
+ if (result.count("quiet")) {
+ std::cout << n.second << std::endl;
+ } else if (result.count("verbose")) {
+ std::cout << n.first << ": " << n.second << std::endl;
} else {
- for (const auto &n : prefixes) {
- std::cout << n.first << ": " << tasks[n.second] << std::endl;
- }
+ std::cout << getPrefixByHash(n.first) << ": " << n.second << std::endl;
}
}
}
+
return 0;
} \ No newline at end of file