123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/usr/bin/env python2
- # Import python libs
- import sys
- # Import salt libs
- import salt.scripts
- import salt.utils.platform
- def get_avail():
- '''
- Return the available salt commands
- '''
- ret = []
- for fun in dir(salt.scripts):
- if fun.startswith('salt'):
- ret.append(fun[5:])
- return ret
- def redirect():
- '''
- Change the args and redirect to another salt script
- '''
- avail = get_avail()
- if len(sys.argv) < 2:
- msg = 'Must pass in a salt command, available commands are:'
- for cmd in avail:
- msg += '\n{0}'.format(cmd)
- print(msg)
- sys.exit(1)
- cmd = sys.argv[1]
- if cmd not in avail:
- # Fall back to the salt command
- sys.argv[0] = 'salt'
- s_fun = salt.scripts.salt_main
- else:
- sys.argv[0] = 'salt-{0}'.format(cmd)
- sys.argv.pop(1)
- s_fun = getattr(salt.scripts, 'salt_{0}'.format(cmd))
- s_fun()
- if __name__ == '__main__':
- if salt.utils.platform.is_windows():
- # Since this file does not have a '.py' extension, when running on
- # Windows, spawning any addional processes will fail due to Python
- # not being able to load this 'module' in the new process.
- # Work around this by creating a '.pyc' file which will enable the
- # spawned process to load this 'module' and proceed.
- import os.path
- import py_compile
- cfile = os.path.splitext(__file__)[0] + '.pyc'
- if not os.path.exists(cfile):
- py_compile.compile(__file__, cfile)
- redirect()
|