db-sync-tool-kmi 2.11.6__py3-none-any.whl → 3.0.2__py3-none-any.whl

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.
Files changed (41) hide show
  1. db_sync_tool/__main__.py +7 -252
  2. db_sync_tool/cli.py +733 -0
  3. db_sync_tool/database/process.py +94 -111
  4. db_sync_tool/database/utility.py +339 -121
  5. db_sync_tool/info.py +1 -1
  6. db_sync_tool/recipes/drupal.py +87 -12
  7. db_sync_tool/recipes/laravel.py +7 -6
  8. db_sync_tool/recipes/parsing.py +102 -0
  9. db_sync_tool/recipes/symfony.py +17 -28
  10. db_sync_tool/recipes/typo3.py +33 -54
  11. db_sync_tool/recipes/wordpress.py +13 -12
  12. db_sync_tool/remote/client.py +206 -71
  13. db_sync_tool/remote/file_transfer.py +303 -0
  14. db_sync_tool/remote/rsync.py +18 -15
  15. db_sync_tool/remote/system.py +2 -3
  16. db_sync_tool/remote/transfer.py +51 -47
  17. db_sync_tool/remote/utility.py +29 -30
  18. db_sync_tool/sync.py +52 -28
  19. db_sync_tool/utility/config.py +367 -0
  20. db_sync_tool/utility/config_resolver.py +573 -0
  21. db_sync_tool/utility/console.py +779 -0
  22. db_sync_tool/utility/exceptions.py +32 -0
  23. db_sync_tool/utility/helper.py +155 -148
  24. db_sync_tool/utility/info.py +53 -20
  25. db_sync_tool/utility/log.py +55 -31
  26. db_sync_tool/utility/logging_config.py +410 -0
  27. db_sync_tool/utility/mode.py +85 -150
  28. db_sync_tool/utility/output.py +122 -51
  29. db_sync_tool/utility/parser.py +33 -53
  30. db_sync_tool/utility/pure.py +93 -0
  31. db_sync_tool/utility/security.py +79 -0
  32. db_sync_tool/utility/system.py +277 -194
  33. db_sync_tool/utility/validation.py +2 -9
  34. db_sync_tool_kmi-3.0.2.dist-info/METADATA +99 -0
  35. db_sync_tool_kmi-3.0.2.dist-info/RECORD +44 -0
  36. {db_sync_tool_kmi-2.11.6.dist-info → db_sync_tool_kmi-3.0.2.dist-info}/WHEEL +1 -1
  37. db_sync_tool_kmi-2.11.6.dist-info/METADATA +0 -276
  38. db_sync_tool_kmi-2.11.6.dist-info/RECORD +0 -34
  39. {db_sync_tool_kmi-2.11.6.dist-info → db_sync_tool_kmi-3.0.2.dist-info}/entry_points.txt +0 -0
  40. {db_sync_tool_kmi-2.11.6.dist-info → db_sync_tool_kmi-3.0.2.dist-info/licenses}/LICENSE +0 -0
  41. {db_sync_tool_kmi-2.11.6.dist-info → db_sync_tool_kmi-3.0.2.dist-info}/top_level.txt +0 -0
db_sync_tool/__main__.py CHANGED
@@ -1,262 +1,17 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: future_fstrings -*-
3
2
 
4
3
  """
5
- Main script
6
- """
7
-
8
- import argparse
9
- import os
10
- import sys
11
- from collections import defaultdict
12
-
13
- # Workaround for ModuleNotFoundError
14
- sys.path.append(os.getcwd())
15
- from db_sync_tool import sync
16
- from db_sync_tool.utility import helper
4
+ Main entry point for db_sync_tool CLI.
17
5
 
