mac-wifi 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +67 -59
- data/RELEASE_NOTES.md +8 -0
- data/exe/mac-wifi +1 -1052
- data/lib/mac-wifi/base_model.rb +221 -0
- data/lib/mac-wifi/command_line_interface.rb +417 -0
- data/lib/mac-wifi/mac_os_model.rb +297 -0
- data/lib/mac-wifi/main.rb +69 -0
- data/lib/mac-wifi/version.rb +5 -0
- data/lib/mac-wifi.rb +3 -0
- data/mac-wifi.gemspec +8 -4
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 033044a27585d2cb3a3e4920879921e77d91b661021c054118ff273c24386df0
|
4
|
+
data.tar.gz: 23cf93fcfb0dfef2130347c84fd53f78cc84a1a4b5cd54a7e0d864704aa60027
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff355af46081bf8377ad2347a6052f9387fe8ae0940c25e74da67bfc654f8c1cfe866a7e19ae8d1628ab108e7250f5b7f51a8bd3222129abcf32db6de0ccdfed
|
7
|
+
data.tar.gz: f2a4e67ebba29752fa85caf06f81fdc633c54af2bde9ccea34df4e5fa13e913bf9b6dadab7f1b7b2d47d81ba65e4097e881b5b740b1008918ba417d1a6cac8a6
|
data/README.md
CHANGED
@@ -1,20 +1,24 @@
|
|
1
1
|
# mac-wifi
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
To install this software, run:
|
4
|
+
|
5
|
+
`gem install mac-wifi`
|
6
|
+
|
7
|
+
or, you may need to precede that command with `sudo`:
|
8
|
+
|
9
|
+
`sudo gem install mac-wifi`
|
10
|
+
|
11
|
+
The `mac-wifi` script installed by this gem enables the query and management
|
12
|
+
of wifi configuration and environment on a Mac.
|
13
|
+
The code encapsulates the Mac OS specific logic in a minimal class
|
14
|
+
to more easily add support for other operating systems,
|
5
15
|
but as of now, only Mac OS is supported. (Feel free to add an OS!)
|
6
16
|
|
7
|
-
It can be run in single-command or interactive mode.
|
17
|
+
It can be run in single-command or interactive mode.
|
18
|
+
Interactive mode uses the [pry](https://github.com/pry/pry) gem,
|
8
19
|
providing an interface familiar to Rubyists and other
|
9
20
|
[REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) users.
|
10
21
|
|
11
|
-
It is not necessary to download this repo or even install this gem; the `bin/mac-wifi`
|
12
|
-
script file is all you need to run the application. There are many ways to install it
|
13
|
-
in this way; one way is by changing into the directory
|
14
|
-
where you would like to save the script, and running:
|
15
|
-
|
16
|
-
`curl -o mac-wifi https://raw.githubusercontent.com/keithrbennett/macwifi/master/exe/mac-wifi && chmod +x mac-wifi`
|
17
|
-
|
18
22
|
|
19
23
|
### Usage
|
20
24
|
|
@@ -24,7 +28,7 @@ output at the time of this writing:
|
|
24
28
|
```
|
25
29
|
$ mac-wifi h
|
26
30
|
|
27
|
-
Command Line Switches: [mac-wifi version 2.
|
31
|
+
Command Line Switches: [mac-wifi version 2.1.0]
|
28
32
|
|
29
33
|
-o[i,j,p,y] - outputs data in inspect, JSON, puts, or YAML format when not in shell mode
|
30
34
|
-s - run in shell mode
|
@@ -47,17 +51,17 @@ pa[ssword] network-name - password for preferred network-name
|
|
47
51
|
pr[ef_nets] - preferred (not necessarily available) networks
|
48
52
|
q[uit] - exits this program (interactive shell mode only) (see also 'x')
|
49
53
|
r[m_pref_nets] network-name - removes network-name from the preferred networks list
|
50
|
-
|
54
|
+
(can provide multiple names separated by spaces)
|
51
55
|
s[hell] - opens an interactive pry shell (command line only)
|
52
56
|
t[ill] - returns when the desired Internet connection state is true. Options:
|
53
|
-
|
54
|
-
|
57
|
+
1) 'on'/:on, 'off'/:off, 'conn'/:conn, or 'disc'/:disc
|
58
|
+
2) wait interval, in seconds (optional, defaults to 0.5 seconds)
|
55
59
|
w[ifion] - is the wifi on?
|
56
60
|
x[it] - exits this program (interactive shell mode only) (see also 'q')
|
57
61
|
|
58
62
|
When in interactive shell mode:
|
59
|
-
|
60
|
-
|
63
|
+
* use quotes for string parameters such as method names.
|
64
|
+
* for pry commands, use prefix `%`.
|
61
65
|
```
|
62
66
|
|
63
67
|
Internally, it uses several Mac command line utilities. This is not ideal,
|
@@ -79,16 +83,17 @@ You may need to precede this command with `sudo `, especially if you are using t
|
|
79
83
|
version of Ruby that comes packaged with MacOS.
|
80
84
|
|
81
85
|
|
82
|
-
### JSON and
|
86
|
+
### JSON, YAML, and Other Output Formats
|
83
87
|
|
84
|
-
You can specify that output in _noninteractive_ mode be in
|
85
|
-
|
88
|
+
You can specify that output in _noninteractive_ mode be in a certain format.
|
89
|
+
Currently, JSON, YAML, inspect, and puts formats are supported.
|
90
|
+
See the help for which command line switches to use.
|
86
91
|
|
87
92
|
|
88
93
|
### Seeing the Underlying OS Commands and Output
|
89
94
|
|
90
95
|
If you would like to see the Mac OS commands and their output,
|
91
|
-
you can do so by specifying "-v" on the command line.
|
96
|
+
you can do so by specifying "-v" (for _verbose) on the command line.
|
92
97
|
|
93
98
|
You may notice that some commands are executed more than once. This is to simplify the application logic
|
94
99
|
and eliminate the need for the complexity of balancing the speed that a cache offers and the risk
|
@@ -120,15 +125,16 @@ mac-wifi till conn && \
|
|
120
125
|
say -v Kyoko "Connected to my network."
|
121
126
|
```
|
122
127
|
|
123
|
-
(The `say` command supports all kinds of accents that are fun to play around with.
|
128
|
+
(The Mac OS `say` command supports all kinds of accents that are fun to play around with.
|
124
129
|
You can get a list of all of them by running `say -v "?"`)
|
125
130
|
|
131
|
+
|
126
132
|
### Using the Shell
|
127
133
|
|
128
|
-
|
129
|
-
This can be done by running `gem install pry; gem install pry-byebug
|
134
|
+
_If the program immediately exits when you try to run the shell, try upgrading `pry` and `pry-byebug`.
|
135
|
+
This can be done by running `gem install pry; gem install pry-byebug`._
|
130
136
|
|
131
|
-
The shell, invoked with the
|
137
|
+
The shell, invoked with the `-s` switch on the command line, provides an interactive
|
132
138
|
session. It can be useful when:
|
133
139
|
|
134
140
|
* you want to issue multiple commands
|
@@ -136,7 +142,7 @@ session. It can be useful when:
|
|
136
142
|
* you want the data in a format not provided by this application
|
137
143
|
* you want to incorporate these commands into other Ruby code interactively
|
138
144
|
* you want to combine the results of commands with other OS commands
|
139
|
-
(you can shell out to run other command line programs by preceding the command with a period (`.`).
|
145
|
+
(you can shell out to run other command line programs by preceding the command with a period (`.`)) .
|
140
146
|
|
141
147
|
|
142
148
|
### Using Variables in the Shell
|
@@ -185,20 +191,20 @@ the result may be mysterious. For example, if I were write the wifi information
|
|
185
191
|
to a file, this would work:
|
186
192
|
|
187
193
|
```
|
188
|
-
[1] pry(#<MacWifiView>)> File.write('x
|
194
|
+
[1] pry(#<MacWifiView>)> File.write('x', info)
|
189
195
|
=> 431
|
190
196
|
```
|
191
197
|
|
192
|
-
However, if I forget to quote the filename:
|
198
|
+
However, if I forget to quote the filename, the program exits:
|
193
199
|
|
194
200
|
```
|
195
|
-
[2] pry(#<MacWifiView>)> File.write(x
|
201
|
+
[2] pry(#<MacWifiView>)> File.write(x, info)
|
196
202
|
➜ mac-wifi git:(master) ✗
|
197
203
|
```
|
198
204
|
|
199
|
-
What happened? `x
|
200
|
-
`method_missing` was called, and since `x
|
201
|
-
|
205
|
+
What happened? `x` was assumed by Ruby to be a method name.
|
206
|
+
`method_missing` was called, and since `x` is the exit
|
207
|
+
command, the program exited.
|
202
208
|
|
203
209
|
Bottom line is, be careful to quote your strings, and you're probably better off using
|
204
210
|
constants or instance variables if you want to create variables in your shell.
|
@@ -223,8 +229,10 @@ mac-wifi t on && say "Internet connected" # Play audible message when Internet b
|
|
223
229
|
#### Interactive Shell Commands
|
224
230
|
|
225
231
|
When in shell mode, commands generally return the target object (e.g. the array of
|
226
|
-
available networks) rather than outputting a nicely formatted string.
|
227
|
-
|
232
|
+
available networks) rather than outputting a nicely formatted string.
|
233
|
+
This is intentional, so that you can compose expressions and in general
|
234
|
+
have maximum flexibility. The result may be that `pry` displays
|
235
|
+
that returned value in an ugly way.
|
228
236
|
|
229
237
|
If you don't need the return value but just want to display the value nicely,
|
230
238
|
you can use the `fancy_puts` method to output it nicely. An alias `fp` has been
|
@@ -239,17 +247,34 @@ provided for your convenience. You're welcome! For example:
|
|
239
247
|
]
|
240
248
|
```
|
241
249
|
|
242
|
-
|
243
|
-
|
244
|
-
|
250
|
+
For best display results, be sure `awesome_print` is `gem install`ed.
|
251
|
+
The program will silently use a not-as-nice formatter without it.
|
252
|
+
(This silence is intentional, so that users who don't want to install
|
253
|
+
`awesome-print` will not be bothered.)
|
254
|
+
|
255
|
+
If you want to suppress output altogether (e.g. if you are using the value in an
|
256
|
+
expression and don't need to see it displayed,
|
257
|
+
you can simply append `;nil` to the expression
|
258
|
+
and `nil` will be value output to the console. For example:
|
245
259
|
|
246
260
|
```
|
247
261
|
[10] pry(#<MacWifi::CommandLineInterface>)> available_networks = avail_nets; nil
|
248
262
|
=> nil
|
249
|
-
[11] pry(#<MacWifi::CommandLineInterface>)> avail_nets.size
|
250
|
-
=> 32
|
251
263
|
```
|
252
264
|
|
265
|
+
#### Using the Models Without the Command Line Interface
|
266
|
+
|
267
|
+
The code has been structured so that you can call the models
|
268
|
+
from your own Ruby code, bypassing the command line interface.
|
269
|
+
Here is an example of how to do that:
|
270
|
+
|
271
|
+
```ruby
|
272
|
+
require 'mac-wifi'
|
273
|
+
model = MacWifi::MacOsModel.new
|
274
|
+
puts model.available_network_names.to_yaml # etc...
|
275
|
+
```
|
276
|
+
|
277
|
+
|
253
278
|
**More Examples**
|
254
279
|
|
255
280
|
(For brevity, semicolons are used here to put multiple commands on one line,
|
@@ -296,27 +321,9 @@ Connected!
|
|
296
321
|
```
|
297
322
|
|
298
323
|
|
299
|
-
###
|
300
|
-
|
301
|
-
This code would be neater and easier to read if each class were in a file of its own.
|
302
|
-
The reason everything is in one file is to simplify distribution for some users.
|
303
|
-
Although installation as a gem is simple, being able to download a single file may work better when:
|
324
|
+
### Dependent Gems
|
304
325
|
|
305
|
-
|
306
|
-
* the user needs or wants to specify the exact location of the script (e.g. `~/bin`),
|
307
|
-
and/or does not want it buried in the gem directory tree (e.g. `/Users/kbennett/.rvm/gems/ruby-2.4.0/bin/mac-wifi`).
|
308
|
-
* the user is not familiar with Ruby and does not want to use the `gem` command
|
309
|
-
* the user is concerned about security and would prefer to install a single file to a known location
|
310
|
-
rather than run the gem installation
|
311
|
-
* installing gems is controlled by the user's organization, and getting authorization is not practical
|
312
|
-
* installing gems requires root access, and the user does not have root access
|
313
|
-
|
314
|
-
That said, installation as a gem is highly recommended, since:
|
315
|
-
|
316
|
-
* this will greatly simplify acquiring future fixes and enhancements
|
317
|
-
* if the user wants to use the shell mode, they will need to `gem install pry` anyway
|
318
|
-
|
319
|
-
Currently, the only gems used by the program are:
|
326
|
+
Currently, the only gems used directly by the program are:
|
320
327
|
|
321
328
|
* `pry`, to provide the interactive shell
|
322
329
|
* `awesome_print` (optional), to more nicely format output in non-interactive mode
|
@@ -324,6 +331,7 @@ Currently, the only gems used by the program are:
|
|
324
331
|
So the user can avoid installing gems altogether as long as they don't need to use the interactive shell,
|
325
332
|
and as long as they are comfortable with the less pretty output.
|
326
333
|
|
334
|
+
|
327
335
|
### Password Lookup Oddity
|
328
336
|
|
329
337
|
You may find it odd (I did, anyway) that even if you issue the password command
|
@@ -352,4 +360,4 @@ MIT License (see LICENSE.txt)
|
|
352
360
|
|
353
361
|
I am available for consulting, development, tutoring, training, troubleshooting, etc.
|
354
362
|
|
355
|
-
You can contact me via GMail, Twitter, and
|
363
|
+
You can contact me via GMail, Twitter, Github, and LinkedIn, as _keithrbennett_.
|
data/RELEASE_NOTES.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## v2.1.0
|
2
|
+
|
3
|
+
* Support for the single script file install has been dropped. It was requiring too much complexity,
|
4
|
+
and was problematic with Ruby implementations lacking GEM_HOME / GEM_PATH environment variables.
|
5
|
+
* Code was broken out of the single script file into class files, plus a `version.rb`
|
6
|
+
and `mac-wifi.rb` file.
|
7
|
+
|
8
|
+
|
1
9
|
## v2.0.0
|
2
10
|
|
3
11
|
* Support output formats in batch mode: JSON, YAML, puts, and inspect modes.
|