Giter VIP home page Giter VIP logo

did's Introduction

did

What did you do last week, month, year?

Description

Comfortably gather status report data (e.g. list of committed changes) for given week, month, quarter, year or selected date range. By default all available stats for this week are reported.

Based on the config, did explores user's activity for given tools in provided time frame. For example checks all configured git repositories for the list of commits or contacts Bugzilla to search for bugs created, modified or closed.

Some information (like git commits) is gathered from the local file system, but usually individual plugins are contacting remote API of the tool to query for the latest data. For tools which provide a public API there is no need for authentication. Some plugins support Kerberos, other need to create an authentication token. See individual plugin documentation for details.

Synopsis

Usage is straightforward:

did [this|last] [week|month|quarter|year|monday|..|sunday] [opts]

Examples

Gather all stats for current week:

did

Show me all stats for today, yesterday, last Friday:

did today
did yesterday
did last friday

Gather stats for the last month:

did last month

See did --help for complete list of available stats.

Options

The list of available options depends on which plugins are configured. Here's the list of general options which are not related to any plugin:

Select

At least one email address needs to be provided on command line unless defined in the config file. Use the complete email address format Name Surname <[email protected]> to display full name in the report output. For date values today and yesterday can be used instead of the full date format.

--email=EMAILS

User email address(es)

--since=SINCE

Start date in the YYYY-MM-DD format

--until=UNTIL

End date in the YYYY-MM-DD format

Format

The default output is plain text of maximum width 79 characters. This can be adjusted using the --width parameter. To disable shortening altogether use --width=0. The default width value can be saved in the config file as well. Use --format=wiki to enable simple MoinMoin wiki syntax or --format=markdown to enable markdown syntax. For stats which support them, --brief and --verbose can be used to specify a different level of detail to be shown.

--format {text,markdown,wiki}

Output style, default: text

--width=WIDTH

Maximum width of the report output (default: 79)

--brief

Show brief summary only, do not list individual items

--verbose

Include more details (like modified git directories)

Utils

Multiple emails can be used to put together a team report or to gather stats for all of your email aliases. For this use case --total and --merge can be used to append the overall summary at the end or merge all results into a single report respectively. Use --debug or set the environment variable DEBUG to 1 through 5 to set the desired level of debugging.

--config=FILE

Use alternate configuration file (default: 'config')

--total

Append total stats after listing individual users

--merge

Merge stats of all users into a single report

--debug

Turn on debugging output, do not catch exceptions

See did --help for complete list of available options.

Install

Install directly from Fedora/Copr repository:

yum install did

Or use pip to install from Python Package Index:

pip install did

You may want to install some or all extra requires:

pip install did[plugin]
pip install did[all]

To build and execute in a docker container, run:

make run_docker

See documentation for more details about installation options.

Config

The config file ~/.did/config is used to store both general settings and configuration of individual reports:

[general]
email = "Petr Šplíchal" <[email protected]>
width = 79

[header]
type = header
highlights = Highlights
joy = Joy of the week ;-)

[tools]
type = git
did = /home/psss/git/did

