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.
