synyx / buchungsstreber Goto Github PK
View Code? Open in Web Editor NEWHelper application for publishing time entries to Redmine.
License: MIT License
Helper application for publishing time entries to Redmine.
License: MIT License
An Idea to have a generator where you can configure daily tasks, so you need not write them each time.
It seems to me like the minimum_time
setting is broken. Instead of setting the minimum time of the time entry (i.e. log at least half an hour, even if the task only took 10 minutes), it seems to multiply the time.
2024-04-20:
- 0.25 E 20000 Test
- 0.50 E 20001 Test
- 0.75 E 20002 Test
- 1.00 E 20003 Test
minimum_time
setting of 0.25 hours: Sat: 0.25h @ [...] Test
Sat: 0.5h @ [...] Test
Sat: 0.75h @ [...] Test
Sat: 1.0h @ [...] Test
✔️ Works as expected
minimum_time
to half an hour: Sat: 0.5h @ [...] Test
Sat: 1.0h @ [...] Test
Sat: 1.5h @ [...] Test
Sat: 2.0h @ [...] Test
Only the first time entry (less than half an hour) is changed:
Sat: 0.5h @ [...] Test
Sat: 0.5h @ [...] Test
Sat: 0.75h @ [...] Test
Sat: 1.0h @ [...] Test
I was not yet able to dig deeper into this issue.
As a developer I do not want to run my development environment against a productive Redmine. There is a Redmine docker setup from Bitnami. It would be nice if there already were some Redmine issues created so maybe it could be enriched with some data. A example developer configuration and a example developer timesheet file also would be great.
Fedora 35
Version: 2.8.2
Ruby: 2.5.5
Format: buch
It shows the spinner, it will not reload the file content.
The documentation for YAML/Buch Format still specifies, that the time granularity is fixed to a quarter hour. This hasn't been true for quite some time, being configurable via config file.
This paragraph should be revised/rewritten.
User reported a second time entry getting rejected as already entered.
As I wanted to switch from YAML format to Buch format I instantly missed the templates I used to write my time tracks with. As templates are not implemented for the Buch format it would be nice to have a similar functionality for reaccouring issues.
@BuJo mentioned that it would be a better approach to implement a resolver that serves both booking formats equal.
In order to configure mappings for activities, the configuration file requires knowledge of the internal IDs of activities to map them to labels, see for example
buchungsstreber/example.config.yml
Line 11 in 98f7925
Since "normal" users don't have access to this kind of information and may not know how to scrape that out of Redmine's web interface, it would be nice if buchungsstreber were able to extract those from a configured Redmine installation (e.g. via command line argument dump-activities
or similar) so the user can use them for their own configuration.
An alternative approach could be to allow the use of activity names instead of IDs. In this scenario my config might change like this:
# from
activities:
33: [Marketing, mkt]
46: [Sales]
47: [Consulting, con]
# to
activities:
Marketing: [mkt]
Consulting: [con]
Marketing
, Sales
and Consulting
are the "original" labels within the Redmine installation and will always work, hence no configuration for Sales
, as no alias exists.
Check for a way to enable a renovate bot
like functionality within this GitHub repository.
There is a load of new functionality available since the move to github. We should definitly think of a next release.
I use Buchungsstreber 2.8.0 with YAML format.
I started Buchungsstreber in watch mode. After that I started it in a second terminal in edit mode. It is configured to use ncalcli
and resolve the incoming dates via regex to template identifiers. If one of the dates has no resolver or identifier, this error occurs:
NoMethodError: undefined method 'valid_activity?' for nil:NilClass
It seems that the lines with error messages move the other content up and out of the window.
In edit mode I remove the conflicting date and save the file. The watch mode still shows the error, even after I press ENTER to reload it manually.
Starting the watch mode with a valid file seems fine.
uncaught throw "invalid line < Subject: Re: DNS extern sonarqube\r\n"
This leads to watch
not rendering the day at all.
I wanted to start this month with an empty file and created a new one by touch
ing it.
~$ buchungsstreber edit today
UncaughtThrowError: uncaught throw "invalid line: file should contain map"
It is my regular workflow that worked for a while now, so it must be broken along the way. I added the date by using vim
. After that I can run edit
again.
There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.
Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error: expecting end of expression or separator near oard": fal
There is a pipeline on what to test in .gitlab-ci.yml
. This should be replicated so that pushing to GitHub also runs some sort of continuous integration.
When using the redmine generator, it will produce duplicated entries if the entry activity is an alias.
Some daily activities for me are not handled by a calendar entry.
I'd like a configurable generator for that.
2022-01-01:
- 0.0 t#7654 Admin Daily Cleanup
generators:
daily:
- activity: Admin
issue: 7654
prefix: t
text: Daily Cleanup
Generating entries may leave entries empty, possibly only having a comment. It would be good to display those in the TUI as well, showing the comment in the text field if empty.
As someone with a dependence on more information, it would be good to add the time the entry was added into the entry comment.
Version: v2.8.2
Format: .B
Using --long
makes lines not shoing up correctly in the ncurses interface.
The deployment worked via the nexus
gem, and published to an open Nexus repository. This could be replicated via github actions, to enable automated releases again.
While generating entries there will be duplicates. Normally Aggregation is used to aggregate existing entries. When backfilling entries on a day this could be used to further cleanup generated entries.
The current list of lookup paths for configuration files contains __dir__ + '/..'
. This seems suspect and is probably a remnant of the config.rb
being simply in a lib/
directory. It seems to have been used for detecting a config file within the top level directory of the project.
This should be validated and corrected.
I use Buchungsstreber 2.8.0 with YAML format. I start Buchungsstreber in watch mode. After that I start it in a second terminal in edit mode. It is configured to use ncalcli
and resolve the incoming dates via regex to template identifiers.
After that my YAML file has a blank line after the date and no blank line between the last entry and the previous date.
2022-02-14:
- 2.0 some task
- 0.75 another task
- 0.5 last task
2022-02-11:
- 0.25 past task
In the previous version it looked cleaner:
2022-02-14:
- 2.0 some task
- 0.75 another task
- 0.5 last task
2022-02-11:
- 0.25 past task
It is not a bug but a change in usability and behaviour.
I use ncalcli
to generate time entries from my calendar entries. If ncalcli
failes for some reason, buchungsstreber clears and writes the buchungen.yml
file.
Maybe you don't know (or want to think about) where your timesheet file is located or you don't want to think about the formatting. You just want to add a line to yout timesheet file, maybe only a note.
One of the arguments should be mandatory. Maybe the easiest would be a comment.
Thought of something like
$ # buchungsstreber add <comment> [<time> <activity> <project> <issue>]
$ buchungsstreber add "did some stuff" 1.0 Orga S 32056
$ buchungsstreber add "did some more stuff"
$ buchungsstreber add --text="helped some people" --issue=13314
$ buchungsstreber add --text="support" --project=S --time=1.5
which for example results in YAML
2020-09-29:
- 1.0 Orga S32056 did some stuff
- did some more stuff
- 13314 helped some people
- 1.5 S support
In addition an option could be provided that marks the entry as note. This would for example prevent the watch mode from failing due to an invalid entry.
Thought of something like
$ buchungsstreber add --note "did some more stuff"
which for example results in YAML
2020-09-29:
# TODO - did some more stuff
There should be some guidelines for contributors.
There is the small 'how to develop' on the bottom of the readme, that could perhaps be expanded upon in a CONTRIBUTING.md
.
I've defined a green color for the first Redmine (S), a blue color for the second Redmine (C). The first Redmine is in watch
mode shown with the default color (red), the second Redmine is shown with the color defined for the first Redmine.
redmines:
-
name: first Redmine
prefix: S
color: '#76b82a'
-
name: second Redmine
prefix: C
color: '#0082c9'
Buchungsstreber 2.6.1
Ubuntu 18.04.5
Ruby ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
with
1.4.10
0.10.1
Version: 2.8.2
When using the generator functionality, the default redmine prefix for some items is not stripped, this is a regression of previous behaviour.
The GitLab workflow generated code coverage, and enabled a button for use in the README.md
. This would be cool to replicate within GitHub.
To be prepared, the rspec
tests should be run on a small set of recent Ruby versions.
When I want to enable the help in watch mode I need to push the h
twice. Same behaviour with ?
.
Once the help is shown I would expect to hide it with another push on h
or ?
or maybe ESC
, but nothing happens. I help myself by pushing ENTER
which refreshes the view.
Buchungsstreber 2.4.0
Ubuntu 18.04.5
Ruby ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
with
1.3.2
0.10.1
I use Buchungsstreber 2.8.0 with YAML format. I start Buchungsstreber in watch mode. After that I start it in a second terminal in edit mode. It is configured to use ncalcli
and resolve the incoming dates via regex to template identifiers.
It was sorted by the time of the incoming ncalcli
dates.
2022-02-14:
- 0.75 early task # dated with 10:00 in calendar
- 0.75 late task # dated with 10:30 in calendar
After updating to 2.8.0 the entries are in reverse order.
2022-02-14:
- 0.75 late task # dated with 10:30 in calendar
- 0.75 early task # dated with 10:00 in calendar
It is not a bug but a change in behaviour. It occured to me because I use the incoming dates as sort of personal daily planning.
This issue provides visibility into Renovate updates and their statuses. Learn more
This repository currently has no open or pending branches.
The watch feature shows the full file, instead of a single day.
I propose to change that behaviour to show the current day.
I'm using two different Redmines for my time tracking. Currently I help myself by sorting the entries by Redmine manually in the timesheet file to have a feeling for the amount of entries I did for each.
In the watch
mode the entries stay sorted and the letter defined for the Redmine is visible.
They also stay sorted in the log view (the overlay/subwindow that shows up by pushing b
), but there is no visible difference between the entries.
It would be nice to provide an option in the configuration file to define a color for a Redmine in which the defined Redmine prefix or the issue numbers could be dyed.
...
redmines:
-
name: project
prefix: P
color: frog-green
server:
...
Actually the minimum time entry is fix with 0.25, which is 15 minutes. It would be great to make this configurable in the config.yml
.
A global value would be enough for the first step. The config.yml
could look like this:
timesheet_file: ~/buchungsstreber/buchungen.yml
archive_path: ~/buchungsstreber/archive
hours: 8.0
minimum_time_entry: 0.25
generators:
...
I would like to have a setting option or something like that so that my entries are not archived after adding time entries to redmine, but remain in the file with the time entries. Since I book daily, the old entries disappear too quickly in the archive for me.
To enable a workflow of "add partial entries over the day and afterwards fill missing items via generator", the generator should be able to integrate generated values with the given day.
Right now, we only look at the EDITOR
variable, to select a non-vim
editor. As per POSIX
spec, the VISUAL
variable makes more sense. We should at least prefer the VISUAL
variable to EDITOR
if set, as nobody really wants to edit files via ed
(that I know).
redmine_api.rb
, in get(path, ...):99
the issue_id
variable is undeclared and will thus raise a wrong error.
The current way that configuration is propagated within the application is... haphazard at best.
templates
are handed down to parsers directly, they are from a much much simpler timeminimum_time
is handed down to parsers directlyConfig
class has a bunch of class methods but nothing elseMit Version v2.6.1 passiert bei Tastendruck j
nichts, nur mit y
Currently time can only be tracked on issues. It would be nice to track time on projects, similar to https://redmine.domain.de/projects/projectname/time_entries/new.
Possible tracking format in the timesheet file:
YAML
2020-10-06:
- 10:00-10:30 Orga sprojectname did some stuff
- 1.0 Orga projectname did some more stuff
Buch
2020-10-06
s#projectname 0.5 Orga did some stuff
#projectname 1.0 Orga did some more stuff
It should be possible to configure a new generator without having to read the sourcecode.
The parsers will halt at the first invalid line instead of parsing the rest of the entries. This is ok on the plain buchungsstreber
workflow, but used as a library for the watch
feature it would be better if they just marked the entries as invalid and proceeded.
The field entry[:error]
is already used elsewhere, we could use the validity marker as well.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.