mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-30 11:27:19 +02:00
Sync
- Adds a new 'initialize' synchronize command argument that uploads all pending tasks for first-time initialization.
This commit is contained in:
parent
f13208479d
commit
14d3fd00e3
7 changed files with 46 additions and 13 deletions
|
@ -14,6 +14,8 @@ Features
|
|||
+ #1256 Supports default values for UDA fields (thanks to Thomas Sullivan).
|
||||
+ Stores un-synched transactions in <data.location>/backlog.data.
|
||||
+ Adds a new 'synchronize' command to sync data with a task server.
|
||||
+ Adds a new 'initialize' synchronize command argument that uploads all pending
|
||||
tasks for first-time initialization.
|
||||
+ Adds a new 'sync' verbosity token, which will remind when a backlog builds
|
||||
up and needs a sync.
|
||||
+ Supports IPv4 and IPv6 server addresses.
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <TLSClient.h>
|
||||
#include <Color.h>
|
||||
#include <text.h>
|
||||
#include <util.h>
|
||||
#include <i18n.h>
|
||||
#include <CmdSync.h>
|
||||
|
||||
|
@ -42,7 +43,7 @@ extern Context context;
|
|||
CmdSync::CmdSync ()
|
||||
{
|
||||
_keyword = "synchronize";
|
||||
_usage = "task synchronize";
|
||||
_usage = "task synchronize [initialize]";
|
||||
_description = STRING_CMD_SYNC_USAGE;
|
||||
_read_only = false;
|
||||
_displays_id = false;
|
||||
|
@ -58,6 +59,22 @@ int CmdSync::execute (std::string& output)
|
|||
|
||||
std::stringstream out;
|
||||
|
||||
// Loog for the 'init' keyword to indicate one-time pending.data upload.
|
||||
bool first_time_init = false;
|
||||
std::vector <std::string> words = context.a3.extract_words ();
|
||||
std::vector <std::string>::iterator word;
|
||||
for (word = words.begin (); word != words.end (); ++word)
|
||||
{
|
||||
if (closeEnough ("initialize", *word, 4))
|
||||
{
|
||||
if (!context.config.getBoolean ("confirmation") ||
|
||||
confirm (STRING_CMD_SYNC_INIT))
|
||||
first_time_init = true;
|
||||
else
|
||||
throw std::string (STRING_CMD_SYNC_NO_INIT);
|
||||
}
|
||||
}
|
||||
|
||||
// If no server is set up, quit.
|
||||
std::string connection = context.config.get ("taskd.server");
|
||||
if (connection == "" ||
|
||||
|
@ -78,22 +95,31 @@ int CmdSync::execute (std::string& output)
|
|||
if (certificate == "")
|
||||
throw std::string (STRING_CMD_SYNC_BAD_CERT);
|
||||
|
||||
// Read backlog.data.
|
||||
// If this is a first-time initialization, send pending.data, not
|
||||
// backlog.data.
|
||||
std::string payload = "";
|
||||
File backlog (context.config.get ("data.location") + "/backlog.data");
|
||||
if (backlog.exists ())
|
||||
backlog.read (payload);
|
||||
|
||||
// Count the number of tasks being uploaded.
|
||||
int upload_count = 0;
|
||||
if (first_time_init)
|
||||
{
|
||||
std::vector <std::string> lines;
|
||||
split (lines, payload, "\n");
|
||||
std::vector <Task> pending = context.tdb2.pending.get_tasks ();
|
||||
std::vector <Task>::iterator i;
|
||||
for (i = pending.begin (); i != pending.end (); ++i)
|
||||
{
|
||||
payload += i->composeJSON () + "\n";
|
||||
++upload_count;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector <std::string> lines = context.tdb2.backlog.get_lines ();
|
||||
std::vector <std::string>::iterator i;
|
||||
for (i = lines.begin (); i != lines.end (); ++i)
|
||||
if ((*i)[0] == '{')
|
||||
{
|
||||
payload += *i + "\n";
|
||||
++upload_count;
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'sync' + payload.
|
||||
Msg request;
|
||||
|
@ -103,8 +129,6 @@ int CmdSync::execute (std::string& output)
|
|||
request.set ("user", credentials[1]);
|
||||
request.set ("key", credentials[2]);
|
||||
|
||||
// TODO Add the other necessary header fields.
|
||||
|
||||
request.setPayload (payload);
|
||||
|
||||
out << format (STRING_CMD_SYNC_PROGRESS, connection)
|
||||
|
|
|
@ -418,6 +418,8 @@
|
|||
#define STRING_CMD_SYNC_FAIL_CONNECT "Sync failed. Could not connect to the Task Server."
|
||||
#define STRING_CMD_SYNC_BAD_SERVER "Sync failed. Malformed configuration setting '{1}'"
|
||||
#define STRING_CMD_SYNC_NO_TLS "Taskwarrior was built without GnuTLS support. Sync is not available."
|
||||
#define STRING_CMD_SYNC_INIT "Please confirm that you wish to upload all your pending tasks to the Task Server?"
|
||||
#define STRING_CMD_SYNC_NO_INIT "Taskwarrior will not proceed with first-time sync initialization."
|
||||
#define STRING_CMD_DIAG_USAGE "Platform, build and environment details"
|
||||
#define STRING_CMD_DIAG_PLATFORM "Platform"
|
||||
#define STRING_CMD_DIAG_UNKNOWN "<unknown>"
|
||||
|
|
|
@ -429,7 +429,8 @@
|
|||
#define STRING_CMD_SYNC_FAIL_CONNECT "Sincronización fallida. No se pudo conectar con el Servidor Task."
|
||||
#define STRING_CMD_SYNC_BAD_SERVER "Sincronización fallida. Ajuste de configuración '{1}' incorrecto"
|
||||
#define STRING_CMD_SYNC_NO_TLS "Taskwarrior was built without GnuTLS support. Sync is not available."
|
||||
|
||||
#define STRING_CMD_SYNC_INIT "Please confirm that you wish to upload all your pending tasks to the Task Server?"
|
||||
#define STRING_CMD_SYNC_NO_INIT "Taskwarrior will not proceed with first-time sync initialization."
|
||||
#define STRING_CMD_DIAG_USAGE "Detalles de plataforma, construcción y entorno"
|
||||
#define STRING_CMD_DIAG_PLATFORM "Plataforma"
|
||||
#define STRING_CMD_DIAG_UNKNOWN "<desconocido>"
|
||||
|
|
|
@ -418,6 +418,8 @@
|
|||
#define STRING_CMD_SYNC_FAIL_CONNECT "Sync failed. Could not connect to the Task Server."
|
||||
#define STRING_CMD_SYNC_BAD_SERVER "Sync failed. Malformed configuration setting '{1}'"
|
||||
#define STRING_CMD_SYNC_NO_TLS "Taskwarrior was built without GnuTLS support. Sync is not available."
|
||||
#define STRING_CMD_SYNC_INIT "Please confirm that you wish to upload all your pending tasks to the Task Server?"
|
||||
#define STRING_CMD_SYNC_NO_INIT "Taskwarrior will not proceed with first-time sync initialization."
|
||||
#define STRING_CMD_DIAG_USAGE "Platform, build and environment details"
|
||||
#define STRING_CMD_DIAG_PLATFORM "Platform"
|
||||
#define STRING_CMD_DIAG_UNKNOWN "<unknown>"
|
||||
|
|
|
@ -419,6 +419,8 @@
|
|||
#define STRING_CMD_SYNC_FAIL_CONNECT "Sincronizzazione fallita. Impossibile connettersi al Task Server."
|
||||
#define STRING_CMD_SYNC_BAD_SERVER "Sincronizzazione fallita. Impostazione di configurazione '{1}' malformata"
|
||||
#define STRING_CMD_SYNC_NO_TLS "Taskwarrior was built without GnuTLS support. Sync is not available."
|
||||
#define STRING_CMD_SYNC_INIT "Please confirm that you wish to upload all your pending tasks to the Task Server?"
|
||||
#define STRING_CMD_SYNC_NO_INIT "Taskwarrior will not proceed with first-time sync initialization."
|
||||
#define STRING_CMD_DIAG_USAGE "Dettagli su piattaforma, build e ambiente"
|
||||
#define STRING_CMD_DIAG_PLATFORM "Piattaforma"
|
||||
#define STRING_CMD_DIAG_UNKNOWN "<sconoscito>"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue