adding creation of batch file

This commit is contained in:
Charley Peng 2014-05-29 09:40:58 +10:00
parent 371c0af156
commit 538aeee2b2
1 changed files with 50 additions and 4 deletions

View File

@ -1,10 +1,54 @@
from distutils.core import setup
import os
from os.path import join as pjoin, splitext, split as psplit
from distutils.command.install_scripts import install_scripts
from distutils import log
BAT_TEMPLATE = \
r"""@echo off
REM wrapper to use shebang first line of {FNAME}
set mypath=%~dp0
set pyscript="%mypath%{FNAME}"
set /p line1=<%pyscript%
if "%line1:~0,2%" == "#!" (goto :goodstart)
echo First line of %pyscript% does not start with "#!"
exit /b 1
:goodstart
set py_exe=%line1:~2%
call %py_exe% %pyscript% %*
"""
class my_install_scripts(install_scripts):
def run(self):
install_scripts.run(self)
if not os.name == "nt":
return
for filepath in self.get_outputs():
# If we can find an executable name in the #! top line of the script
# file, make .bat wrapper for script.
with open(filepath, 'rt') as fobj:
first_line = fobj.readline()
if not (first_line.startswith('#!') and
'python' in first_line.lower()):
log.info("No #!python executable found, skipping .bat "
"wrapper")
continue
pth, fname = psplit(filepath)
froot, ext = splitext(fname)
bat_file = pjoin(pth, froot + '.bat')
bat_contents = BAT_TEMPLATE.replace('{FNAME}', fname)
log.info("Making %s wrapper for %s" % (bat_file, filepath))
if self.dry_run:
continue
with open(bat_file, 'wt') as fobj:
fobj.write(bat_contents)
data = [
('/usr/share/zsh/site-functions', ['cheat/autocompletion/_cheat.zsh']),
('/etc/bash_completion.d' , ['cheat/autocompletion/cheat.bash']),
('/usr/share/fish/completions' , ['cheat/autocompletion/cheat.fish'])
('/usr/share/zsh/site-functions', ['cheat/autocompletion/_cheat.zsh']),
('/etc/bash_completion.d' , ['cheat/autocompletion/cheat.bash']),
('/usr/share/fish/completions' , ['cheat/autocompletion/cheat.fish'])
]
if os.name == 'nt':
@ -34,5 +78,7 @@ setup(
install_requires = [
'docopt >= 0.6.1',
'pygments >= 1.6.0',
]
],
cmdclass = {'install_scripts': my_install_scripts}
)