Add command: skids now

This commit is contained in:
realaltffour 2020-04-17 08:18:54 +03:00
parent fd73f51c91
commit 3523cf677e
No known key found for this signature in database
GPG Key ID: 7115CD2AC9A76A56
4 changed files with 67 additions and 65 deletions

50
.vscode/launch.json vendored
View File

@ -1,29 +1,25 @@
{ {
// Use IntelliSense to learn about possible attributes. // Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes. // Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 // For more information, visit:
"version": "0.2.0", // https://go.microsoft.com/fwlink/?linkid=830387
"configurations": [ "version" : "0.2.0", "configurations" : [{
{ "name": "(gdb) Launch",
"name": "(gdb) Launch", "type": "cppdbg",
"type": "cppdbg", "request": "launch",
"request": "launch", "program": "${workspaceFolder}/build/bin/skidjular",
"program": "${workspaceFolder}/build/bin/skidjular", "args": ["skids", "now"],
"args": [ "init" ], "stopAtEntry": false,
"stopAtEntry": false, "cwd": "${workspaceFolder}/build/bin/",
"cwd": "${workspaceFolder}/build/bin/", "environment": [],
"environment": [], "externalConsole": false,
"externalConsole": false, "MIMode": "gdb",
"MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb",
"miDebuggerPath": "/usr/bin/gdb", "setupCommands": [{
"setupCommands": [ "description": "Enable pretty-printing for gdb",
{ "text": "-enable-pretty-printing",
"description": "Enable pretty-printing for gdb", "ignoreFailures": true
"text": "-enable-pretty-printing", }],
"ignoreFailures": true "preLaunchTask": "Build Debug"
} }]
],
"preLaunchTask": "Build Debug"
}
]
} }

View File

@ -2,7 +2,7 @@
#include "log.h" #include "log.h"
void to_json(json& j, const Date& date) { void to_json(json& j, const Date& date) {
j = json{{"day", date.day}, {"month", date.day}, {"year", date.year}}; j = json{{"day", date.day}, {"month", date.month}, {"year", date.year}};
} }
void from_json(const json& j, Date& date) { void from_json(const json& j, Date& date) {
j.at("day").get_to(date.day); j.at("day").get_to(date.day);
@ -28,19 +28,19 @@ void from_json(const json& j, Project& proj) {
j.at("isDone").get_to(proj.isDone); j.at("isDone").get_to(proj.isDone);
} }
void to_json(json& j, const Skid& skid) { void to_json(json& j, const Skid& skid) {
Project projects; Project project;
if (skid.projects != nullptr) { if (skid.project != nullptr) {
projects = *skid.projects; project = *skid.project;
} }
j = json{ j = json{
{"projects", projects}, {"project", project},
{"creationDate", skid.creationDate}, {"creationDate", skid.creationDate},
{"date", skid.date}, {"date", skid.date},
}; };
} }
void from_json(const json& j, Skid& skid) { void from_json(const json& j, Skid& skid) {
skid.projects = new Project(); skid.project = new Project();
j.at("projects").get_to(*skid.projects); j.at("project").get_to(*skid.project);
j.at("creationDate").get_to(skid.creationDate); j.at("creationDate").get_to(skid.creationDate);
j.at("date").get_to(skid.date); j.at("date").get_to(skid.date);
} }
@ -135,31 +135,6 @@ Date get_today() {
return res; return res;
} }
int get_day_num(Date initial) {
auto m = (initial.month + 9) % 12;
auto y = initial.year - m / 10;
return 365 * y + y / 4 - y / 100 + y / 400 + (m * 306 + 5) / 10 +
(initial.day - 1);
}
Date get_day_date(int g) {
auto y = (10000 * g + 14780) / 3652425;
auto ddd = g - (365 * y + y / 4 - y / 100 + y / 400);
if (ddd < 0)
y = y - 1;
ddd = g - (365 * y + y / 4 - y / 100 + y / 400);
auto mi = (100 * ddd + 52) / 3060;
auto mm = (mi + 2) % 12 + 1;
y = y + (mi + 2) / 12;
auto dd = ddd - (mi * 306 + 5) / 10 + 1;
Date res;
res.year = y;
res.month = mm;
res.day = dd;
return res;
}
bool is_empty(std::ifstream& pFile) { bool is_empty(std::ifstream& pFile) {
return pFile.peek() == std::ifstream::traits_type::eof(); return pFile.peek() == std::ifstream::traits_type::eof();
} }

