hledger-forecast 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.gitignore +13 -2
- data/README.md +3 -2
- data/example.yml +8 -0
- data/hledger-forecast.gemspec +0 -2
- data/lib/hledger_forecast/generator.rb +3 -0
- data/lib/hledger_forecast/version.rb +1 -1
- data/spec/half-yearly_spec.rb +13 -0
- data/spec/stubs/half-yearly/forecast_half-yearly.yml +10 -0
- data/spec/stubs/half-yearly/output_half-yearly.journal +20 -0
- metadata +8 -3
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efe6bca69db97f1f08539e609f7f6db6af22d40c5cf514dce6e543fbc34cd442
|
4
|
+
data.tar.gz: 21ccaeb1bbfd846e5cf7afc3da4ffa17a9064a851380ed17b09d4efeb517d197
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ede280944f144b0b055068d5f8e919ab48f2534299dbbd2ff51c599ce1f57a7a1cb7ea72474e0d08a6f3ec27ab17b9ba06ebfe8de7319d7a87d9815648297ffa
|
7
|
+
data.tar.gz: 1d19fdf61f57e622e734797ce304d4b0337d5942b27aaefcb90965593ecf0a769d811f457ea5424a4eb22e989d6babd562d1cf15f2a556edf103a2430301fb3c
|
data/.github/workflows/ci.yml
CHANGED
data/.gitignore
CHANGED
@@ -1,10 +1,21 @@
|
|
1
|
-
|
1
|
+
# Bundler
|
2
2
|
.bundle
|
3
3
|
Gemfile.lock
|
4
|
+
pkg/*
|
4
5
|
*.gem
|
5
6
|
|
7
|
+
# Project
|
8
|
+
.rbenv-version
|
9
|
+
.rbx
|
10
|
+
.rvmrc
|
11
|
+
.ruby-version
|
12
|
+
.ruby-gemset
|
13
|
+
|
14
|
+
# Spec artifacts
|
15
|
+
/coverage
|
16
|
+
|
17
|
+
# Misc
|
6
18
|
forecast.yml
|
7
19
|
forecast.journal
|
8
20
|
test_output.journal
|
9
|
-
|
10
21
|
todo.md
|
data/README.md
CHANGED
@@ -73,16 +73,17 @@ Let's examine what's going on in this config file:
|
|
73
73
|
|
74
74
|
- Firstly, we're telling the app to create two monthly transactions and repeat them, forever, starting from March 2023. In this case, forever will be the `end_date` specified when running the app
|
75
75
|
- If you ran the app with `hledger-forecast -s 2023-04-01` then no transactions would be generated for March as the start date is greater than the periodic start date
|
76
|
-
- Notice we're also using [virtual postings](https://hledger.org/1.29/hledger.html#virtual-postings) (designated by the brackets)
|
76
|
+
- Notice we're also using [virtual postings](https://hledger.org/1.29/hledger.html#virtual-postings) (designated by the brackets). This makes it easy to filter them out with the `-R` or `--real` option in Hledger
|
77
77
|
- We also have not specified a currency; the default (`USD`) will be used
|
78
78
|
|
79
79
|
### Extending the config file
|
80
80
|
|
81
81
|
#### Periods
|
82
82
|
|
83
|
-
If you'd like to add quarterly, yearly or one-off transactions, use the following keys:
|
83
|
+
If you'd like to add quarterly, half-yearly, yearly or one-off transactions, use the following keys:
|
84
84
|
|
85
85
|
- `quarterly`
|
86
|
+
- `half-yearly`
|
86
87
|
- `yearly`
|
87
88
|
- `once`
|
88
89
|
|
data/example.yml
CHANGED
@@ -17,6 +17,14 @@ quarterly:
|
|
17
17
|
category: "[Income:Bonus]"
|
18
18
|
description: Bonus
|
19
19
|
|
20
|
+
half-yearly:
|
21
|
+
- account: "[Assets:Bank]"
|
22
|
+
date: "2023-04-01"
|
23
|
+
transactions:
|
24
|
+
- amount: 500
|
25
|
+
category: "[Expenses:Holiday]"
|
26
|
+
description: Holiday
|
27
|
+
|
20
28
|
yearly:
|
21
29
|
- account: "[Assets:Bank]"
|
22
30
|
date: "2023-04-01"
|
data/hledger-forecast.gemspec
CHANGED
@@ -12,8 +12,6 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.homepage = 'https://github.com/olimorris/hledger-forecast'
|
13
13
|
s.license = 'MIT'
|
14
14
|
|
15
|
-
s.required_ruby_version = '>= 3.0.0'
|
16
|
-
|
17
15
|
s.add_dependency "highline", "~> 2.1.0"
|
18
16
|
s.add_dependency "money", "~> 6.16.0"
|
19
17
|
s.add_development_dependency 'rspec', '~> 3.12'
|
@@ -48,6 +48,8 @@ module HledgerForecast
|
|
48
48
|
date.day == start_date.day
|
49
49
|
when 'quarterly'
|
50
50
|
date.day == start_date.day && date.month % 3 == start_date.month % 3
|
51
|
+
when 'half-yearly'
|
52
|
+
date.day == start_date.day && (date.month - start_date.month) % 6 == 0
|
51
53
|
when 'yearly'
|
52
54
|
date.day == start_date.day && date.month == start_date.month
|
53
55
|
when 'once'
|
@@ -81,6 +83,7 @@ module HledgerForecast
|
|
81
83
|
while date <= end_date
|
82
84
|
process_forecast(output, forecast_data, 'monthly', date)
|
83
85
|
process_forecast(output, forecast_data, 'quarterly', date)
|
86
|
+
process_forecast(output, forecast_data, 'half-yearly', date)
|
84
87
|
process_forecast(output, forecast_data, 'yearly', date)
|
85
88
|
process_forecast(output, forecast_data, 'once', date)
|
86
89
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative '../lib/hledger_forecast'
|
2
|
+
|
3
|
+
RSpec.describe 'generate' do
|
4
|
+
it 'generates a forecast with correct HALF-YEARLY transactions' do
|
5
|
+
transactions = File.read('spec/stubs/transactions.journal')
|
6
|
+
forecast = File.read('spec/stubs/half-yearly/forecast_half-yearly.yml')
|
7
|
+
|
8
|
+
generated_journal = HledgerForecast::Generator.create_journal_entries(transactions, forecast, '2023-03-01', '2024-04-30')
|
9
|
+
|
10
|
+
expected_output = File.read('spec/stubs/half-yearly/output_half-yearly.journal')
|
11
|
+
expect(generated_journal).to eq(expected_output)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
2023-02-01 * Opening balance
|
2
|
+
Assets:Bank £1,000.00
|
3
|
+
Equity:Opening balance
|
4
|
+
|
5
|
+
2023-02-05 * Mortgage payment
|
6
|
+
Expenses:Mortgage £1,500.00
|
7
|
+
Assets:Bank
|
8
|
+
|
9
|
+
2023-04-01 * Holiday
|
10
|
+
[Expenses:Holiday] £500.00
|
11
|
+
[Assets:Bank]
|
12
|
+
|
13
|
+
2023-10-01 * Holiday
|
14
|
+
[Expenses:Holiday] £500.00
|
15
|
+
[Assets:Bank]
|
16
|
+
|
17
|
+
2024-04-01 * Holiday
|
18
|
+
[Expenses:Holiday] £500.00
|
19
|
+
[Assets:Bank]
|
20
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hledger-forecast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oli Morris
|
@@ -63,7 +63,6 @@ files:
|
|
63
63
|
- ".github/workflows/ci.yml"
|
64
64
|
- ".gitignore"
|
65
65
|
- ".rubocop.yml"
|
66
|
-
- ".ruby-version"
|
67
66
|
- Gemfile
|
68
67
|
- LICENSE
|
69
68
|
- README.md
|
@@ -76,9 +75,12 @@ files:
|
|
76
75
|
- lib/hledger_forecast/options.rb
|
77
76
|
- lib/hledger_forecast/version.rb
|
78
77
|
- spec/command_spec.rb
|
78
|
+
- spec/half-yearly_spec.rb
|
79
79
|
- spec/monthly_spec.rb
|
80
80
|
- spec/once_spec.rb
|
81
81
|
- spec/quarterly_spec.rb
|
82
|
+
- spec/stubs/half-yearly/forecast_half-yearly.yml
|
83
|
+
- spec/stubs/half-yearly/output_half-yearly.journal
|
82
84
|
- spec/stubs/monthly/forecast_monthly.yml
|
83
85
|
- spec/stubs/monthly/forecast_monthly_enddate.yml
|
84
86
|
- spec/stubs/monthly/forecast_monthly_enddate_top.yml
|
@@ -107,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
109
|
requirements:
|
108
110
|
- - ">="
|
109
111
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
112
|
+
version: '0'
|
111
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
114
|
requirements:
|
113
115
|
- - ">="
|
@@ -120,9 +122,12 @@ specification_version: 4
|
|
120
122
|
summary: Utility to generate forecasts in Hledger
|
121
123
|
test_files:
|
122
124
|
- spec/command_spec.rb
|
125
|
+
- spec/half-yearly_spec.rb
|
123
126
|
- spec/monthly_spec.rb
|
124
127
|
- spec/once_spec.rb
|
125
128
|
- spec/quarterly_spec.rb
|
129
|
+
- spec/stubs/half-yearly/forecast_half-yearly.yml
|
130
|
+
- spec/stubs/half-yearly/output_half-yearly.journal
|
126
131
|
- spec/stubs/monthly/forecast_monthly.yml
|
127
132
|
- spec/stubs/monthly/forecast_monthly_enddate.yml
|
128
133
|
- spec/stubs/monthly/forecast_monthly_enddate_top.yml
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
3.0.0
|