[tests]
type = git
tests = /home/psss/git/tests/*

[trac]
type = trac
prefix = TT
url = https://some.trac.com/trac/project/rpc

[bz]
type = bugzilla
prefix = BZ
url = https://bugzilla.redhat.com/xmlrpc.cgi

[footer]
type = footer
next = Plans, thoughts, ideas...
status = Status: Green | Yellow | Orange | Red

See plugin documentation for more detailed description of options available for particular plugin. You can also check python module documentation directly, e.g. pydoc did.plugins.git or use the example config provided in the package and web documentation.

Git: https://github.com/psss/did

Docs: https://did.readthedocs.io

Issues: https://github.com/psss/did/issues

Releases: https://github.com/psss/did/releases

Copr: https://copr.fedoraproject.org/coprs/psss/did

PIP: https://pypi.org/project/did

Authors

Petr Šplíchal, Karel Šrot, Lukáš Zachar, Matěj Cepl, Ondřej Pták, Chris Ward, Tomáš Hofman, Martin Mágr, Stanislav Kozina, Paul Belanger, Eduard Trott, Martin Frodl, Randy Barlow, Alois Mahdal, Evgeni Golov, Stanislav Ochotnický, Maroš Kopec, Robbie Harwood, Christopher Sams, Thomas Heute, Giulio Fidente, Han Han, Qiao Zhao, Henrique Ferreiro, Jakub Vávra, Luigi Toscano, Lukáš Zapletal, Maryna Nalbandian, Dominika Hoďovská, Jakub Haruda, Han Han, Štěpán Němec, Evgeny Fedin, Mikel Olasagasti Uranga, Miloš Malík, Jeffrey Bastian, Côme Chilliet, Marcin Juszkiewicz, Tomáš Kopeček, Konrad Kleine, Sandro Bonazzola, Morgan Weetman, Jakub Rozek and Petr Matyáš.

Copyright (c) 2015 Red Hat, Inc. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Status

image

image

image

image

image

did's People

Contributors

csams avatar d-m-u avatar evgeni avatar frozencemetery avatar hferreiro avatar hrw avatar jakub-vavra-cz avatar kuba314 avatar kwisatzhaderach avatar kwk avatar langdon avatar linuxqiao avatar lukaszachy avatar lzap avatar maxandersen avatar mikelolasagasti avatar milosmalik avatar mweetman-redhat avatar optak avatar pabelanger avatar paramite avatar psss avatar qiankehan avatar sandrobonazzola avatar stepnem avatar theute avatar tkopecek avatar tomashofman avatar tosky avatar xsuchy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

did's Issues

gerrit-reviewed not reporting

$ did --gerrit-reviewed --since 2016-05-15 --debug
...
DEBUG chg = {u'status': u'MERGED', u'deletions': 8, u'updated': u'2016-05-16 11:52:24.552000000', u'insertions': 18, u'created': u'2016-02-16 13:33:33.000000000', u'change_id': u'Ie04d9f3e6948079c9c6918867cd670c636c61504', u'hashtags': [], u'project': u'XXXX', u'branch': u'master', u'owner': {u'_account_id': 1947}, u'_number': 67763, u'id': u'XXX', u'subject': u"XXXX"}
...

In plugin is check for 'author' and 'email', otherwise the record is skipped.
Which (at least for our internal gerrit) look to be omitted.

Add component/product support to bugzilla plugin

RedHat bugzilla tracks several components. I have some work done on Fedora and some on RHEL.

But when I run "did last week" I get list of bugs with their titles so it is hard to find out which are for Fedora and which for RHEL. Also info which product (aka package name) it was assigned to would be useful to have.

Missing acked bugzillas stats

comparing to status-report, bugzilla plugin misses acked bugs.
There are more missing features like sanityonly or grading which are not part of this request.
version: copr did-0.9-1.fc23.noarch
did:

Bugzilla stats:
  --bugzilla-filed      Bugs filed
  --bugzilla-patched    Bugs patched
  --bugzilla-posted     Bugs posted
  --bugzilla-fixed      Bugs fixed
  --bugzilla-returned   Bugs returned
  --bugzilla-verified   Bugs verified
  --bugzilla-commented  Bugs commented
  --bugzilla-closed     Bugs closed
  --bugzilla            All above

status-report:

  Bugzilla stats:
    --verified          Bugs verified
    --sanity            SanityOnly bugs
    --returned          Bugs returned
    --filed             Bugs filed
    --fixed             Bugs fixed
    --posted            Bugs posted
    --patches           Patches written
    --acked             Bugs acked
    --graded            Bugs graded
    --commented         Bugs commented
    --bugzilla          All above

Local storage of arbitrary 'did' stats

did focuses on pulling data from external sources about things that a user 'did' during a time period.

Many times we 'do' things that aren't stored in any external source though, and thus can't be queried later and included into our reports. eg 'drafted really important slides in libraoffice for project X'

Users should be able to save (aka, cache) this type of arbitrary 'did' stat locally.

Warn when since/until options are used with relative time

We should clearly warn when user (e.g. by a copy & paste accident)
specifies --since or --until options together with relative
time specification such as last week as it's not clear what the
desired result should be. Refusing to guess and suggesting to the
user to choose seems to be the most straightforward solution.

error getting gerrit items

[DEBUG] url = https://gerrit.ovirt.org/changes/I9348a09e331195695c16862ef986df3b4abfa991/detail#/
[DEBUG] changelog = {u'status': u'NEW', u'topic': u'tc-tests', u'updated': u'2015-09-21 09:45:34.676000000', u'insertions': 49, u'messages': [{u'date': u'2015-09-21 08:58:42.371000000', u'_revision_number': 1, u'message': u'Uploaded patch set 1.', u'id': u'499865f5_1706631f', u'author': {u'username': u'ibarkan', u'email': u'[email protected]', u'name': u'Ido Barkan', u'_account_id': 1000618}}, {u'date': u'2015-09-21 08:58:59.549000000', u'_revision_number': 1, u'message': u"Patch Set 1:\n\n* Update tracker::IGNORE, no Bug-Url found\n* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.\n* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])", u'id': u'499865f5_171f4359', u'author': {u'username': u'gerrit-hooks', u'email': u'[email protected]', u'name': u'gerrit-hooks', u'_account_id': 1000458}}, {u'date': u'2015-09-21 09:40:59.984000000', u'_revision_number': 1, u'message': u'Patch Set 1:\n\nBuild Started -> http://jenkins.ovirt.org/job/vdsm_master_check-patch-fc22-x86_64/687/', u'id': u'499865f5_97519363', u'author': {u'username': u'jenkins', u'name': u'Jenkins CI', u'_account_id': 1000132}}, {u'date': u'2015-09-21 09:45:34.676000000', u'_revision_number': 1, u'message': u'Patch Set 1: Continuous-Integration-1\n\nBuild Failed \n\nhttp://jenkins.ovirt.org/job/vdsm_master_check-patch-fc22-x86_64/687/ : FAILURE', u'id': u'499865f5_77d5e7b4', u'author': {u'username': u'jenkins', u'name': u'Jenkins CI', u'_account_id': 1000132}}], u'created': u'2015-09-21 08:58:42.371000000', u'change_id': u'I9348a09e331195695c16862ef986df3b4abfa991', u'labels': {u'Continuous-Integration': {u'default_value': 0, u'all': [{u'username': u'osvoboda', u'name': u'Ond\u0159ej Svoboda', u'_account_id': 1000529, u'value': 0, u'date': u'2015-09-21 09:07:09.728000000', u'email': u'[email protected]'}, {u'date': u'2015-09-21 09:45:34.676000000', u'username': u'jenkins', u'name': u'Jenkins CI', u'value': -1, u'_account_id': 1000132}, {u'username': u'gerrit-hooks', u'email': u'[email protected]', u'name': u'gerrit-hooks', u'value': 0, u'_account_id': 1000458}, {u'username': u'phoracek', u'name': u'Petr Hor\xe1\u010dek', u'_account_id': 1000595, u'value': 0, u'date': u'2015-09-21 09:07:07.137000000', u'email': u'[email protected]'}], u'values': {u' 0': u'Did not run yet', u'-1': u'Failed CI tests', u'+1': u'Passed CI tests'}, u'rejected': {u'username': u'jenkins', u'name': u'Jenkins CI', u'_account_id': 1000132}}, u'Verified': {u'default_value': 0, u'all': [{u'username': u'osvoboda', u'email': u'[email protected]', u'name': u'Ond\u0159ej Svoboda', u'value': 0, u'_account_id': 1000529}, {u'username': u'jenkins', u'name': u'Jenkins CI', u'value': 0, u'_account_id': 1000132}, {u'username': u'gerrit-hooks', u'name': u'gerrit-hooks', u'_account_id': 1000458, u'value': 0, u'date': u'2015-09-21 08:58:59.549000000', u'email': u'[email protected]'}, {u'username': u'phoracek', u'email': u'[email protected]', u'name': u'Petr Hor\xe1\u010dek', u'value': 0, u'_account_id': 1000595}], u'values': {u' 0': u'No score', u'-1': u'Fails', u'+1': u'Verified'}}, u'Code-Review': {u'default_value': 0, u'all': [{u'username': u'osvoboda', u'email': u'[email protected]', u'name': u'Ond\u0159ej Svoboda', u'value': 0, u'_account_id': 1000529}, {u'username': u'jenkins', u'name': u'Jenkins CI', u'value': 0, u'_account_id': 1000132}, {u'username': u'gerrit-hooks', u'email': u'[email protected]', u'name': u'gerrit-hooks', u'value': 0, u'_account_id': 1000458}, {u'username': u'phoracek', u'email': u'[email protected]', u'name': u'Petr Hor\xe1\u010dek', u'value': 0, u'_account_id': 1000595}], u'values': {u'+2': u'Looks good to me, approved', u' 0': u'No score', u'-1': u"I would prefer that you didn't submit this", u'+1': u'Looks good to me, but someone else must approve', u'-2': u'Do not submit'}}}, u'deletions': 2, u'project': u'vdsm', u'owner': {u'username': u'ibarkan', u'email': u'[email protected]', u'name': u'Ido Barkan', u'_account_id': 1000618}, u'permitted_labels': {}, u'mergeable': False, u'branch': u'master', u'removable_reviewers': [], u'_sortkey': u'0037f3890000b571', u'_number': 46449, u'id': u'vdsmmasterI9348a09e331195695c16862ef986df3b4abfa991', u'subject': u'net: tests: test tc upper limit using iperf'}
[DEBUG] changes.messages = [{u'_revision_number': 1,
u'author': {u'_account_id': 1000618,
u'email': u'[email protected]',
u'name': u'Ido Barkan',
u'username': u'ibarkan'},
u'date': u'2015-09-21 08:58:42.371000000',
u'id': u'499865f5_1706631f',
u'message': u'Uploaded patch set 1.'},
{u'_revision_number': 1,
u'author': {u'_account_id': 1000458,
u'email': u'[email protected]',
u'name': u'gerrit-hooks',
u'username': u'gerrit-hooks'},
u'date': u'2015-09-21 08:58:59.549000000',
u'id': u'499865f5_171f4359',
u'message': u"Patch Set 1:\n\n* Update tracker::IGNORE, no Bug-Url found\n* Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url.\n* Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])"},
{u'_revision_number': 1,
u'author': {u'_account_id': 1000132,
u'name': u'Jenkins CI',
u'username': u'jenkins'},
u'date': u'2015-09-21 09:40:59.984000000',
u'id': u'499865f5_97519363',
u'message': u'Patch Set 1:\n\nBuild Started -> http://jenkins.ovirt.org/job/vdsm_master_check-patch-fc22-x86_64/687/'},
{u'_revision_number': 1,
u'author': {u'_account_id': 1000132,
u'name': u'Jenkins CI',
u'username': u'jenkins'},
u'date': u'2015-09-21 09:45:34.676000000',
u'id': u'499865f5_77d5e7b4',
u'message': u'Patch Set 1: Continuous-Integration-1\n\nBuild Failed \n\nhttp://jenkins.ovirt.org/job/vdsm_master_check-patch-fc22-x86_64/687/ : FAILURE'}]
Traceback (most recent call last):
File "/home/ibarkan/pycharm-community-4.5.3/helpers/pydev/pydevd.py", line 2358, in
globals = debugger.run(setup['file'], None, None, is_module)
File "/home/ibarkan/pycharm-community-4.5.3/helpers/pydev/pydevd.py", line 1778, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/usr/bin/did", line 36, in
did.cli.main()
File "/usr/lib/python2.7/site-packages/did/cli.py", line 183, in main
user_stats.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 135, in check
stat.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 135, in check
stat.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 80, in check
self.fetch()
File "/usr/lib/python2.7/site-packages/did/plugins/gerrit.py", line 277, in fetch
if 'author' in chg and owner == chg['author']['email'] and
KeyError: 'email'

Support for basic authentication in Jira plugin

While sending PR #35 which allowed connecting to issues.jboss.org, I didn't realize that jboss.org is not connected to Red Hat LDAP :). So while the jira plugin started to work for jboss.org, I wasn't actually authenticated and that prevents me from monitoring internal Red Hat projects.

It seems the only way to authenticate to jboss.org is via basic authentication (?)

I suggest defining following new properties for jira plugin:

  • auth_type - 'gss' (default) or 'basic'
  • auth_url - instead of sso_url to make it more general
  • auth_username, auth_password - for defining credentials, only possible for 'basic' auth. type

I'm willing to work on this.

Docs -> Sphinx

@psss

Ultimately, while it's not perfect, I think it's going to be better if we have a readme file and man file that are separate from each other.

In 0.4 I've made a static cut of the man page; i don't think the man page will need to be updated very often. And once we have full docs... man page is just one more file out of many that we're going to need to make sure is accurate each time. It should be as simple as possible anyway, so hopefully even it won't need to be updated. In 0.4 the man pages are produced now using sphinx. The RPM makefile has been updated to build using sphinx. HTML output of the documentation is also using sphinx and is automatically regenerated over at status-report.readthedocs.org after each commit (you'll need to enable that in github repo hooks). Until you enable that hook i'm just manually re-generating the docs after commits though with a simple curl command::

curl -X POST http://readthedocs.org/build/status-report

See for example:
http://status-report.readthedocs.org/en/0.4/overview.html

See 7647e82

I've added git commit hooks too so now stuff can be checked automatically prior to making the commit. You need to enable it to work though:

# UPDATE according to your actual abs_path to this repo
PATH = ~/status-report/git-hooks
ln -s $(PATH)/pre-commit.py .git/hooks/pre-commit
ln -s $(PATH)/commit-msg.py .git/hooks/commit-msg

Currently enabled are commit-msg check (<= 50c) and pre-commit checks (RPM build and py.test)

GitHub plugin Unicode char

If commit message contain some special Unicode symbol (for example ' symbol) exception is thrown and it is not possible to create report.

did run with --debug option:

Traceback (most recent call last):
File "/usr/bin/did", line 36, in
did.cli.main()
File "/usr/lib/python2.7/site-packages/did/cli.py", line 191, in main
user_stats.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 135, in check
stat.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 135, in check
stat.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 89, in check
self.show()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 103, in show
utils.item(stat, level=1, options=self.options)
File "/usr/lib/python2.7/site-packages/did/utils.py", line 76, in item
eprint(u"{0}* {1}".format(u" " * indent, shorted(unicode(text), width)))
File "/usr/lib/python2.7/site-packages/did/plugins/github.py", line 86, in unicode
unicode(self.id).zfill(PADDING), self.data["title"])
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 36: ordinal not in range(128)

Problem git commit message is:

GUVNOR-2415: Boundary events lose it’s documentation after save and reopen Business Process

support jira

enable support for grepping work done on JIRA tickets

Patched bugs not listed when multiple keywords added at a time

The PatchedBugs class should return all the Bugzilla bugs to which the Patch keyword was added by given user in the specified date range. It works fine when Patch is the only keyword being added at a time. When adding other keywords at the same time, however, the bug is not listed in the report.

The problem is caused by the Bugzilla query used in the respective class, namely the following part:

class PatchedBugs(Stats):
    ...
    def fetch(self):
        ...
        query = {
            ...
            # Patch keyword added
            "field0-1-0": "keywords",
            "type0-1-0": "changedto",
            "value0-1-0": "Patch",
            ...
            }

In order to fix this behaviour, this needs to be modified to something like 'keywords changed to something which contains (not is) Patch'. From a quick look on Bugzilla search page, I am not quite sure at the moment how to define such a query, though.

Gerrit plugin tracebacks for non-existent user

When an email of non-existent user is provided searching for gerrit changes results in a traceback. This should probably just raise a warning or silently ignore this particular error. Otherwise it's not possible to create team reports with only some users having account on the gerrit instance.

Unfortunately it seems the only way how to detect the problem by checking the 400 error code from the server, no further details. So ignoring this could hide other problems as well. Not sure what's the best solution here.

support for github, fedorahosted trac, JIRA

Hi,
I just read documentation and have not found how to get status report for github projects, fedorahosted trac. For JIRA can you please add example, how to write it in config file?
Please add support for fedorahosted trac ticket status.

Direct email sending support

It would be nice to have an easy way to send/email the gathered
report directly from command line, optionally with editing it:

  • After report is generated the content is open in $EDITOR
  • When the content is empty, no email is sent (as git commit)
  • Otherwise an email is sent based on the user config

Command line examples:

status-report --edit .......... just edit & print on stdout
status-report --send .......... send directly
status-report --send --edit ... edit & then send

Config example:

[email]
subject = [Status Report] Week $week
from = Petr Šplíchal <[email protected]>
to = Some Manager <[email protected]>
cc = Petr Šplíchal <[email protected]>

That's it! :-)

missing BFU docs

Hi.
It's nice to have the source code documented, but what I am really missing is some simple manual for newbies.

For example, I cannot find any explanation of the concept of section names - there are tons of example configs, but no single mention how do you choose the section names, or where are they used later.

Another example, I was interested what does this "prefix = BZ" option mean. It doesn't seem to be explained in the 'Config' chapter - instead it refers to 'Plugins' documentation. OK, so I went to Plugins/bugzilla and see this option repeated in config example snippet, but cannot find any single instance of 'prefix' within the explanatory text!

On the other hand, some other text, like "What did you do last week, month, year?" or "The config file ~/.did/config is used ..." is copied in multiple places.

Please, pretty please with sugar on top, take someone with zero knowledge of did and python, and write the manual from scratch while trying to teach the person how to use did ... do you really think that text like "class did.plugins.bugzilla.BugzillaStats(option, name=None, parent=None, user=None)" should be presented to users? Does your car manual list transponder chip model used in the remote while leaving out which button to press to open the car?

Email status report (gmail, zimbra)

Would be useful for me if I could get status report details for my email usage.

Emails Sent (new, reply) - date: subject (like git commits)

Starting with support for gmail using their api would probably be reasonable.

I'll work on this.

New plugin: Errata tool

It'd be cool to be able to query changes done to Errata Tool. I have some scripts which are able to access the tool, please ping me offline if interested. Unfortunately I don't have the time to work on this now;-/

user name resolution

Enable connecting user name resolution db. For example, email to full name. Could be simple RPC connector or LDAP or db

What did you do last week, month, year?

The only thing I don't like about status-report is its name.
It's just too long and complicated to write on command line.
What about choosing something more comfortable and beautiful?

Commit d4cdbd2 shows how this could look like...
Usage like did last week seems quite natural ;-)

idid - push pull from other sources

I use idonethis as a service for conveniently storing 'did's with a simple email each day (or at whatever other frequency); this allows me to quickly take notes about important things I've done from any device that supports email and (eg) easily share those with my team (who are also using idonethis). I'd like to continue to be able to use this service going forward, since a idid 'server' isn't likely anytime soon. But i'd like to keep a 'master' copy of all my stuff locally too that I can then

idid push TOPIC idonethis
idid pull idonethis TOPIC

or with config to the push to happen automatically (havn't thought about it deeply though)

[idonethis-kejbaly2]
token = ...

[joy]
type = logg
remote = idonethis-kejbaly2

idid joy 'something amazing today #ftw'
# this command would store the logg locally and also push it to idonethis 
# using the configured credentials

Support for gmail

time spent emailing is also 'getting stuff done'; gmail should have an API that would enable users to query for how many messages sent, received, "read". This would be a good start.

Missing deps

I am not terribly familiar with setuptools but, shouldn't:
python-kerberos
python-nitrate
python-dateutil

be addressed in there? vs just the rpm spec?

urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]

Getting this error when trying to connect to JIRA.

DEBUG Connecting to https://xxxx.xxxx..xxxx.com/step-auth-gss
Traceback (most recent call last):
File "/usr/bin/did", line 36, in
did.cli.main()
File "/usr/lib/python2.7/site-packages/did/cli.py", line 191, in main
user_stats.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 135, in check
stat.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 135, in check
stat.check()
File "/usr/lib/python2.7/site-packages/did/stats.py", line 80, in check
self.fetch()
File "/usr/lib/python2.7/site-packages/did/plugins/jira.py", line 137, in fetch
self.stats = Issue.search(query, stats=self)
File "/usr/lib/python2.7/site-packages/did/plugins/jira.py", line 94, in search
result = stats.parent.session.open(
File "/usr/lib/python2.7/site-packages/did/plugins/jira.py", line 265, in session
self._session.open(self.auth_url)
File "/usr/lib64/python2.7/urllib2.py", line 431, in open
response = self._open(req, data)
File "/usr/lib64/python2.7/urllib2.py", line 449, in _open
'_open', req)
File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib64/python2.7/urllib2.py", line 1242, in https_open
context=self._context)
File "/usr/lib64/python2.7/urllib2.py", line 1199, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

Support for GitHub

Did I miss support for GitHub somewhere? It would be great to pull in stats about commenting, code reviews, etc...

As a bonus, and patches found with identical commit id's to something already mentioned in the git section, should probably be ignored.

Cheers!

New plugin: Mojo

Track activities for a given user in mojo.

Blog posts, document, pages, notes, created/modified.

'a' recognized as valid argument

Allowed arguments are described in usage string as
Usage: did [last] [week|month|quarter|year] [opts]

I would expect failure for each unrecognised positional argument. But that is only partially true:
$ did b
ERROR Invalid argument: 'b'

$ did a
Status report for this week (2015-09-21 to 2015-09-27).
...

AFAIK there should be no positional argument which 'a' matches.

Support for gcal

Meetings attended are worth tracking... again, google should have an API that would enable users to get a list of meeting invites 'received', 'attended', 'rejected', 'maybed'

Support different username/login for different plugin instances

Right now the login/username is taken from the email (full email or username part, it seems). But different services could have different usernames. For example, my username here and then on review.gerrithub.io is ltoscano-rh, and this username is not part of any email. On the other side, my username on review.openstack.org (for example) matches my email.
So I think there should be a way to associate, for each user, some usernames specific to the various plugin instances.

Date range might be a little bit confusing

Internally options.since and options.until dates are interpreted as the midnight of the respective date. This means that plugins need to query like this:

date >= options.since and date < options.since

This might be a little bit confusing at the first sight. But might be also useful as some services internally handle queries as datetime so for these you would have to say:

date > options.since and date < options.since

So the question is: Shall we leave it as it is? Or make the until option content match what is given on the command line? (Now --until 2015-10-03 is saved as 2015-10-04.)

Add support for Github api pagination

According to Github API documentation, all results returning multiple items are paginated:
https://developer.github.com/v3/#pagination

While I didn't tested it yet, I think issue search is also paginated
(I tested get all issues for repo and that is paginated).

Lets use python requests, which provides nice functionality for handling pagination.
Will try to prepare PR, as I solved this already in my issue aggregator.

Add an option to the configuration file for non-Monday report

Some teams are filing status reports on another day than on the end of the week. It would be nice to be able to set in the configuration file a decisive day, so that user doesn’t have to apply --since every week.

[originally filed by Matěj Cepl]

$DID_CONFIG is ignored

Using did from 80b4f9c and despite assurances on #43 DID_CONFIG variable doesn’t seem to make much difference:

matej@mitmanek: ~$ echo $DID_CONFIG
/home/matej/.config/did
matej@mitmanek: ~$ ls $DID_CONFIG/config
/home/matej/.config/did/config
matej@mitmanek: ~$ did --since=2015-09-22
Create at least a minimum config file /home/matej/.did/config:
[general]
email = Name Surname <[email protected]>
 ERROR  Unable to read the config file '/home/matej/.did/config'.
matej@mitmanek: ~$

Move config file to ~/.config/didrc

There are lot of dotfiles in $HOME. But more and more projects moved to using ~/.config ~/.local etc directories instead of creating new ones.

Did should follow.

Add repository filtering to GitHub plugin

It is not always desirable to include all your GitHub contributions to your status report. Some of them might be commits/issues in your personal projects. Therefore, it would be nice to have some kind of filtering - either include list, exclude list or both options.

git repos expansion containing non-repo fails

When path I specify as keeper of git repos [i.e. with /* expansion] contains non-repo directory, it fails with error complaining about GIT_DISCOVERY_ACROSS_FILESYSTEM not set.

 ERROR  fatal: Not a git repository (or any parent up to mount point /home)
 Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
 ERROR  Unable to check commits in '/home/dahaic/RH/git/tests/UPSTREAM'

If env variable is set, it fails nevertheless.

 ERROR  fatal: Not a git repository (or any of the parent directories): .git
 ERROR  Unable to check commits in '/home/dahaic/RH/git/tests/'

It would be nice to skip such directory and not fail.

Gerrit plugin lists all patches among 'additional'

All patches submitted for Gerrit review are listed not only in 'Changes submitted for review' section, but also in 'Additional patches added to existing changes'. This includes those Gerrit changes that contain a single patch set and have not been modified since their creation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.