View File

@ -49,7 +49,7 @@ struct Project {
}; };
struct Skid { struct Skid {
Project* projects = nullptr; Project* project = nullptr;
Date creationDate; Date creationDate;
Date date; Date date;
}; };
@ -74,7 +74,7 @@ struct DB {
std::map<std::string, Project>* projects; std::map<std::string, Project>* projects;
std::vector<Skid> skids; std::vector<Skid> skids;
Log log; Log log;
int lastSkidID = 0; int lastSkidID = 1;
Date creationDate; Date creationDate;
Date lastAccessTime; Date lastAccessTime;

View File

@ -15,7 +15,7 @@ void skids_init(skids_args args) {
} }
/* Create skids */ /* Create skids */
for (size_t i = 0; i < 7; i++) { for (size_t i = 1; i <= 7; i++) {
Skid skid; Skid skid;
skid.creationDate = get_today(); skid.creationDate = get_today();
skid.date = firstDate; skid.date = firstDate;
@ -34,7 +34,7 @@ void skids_init_now(skids_args args) {
/* Load all skids */ /* Load all skids */
if (is_path_exist(LOC_SKIDID + std::to_string(args.db->lastSkidID))) { if (is_path_exist(LOC_SKIDID + std::to_string(args.db->lastSkidID))) {
/* Load all skids */ /* Load all skids */
for (size_t i = 0; i < args.db->lastSkidID; i++) { for (size_t i = 1; i <= args.db->lastSkidID; i++) {
Skid skid; Skid skid;
loadSkid(skid, i); loadSkid(skid, i);
args.db->skids.push_back(skid); args.db->skids.push_back(skid);
@ -57,7 +57,7 @@ void skids_init_now(skids_args args) {
/* Create skids */ /* Create skids */
auto firstDate = get_today(); auto firstDate = get_today();
for (size_t i = 0; i < 7; i++) { for (size_t i = 1; i <= 7; i++) {
Skid skid; Skid skid;
skid.creationDate = get_today(); skid.creationDate = get_today();
skid.date = firstDate; skid.date = firstDate;
@ -68,7 +68,38 @@ void skids_init_now(skids_args args) {
args.db->lastSkidID = skid_id; args.db->lastSkidID = skid_id;
writeDB(*args.db, LOC_DB); writeDB(*args.db, LOC_DB);
} }
void skids_now(skids_args args) {}
void skids_now(skids_args args) {
logEntry("Accessing today's skid, skids_now", EntryType::Access);
/* Load all skids */
for (size_t i = 1; i <= args.db->lastSkidID; i++) {
Skid skid;
loadSkid(skid, i);
args.db->skids.push_back(skid);
}
/* Get today's skidID */
Skid* skid = nullptr;
for (size_t i = 0; i < args.db->skids.size(); i++) {
if (args.db->skids[i].date == get_today()) {
skid = &(args.db->skids[i]);
break;
}
}
if (!skid) {
std::cout << "Did not find today's skid." << std::endl;
exit(1);
}
if (skid->project->name == "") {
std::cout << "Today's project is not set." << std::endl;
exit(1);
}
std::cout << "Project of today is " << skid->project->name << std::endl;
exit(0);
}
void skids_this(skids_args args) {} void skids_this(skids_args args) {}
void skids_set_this(skids_args args) {} void skids_set_this(skids_args args) {}
void skids_set_this_lazy(skids_args args) {} void skids_set_this_lazy(skids_args args) {}