wifi-wand 2.4.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 +7 -0
- data/.gitignore +19 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +363 -0
- data/RELEASE_NOTES.md +81 -0
- data/exe/wifi-wand +24 -0
- data/lib/wifi-wand.rb +3 -0
- data/lib/wifi-wand/command_line_interface.rb +462 -0
- data/lib/wifi-wand/main.rb +66 -0
- data/lib/wifi-wand/models/base_model.rb +250 -0
- data/lib/wifi-wand/models/mac_os_model.rb +299 -0
- data/lib/wifi-wand/operating_systems.rb +51 -0
- data/lib/wifi-wand/os/base_os.rb +25 -0
- data/lib/wifi-wand/os/imaginary_os.rb +19 -0
- data/lib/wifi-wand/os/mac_os.rb +20 -0
- data/lib/wifi-wand/version.rb +5 -0
- data/sample-avail-network-data.xml +4042 -0
- data/sample-available-networks.json +27 -0
- data/sample-available-networks.yaml +26 -0
- data/spec/wifi-wand_spec.rb +114 -0
- data/wifi-wand.gemspec +28 -0
- metadata +108 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: ffa643d3118b6039e5335d2b390ccbaaad5b6985b633ccb6ddc06292547285f2
|
|
4
|
+
data.tar.gz: 95845961ff4f1c0e0a97a88f676f7fedf71b056cb530bc10fc735318ea23cc4b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 8c8e7a084ca01bc32ea3975d3cfc0a42de836f5ccde28f0dbae78a5ee1709398301adba3ddbcfa23cb78f90625ceb58f06c9c831f22fc490e3166c4126a231aa
|
|
7
|
+
data.tar.gz: 6dec19538c4b1ecc0196144776e99e3f237a79a0495df5f06c74904489c051b460cf9707d09020f60bc804a9ee2766043602f99190c1577b8dcc1e3f53c4db26
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2017 Keith Bennett
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# wifi-wand
|
|
2
|
+
|
|
3
|
+
To install this software, run:
|
|
4
|
+
|
|
5
|
+
`gem install wifi-wand`
|
|
6
|
+
|
|
7
|
+
or, you may need to precede that command with `sudo`:
|
|
8
|
+
|
|
9
|
+
`sudo gem install wifi-wand`
|
|
10
|
+
|
|
11
|
+
The `wifi-wand` 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,
|
|
15
|
+
but as of now, only Mac OS is supported. (Feel free to add an OS!)
|
|
16
|
+
|
|
17
|
+
It can be run in single-command or interactive mode.
|
|
18
|
+
Interactive mode uses the [pry](https://github.com/pry/pry) gem,
|
|
19
|
+
providing an interface familiar to Rubyists and other
|
|
20
|
+
[REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) users.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Usage
|
|
24
|
+
|
|
25
|
+
Available commands can be seen by using the `h` (or `help`) option. Here is its
|
|
26
|
+
output at the time of this writing:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
$ wifi-wand -h
|
|
30
|
+
|
|
31
|
+
Command Line Switches: [wifi-wand version 2.4.0]
|
|
32
|
+
|
|
33
|
+
-o[i,j,p,y] - outputs data in inspect, JSON, puts, or YAML format when not in shell mode
|
|
34
|
+
-s - run in shell mode
|
|
35
|
+
-v - verbose mode (prints OS commands and their outputs)
|
|
36
|
+
|
|
37
|
+
Commands:
|
|
38
|
+
|
|
39
|
+
a[vail_nets] - array of names of the available networks
|
|
40
|
+
ci - connected to Internet (not just wifi on)?
|
|
41
|
+
co[nnect] network-name - turns wifi on, connects to network-name
|
|
42
|
+
cy[cle] - turns wifi off, then on, preserving network selection
|
|
43
|
+
d[isconnect] - disconnects from current network, does not turn off wifi
|
|
44
|
+
h[elp] - prints this help
|
|
45
|
+
i[nfo] - a hash of wifi-related information
|
|
46
|
+
l[s_avail_nets] - details about available networks
|
|
47
|
+
n[etwork_name] - name (SSID) of currently connected network
|
|
48
|
+
on - turns wifi on
|
|
49
|
+
of[f] - turns wifi off
|
|
50
|
+
pa[ssword] network-name - password for preferred network-name
|
|
51
|
+
pr[ef_nets] - preferred (not necessarily available) networks
|
|
52
|
+
q[uit] - exits this program (interactive shell mode only) (see also 'x')
|
|
53
|
+
r[m_pref_nets] network-name - removes network-name from the preferred networks list
|
|
54
|
+
(can provide multiple names separated by spaces)
|
|
55
|
+
ro[pen] - open resource ('ipc' (IP Chicken), 'ipw' (What is My IP), 'spe' (Speed Test), 'this' (wifi-wand Home Page))
|
|
56
|
+
t[ill] - returns when the desired Internet connection state is true. Options:
|
|
57
|
+
1) 'on'/:on, 'off'/:off, 'conn'/:conn, or 'disc'/:disc
|
|
58
|
+
2) wait interval, in seconds (optional, defaults to 0.5 seconds)
|
|
59
|
+
w[ifion] - is the wifi on?
|
|
60
|
+
x[it] - exits this program (interactive shell mode only) (see also 'q')
|
|
61
|
+
|
|
62
|
+
When in interactive shell mode:
|
|
63
|
+
* use quotes for string parameters such as method names.
|
|
64
|
+
* for pry commands, use prefix `%`.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Internally, it uses several Mac command line utilities. This is not ideal,
|
|
68
|
+
I would have preferred OS system calls, but the current approach enabled me to develop
|
|
69
|
+
this script quickly and simply.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### Pretty Output
|
|
73
|
+
|
|
74
|
+
For nicely formatted output of the `info` command in non-interactive mode,
|
|
75
|
+
the `awesome_print` gem is used if it is installed;
|
|
76
|
+
otherwise, the somewhat less awesome pretty print (`pp`) is used. Therefore,
|
|
77
|
+
installation of the `awesome_print` gem is recommended.
|
|
78
|
+
This is accomplished by the following command:
|
|
79
|
+
|
|
80
|
+
`gem install awesome_print`
|
|
81
|
+
|
|
82
|
+
You may need to precede this command with `sudo `, especially if you are using the
|
|
83
|
+
version of Ruby that comes packaged with MacOS.
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
### JSON, YAML, and Other Output Formats
|
|
87
|
+
|
|
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.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### Seeing the Underlying OS Commands and Output
|
|
94
|
+
|
|
95
|
+
If you would like to see the Mac OS commands and their output,
|
|
96
|
+
you can do so by specifying "-v" (for _verbose) on the command line.
|
|
97
|
+
|
|
98
|
+
You may notice that some commands are executed more than once. This is to simplify the application logic
|
|
99
|
+
and eliminate the need for the complexity of balancing the speed that a cache offers and the risk
|
|
100
|
+
of stale data.
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### Troubleshooting
|
|
104
|
+
|
|
105
|
+
If you try to run the shell, the script will require the `pry` gem, so that will need to be installed.
|
|
106
|
+
`pry` in turn requires access to a `readline` library. If you encounter an error relating to finding a
|
|
107
|
+
`readline` library, this can probably be fixed by installing the `pry-coolline` gem: `gem install pry-coolline`.
|
|
108
|
+
If you are using the Ruby packaged with Mac OS, or for some other reason require root access to install
|
|
109
|
+
gems, you will need to precede those commands with `sudo`:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
sudo gem install pry
|
|
113
|
+
sudo gem install pry-coolline
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
### Using It in Scripts
|
|
118
|
+
|
|
119
|
+
Sometimes calling `wifi-wand` from a script is handy. I have this script that
|
|
120
|
+
connects to a commonly used wifi network, and then speaks a message when it's done:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
wifi-wand connect my_network_name my_password && \
|
|
124
|
+
wifi-wand till conn && \
|
|
125
|
+
say -v Kyoko "Connected to my network."
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
(The Mac OS `say` command supports all kinds of accents that are fun to play around with.
|
|
129
|
+
You can get a list of all of them by running `say -v "?"`)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
### Using the Shell
|
|
133
|
+
|
|
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`._
|
|
136
|
+
|
|
137
|
+
The shell, invoked with the `-s` switch on the command line, provides an interactive
|
|
138
|
+
session. It can be useful when:
|
|
139
|
+
|
|
140
|
+
* you want to issue multiple commands
|
|
141
|
+
* you want to combine commands
|
|
142
|
+
* you want the data in a format not provided by this application
|
|
143
|
+
* you want to incorporate these commands into other Ruby code interactively
|
|
144
|
+
* you want to combine the results of commands with other OS commands
|
|
145
|
+
(you can shell out to run other command line programs by preceding the command with a period (`.`)) .
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
### Using Variables in the Shell
|
|
149
|
+
|
|
150
|
+
There are a couple of things (that may be surprising) to keep in mind
|
|
151
|
+
when using the shell. They relate to the fact that local variables
|
|
152
|
+
and method calls use the same notation in Ruby (since use of parentheses
|
|
153
|
+
in a method call is optional):
|
|
154
|
+
|
|
155
|
+
1) In Ruby, when both a method and a local variable have the same name,
|
|
156
|
+
the local variable will override the method name. Therefore, local variables
|
|
157
|
+
may override this app's commands. For example:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
[1] pry(#<WifiWandView>)> n # network_name command
|
|
161
|
+
=> ".@ AIS SUPER WiFi"
|
|
162
|
+
[2] pry(#<WifiWandView>)> n = 123 # override it with a local variable
|
|
163
|
+
=> 123
|
|
164
|
+
[3] pry(#<WifiWandView>)> n # 'n' no longer calls the method
|
|
165
|
+
=> 123
|
|
166
|
+
[4] pry(#<WifiWandView>)> ne # but any other name that `network_name starts with will still call the method
|
|
167
|
+
=> ".@ AIS SUPER WiFi"
|
|
168
|
+
[5] pry(#<WifiWandView>)> network_name
|
|
169
|
+
=> ".@ AIS SUPER WiFi"
|
|
170
|
+
[6] pry(#<WifiWandView>)> ne_xzy123
|
|
171
|
+
"ne_xyz123" is not a valid command or option. If you intend for this to be a string literal, use quotes.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
If you don't want to deal with this, you could use global variables, instance variables,
|
|
175
|
+
or constants, which will _not_ hide the methods:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
[7] pry(#<WifiWandView>)> N = 123
|
|
179
|
+
[8] pry(#<WifiWandView>)> @n = 456
|
|
180
|
+
[9] pry(#<WifiWandView>)> $n = 789
|
|
181
|
+
[10] pry(#<WifiWandView>)> puts n, N, @n, $n
|
|
182
|
+
.@ AIS SUPER WiFi
|
|
183
|
+
123
|
|
184
|
+
456
|
|
185
|
+
789
|
|
186
|
+
=> nil
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
2) If you accidentally refer to a nonexistent variable or method name,
|
|
190
|
+
the result may be mysterious. For example, if I were write the wifi information
|
|
191
|
+
to a file, this would work:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
[1] pry(#<WifiWandView>)> File.write('x', info)
|
|
195
|
+
=> 431
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
However, if I forget to quote the filename, the program exits:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
[2] pry(#<WifiWandView>)> File.write(x, info)
|
|
202
|
+
➜ wifi-wand git:(master) ✗
|
|
203
|
+
```
|
|
204
|
+
|
|
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.
|
|
208
|
+
|
|
209
|
+
Bottom line is, be careful to quote your strings, and you're probably better off using
|
|
210
|
+
constants or instance variables if you want to create variables in your shell.
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
### Examples
|
|
215
|
+
|
|
216
|
+
#### Single Command Invocations
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
wifi-wand i # prints out wifi info
|
|
220
|
+
wifi-wand a # prints out names of available networks
|
|
221
|
+
wifi-wand lsa # prints available networks detailed information
|
|
222
|
+
wifi-wand pr # prints preferred networks
|
|
223
|
+
wifi-wand cy # cycles the wifi off and on
|
|
224
|
+
wifi-wand co a-network a-password # connects to a network requiring a password
|
|
225
|
+
wifi-wand co a-network # connects to a network _not_ requiring a password
|
|
226
|
+
wifi-wand t on && say "Internet connected" # Play audible message when Internet becomes connected
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
#### Interactive Shell Commands
|
|
230
|
+
|
|
231
|
+
When in shell mode, commands generally return the target object (e.g. the array of
|
|
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.
|
|
236
|
+
|
|
237
|
+
If you don't need the return value but just want to display the value nicely,
|
|
238
|
+
you can use the `fancy_puts` method to output it nicely. An alias `fp` has been
|
|
239
|
+
provided for your convenience. You're welcome! For example:
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
[5] pry(#<WifiWand::CommandLineInterface>)> fp pr.first(3)
|
|
243
|
+
[
|
|
244
|
+
[0] " AIS SMART Login",
|
|
245
|
+
[1] " BubblesLive",
|
|
246
|
+
[2] "#HKAirport Free WiFi"
|
|
247
|
+
]
|
|
248
|
+
```
|
|
249
|
+
|
|
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:
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
[10] pry(#<WifiWand::CommandLineInterface>)> available_networks = avail_nets; nil
|
|
262
|
+
=> nil
|
|
263
|
+
```
|
|
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 'wifi-wand'
|
|
273
|
+
model = WifiWand::MacOsModel.new
|
|
274
|
+
puts model.available_network_names.to_yaml # etc...
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
**More Examples**
|
|
279
|
+
|
|
280
|
+
(For brevity, semicolons are used here to put multiple commands on one line,
|
|
281
|
+
but these commands could also each be specified on a line of its own.)
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
# Print out wifi info:
|
|
285
|
+
i
|
|
286
|
+
|
|
287
|
+
# Cycle (off/on) the network then connect to the specified network not requiring a password
|
|
288
|
+
> cycle; connect 'my-network'
|
|
289
|
+
|
|
290
|
+
# Cycle (off/on) the network, then connect to the same network not requiring a password
|
|
291
|
+
> @name = network_name; cycle; connect @name
|
|
292
|
+
|
|
293
|
+
# Cycle (off/on) the network then connect to the specified network using the specified password
|
|
294
|
+
> cycle; connect 'my-network', 'my-password'
|
|
295
|
+
|
|
296
|
+
> @i = i; puts "You are connected on port #{@i[:port]} to #{@i[:network]} on IP address #{@i[:ip_address]}."
|
|
297
|
+
You are connected on port en0 to .@ AIS SUPER WiFi on IP address 172.27.145.225.
|
|
298
|
+
|
|
299
|
+
> puts "There are #{pr.size} preferred networks."
|
|
300
|
+
There are 341 preferred networks.
|
|
301
|
+
|
|
302
|
+
# Delete all preferred networks whose names begin with "TOTTGUEST", the hard way:
|
|
303
|
+
> pr.grep(/^TOTTGUEST/).each { |n| rm(n) }
|
|
304
|
+
|
|
305
|
+
# Delete all preferred networks whose names begin with "TOTTGUEST", the easy way.
|
|
306
|
+
# rm can take multiple network names, but they must be specified as separate parameters; thus the '*'.
|
|
307
|
+
> rm(*pr.grep(/^TOTTGUEST/))
|
|
308
|
+
|
|
309
|
+
# Define a method to wait for the Internet connection to be active.
|
|
310
|
+
# (This functionality is included in the `till` command.)
|
|
311
|
+
# Call it, then output celebration message:
|
|
312
|
+
[17] pry(#<WifiWandView>)> def wait_for_internet; loop do; break if ci; sleep 0.5; end; end
|
|
313
|
+
[18] pry(#<WifiWandView>)> wait_for_internet; puts "Connected!"
|
|
314
|
+
Connected!
|
|
315
|
+
|
|
316
|
+
# Same, but using a lambda instead of a method so we can use a variable name
|
|
317
|
+
# and not need to worry about method name collision:
|
|
318
|
+
@wait_for_internet = -> { loop do; break if ci; sleep 0.5; end }
|
|
319
|
+
@wait_for_internet.() ; puts "Connected!"
|
|
320
|
+
Connected!
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
### Dependent Gems
|
|
325
|
+
|
|
326
|
+
Currently, the only gems used directly by the program are:
|
|
327
|
+
|
|
328
|
+
* `pry`, to provide the interactive shell
|
|
329
|
+
* `awesome_print` (optional), to more nicely format output in non-interactive mode
|
|
330
|
+
|
|
331
|
+
So the user can avoid installing gems altogether as long as they don't need to use the interactive shell,
|
|
332
|
+
and as long as they are comfortable with the less pretty output.
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
### Password Lookup Oddity
|
|
336
|
+
|
|
337
|
+
You may find it odd (I did, anyway) that even if you issue the password command
|
|
338
|
+
(`mac_wifi pa a-network-name`) using sudo, you will still be prompted
|
|
339
|
+
with a graphical dialog for both a user id and password. This is no doubt
|
|
340
|
+
for better security, but it's unfortunate in that it makes it impossible to fully automate this task.
|
|
341
|
+
|
|
342
|
+
In particular, it would be nice for the `cycle` command to be able to fetch the current network's
|
|
343
|
+
password, cycle the network, and then reconnect to the original network with it after turning the network on.
|
|
344
|
+
However, since fetching the password without user intervention is not possible, this cannot be automated.
|
|
345
|
+
|
|
346
|
+
If you don't mind storing the network password in plain text somewhere, then you could easily
|
|
347
|
+
automate it (e.g. `wifi-wand cycle && wifi-wand connect a-network a-password`). Also, you might find it handy
|
|
348
|
+
to create a script for your most commonly used networks containing something like this:
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
wifi-wand connect my-usual-network its-password
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
### License
|
|
356
|
+
|
|
357
|
+
MIT License (see LICENSE.txt)
|
|
358
|
+
|
|
359
|
+
### Shameless Ad
|
|
360
|
+
|
|
361
|
+
I am available for consulting, development, tutoring, training, troubleshooting, etc.
|
|
362
|
+
|
|
363
|
+
You can contact me via GMail, Twitter, Github, and LinkedIn, as _keithrbennett_.
|
data/RELEASE_NOTES.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
## v2.4.0
|
|
2
|
+
|
|
3
|
+
* Project has been renamed from 'mac-wifi' to 'wifi-wand'.
|
|
4
|
+
* Further preparation for addition of support of other OS's.
|
|
5
|
+
* Make resource opening OS-dependent as it should be.
|
|
6
|
+
* Move models to models directory.
|
|
7
|
+
* Refactored OS determination and model creation.
|
|
8
|
+
* Use scutil --dns to get nameserver info, using the union of the scoped and unscoped nameservers.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## v2.3.0
|
|
12
|
+
|
|
13
|
+
* Add public IP address info to info hash (https://github.com/keithrbennett/macwifi/issues/3).
|
|
14
|
+
* Add nameserver information to info hash (issue at https://github.com/keithrbennett/macwifi/issues/5).
|
|
15
|
+
* Made all info hash keys same data type to be less confusing; made them all String's.
|
|
16
|
+
* Replace 'public-ip-show' with 'ropen', and provide additional targets ipchicken.com,
|
|
17
|
+
speedtest.net, and the Github page for this project
|
|
18
|
+
* Speed up retrieval of network name
|
|
19
|
+
* Remove BaseModel#run_os_command private restriction.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## v2.2.0
|
|
23
|
+
|
|
24
|
+
* Add pu[blic-wifi-show] command to open https://www.whatismyip.com/ to show public IP address info.
|
|
25
|
+
* Removed 'vpn on' info from info hash; it was often inaccurate.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## v2.1.0
|
|
29
|
+
|
|
30
|
+
* Support for the single script file install has been dropped. It was requiring too much complexity,
|
|
31
|
+
and was problematic with Ruby implementations lacking GEM_HOME / GEM_PATH environment variables.
|
|
32
|
+
* Code was broken out of the single script file into class files, plus a `version.rb`
|
|
33
|
+
and `mac-wifi.rb` file.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## v2.0.0
|
|
37
|
+
|
|
38
|
+
* Support output formats in batch mode: JSON, YAML, puts, and inspect modes.
|
|
39
|
+
* Change some command names to include underscores.
|
|
40
|
+
* Shell mode is now (only) a command line switch (-s).
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## v1.4.0
|
|
44
|
+
|
|
45
|
+
* Support for "MAC-WIFI-OPTS" environment variable for configuration dropped.
|
|
46
|
+
* Support for "-v" verbosity command line option added.
|
|
47
|
+
* Work around pry bug whereby shell was not always starting when requested.
|
|
48
|
+
* 99% fix for reporting of available network names containing leading spaces
|
|
49
|
+
(this will not correctly handle the case of network names that are identical
|
|
50
|
+
except for numbers of leading spaces).
|
|
51
|
+
* Improved handling of attempting to list available networks when wifi is off.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## v1.3.0
|
|
55
|
+
|
|
56
|
+
* Add partial JSON and YAML support.
|
|
57
|
+
* Script moved from bin to exe directory.
|
|
58
|
+
* Provide `fp` fancy print alias for convenience in shell.
|
|
59
|
+
* Command renames: 'lsp' -> 'prefnets', 'rm' -> 'rmprefnets'
|
|
60
|
+
* Add 'availnets' command for list of unique available network names.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## v1.2.0
|
|
64
|
+
|
|
65
|
+
* Fix: protect against using command strings shorter than minimum length
|
|
66
|
+
(e.g. 'c', when more chars are necessary to disambiguate multiple commands).
|
|
67
|
+
* Improvements in help text and readme.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## v1.1.0
|
|
71
|
+
|
|
72
|
+
* Sort available networks alphabetically, left justify ssid's.
|
|
73
|
+
* to_s is called on parameters so that symbols can be specified in interactive shell for easier typing
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## v1.0.0
|
|
77
|
+
|
|
78
|
+
* First versioned release.
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|