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

Support array args on windows #182

Merged
merged 1 commit into from
Jun 6, 2019
Merged

Conversation

lamont-granquist
Copy link
Contributor

@lamont-granquist lamont-granquist commented May 31, 2019

Implements correct quoting and escaping of arguments on windows.

That means that this works right now:

filename = 'c:\program files'
shell_out('dir', filename);

So all the defensive coding around quotes-around-filepaths -- which were
all actually buggy even when they worked (trailing backslashes would
fail) -- are unnecessary and arguments can just be passed in as an array
and this code will sort it out.

We rely on the existing determination of if metacharacters mean it needs
to run under cmd and if it needs the ^ quoting which seems to be well
tested, and which all runs after this does.

@lamont-granquist lamont-granquist changed the title WIP Support array args on windows WIP Jun 6, 2019
@lamont-granquist
Copy link
Contributor Author

lamont-granquist commented Jun 6, 2019

The appveyor breakage on ruby 2.4/2.5 also exists on master and is unrelated and is a pile of windows WTF:

https://ci.appveyor.com/project/chef/mixlib-shellout/builds/25078786

Copy link
Contributor

@zenspider zenspider left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mostly just need to double check one thing. The test comments are all soft suggestions.

lib/mixlib/shellout/windows.rb Outdated Show resolved Hide resolved
spec/mixlib/shellout/windows_spec.rb Outdated Show resolved Hide resolved
spec/mixlib/shellout/windows_spec.rb Show resolved Hide resolved
spec/mixlib/shellout/windows_spec.rb Outdated Show resolved Hide resolved
Implements correct quoting and escaping of arguments on windows.

That means that this works right now:

```ruby
filename = "c:\program files"
shell_out("dir", filename);
```

So all the defensive coding around quotes-around-filepaths -- which were
all actually buggy even when they worked (trailing backslashes would
fail) -- are unnecessary and arguments can just be passed in as an array
and this code will sort it out.

We rely on the existing determination of if metacharacters mean it needs
to run under cmd and if it needs the ^ quoting which seems to be well
tested, and which all runs after this does.

Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
@lamont-granquist lamont-granquist merged commit 5c86a66 into master Jun 6, 2019
@lamont-granquist lamont-granquist deleted the lcg/win-array-args branch June 6, 2019 22:42
@lamont-granquist lamont-granquist changed the title Support array args on windows WIP Support array args on windows Jun 6, 2019
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

Successfully merging this pull request may close these issues.

2 participants