gif-for-cli
gif-for-cli copied to clipboard
Windows cmd.exe and Powershell support
How can this be run on Windows cmd.exe and Powershell?
I'm not sure, it'll likely require changes to run in a Windows env. From what I've read, cmd.exe may not support ANSI escape codes before Windows 10, and in Windows 10 you may need to configure ANSI support yourself.
Ok. But Powershell does support ANSI escape codes. Check https://github.com/PoshCode/Pansies.
Ok. Have you tried installing or using on Windows? What errors did you get?
Please specify the steps to install the dependencies on Windows.
According to the code dependencies are installed by setup.py clone the repository cmd or powershell with : git clone https://github.com/google/gif-for-cli.git
Change directory to gif-for-cli : cd gif-for-cli
Then install the dependencies using setup.py: python setup.py install
If you do that you'll end up with:
Traceback (most recent call last):
File "setup.py", line 33, in
os.symlink('../third_party', symlink_path)
AttributeError: 'module' object has no attribute 'symlink'
Due to some peculiarities with the way Python packing works, the install script has to temporarily create a symbolic link to that dir. It'll probably have to change for Windows.
If you guys want to work on a PR for Windows support it would be much appreciated. :)
Why is a symbolic link needed for third party dependencies at all. Can't it just be packaged as a single folder?
I needed to include a font for the export feature, and it's Google policy to put all 3rd party code in the third_party dir. I tried a number of different ways, but I couldn't get that directory to consistently be included in the .whl and .tar.gz distributions. The best way to ensure the needed files would be available after install was to make it a Python module, but I didn't want third_party
to be a top level module name, as it's too generic, I wanted it to be gif_for_cli.third_party
. After several failed attempts to map the third_party dir to that module name, it seemed the easiest/only way was to just add a temporary symlink.
Seems a bit daft but I guess you could add Windows support for symlink...though that would require an elevated command prompt to install.
if os.name == "nt":
def symlink_ms(source, link_name):
import ctypes
csl = ctypes.windll.kernel32.CreateSymbolicLinkW
csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32)
csl.restype = ctypes.c_ubyte
flags = 1 if os.path.isdir(source) else 0
try:
if csl(link_name, source.replace('/', '\\'), flags) == 0:
raise ctypes.WinError()
except:
pass
os.symlink = symlink_ms
As per Windows 10 Creators Update, elevated command prompt is not mandatory anymore to create symlinks. Refer, this.
Linux subsystem on Windows works with this at present.Type bash in cmd.exe (yeah it's still in cmd.exe) and deploy it like Linux.