Commit Graph

3696 Commits

Author SHA1 Message Date
Simon Michael
9b6d3da677 ;cabal: update cabal files 2025-04-09 10:58:54 -10:00
Simon Michael
ee3b6c29ce ;pkg: allow ghc 9.12 2025-04-09 10:58:52 -10:00
Michael Rees
62071bc4c2 feat: timeclock: Add support for multiple clocked in sessions (#2141)
We now support having multiple sessions clocked in. These are paired by
account name if given on the out entry, and otherwise an out closes the
most recent in entry.

Note that this breaks some backwards compatibility, in that we
previously ignored the description on the clock out entry. To mitigate
this, a new hidden flag --timeclock-old has been added, which reverts to
the old behavior.
2025-04-03 11:19:18 -10:00
Simon Michael
2ff2fd1594 ;pkg: simplify LICENSE (try to fix github license detection) 2025-03-31 19:12:38 -10:00
Simon Michael
fb584e7e8b ;pkg: simplify LICENSE, add AUTHORS.md (try to fix github license detection) 2025-03-31 19:05:19 -10:00
Simon Michael
4535796d94 ;pkg: drop unused 2012 ledger parsing code
and possibly github-confusing license file
2025-03-31 19:04:14 -10:00
Simon Michael
20226283b8 ;pkg: tweak LICENSE files, try to get github to recognise 2025-03-31 18:18:10 -10:00
Simon Michael
47bb40f838 ;pkg: clean up LICENSE files, main module licensing headers 2025-03-31 18:10:19 -10:00
Simon Michael
8d1a8d3799 ;cabal: update cabal files 2025-03-31 17:40:30 -10:00
Simon Michael
ed6cef5c00 ;pkg: clean up package.yaml files
Consistent layout.
Group metadata at the top in similar order to `cabal format`.
2025-03-31 17:25:41 -10:00
Simon Michael
775507c2d4 ;pkg:cabal: specify GPLv3+ exactly; require cabal 2.2+ [#2359]
Previously our cabal files used cabal-version 1.12, and were in theory
buildable with any ancient version of cabal.  Now at least cabal 2.2
(or a version of stack built with with similar Cabal version) is
required to build hledger.
2025-03-31 16:55:36 -10:00
Simon Michael
b6ec245647 ;cabal: update cabal files 2025-03-31 16:33:50 -10:00
Simon Michael
cb6a9b2f97 ;pkg:cabal: update tested-with in all package.yamls 2025-03-31 16:27:40 -10:00
Thomas Miedema
e7cc2f1066 ;dev: lib: drop base-compat dependency 2025-03-31 16:21:38 -10:00
Thomas Miedema
4d5ff3fe4e ;dev: make doctest happy on ghc-8.10.7 2025-03-31 16:18:09 -10:00
Thomas Miedema
bf3d1b6b49 ;dev: extra >= 1.7.11 is required
Commit ff28aa32 introduced usage of Data.List.Extra.groupOnKey, which
first came with extra-1.7.11.

Fixes stack8.10.yaml build hopefully.
2025-03-31 16:18:09 -10:00
Simon Michael
efff1cfdb5 ;doc: finalise changelogs for 1.42.1 on 2025-03-12 2025-03-12 21:35:24 -10:00
Simon Michael
be1e921dca ;doc: update changelogs 2025-03-12 21:35:24 -10:00
Simon Michael
133560aa93 ;dev: csv: no need to test for unsupported feature [#2352] 2025-03-12 20:40:36 -10:00
Thomas Miedema
a8a0d3ee30 fix: csv: fix regression in parsing rules containing & (#2352) 2025-03-12 20:35:59 -10:00
Simon Michael
f7aec96db1 ;doc:changelogs: cleanups 2025-03-07 21:22:19 -10:00
Simon Michael
4e5506da1e ;cabal: update cabal files 2025-03-07 18:49:08 -10:00
Simon Michael
10c523c057 ;pkg: set version to 1.42.99 2025-03-07 18:49:07 -10:00
Simon Michael
fd0bcdfede ;doc: finalise changelogs for 1.42 on 2025-03-06 2025-03-07 06:36:53 -10:00
Simon Michael
8184d20b9f ;doc: update changelogs 2025-03-07 06:36:15 -10:00
Simon Michael
e25cd526b7 ;doc: update embedded manuals 2025-03-06 16:05:55 -10:00
Dmitry Astapov
1fc7006919 run: cache input files by (iopts, name), allows commands with different iopts 2025-03-06 11:54:00 -10:00
Simon Michael
d47107ab7a ;dev:readJournal: doc 2025-03-06 05:39:23 -10:00
Simon Michael
874771d47c dev:readJournal: assume default file name "-" rather than "(string)" [#2328]
"-" implies data from standard input so "string" is perhaps more
correct, but I think this is a harmless simplification and it
makes `files` output consistent when run by `run`.
2025-03-06 05:13:37 -10:00
Simon Michael
cb373447db fix:cli:paging: support older less, don't pass --use-color [#2335]
Older less versions (eg 551) require --use-colour, and break if --use-color is passed. So we no longer attempt to enable colour in less by default.
2025-03-04 16:38:25 -10:00
Thomas Miedema
2faceb8e1b feat: csv: allow multiple matchers on the same line
`If blocks` and `If tables` now allow multiple matchers on the same line
separated by `&&` (AND) or `&& !` (AND NOT).

Example `if block` with two matchers on the same line:

	if %description amazon && %date 2025-02-22
	    account2 expenses:books

Example `if table` with two matchers on the same line:

	if,account2
	%description amazon && %date 2025-02-22, expenses:books
2025-03-01 11:21:00 -10:00
Simon Michael
d346e56b79 dev: fix warnings, update yaml file, edit [#2340] 2025-02-27 13:41:48 -10:00
gesh
a24c39f13f fix: Use POSIX API to compute tty width (#2332)
On some systems, TERM is set to a value that doesn't have a valid
terminfo entry. Rather than hackily fall back on a value for TERM that
appears to work in most contexts (TERM=dumb) but which isn't guaranteed
anywhere to be valid, use proper POSIX ioctls to get the tty width.

This has the added bonus of also working on Windows.

In fact, we already settled on computing the terminal size in this way
in hledger-lib, so this commit centralizes the choice of the logic
there.

Also added a note for alternative methods and their tradeoffs, in case
this turns out to be fragile on some systems.
2025-02-27 13:41:48 -10:00
Thomas Miedema
5129a94bd7
;cln: unittest.hs: remove bothersome PackageImports (#2337)
When running `cd hledger-lib && ghci test/unittest.hs`, ghci complains
with:

```
  test/unittest.hs:7:1: error:
      Could not find module ‘Hledger’
      It is not a module in the current program, or in any known package.
    |
  7 | import "hledger-lib" Hledger (tests_Hledger)
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  Failed, no modules loaded.
```

This commit removes the "hledger-lib" package-qualified import, such
that above ghci command works as expected.

However, there is a comment in hledger-lib/test/unittest.hs that says:

> package-qualified import to avoid cabal missing-home-modules warning
> (and double-building ?)

The missing-home-modules warning and the double building can indeed be
reproduced by running (after removing the "hledger-lib"
package-qualified import): `cd hledger-lib && cabal build unittest`. It
will first build `hledger-lib`, then show a warning about
missing-home-modules, and then build `hledger-lib` again.

After comparing the unittest sections of hledger.cabal and
hledger-lib.cabal, the solution turned out to be to remove `./` from
hs-source-dirs for unittest. Don't ask me why though!

Overall it's a nice cleanup.
2025-02-26 11:54:59 -10:00
Joschua Kesper
5114962b2a feat:csv: add an encoding rule, allowing non-UTF8 CSV to be read [#2319]
Previously, hledger could read CSV files containing non-ascii
characters only if they are UTF8-encoded.  Now there is a new CSV
rule, encoding ENCODING, which allows reading CSV files with other
encodings.

This adds a dependency on the encoding library, which supports fewer
encodings than text-icu but does not require a third-party C library.
To avoid build issues on various platforms, we require version 0.10+.

This adds some use of the ImplicitParams language extension, required
by encoding's API, but only in a small code region.

This also changes the type of Reader's rReadFn; it now takes
a `Handle` rather than a `Text`, allowing more flexibility.
2025-02-15 14:48:30 -10:00
Simon Michael
39f3b2c7ba ;dev: doc 2025-01-31 02:04:40 -10:00
Simon Michael
63b939a201 imp:print: --invert now also negates balance assertion/assignment amounts [#2314] 2025-01-29 09:47:29 -10:00
Simon Michael
bbb06209e7 lib: +postingNegate 2025-01-29 09:42:15 -10:00
Simon Michael
0dca0911f3 lib: negatePostingAmount -> postingNegateMainAmount 2025-01-29 09:41:51 -10:00
Simon Michael
3e838e4d0f imp:print: support --invert [#2314] 2025-01-27 05:21:36 -10:00
Simon Michael
29885d15fa dev: refactor Hledger.Write.Html etc, reducing Lucid references
Clarify the HTML lib situation a bit, and clean up some imports.

Related: #2244
2025-01-25 11:53:51 -10:00
Simon Michael
14dd2c6200 dev: rename printHtml -> styledTableHtml 2025-01-25 11:53:51 -10:00
Simon Michael
adef1a8416 lib: add dropRawOpt, cliOptsDropArgs 2025-01-21 22:02:05 -10:00
Simon Michael
edfcd3554f lib: showAmountCost(B): drop leading whitespace 2025-01-15 16:28:43 -10:00
Simon Michael
e98af39e27 imp:pivot: support pivoting on amount (quantity) or cost 2025-01-15 13:47:04 -10:00
Simon Michael
e7e0b5c868 lib: Hledger.Data.Amount: showAmountCost 2025-01-15 13:22:03 -10:00
Simon Michael
90415875f5 imp:pivot: support pivoting on commodity symbol; doc improvements 2025-01-15 12:46:09 -10:00
Simon Michael
c23087f124 fix: show a week period beginning in the previous year correctly [#2304]
Eg the week beginning 2024-12-30 (which is week 1 of 2025 because the
thursday falls in 2025) was previously shown as 2024-W01, now 2025-W01.
2024-12-20 10:41:47 -10:00
Simon Michael
1a5353b988 dev: disable doctest testing error output, color breaks it 2024-12-20 08:51:38 -10:00
Simon Michael
aefa4e8f20 imp:cli: show first line of error messages in red
error' and usageError now redden and bolden the first line of error
messages, when ANSI codes are supported and permitted.
And warn goldens and boldens the first line of warning messages.
2024-12-20 08:51:38 -10:00