| author | Radek Brich <radek.brich@devl.cz> | 
| Fri, 25 Jul 2014 15:15:16 +0200 | |
| changeset 106 | db4c582a2abd | 
| parent 104 | d8ff52a0390f | 
| permissions | -rwxr-xr-x | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 1 | #!/usr/bin/env python3 | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 2 | |
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 3 | """ | 
| 104 | 4 | Wrapper script for pydbkit tools. | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 5 | |
| 102 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 6 | Usage | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 7 | ----- | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 8 | |
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 9 | pgtool --list | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 10 | List all available tools. | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 11 | |
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 12 | pgtool <tool_name> <arg_1> <arg_2> ... | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 13 | Run tool. All args except first one are forwarded to the tool. | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 14 | |
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 15 | pgtool schemadiff db1 db2 | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 16 | E.g. run schemadiff between db1 and db2. | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 17 | |
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 18 | pgtool schemadiff --help | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 19 | Get help for tool parameters. | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 20 | |
| 102 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 21 | Configuration | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 22 | ------------- | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 23 | |
| 104 | 24 | Global pydbkit configuration: | 
| 25 | /etc/pydbkit.conf | |
| 102 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 26 | |
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 27 | Local configuration: | 
| 104 | 28 | ./pydbkit.conf | 
| 102 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 29 | |
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 30 | Additional config file can be loaded using -c parameter (after tool name). | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 31 | |
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 32 | Configuration from all present files is loaded in above order, | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 33 | later value overrides previous value. Resulting config file priority is: | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 34 | |
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 35 | 1) parameter | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 36 | 2) local | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 37 | 3) global | 
| 
fda45bdfd68d
Update ToolBase: Load cascade of config files, add -c parameter.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
101diff
changeset | 38 | |
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 39 | """ | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 40 | |
| 104 | 41 | import pydbkit.tools | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 42 | import sys | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 43 | from importlib import import_module | 
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 44 | |
| 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 45 | |
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 46 | def print_tool_with_short_desc(name): | 
| 104 | 47 |     module = import_module('pydbkit.tools.' + tool)
 | 
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 48 | short_desc = module.cls.__doc__.lstrip().splitlines()[0] | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 49 | print(name.ljust(15), '-', short_desc) | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 50 | |
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 51 | |
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 52 | if __name__ == '__main__': | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 53 | if len(sys.argv) < 2: | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 54 | print(__doc__, end='') | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 55 | sys.exit() | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 56 | |
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 57 |     if sys.argv[1].startswith('--'):
 | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 58 | if sys.argv[1] == '--list': | 
| 104 | 59 | for tool in pydbkit.tools.__all__: | 
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 60 | print_tool_with_short_desc(tool) | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 61 | else: | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 62 | print(__doc__, end='') | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 63 | sys.exit() | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 64 | |
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 65 | tool = sys.argv[1] | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 66 | tool_args = sys.argv[2:] | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 67 | |
| 104 | 68 | if tool not in pydbkit.tools.__all__: | 
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 69 |         print('Unknown tool "%s".\n\nCall "pgtool --list" to get list of all available tools.' % tool)
 | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 70 | sys.exit() | 
| 100 
d6088dba8fea
Add pgtool wrapper for all tools. Only this script will be installed into system bin.
 Radek Brich <brich.radek@ifortuna.cz> parents: diff
changeset | 71 | |
| 104 | 72 |     module = import_module('pydbkit.tools.' + tool)
 | 
| 101 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 73 | |
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 74 | tool = module.cls() | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 75 | tool.setup(tool_args) | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 76 | tool.main() | 
| 
2a2d0d5df03b
Refactor ToolBase to allow tool composition. Add TableSync tool (composited). Move more tools under pgtool.
 Radek Brich <brich.radek@ifortuna.cz> parents: 
100diff
changeset | 77 |