diff options
| author | grunfink <grunfink@comam.es> | 2025-09-09 08:33:30 +0200 |
|---|---|---|
| committer | grunfink <grunfink@comam.es> | 2025-09-09 08:33:30 +0200 |
| commit | 4b5e945d957aaf6aa96cb11715384d161f245ea1 (patch) | |
| tree | 40474c817aad2c2af488263532f40af078a65958 /main.c | |
| parent | 797403810afbe431b363061f363876e02cc34c82 (diff) | |
Added support for scheduled posts from the cmdline.
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 38 |
1 files changed, 29 insertions, 9 deletions
@@ -808,6 +808,20 @@ int main(int argc, char *argv[]) const char *fn = NULL; const char *in_reply_to = NULL; const char **next = NULL; + xs *post_date = NULL; + + const char *env_date = getenv("SNAC_POST_DATE"); + if (env_date) { + /* convert to ISO */ + time_t t = xs_parse_localtime(env_date, "%Y%m%d%H%M%S"); + + if (t == 0) { + fprintf(stderr, "Invalid $SNAC_POST_DATE format (must be YYYYmmddHHMMSS)\n"); + return 1; + } + + post_date = xs_str_iso_date(t); + } /* iterate possible attachments */ while ((fn = GET_ARGV())) { @@ -885,7 +899,7 @@ int main(int argc, char *argv[]) content = xs_dup(url); if (!content || !*content) { - printf("Nothing to send\n"); + fprintf(stderr, "Nothing to send\n"); return 1; } @@ -896,18 +910,24 @@ int main(int argc, char *argv[]) if (strcmp(cmd, "note_unlisted") == 0) scope = 2; - msg = msg_note(&snac, content, NULL, in_reply_to, attl, scope, getenv("LANG"), NULL); + msg = msg_note(&snac, content, NULL, in_reply_to, attl, scope, getenv("LANG"), post_date); - c_msg = msg_create(&snac, msg); + const char *id = xs_dict_get(msg, "id"); - if (dbglevel) { - xs_json_dump(c_msg, 4, stdout); - } + if (post_date) + schedule_add(&snac, id, msg); + else { + c_msg = msg_create(&snac, msg); - enqueue_message(&snac, c_msg); - enqueue_webmention(msg); + if (dbglevel) { + xs_json_dump(c_msg, 4, stdout); + } - timeline_add(&snac, xs_dict_get(msg, "id"), msg); + enqueue_message(&snac, c_msg); + enqueue_webmention(msg); + + timeline_add(&snac, id, msg); + } return 0; } |