hledger-forecast 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|