m-cli icon indicating copy to clipboard operation
m-cli copied to clipboard

Fix hard coded default wi-fi interface

Open AHinMaine opened this issue 3 years ago • 2 comments

Right now, the default wifi interface is en0, however, it's not actually en0 on all devices, so commands like 'm wifi ls' simply returns the message "en0 is not a Wi-Fi interface."

As it sits, there's a few options:

  • Run something like networksetup -listallhardwareports | awk -F': ' '/Hardware Port: Wi-Fi/ { getline; print $2}' every single time. Ouch.
  • Tell people to populate the environment variable _W_DEVICE appropriately in their shell config. Meh.
  • During installation, run the previously mentioned networksetup command and then create a configuration script file in INSTALL_DIR/etc/m.conf (or somewhere better). So after installation that file would contain contain _W_DEVICE=en1 (or whatever networksetup actually found). Then have m source that config file at runtime.

I'd be happy to submit a PR based on consensus of what would be the preferred method. Thoughts?

Thanks!

AHinMaine avatar Oct 21 '21 01:10 AHinMaine

First off, thanks for raising this!

🤔 Ooh, configuration. We've not needed any thus far, so this is an interesting proposal.

Normally I'd be reluctant to add a config file for one setting, but I agree the other options are a little... lame. The other option is a runtime flag '-i interface', ala wpa_supplicant.

If you want to put a RFC/PR for a config proposal, it'd be good to see what that'd look like before we completely commit to it.

bensleveritt avatar Oct 25 '21 15:10 bensleveritt

Here's a vote for a command-line based parser thing like the first option. It's what I used in a previous PR (https://github.com/rgcr/m-cli/pull/135) and if it helps, this might be a little less ugly:

system_profiler SPNetworkDataType | grep -A1 AirPort | grep -o en.

incanus avatar Dec 29 '21 21:12 incanus