osx-free 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +3 -0
  3. data/Readme.md +16 -0
  4. data/bin/free +71 -0
  5. data/osx-free.gemspec +16 -0
  6. metadata +78 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MGYxM2ZkMjdjMDNjYTYyOTBiNmRkZTE1NTBhOGE1NjdiNDBkZmFiNA==
5
+ data.tar.gz: !binary |-
6
+ ZTAyZjVjNGJmMmJjYzI5OGI1ZmE2YTgxNjBhMTY3ZDVmYmJjN2Y2MQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZGNlNzQ0YzRkYjhmOGExNzAzMDcwMDExZDhjMTk0MGU5ZmJhZmU0OTVhYzlk
10
+ YWY3Mjg4MjdmOTExMTYwMDU2ZDVjYTg0ZDU4YWQ3MWU0ZTk2OGU1ZTg3YWZj
11
+ NjkwZTkwYzgzNmJhOTQxZmYwNTQ2MzJiMjZmNzNlYTljMjYwZmU=
12
+ data.tar.gz: !binary |-
13
+ ZWM5ZDg4ZDQ5YmU4YmVhNWZlZjMxNDYwNzBkODM5MjdiMjMzYTdmNTVmNDEz
14
+ OWU3N2I5MWJlMDAxMjc4M2Y1ODY1MjdmNjcyNjhhOGM4ZWNiZjkwMzAwMTYw
15
+ Y2RkNjRiMmFmYjgxZmExZDY5NDI2MDkwYTQwNDcyODExMzVkNjI=
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/Readme.md ADDED
@@ -0,0 +1,16 @@
1
+ Free
2
+ ====================
3
+
4
+ _Because OS X doesn't have a_ `free` _command_
5
+
6
+ ```bash
7
+ $ free
8
+ Usage:
9
+ free [options]
10
+ --watch, -w: watch command
11
+ --gb, -g: view in GBs
12
+ --mb, -m: view in MBs
13
+ --show-units, -s: show unit size
14
+ --version, -v: Print version and exit
15
+ --help, -h: Show this message
16
+ ```
data/bin/free ADDED
@@ -0,0 +1,71 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'trollop'
4
+ require 'formatador'
5
+
6
+ @opts = Trollop::options do
7
+ version "OS X free command 0.0.1 -- dan pittman 2013"
8
+ banner <<-EOS
9
+ Usage:
10
+ free [options]
11
+ EOS
12
+ opt :watch, "watch command", :default => false
13
+ opt :gb, "view in GBs", :default => false
14
+ opt :mb, "view in MBs", :default => false
15
+ opt :'show-units', "show unit size", :default => false
16
+ end
17
+
18
+ def get_data
19
+ raw_data = {}
20
+ mem = `vm_stat | sed s/\\ //g | tail -n+2 | head -n4`.split("\n")
21
+ mem.each do |m|
22
+ m = m.split(':')
23
+ raw_data[m[0].gsub(/Pages/, '').to_sym] = m[1].chomp('.').to_i
24
+ end
25
+ raw_data[:available] = raw_data.values.reduce(:+)
26
+ raw_data[:used] = raw_data[:active] + raw_data[:inactive] + raw_data[:speculative]
27
+ raw_data.each do |k, v|
28
+ if @opts[:gb]
29
+ raw_data[k] = v * 4096 / 1024 / 1024 / 1024
30
+ elsif @opts[:mb]
31
+ raw_data[k] = v * 4096 / 1024 / 1024
32
+ else
33
+ raw_data[k] = v
34
+ end
35
+ end
36
+ raw_data
37
+ end
38
+
39
+ def unit_size
40
+ if @opts[:gb]
41
+ 'GBytes'
42
+ elsif @opts[:mb]
43
+ 'MBytes'
44
+ else
45
+ 'Pages (page size of 4096 bytes)'
46
+ end
47
+ end
48
+
49
+
50
+ def display
51
+ begin
52
+ @fm ||= Formatador.new
53
+ data = get_data
54
+ pretty_data = "[green]Used:[/] #{data[:used]} " + \
55
+ "[green]Free:[/] #{data[:free]} " + \
56
+ "[green]Available:[/] #{data[:available]} #{"\n" unless @opts[:watch] || @opts[:'show-units']}"
57
+ if @opts[:'show-units']
58
+ pretty_data = pretty_data + "[yellow]Units:[/] #{unit_size}#{"\n" unless @opts[:watch]}"
59
+ end
60
+ @fm.redisplay(pretty_data)
61
+ if @opts[:watch]
62
+ sleep 2
63
+ display
64
+ end
65
+ rescue Interrupt
66
+ puts "\n"
67
+ exit 0
68
+ end
69
+ end
70
+
71
+ display
data/osx-free.gemspec ADDED
@@ -0,0 +1,16 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.name = 'osx-free'
3
+ gem.version = '0.0.1'
4
+ gem.license = 'MIT'
5
+ gem.authors = ['dan pittman', 'Nicholas Weaver']
6
+ gem.email = ['danielscottt@gmail.com']
7
+ gem.description = %q{Because OS X Doesn't have a `free` command}
8
+ gem.summary = %q{Free Command for OS X}
9
+ gem.homepage = 'https://github.com/danielscottt/osx-free'
10
+
11
+ gem.add_dependency('trollop')
12
+ gem.add_dependency('formatador')
13
+
14
+ gem.files = `git ls-files`.split($/)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: osx-free
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - dan pittman
8
+ - Nicholas Weaver
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: trollop
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: formatador
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ description: Because OS X Doesn't have a `free` command
43
+ email:
44
+ - danielscottt@gmail.com
45
+ executables:
46
+ - free
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - Gemfile
51
+ - Readme.md
52
+ - bin/free
53
+ - osx-free.gemspec
54
+ homepage: https://github.com/danielscottt/osx-free
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.1.10
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: Free Command for OS X
78
+ test_files: []