Commit Graph

886 Commits

Author SHA1 Message Date
f60e97d5bf When merging two configuration files, error gracefully if the two files do not adhere to the same format.
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-26 16:46:09 -07:00
44f9ab95f9 Fix typos (#575).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-26 14:37:23 -07:00
bb6004fc4f Revamp "borg" action to support REPOSITORY and ARCHIVE env vars instead of implicitly injecting repository/archive into the Borg command (#575). 2023-06-26 14:35:07 -07:00
b242078f54 Fix an error when running "borg key export" through borgmatic (#719).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-26 09:30:46 -07:00
b9a11e860d Remove legacy configuration parsing code, no longer needed with upgrade-borgmatic-config gone (#529). 2023-06-25 15:36:25 -07:00
b62017be4b Fix edge case in which "--config somepath.yaml" followed by an action alias (e.g. init for rcreate) wasn't parsed correctly (#716).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-24 15:35:10 -07:00
35a11559ac Fix error parsing arguments with multiple verbosity flags (#716).
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-24 14:10:47 -07:00
e4e455ee45 Deprecate validate-borgmatic-config in favor of new "config validate" action (#529).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-23 10:11:41 -07:00
68d90e1e40
feat: allow restoring to different port/host/username (#326).
Merge pull request #73 from diivi/feat/restore-with-different-hostname-port-username
2023-06-22 12:28:34 -07:00
1b90da5bf1 Deprecate generate-borgmatic-config in favor if new "config generate" action (#529).
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-21 12:19:49 -07:00
248f82d6f6 Fix for another subaction argument-parsing edge case (#712).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-21 10:41:32 -07:00
147516ae3f Remove additional upgrade-borgmatic-config code (#529).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-20 09:41:26 -07:00
b10aee3070 Remove upgrade-borgmatic-config command for upgrading borgmatic 1.1.0 INI-style configuration (#529).
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-19 23:17:59 -07:00
6098005f5d Fix an error when "data" check time files are accessed without getting upgraded first (#711, #713).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-19 23:07:57 -07:00
7b8be800a4 Refactor arguments parsing to fix bootstrap action CLI issues (#712).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-19 16:18:47 -07:00
9016dcc418 all e2e tests 2023-06-18 05:47:35 +05:30
e53dd3da87 fix witten reported mysql error 2023-06-17 22:58:59 +05:30
ee2ebb79b8 Find sub-actions for an action without an isinstance() check.
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-16 10:57:01 -07:00
89602d1614 pass all existing tests (and formatting) 2023-06-16 15:14:00 +05:30
c294e78715 Use absolute paths when storing configuration files in an archive for later bootstrapping (#697).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-15 21:45:43 -07:00
8389851f2f fix bug where port becomes truthy when none is converted to str 2023-06-15 23:34:50 +05:30
bbc7f0596c Fix Bash completion for sub-actions like "borgmatic config bootstrap" (#697 follow-on work).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-15 10:55:31 -07:00
82d851d891 add argument for restore path 2023-06-15 23:05:53 +05:30
62b6f13299 add restore-path support for sqlite 2023-06-15 23:02:09 +05:30
b7423c488e refactor password assignment logic 2023-06-15 22:54:06 +05:30
a9386b7a87 add mongodb support, and sqlite restore path (config option only) 2023-06-15 02:18:24 +05:30
205e5b1524 mysql support 2023-06-15 01:47:46 +05:30
67f4d43aec witten review 2023-06-15 01:37:18 +05:30
230cf6adc4 support command line args for hostname port username password 2023-06-14 00:11:19 +05:30
8e8e64d920 add no-owner and refactor 2023-06-13 23:42:50 +05:30
f558cb3156 feat: allow restoring to different port/host/username 2023-06-12 21:54:39 +05:30
670bdffb3c Code formatting.
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-10 19:25:49 -07:00
691d4f887a Fix incorrect log message (#697).
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-10 16:02:03 -07:00
beb899d6fb Make user-facing manifest loading error messages a little friendlier (#697).
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-10 15:50:11 -07:00
0f9756e739 Fix failing test and add "bootstrap" action to CLI reference docs (#697).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-10 15:17:18 -07:00
d84f1ec616 Add bootstrap action to NEWS and make post-PR tweaks (#697).
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-10 14:52:00 -07:00
ef409ad23c
Store configs used to create an archive in the archive and add borgmatic bootstrap (#697).
Merge pull request #71 from diivi/feat/store-config-in-archive
2023-06-10 14:39:53 -07:00
197920d9ef improve tests and some docstrings. 2023-06-09 17:31:57 +05:30
3315555d06 cleaner test 2023-06-09 00:21:41 +05:30
6475345a8f attempt to test parse_subparser_arguments 2023-06-08 01:02:43 +05:30
f90d30e0e1 remove duplicate comments 2023-06-08 00:08:39 +05:30
dc56fd33a0 formatting 2023-06-07 01:47:16 +05:30
4b024daae0 pass all tests with wittens recommendation 2023-06-06 23:37:09 +05:30
6a1d1a2e59 fix indentation error that caused too many test failures 2023-06-05 20:31:09 +05:30
206a9c9607 edit schema comments and work on witten review 2023-06-05 20:05:10 +05:30
c61d63b235 Use open() to test for file existance and readability
Signed-off-by: Felix Kaechele <felix@kaechele.ca>
2023-06-04 00:54:29 -04:00
ba0899660d Verify that schema path exists before returning it
Signed-off-by: Felix Kaechele <felix@kaechele.ca>
2023-06-03 23:42:20 -04:00
15cabb93ca Drop importlib_metadata entirely
The fallback option using the dirname of the config module location
seems to be more robust in a number of cases.

Signed-off-by: Felix Kaechele <felix@kaechele.ca>
2023-06-03 23:42:20 -04:00
ce6daff12f Fix importlib.metadata.files workaround
Some distributions, such as Fedora, do not install the RECORDS file as
part of a package's dist-info. As a result importlib.metadata.files will
return None.

Use the workaround for these cases as well.

Signed-off-by: Felix Kaechele <felix@kaechele.ca>
2023-06-03 23:42:20 -04:00
caf654366c Document work-around for colons in YAML strings (#708).
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-03 10:19:34 -07:00
bb60b25399 merge subparsers and refactor 2023-06-02 02:04:35 +05:30
74aa28e027 support more flags 2023-06-01 16:53:34 +05:30
1784ca5910 Fix "check" action error when repository and archive checks are configured but the archive check gets skipped due to the configured frequency (#704).
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-30 23:19:33 -07:00
341bd4118d Fix "--archive latest" on "list" and "info" actions only working on the first of multiple configured repositories (#706).
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-30 16:53:55 -07:00
a7f81d538d nit changes
- help strings in borgmatic commands
- test fixes in test_logger and test_borgmatic

Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-29 01:09:00 +05:30
4c60bf84d7 extract config files 2023-05-28 01:36:32 +05:30
dbb778a4d6 finish parsing and add error for empty config subcommand 2023-05-26 22:44:31 +05:30
0283f9ae2a fix help string
Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-26 08:57:12 +05:30
09f59ad97d disable monitoring hooks if monitoring_log_level is set to DISABLED
Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-26 08:57:12 +05:30
5a9bb4b97f update help strings
Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-26 08:57:12 +05:30
6a2eb1f157 make value of disabled level higher
so that no other log has higher priority

Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-26 08:57:12 +05:30
99473c30a8 disable sending logs in Healthchecks
Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-26 08:57:12 +05:30
f512d1e460 add verbosity level -2
Signed-off-by: Soumik Dutta <shalearkane@gmail.com>
2023-05-26 08:57:12 +05:30
96adee444b Potential fix for nested subparsers not parsing correctly. 2023-05-25 15:03:15 -07:00
8b7996dfda removed parents and used reversed remaining_args 2023-05-26 01:07:11 +05:30
2241de11c0 start work on borgmatic config bootstrap command 2023-05-26 00:26:13 +05:30
84c21b062f Fix incorrect argument ordering (#659).
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-23 16:55:40 -07:00
00e9bb011a test should mock out make_flags_from_arguments
Signed-off-by: Chirag Aggarwal <thechiragaggarwal@gmail.com>
2023-05-20 09:23:09 -04:00
ee32b076eb update tests and formatting 2023-05-16 23:17:35 +05:30
e3425f48be Instead of taking the first check time found, take the maximum value (#688)
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-16 10:20:52 -07:00
b45e45f161 Partial conversion of showing repository labels in logs instead of paths (part of #635).
Some checks are pending
continuous-integration/drone/push Build is running
2023-05-16 09:36:50 -07:00
b10148844b change config_paths var name to used_config_paths to avoid collisions 2023-05-16 14:00:23 +05:30
645d29b040 Fix archive checks being skipped even when particular archives haven't been checked recently (#688).
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-15 23:17:45 -07:00
49b4d371ce create and add content to borgmatic-manifest.json 2023-05-16 00:24:19 +05:30
1bc7bb4971 feat: store configs used to create an archive in the archive 2023-05-15 23:04:42 +05:30
8eb05b840a Log a warning when "borgmatic borg" is run with an action that borgmatic natively supports (#694). 2023-05-14 09:59:28 -07:00
403ae0f698 Clarify configuration comment about source_directories also accepting files (#693).
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-09 10:14:03 -07:00
92a2230a07 Add support for logging each log line as a JSON object via global "--log-json" flag (#680).
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-08 23:00:49 -07:00
b3b08ee6d7 Fix error in "borgmatic restore" action when the configured repository path is relative (#691).
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-07 21:21:35 -07:00
4aae7968b8
Add fish shell completions support (#686).
Merge pull request #70 from isaec/feat/fish-completions
2023-05-06 16:00:25 -07:00
43c532bc57
add test for dedent strip 2023-05-06 11:51:35 -07:00
efb81fc2c1
rename last arg helper function to current arg for clarity 2023-05-06 11:42:32 -07:00
c8f4344f89
add more justification to checks 2023-05-06 11:39:02 -07:00
a047f856a1
tweak docstring, add comment 2023-05-06 11:37:38 -07:00
d732059979
fix rotted comments 2023-05-06 11:32:10 -07:00
aa564ac5fe
fix the error thrown, unit test for it, and add string explanations 2023-05-06 11:25:15 -07:00
372622fbb1
add more doccomments, drop a check 2023-05-06 10:46:27 -07:00
469e0ccace
create doccomments, start writing unit tests 2023-05-06 10:42:06 -07:00
59a6ce1462
replace double quotes with single quotes 2023-05-05 00:03:43 -07:00
5a7a1747f2
add safety check to avoid infinite cat hang 2023-05-05 00:01:45 -07:00
b557d635fd
async validity check 2023-05-04 23:57:37 -07:00
d59b9b817f
support required actions 2023-05-04 23:44:54 -07:00
16ac4824a5
handle typed without default params 2023-05-04 23:42:04 -07:00
3592ec3ddf
dont show deprecated options 2023-05-04 23:32:09 -07:00
8f3039be23
handle the expanding filters better 2023-05-04 23:23:29 -07:00
b4a38d8be9
fix flag showing up for paths 2023-05-04 23:06:11 -07:00
d962376a9d
refactor to only show specific options if possible 2023-05-04 21:58:30 -07:00
193731a017
rename function 2023-05-04 21:14:48 -07:00
bbc3e9d717
show possible choices 2023-05-04 21:12:24 -07:00
639e88262e
create working file completion 2023-05-04 20:17:26 -07:00
f12a10d888
start work on conditional file completion 2023-05-04 19:50:49 -07:00
28efc85660
rearrange to improve legability of the file 2023-05-04 18:11:13 -07:00
f1fd2e88dd
drop blank completion 2023-05-04 13:49:29 -07:00
700f8e9d9c
replace .format with fstring 2023-05-04 13:39:48 -07:00
f04036e4a7
use fstring to produce completion lines 2023-05-04 13:33:21 -07:00
062453af51
replace actionStr with action_name 2023-05-04 13:29:25 -07:00
9ff5ea5240
add a unit test, fix isort and black 2023-05-04 13:22:09 -07:00
359afe5318 Error if --list is used with --json for create action (#680).
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-03 17:16:36 -07:00
0b397a5bf9 Fix borgmatic error when not finding the configuration schema for certain "pip install --editable" development installs (#687).
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-30 16:24:10 -07:00
a60d7fd173 Run "borgmatic borg" action without capturing output so interactive prompts and flags like "--progress" still work.
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-30 15:43:41 -07:00
98e3a81fcf
allow file completions as applicable 2023-04-28 12:42:26 -07:00
9c77ebb016
continue deduping 2023-04-28 12:15:01 -07:00
23f478ce74
use less completion lines 2023-04-28 12:13:08 -07:00
d265b6ed6f
add comments in generated files 2023-04-28 11:57:16 -07:00
2e658cfa56
only allow one parser 2023-04-27 21:57:50 -07:00
412d18f218
show sub options 2023-04-27 21:31:53 -07:00
8060586d8b
fix the script and drop unneeded options 2023-04-27 20:05:17 -07:00
25b3db72a0
make more precise, fix the version check fn 2023-04-27 19:58:22 -07:00
5678f3a96e
basic working version 2023-04-27 19:44:11 -07:00
28b152aedd
make upgrade message a template 2023-04-27 19:31:42 -07:00
0009471f67
start work on completion 2023-04-27 18:46:13 -07:00
a62ac42cca Merge branch 'main' into borg2-archive-flags 2023-04-27 16:57:29 +00:00
68ee9687f5 Added tests for all subcommands and used black formatter
Signed-off-by: Chirag Aggarwal <thechiragaggarwal@gmail.com>
2023-04-27 22:27:23 +05:30
96aca4f446 Updated existing tests to use new parameters
Signed-off-by: Chirag Aggarwal <thechiragaggarwal@gmail.com>
2023-04-24 20:24:41 +05:30
5962fd473e Another try. Backing out psql error changes (#678).
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-21 10:34:50 -07:00
a14870ce48 Expand source directories when checking for existence (#682). 2023-04-21 05:52:04 +00:00
da0f5a34f2 Fix multiple bugs in PostgreSQL hook (#678).
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #677
2023-04-21 04:05:22 +00:00
065be1d9d4 More inclusive language.
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-20 14:28:04 -07:00
9f5769f87b Make docs/schema a little more container agnostic / less Docker specific.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2023-04-16 15:41:17 -07:00
1ee56805f1 Merge remote-tracking branch 'upstream/master' into borg2-archive-flags 2023-04-15 17:29:20 +05:30
8cb5a42a9e Drop deprecated pkg_resources in favor of importlib.metadata and packaging.
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-14 21:21:25 -07:00
5dbb71709c Upgrade test requirements and code style requirements. Auto-reformat code accordingly.
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-14 19:35:24 -07:00
81e167959b
feat: restore specific schemas (#375).
Merge pull request #67 from diivi/feat/restore-specific-schemas
2023-04-14 16:26:25 -07:00
f273e82d74 add tests 2023-04-15 02:57:51 +05:30
17f122bfe5 Use psql instead of pg_restore when format is "plain"
pg_restore: error: input file appears to be a text format dump. Please use psql.
2023-04-14 17:38:19 +02:00
f0f43174c6 Swap if-else in restore_database_dump in postgresql hook for cleanliness 2023-04-14 17:38:19 +02:00
dfccc1b94a Exit on error when restoring all PostgreSQL databases
"--set ON_ERROR_STOP=on" is equivalent to "--exit-on-error" in
pg_restore.
2023-04-14 17:38:18 +02:00
195024e505 Fix psql_command and pg_restore_command to accept command with arguments
These commands are executed without `shell=True`, so the subprocess
module treats e.g. "docker exec my_pg_container psql" as a single command
(resulting in Errno 2 "No such file or directory") instead of a command
with arguments.
2023-04-14 17:37:38 +02:00
19a00371f5 Run "psql" with "--no-psqlrc"
Some settings in user's .psqlrc, e.g. "linestyle unicode", may break the
CSV output. "--no-psqlrc" tells psql to not read startup file.

This is not necessary for the analyze_command and restore_command (with
all_databases), but it's generally recommended when running psql from a
script.
2023-04-14 17:37:37 +02:00
874fba7672 Fix PostgreSQL hook not using "psql_command" for list when dumping "all" 2023-04-14 15:13:49 +02:00
4a94c2c9bf Selectively omit list values when including configuration files (#672).
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-13 14:39:36 -07:00
1ea4433aa9 Selectively shallow merge certain mappings or sequences when including configuration files (#672).
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-11 21:49:10 -07:00
2fea429d78 collection restore for mongodb 2023-04-12 09:34:19 +05:30
264cebd2b1 complete psql multi schema backup 2023-04-11 23:19:49 +05:30
4c0e2cab78 View the results of configuration file merging via "validate-borgmatic-config --show" flag (#673).
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-11 10:49:09 -07:00
b4b1fa939d
feat: add logfile name to hook context for interpolation
Merge pull request #68 from diivi/feat/add-log-filename-to-hook-context
2023-04-06 13:46:45 -07:00
16d7131fb7 refactor tests 2023-04-07 01:00:38 +05:30
091d60c226 refactor and improve tests 2023-04-06 12:36:10 +05:30
0fbdf8d860 feat: add logfile name to hook context for interpolation 2023-04-06 09:31:24 +05:30
192bfe46a9 Fix error when running the "prune" action with both "archive_name_format" and "prefix" options set (#668).
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-05 14:58:05 -07:00