mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-06-26 10:54:28 +02:00
Fix typos and wording
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
This commit is contained in:
parent
14bed139f6
commit
082708a7ca
19 changed files with 30 additions and 32 deletions
|
@ -14,7 +14,7 @@ Here are the different ways you might conѕider contributing:
|
||||||
|
|
||||||
Please read the respective section below about the details.
|
Please read the respective section below about the details.
|
||||||
|
|
||||||
Otherwise you can spread the word and recommend Timewarrior to your friends and colleagues.
|
Otherwise, you can spread the word and recommend Timewarrior to your friends and colleagues.
|
||||||
|
|
||||||
|
|
||||||
## Reviews
|
## Reviews
|
||||||
|
@ -43,7 +43,7 @@ Review the source code, and point out inefficiencies, problems, unreadable funct
|
||||||
## Bug reports
|
## Bug reports
|
||||||
|
|
||||||
Before you submit a bug report, make sure you are using the latest version of Timewarrior.
|
Before you submit a bug report, make sure you are using the latest version of Timewarrior.
|
||||||
Also please take your time and scan the current bug tickets on our [GitHub issue tracker](https://github.com/GothenburgBitFactory/timewarrior/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Abug) whether your issue has already been reported.
|
Also, please take your time and scan the current bug tickets on our [GitHub issue tracker](https://github.com/GothenburgBitFactory/timewarrior/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Abug) whether your issue has already been reported.
|
||||||
|
|
||||||
When you submit a bug report, be precise and put as much information into your bug report as possible.
|
When you submit a bug report, be precise and put as much information into your bug report as possible.
|
||||||
You should at least provide
|
You should at least provide
|
||||||
|
@ -146,7 +146,7 @@ To make a pull request you need to have a GitHub account.
|
||||||
...
|
...
|
||||||
$ git push origin feature_branch
|
$ git push origin feature_branch
|
||||||
|
|
||||||
Furthermore, commits should be signed off according to the [DCO](DCO) (use `-s` / `--signoff` flag when commiting).
|
Furthermore, commits should be signed off according to the [DCO](DCO) (use `-s` / `--signoff` flag when committing).
|
||||||
|
|
||||||
1. Create the pull request on GitHub.
|
1. Create the pull request on GitHub.
|
||||||
|
|
||||||
|
|
2
INSTALL
2
INSTALL
|
@ -89,7 +89,7 @@ To do that, run:
|
||||||
$ git pull --recurse-submodules
|
$ git pull --recurse-submodules
|
||||||
$ git submodule update
|
$ git submodule update
|
||||||
|
|
||||||
At this point you have the fully updated sources at your disposal and you can update your local build following the regular build instructions:
|
At this point you have the fully updated sources at your disposal, and you can update your local build following the regular build instructions:
|
||||||
|
|
||||||
$ cmake .
|
$ cmake .
|
||||||
$ make
|
$ make
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
Thank you for taking a look at Timewarrior!
|
Thank you for taking a look at Timewarrior!
|
||||||
|
|
||||||
Timewarrior is a time tracking utility that offers simple stopwatch features as well as sophisticated calendar-based backfill, along with flexible reporting.
|
Timewarrior is a time tracking utility that offers simple stopwatch features as well as sophisticated calendar-based backfill, along with flexible reporting.
|
||||||
It is a portable, well supported and very active Open Source project.
|
It is a portable, well-supported and very active Open Source project.
|
||||||
|
|
||||||
Please visit [timewarrior.net](https://timewarrior.net/docs/) for extensive documentation, downloads, news and more.
|
Please visit [timewarrior.net](https://timewarrior.net/docs/) for extensive documentation, downloads, news and more.
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ timew-join - join intervals
|
||||||
*timew join* _<id> <id>_
|
*timew join* _<id> <id>_
|
||||||
|
|
||||||
== DESCRIPTION
|
== DESCRIPTION
|
||||||
Joins two intervals, by using the earlier of the two start times, and the later of the two end times, and the combined set of tags.
|
Joins two intervals, by using the earlier one of the two start times, and the later one of the two end times, and the combined set of tags.
|
||||||
Using the 'summary' command, and specifying the ':ids' hint shows interval IDs.
|
Using the 'summary' command, and specifying the ':ids' hint shows interval IDs.
|
||||||
Using the correct IDs, you can identify an intervals to join.
|
Using the correct IDs, you can identify an intervals to join.
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ uses the combination of configuration settings and logic within to:
|
||||||
- Define various policies
|
- Define various policies
|
||||||
|
|
||||||
On non-Unix systems config file is expected in ~/.timewarrior directory.
|
On non-Unix systems config file is expected in ~/.timewarrior directory.
|
||||||
On Unix systems, if legacy ~/.timewarrior directory doesn't exists, config is
|
On Unix systems, if legacy ~/.timewarrior directory doesn't exist, config is
|
||||||
read from $XDG_CONFIG_HOME/timewarrior directory (if not specified,
|
read from $XDG_CONFIG_HOME/timewarrior directory (if not specified,
|
||||||
$XDG_CONFIG_HOME defaults to ~/.config).
|
$XDG_CONFIG_HOME defaults to ~/.config).
|
||||||
|
|
||||||
|
|
2
doc/themes/README
vendored
2
doc/themes/README
vendored
|
@ -36,7 +36,7 @@ Color settings include:
|
||||||
|
|
||||||
The color palette is used to automatically color tagged time in reports.
|
The color palette is used to automatically color tagged time in reports.
|
||||||
When creating a color theme, the palette should be larger rather than smaller.
|
When creating a color theme, the palette should be larger rather than smaller.
|
||||||
It is recommended that you provide at least 16 colors, otherwise Timewarrior cycles through them and you'll see repetitions.
|
It is recommended that you provide at least 16 colors, otherwise Timewarrior cycles through them, and you'll see repetitions.
|
||||||
|
|
||||||
## Share Your Theme
|
## Share Your Theme
|
||||||
|
|
||||||
|
|
|
@ -503,7 +503,7 @@ void Database::initializeTagDatabase ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We always want the tag database file to exists.
|
// We always want the tag database file to exist.
|
||||||
_tagInfoDatabase = TagInfoDatabase();
|
_tagInfoDatabase = TagInfoDatabase();
|
||||||
AtomicFile::write (_location + "/tags.data", _tagInfoDatabase.toJson ());
|
AtomicFile::write (_location + "/tags.data", _tagInfoDatabase.toJson ());
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// An exclusion represents untrackable time such as holidays, weekends, evenings
|
// An exclusion represents untrackable time such as holidays, weekends, evenings
|
||||||
// and lunch. By default there are none, but they may be configured. Once there
|
// and lunch. There are none by default, but they may be configured. Once there
|
||||||
// are exclusions defined, the :fill functionality is enabled.
|
// are exclusions defined, the :fill functionality is enabled.
|
||||||
//
|
//
|
||||||
// Exclusions are instantiated from configuration, and are passed here as name/
|
// Exclusions are instantiated from configuration, and are passed here as name/
|
||||||
|
|
|
@ -203,7 +203,7 @@ Range Range::intersect (const Range& other) const
|
||||||
{
|
{
|
||||||
if (overlaps (other))
|
if (overlaps (other))
|
||||||
{
|
{
|
||||||
// Intersection is choosing the later of the two starts, and the earlier of
|
// Intersection is choosing the later one of the two starts, and the earlier one of
|
||||||
// the two ends, provided the two ranges overlap.
|
// the two ends, provided the two ranges overlap.
|
||||||
Range result;
|
Range result;
|
||||||
result.start = start > other.start ? start : other.start;
|
result.start = start > other.start ? start : other.start;
|
||||||
|
|
|
@ -36,7 +36,7 @@ int CmdCancel (
|
||||||
{
|
{
|
||||||
const bool verbose = rules.getBoolean ("verbose");
|
const bool verbose = rules.getBoolean ("verbose");
|
||||||
|
|
||||||
// If there is an open interval, cancel it by deleting it..
|
// If there is an open interval, cancel it by deleting it
|
||||||
auto latest = getLatestInterval (database);
|
auto latest = getLatestInterval (database);
|
||||||
|
|
||||||
if (!latest.is_open ())
|
if (!latest.is_open ())
|
||||||
|
|
|
@ -150,7 +150,7 @@ std::vector <Interval> expandLatest (const Interval& latest, const Rules& rules)
|
||||||
|
|
||||||
// If flatten() converted the latest interval into a group of synthetic
|
// If flatten() converted the latest interval into a group of synthetic
|
||||||
// intervals, the number of returned intervals will be greater than 1,
|
// intervals, the number of returned intervals will be greater than 1,
|
||||||
// otherwise, it just returned the non-synthetic latest interval.
|
// otherwise, it just returned the non-synthetic, latest interval.
|
||||||
if (flattened.size () > 1)
|
if (flattened.size () > 1)
|
||||||
{
|
{
|
||||||
std::reverse (flattened.begin (), flattened.end ());
|
std::reverse (flattened.begin (), flattened.end ());
|
||||||
|
@ -494,7 +494,7 @@ std::vector <Range> getUntracked (
|
||||||
else if (found_match)
|
else if (found_match)
|
||||||
{
|
{
|
||||||
// If we already had a match, and now we do not, since the database is in
|
// If we already had a match, and now we do not, since the database is in
|
||||||
// order from most recent to oldest inclusion, we can be sure that there
|
// order from most recent to the oldest inclusion, we can be sure that there
|
||||||
// will not be any further matches.
|
// will not be any further matches.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ class MetaTest(type):
|
||||||
func = meta.make_function(classname, *args, **kwargs)
|
func = meta.make_function(classname, *args, **kwargs)
|
||||||
|
|
||||||
# Rename the function after a unique identifier
|
# Rename the function after a unique identifier
|
||||||
# Name of function must start with test_ to be ran by unittest
|
# Name of function must start with test_ to be run by unittest
|
||||||
func.__name__ = "test_{0}".format(i)
|
func.__name__ = "test_{0}".format(i)
|
||||||
|
|
||||||
# Attach the new test to the test class
|
# Attach the new test to the test class
|
||||||
|
|
|
@ -160,7 +160,7 @@ class Timew(object):
|
||||||
*not* fail if program finishes abnormally.
|
*not* fail if program finishes abnormally.
|
||||||
|
|
||||||
If you wish to pass instructions to timew such as confirmations or other
|
If you wish to pass instructions to timew such as confirmations or other
|
||||||
input via stdin, you can do so by providing a input string.
|
input via stdin, you can do so by providing an input string.
|
||||||
Such as input="y\ny\n".
|
Such as input="y\ny\n".
|
||||||
|
|
||||||
If merge_streams=True stdout and stderr will be merged into stdout.
|
If merge_streams=True stdout and stderr will be merged into stdout.
|
||||||
|
@ -195,7 +195,7 @@ class Timew(object):
|
||||||
*fail* if program finishes abnormally.
|
*fail* if program finishes abnormally.
|
||||||
|
|
||||||
If you wish to pass instructions to timew such as confirmations or other
|
If you wish to pass instructions to timew such as confirmations or other
|
||||||
input via stdin, you can do so by providing a input string.
|
input via stdin, you can do so by providing an input string.
|
||||||
Such as input="y\ny\n".
|
Such as input="y\ny\n".
|
||||||
|
|
||||||
If merge_streams=True stdout and stderr will be merged into stdout.
|
If merge_streams=True stdout and stderr will be merged into stdout.
|
||||||
|
|
|
@ -121,7 +121,7 @@ class TestStart(TestCase):
|
||||||
self.assertIn("Tracking bar foo", out)
|
self.assertIn("Tracking bar foo", out)
|
||||||
|
|
||||||
def test_start_with_less_tags_than_current_tracking(self):
|
def test_start_with_less_tags_than_current_tracking(self):
|
||||||
"""Test 'start' with less tags than current tracking should start new tracking"""
|
"""Test 'start' with fewer tags than current tracking should start new tracking"""
|
||||||
self.t("start 1h ago foo bar")
|
self.t("start 1h ago foo bar")
|
||||||
|
|
||||||
code, out, err = self.t("start foo")
|
code, out, err = self.t("start foo")
|
||||||
|
|
|
@ -235,7 +235,7 @@ class TestStop(TestCase):
|
||||||
self.assertClosedInterval(j[0])
|
self.assertClosedInterval(j[0])
|
||||||
|
|
||||||
def test_stop_with_id_should_suggest_modify_command(self):
|
def test_stop_with_id_should_suggest_modify_command(self):
|
||||||
"""Stop does not work with with ids, suggest modify command instead"""
|
"""Stop does not work with ids, suggest modify command instead"""
|
||||||
self.t("start 2h ago")
|
self.t("start 2h ago")
|
||||||
self.t("start 1h ago")
|
self.t("start 1h ago")
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@ W{5: <{width}} {2:%Y-%m-%d} {2:%a} @1 BAZ 10:00:00 11:00:00 1:00:00 1:00:00
|
||||||
"-", " ", width=week_col_padding), out)
|
"-", " ", width=week_col_padding), out)
|
||||||
|
|
||||||
def test_with_all_hint_and_first_interval_later_in_day(self):
|
def test_with_all_hint_and_first_interval_later_in_day(self):
|
||||||
"""Summary should handle :all hint with first interval that starts later in day than latest interval"""
|
"""Summary should handle :all hint with first interval that starts later in day than the latest interval"""
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
yesterday = now - timedelta(days=1)
|
yesterday = now - timedelta(days=1)
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ class TestTag(TestCase):
|
||||||
self.assertIn("At least one tag must be specified.", err)
|
self.assertIn("At least one tag must be specified.", err)
|
||||||
|
|
||||||
def test_add_tag_to_closed_interval(self):
|
def test_add_tag_to_closed_interval(self):
|
||||||
"""Add a tag to an closed interval"""
|
"""Add a tag to a closed interval"""
|
||||||
now_utc = datetime.now().utcnow()
|
now_utc = datetime.now().utcnow()
|
||||||
one_hour_before_utc = now_utc - timedelta(hours=1)
|
one_hour_before_utc = now_utc - timedelta(hours=1)
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ class TestTag(TestCase):
|
||||||
self.assertOpenInterval(j[0], expectedTags=["bar", "foo"])
|
self.assertOpenInterval(j[0], expectedTags=["bar", "foo"])
|
||||||
|
|
||||||
def test_add_tags_to_closed_interval(self):
|
def test_add_tags_to_closed_interval(self):
|
||||||
"""Add tags to an closed interval"""
|
"""Add tags to a closed interval"""
|
||||||
now_utc = datetime.now().utcnow()
|
now_utc = datetime.now().utcnow()
|
||||||
one_hour_before_utc = now_utc - timedelta(hours=1)
|
one_hour_before_utc = now_utc - timedelta(hours=1)
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,7 @@ class TestUntag(TestCase):
|
||||||
self.assertOpenInterval(j[0], expectedTags=["baz"])
|
self.assertOpenInterval(j[0], expectedTags=["baz"])
|
||||||
|
|
||||||
def test_remove_tags_from_closed_interval(self):
|
def test_remove_tags_from_closed_interval(self):
|
||||||
"""Remove tags from an closed interval"""
|
"""Remove tags from a closed interval"""
|
||||||
now_utc = datetime.now().utcnow()
|
now_utc = datetime.now().utcnow()
|
||||||
one_hour_before_utc = now_utc - timedelta(hours=1)
|
one_hour_before_utc = now_utc - timedelta(hours=1)
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# write-failure-test.py - Make sure the test will fail t
|
# write-failure-test.py - Make sure the test will fail t
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
|
|
||||||
import atexit
|
|
||||||
import filecmp
|
import filecmp
|
||||||
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from basetest import Timew, TestCase
|
from basetest import Timew, TestCase
|
||||||
|
@ -35,7 +33,7 @@ class WrappedTimew(Timew):
|
||||||
"""Invoke timew with given arguments
|
"""Invoke timew with given arguments
|
||||||
|
|
||||||
If you wish to pass instructions to timew such as confirmations or other
|
If you wish to pass instructions to timew such as confirmations or other
|
||||||
input via stdin, you can do so by providing a input string.
|
input via stdin, you can do so by providing an input string.
|
||||||
Such as input="y\ny\n".
|
Such as input="y\ny\n".
|
||||||
|
|
||||||
If merge_streams=True stdout and stderr will be merged into stdout.
|
If merge_streams=True stdout and stderr will be merged into stdout.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue