Bump version and update Changes
[app-lastmsg.git] / lastmsg
1 #!/usr/bin/perl
2 use 5.014000;
3 use strict;
4 use warnings;
5
6 use App::Lastmsg;
7
8 App::Lastmsg::run;
9
10 __END__
11
12 =encoding utf-8
13
14 =head1 NAME
15
16 lastmsg - last(1) semblance for your inbox
17
18 =head1 SYNOPSIS
19
20 # in ~/.lastmsgrc
21 inbox:
22 - /home/MGV/mail/inbox
23 - /home/MGV/mail/folder
24 sent:
25 - /home/MGV/mail/sent
26 track:
27 bestfriend:
28 - best@friend.com
29 - best.friend@freemail.com
30 someguy: SOMEGUY@cpan.org
31 nobody:
32 - nobody@example.com
33
34 # in your shell
35 mgv@somehost ~ $ lastmsg
36 bestfriend best@friend.com Sat 31 Dec 2016 12:34:56 EET
37 someguy SOMEGUY@cpan.org Thu 20 Nov 2016 12:00:00 EET
38 nobody NOT FOUND
39
40 =head1 DESCRIPTION
41
42 lastmsg reads your mail folders looking for emails you exchanged with
43 a given set of people. Then for each person in the set it prints the
44 time you last received an email from or sent an email to them and the
45 email address used.
46
47 The script takes no arguments (the settings are taken from a
48 configuration file), and it prints a three-column table where the
49 first column is the ID of a person, the second column is the email
50 address last used (empty if you've never exchanged an email with that
51 person), and the last column is the date of last contact (or the
52 string C<NOT FOUND> if you've never exchanged an email). The rows are
53 sorted by date of last contact (with the most recently contacted
54 people at the top), and the people that you've never exchanged an
55 email with are at the end.
56
57 The configuration is in YAML format. Three keys are recognised:
58
59 =over
60
61 =item B<inbox>
62
63 The path(s) to your inbox and other incoming mail folders (a single
64 string or a list of strings). The C<From> field of these emails is
65 scanned.
66
67 If not provided, it defaults to F</var/mail/$ENV{USER}> and
68 F<$ENV{HOME}/Maildir/>. If USER or HOME are not in the environment,
69 the corresponding default directory is ignored. So on a system with
70 neither of these variables defined, this option will default to an
71 empty list.
72
73 B<NOTE:> See L<Email::FolderType> for information on how the type of a
74 folder is identified. In short, the suffix of the folder is analyzed:
75 If F</>, the format is Maildir. If F</.>, the format is MH. If F<//>,
76 the format is Ezmlm. Otherwise, some heuristics are checked and the
77 fallback is Mbox.
78
79 =item B<sent>
80
81 The path(s) to your sent and other outgoing mail folders (a single
82 string or a list of strings). The C<To>, C<Cc>, and C<Bcc> fields of
83 these emails are scanned.
84
85 If not provided, it default to an empty list. See B<NOTE:> above for
86 information on how the type of a folder is identified.
87
88 =item B<track>
89
90 A hash of people to track. Each entry represents a person. The key is
91 the ID of that person (used for display), and the value is the email
92 address of that person or a list of email addresses of that person.
93
94 If not provided, the script will die with an error.
95
96 =back
97
98 The configuration file can be named F<lastmsgconfig>,
99 F<lastmsg.config>, F<lastmsgrc>, or F<.lastmsgrc> and can be placed in
100 the current directory, in your home directory, in F</etc/>, and in
101 F</usr/local/etc/>. See L<Config::Auto> for more information.
102
103 =head1 ENVIRONMENT
104
105 The only recognised environment variable is B<LASTMSG_DEBUG>, which if
106 set to a true value causes the script to emit a lot of information on
107 STDERR about what it is doing.
108
109 =head1 TODO
110
111 Should handle IRC and IM logs as well, not just emails. Should have
112 better tests.
113
114 =head1 AUTHOR
115
116 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
117
118 =head1 COPYRIGHT AND LICENSE
119
120 Copyright (C) 2016-2017 by Marius Gavrilescu
121
122 This library is free software; you can redistribute it and/or modify
123 it under the same terms as Perl itself, either Perl version 5.24.1 or,
124 at your option, any later version of Perl 5 you may have available.
125
126
127 =cut
This page took 0.026316 seconds and 4 git commands to generate.