6
+ Uses typer for modern CLI with grouped help output and shell completion.
7
+ """
18
8
 
19
- def main(args=None):
20
- """
21
- Main entry point for the command line. Parse the arguments and call to the main process.
22
- :param args:
23
- :return:
24
- """
25
- if args is None:
26
- args = {}
27
-
28
- args = get_arguments(args)
29
- sync.Sync(
30
- config_file=args.config_file,
31
- verbose=args.verbose,
32
- yes=args.yes,
33
- mute=args.mute,
34
- dry_run=args.dry_run,
35
- import_file=args.import_file,
36
- dump_name=args.dump_name,
37
- keep_dump=args.keep_dump,
38
- host_file=args.host_file,
39
- clear=args.clear_database,
40
- force_password=args.force_password,
41
- use_rsync=args.use_rsync,
42
- use_rsync_options=args.use_rsync_options,
43
- reverse=args.reverse,
44
- args=args
45
- )
46
-
9
+ from db_sync_tool.cli import run
47
10
 
48
- def get_arguments(args):
49
- """
50
- Parses and returns script arguments
51
- :param args:
52
- :return:
53
- """
54
- parser = argparse.ArgumentParser(prog='db_sync_tool',
55
- description='A tool for automatic database synchronization from '
56
- 'and to host systems.')
57
- parser.add_argument('origin',
58
- help='Origin database defined in host file',
59
- nargs='?',
60
- type=str)
61
- parser.add_argument('target',
62
- help='Target database defined in host file',
63
- nargs='?',
64
- type=str)
65
- parser.add_argument('-f', '--config-file',
66
- help='Path to configuration file',
67
- required=False,
68
- type=str)
69
- parser.add_argument('-v', '--verbose',
70
- help='Enable extended console output',
71
- required=False,
72
- action='store_true')
73
- parser.add_argument('-y', '--yes',
74
- help='Skipping user confirmation for database import',
75
- required=False,
76
- action='store_true')
77
- parser.add_argument('-m', '--mute',
78
- help='Mute console output',
79
- required=False,
80
- action='store_true')
81
- parser.add_argument('-dr', '--dry-run',
82
- help='Testing process without running database export, transfer or import.',
83
- required=False,
84
- action='store_true')
85
- parser.add_argument('-i', '--import-file',
86
- help='Import database from a specific file dump',
87
- required=False,
88
- type=str)
89
- parser.add_argument('-dn', '--dump-name',
90
- help='Set a specific dump file name (default is "_[dbname]_[date]")',
91
- required=False,
92
- type=str)
93
- parser.add_argument('-kd', '--keep-dump',
94
- help='Skipping target import of the database dump and saving the available dump file in the '
95
- 'given directory',
96
- required=False,
97
- type=str)
98
- parser.add_argument('-o', '--host-file',
99
- help='Using an additional hosts file for merging hosts information with the configuration file',
100
- required=False,
101
- type=str)
102
- parser.add_argument('-l', '--log-file',
103
- help='File path for creating a additional log file',
104
- required=False,
105
- type=str)
106
- parser.add_argument('-cd', '--clear-database',
107
- help='Dropping all tables before importing a new sync to get a clean database.',
108
- required=False,
109
- action='store_true')
110
- parser.add_argument('-ta', '--tables',
111
- help='Defining specific tables to export, e.g. --tables=table1,table2',
112
- required=False,
113
- type=str)
114
- parser.add_argument('-r', '--reverse',
115
- help='Reverse origin and target hosts',
116
- required=False,
117
- action='store_true')
118
- parser.add_argument('-t', '--type',
119
- help='Defining the framework type [TYPO3, Symfony, Drupal, Wordpress]',
120
- required=False,
121
- type=str)
122
- parser.add_argument('-tp', '--target-path',
123
- help='File path to target database credential file depending on the framework type',
124
- required=False,
125
- type=str)
126
- parser.add_argument('-tn', '--target-name',
127
- help='Providing a name for the target system',
128
- required=False,
129
- type=str)
130
- parser.add_argument('-th', '--target-host',
131
- help='SSH host to target system',
132
- required=False,
133
- type=str)
134
- parser.add_argument('-tu', '--target-user',
135
- help='SSH user for target system',
136
- required=False,
137
- type=str)
138
- parser.add_argument('-tpw', '--target-password',
139
- help='SSH password for target system',
140
- required=False,
141
- type=str)
142
- parser.add_argument('-tk', '--target-key',
143
- help='File path to SSH key for target system',
144
- required=False,
145
- type=str)
146
- parser.add_argument('-tpo', '--target-port',
147
- help='SSH port for target system',
148
- required=False,
149
- type=int)
150
- parser.add_argument('-tdd', '--target-dump-dir',
151
- help='Directory path for database dump file on target system',
152
- required=False,
153
- type=str)
154
- parser.add_argument('-tkd', '--target-keep-dumps',
155
- help='Keep dump file count for target system',
156
- required=False,
157
- type=int)
158
- parser.add_argument('-tdn', '--target-db-name',
159
- help='Database name for target system',
160
- required=False,
161
- type=str)
162
- parser.add_argument('-tdh', '--target-db-host',
163
- help='Database host for target system',
164
- required=False,
165
- type=str)
166
- parser.add_argument('-tdu', '--target-db-user',
167
- help='Database user for target system',
168
- required=False,
169
- type=str)
170
- parser.add_argument('-tdpw', '--target-db-password',
171
- help='Database password for target system',
172
- required=False,
173
- type=str)
174
- parser.add_argument('-tdpo', '--target-db-port',
175
- help='Database port for target system',
176
- required=False,
177
- type=int)
178
- parser.add_argument('-tad', '--target-after-dump',
179
- help='Additional dump file to insert after the regular database import',
180
- required=False,
181
- type=int)
182
- parser.add_argument('-op', '--origin-path',
183
- help='File path to origin database credential file depending on the framework type',
184
- required=False,
185
- type=str)
186
- parser.add_argument('-on', '--origin-name',
187
- help='Providing a name for the origin system',
188
- required=False,
189
- type=str)
190
- parser.add_argument('-oh', '--origin-host',
191
- help='SSH host to origin system',
192
- required=False,
193
- type=str)
194
- parser.add_argument('-ou', '--origin-user',
195
- help='SSH user for origin system',
196
- required=False,
197
- type=str)
198
- parser.add_argument('-opw', '--origin-password',
199
- help='SSH password for origin system',
200
- required=False,
201
- type=str)
202
- parser.add_argument('-ok', '--origin-key',
203
- help='File path to SSH key for origin system',
204
- required=False,
205
- type=str)
206
- parser.add_argument('-opo', '--origin-port',
207
- help='SSH port for origin system',
208
- required=False,
209
- type=int)
210
- parser.add_argument('-odd', '--origin-dump-dir',
211
- help='Directory path for database dump file on origin system',
212
- required=False,
213
- type=str)
214
- parser.add_argument('-okd', '--origin-keep-dumps',
215
- help='Keep dump file count for origin system',
216
- required=False,
217
- type=int)
218
- parser.add_argument('-odn', '--origin-db-name',
219
- help='Database name for origin system',
220
- required=False,
221
- type=str)
222
- parser.add_argument('-odh', '--origin-db-host',
223
- help='Database host for origin system',
224
- required=False,
225
- type=str)
226
- parser.add_argument('-odu', '--origin-db-user',
227
- help='Database user for origin system',
228
- required=False,
229
- type=str)
230
- parser.add_argument('-odpw', '--origin-db-password',
231
- help='Database password for origin system',
232
- required=False,
233
- type=str)
234
- parser.add_argument('-odpo', '--origin-db-port',
235
- help='Database port for origin system',
236
- required=False,
237
- type=int)
238
- parser.add_argument('-fpw', '--force-password',
239
- help='Force password user query',
240
- required=False,
241
- action='store_true')
242
- parser.add_argument('-ur', '--use-rsync',
243
- help='Use rsync as transfer method',
244
- required=False,
245
- action='store_true')
246
- parser.add_argument('-uro', '--use-rsync-options',
247
- help='Additional rsync options',
248
- required=False,
249
- type=str)
250
- parser.add_argument('-w', '--where',
251
- help='Additional where clause for mysql dump to sync only selected rows',
252
- required=False,
253
- type=str)
254
- parser.add_argument('-amo', '--additional-mysqldump-options',
255
- help='Additional mysqldump options for creating the database dump, e.g. --additional-mysqldump-options="--where="deleted=0"',
256
- required=False,
257
- type=str)
258
11
 
259
- return parser.parse_args(helper.dict_to_args(args))
12
+ def main() -> None:
13
+ """Main entry point for the command line."""
14
+ run()
260
15
 
261
16
 
262
17
  if __name__ == "__main__":