Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows cmd.exe and Powershell support #5

Open
paritosh149 opened this issue Jun 15, 2018 · 12 comments
Open

Windows cmd.exe and Powershell support #5

paritosh149 opened this issue Jun 15, 2018 · 12 comments

Comments

@paritosh149
Copy link

How can this be run on Windows cmd.exe and Powershell?

@SeanHayes
Copy link
Contributor

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.

@paritosh149
Copy link
Author

Ok. But Powershell does support ANSI escape codes. Check https://github.com/PoshCode/Pansies.

@SeanHayes
Copy link
Contributor

Ok. Have you tried installing or using on Windows? What errors did you get?

@paritosh149
Copy link
Author

Please specify the steps to install the dependencies on Windows.

@Bgumel
Copy link

Bgumel commented Jun 18, 2018

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

@GarethWright
Copy link

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'

@SeanHayes
Copy link
Contributor

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. :)

@paritosh149
Copy link
Author

Why is a symbolic link needed for third party dependencies at all. Can't it just be packaged as a single folder?

@SeanHayes
Copy link
Contributor

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.

@GarethWright
Copy link

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

@paritosh149
Copy link
Author

As per Windows 10 Creators Update, elevated command prompt is not mandatory anymore to create symlinks. Refer, this.

@cybort
Copy link

cybort commented Jun 21, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants