For the particular problem of finding an executable, can't you use
System.find_executable/1?



*José Valim*
www.plataformatec.com.br
Skype: jv.ptec
Founder and Director of R&D

On Wed, Jan 4, 2017 at 6:22 PM, Onorio Catenacci <[email protected]>
wrote:

> Hi all,
>
> Recently I've been working on some utility Elixir scripts. One of the
> scripts I was working on was a "Work In Progress" script for checking my
> current progress into git.  The thing that I ran across that was
> interesting to me is (I hope) demonstrated by the code below:
>
> # We may want to memoize this at some point in the future but it hardly
> seems worth the extra complication right now.
>   defp find_exe(command_to_find, default_command) do
>     case {command, _} = System.cmd 
> get_correct_search_command(),[command_to_find]
> do
>       {_,1} -> default_command
>       {_,0} -> String.trim(command,get_correct_line_ending())
>     end
>   end
>
>   defp get_correct_line_ending() do
>     case {_osfamily, _} = :os.type() do
>       {:unix,_} -> "\n"
>       {:win32,_} -> "\r\n"
>       {:ose,_} -> "\n"
>       {_,_} -> "\n" # This should not ever get hit
>     end
>   end
>
>   defp get_correct_search_command() do
>     case {_osfamily, _} = :os.type() do
>       {os,_} when os in [:unix,:ose] -> "which"
>       {:win32,_} -> "where"
>     end
>   end
>
> I'm trying to find the git command on the path.  As far as I know on Linux
> and OSX that's "which" and on Windows it's "where".  But the thing is
> "where" returns the string with a "\r\n" at the end.  I can trim this but,
> of course, I need to figure out the right line ending for the OS I'm
> currently on.  I confess I didn't try this on Linux or Mac to see if
> "which" behaves the same or not but I can see some utility to knowing which
> line-ending is present on your current OS as part of the standard System
> module.
>
> I don't think there's anything in the System module to simply get the
> correct line-ending for the current OS--at least I couldn't find it.  I
> could swear that Jose mentioned to me once that there's something
> internally to get the correct line ending for the current OS.  Could we
> maybe expose the current correct line ending?  Maybe
> System.os_specific_line_ending or something of that sort?  As I say, I
> recall Jose mentioning something to me about this in the past and if we've
> already discussed it and decided against it, I apologize.  I didn't turn up
> anything on a search of the archives.
>
> Does this seem like a good idea? Thoughts? Criticisms? :)
>
> oc
>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/elixir-lang-core/6cc54b36-3215-46f3-8d77-
> 73e6cd50604c%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/6cc54b36-3215-46f3-8d77-73e6cd50604c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4KerWb8%3DKi76HX1U8K3dgQn5vsrP5%2BjM6UpA7uVz0Re%3DA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to