dev_osx_updater 0.0.1
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/README.md +39 -0
- data/bin/dev_osx_update +10 -0
- data/lib/brew.rb +35 -0
- data/lib/dev_osx_updater/version.rb +3 -0
- data/lib/osx.rb +72 -0
- data/lib/rbenv.rb +15 -0
- data/lib/ruby.rb +41 -0
- data/lib/rvm.rb +35 -0
- data/lib/system.rb +47 -0
- data/lib/utility.rb +62 -0
- data/lib/zsh.rb +22 -0
- metadata +113 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a98d0161a7791f0018f5361406bd774c95179081
|
4
|
+
data.tar.gz: 2885ee8e8ad42703f382148a2e7efcdebd0f43ab
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f32cc61e0d4c93a48a69e697cbfdd26857b89cc79f13b9ba3d9127659c685861abe317aa8c8892f95f6d5c255209a77f73a2a30375a2684b804ffef55d3e8b28
|
7
|
+
data.tar.gz: ee02c2ad62bf24363b2af22172c26b6c8b2b48f143d8bc35169b7e1d7b923629ae28415fac2a729b11ff6c258d4d8b97ef8c0d70cafbb1250b79aa7caa083ac7
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# DevOsxUpdater
|
2
|
+
|
3
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/dev_osx_updater`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
+
|
5
|
+
TODO: Delete this and the text above, and describe your gem
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'dev_osx_updater'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install dev_osx_updater
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
TODO: Write usage instructions here
|
26
|
+
|
27
|
+
## Development
|
28
|
+
|
29
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
+
|
31
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
|
+
|
33
|
+
## Contributing
|
34
|
+
|
35
|
+
1. Fork it ( https://github.com/[my-github-username]/dev_osx_updater/fork )
|
36
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
37
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
38
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
39
|
+
5. Create a new Pull Request
|
data/bin/dev_osx_update
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
os = Gem::Platform.local
|
4
|
+
|
5
|
+
if os.to_s =~ /[darwin]/i
|
6
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'system')
|
7
|
+
System::Update.new.perform
|
8
|
+
else
|
9
|
+
puts 'This program currently requires Mac OSX to run. In a future release we hope to make it Linux compatible.'.colorize(:red).bold
|
10
|
+
end
|
data/lib/brew.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
class Brew
|
2
|
+
class << self
|
3
|
+
def installed?
|
4
|
+
File.exist?('/usr/local/bin/brew')
|
5
|
+
end
|
6
|
+
|
7
|
+
def cleanup
|
8
|
+
puts 'Cleanup of Homebrew packages'.colorize(:light_white).bold
|
9
|
+
if run?
|
10
|
+
Open3.popen3('brew cleanup') do |stdin, stdout|
|
11
|
+
output = stdout.read
|
12
|
+
if output.empty?
|
13
|
+
puts ' - Homebrew packages already clean.'.colorize(:green)
|
14
|
+
else
|
15
|
+
puts ' - Cleaned Homebrew packages.'.colorize(:green)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
else
|
19
|
+
puts ' - Skipped.'.colorize(:red)
|
20
|
+
end
|
21
|
+
break_output
|
22
|
+
end
|
23
|
+
|
24
|
+
def update
|
25
|
+
check_update_message('Homebrew')
|
26
|
+
if %x(brew update | grep Already)
|
27
|
+
puts ' - Homebrew packages already up to date.'.colorize(:green)
|
28
|
+
else
|
29
|
+
puts ' - Updating Homebrew packages...'.colorize(:green)
|
30
|
+
system 'brew update'
|
31
|
+
end
|
32
|
+
break_output
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/osx.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
class OSX
|
2
|
+
using StringExtensions
|
3
|
+
|
4
|
+
class << self
|
5
|
+
def intro
|
6
|
+
puts <<-EOS.undent.colorize(:light_white)
|
7
|
+
##################
|
8
|
+
# Mac OSX checks #
|
9
|
+
##################
|
10
|
+
EOS
|
11
|
+
break_output
|
12
|
+
end
|
13
|
+
|
14
|
+
def system_info
|
15
|
+
cpu = %x(sysctl -n machdep.cpu.brand_string).delete!("\n")
|
16
|
+
osx = %x(sw_vers | awk -F':\t' '{print $2}' | paste -d ' ' - - -).delete!("\n")
|
17
|
+
hostname = %x(scutil --get ComputerName).delete!("\n")
|
18
|
+
ram = %x(sysctl -n hw.memsize | awk '{print $0/1073741824" GB"}').delete!("\n")
|
19
|
+
ruby = %x(ruby -e 'puts RUBY_DESCRIPTION').delete!("\n")
|
20
|
+
|
21
|
+
break_output
|
22
|
+
|
23
|
+
puts <<-EOS.undent.colorize(:light_white).bold
|
24
|
+
System information:
|
25
|
+
- CPU: #{cpu}
|
26
|
+
- OSX: #{osx}
|
27
|
+
- Host: #{hostname}
|
28
|
+
- RAM: #{ram}
|
29
|
+
- Ruby: #{ruby}
|
30
|
+
EOS
|
31
|
+
|
32
|
+
break_output
|
33
|
+
end
|
34
|
+
|
35
|
+
def check_mac_store_updates
|
36
|
+
check_update_message('Mac App Store')
|
37
|
+
if run?
|
38
|
+
Open3.popen3('softwareupdate -l') do |stdin, stdout, stderr|
|
39
|
+
output = stdout.read
|
40
|
+
error = stderr.read
|
41
|
+
updates = output.split(/\r\n|\r|\n/, 5).last
|
42
|
+
if output.include?('Software Update found')
|
43
|
+
puts updates
|
44
|
+
# %x(softwareupdate -i -a) - Commented out as we dont want to auto update yet.
|
45
|
+
end
|
46
|
+
puts ' - No new software updates available.' if error.include?('No new software available')
|
47
|
+
end
|
48
|
+
else
|
49
|
+
puts ' - Skipped.'.colorize(:red)
|
50
|
+
end
|
51
|
+
break_output
|
52
|
+
end
|
53
|
+
|
54
|
+
def repair_disk_permissions
|
55
|
+
puts '# Repairing OSX disk permissions'
|
56
|
+
if run?
|
57
|
+
Open3.popen2e('diskutil repairPermissions /') do |stdin, stdout_err, wait_thr|
|
58
|
+
while line = stdout_err.gets
|
59
|
+
puts line.delete!("\n").indent(4).colorize(:green)
|
60
|
+
end
|
61
|
+
|
62
|
+
exit_status = wait_thr.value
|
63
|
+
unless exit_status.success?
|
64
|
+
abort "FAILED !!! #{cmd}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
else
|
68
|
+
puts ' - Skipped.'.colorize(:red)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/rbenv.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
class Rbenv
|
2
|
+
class << self
|
3
|
+
def installed?
|
4
|
+
File.exist? File.expand_path('~/.rbenv')
|
5
|
+
end
|
6
|
+
|
7
|
+
def update
|
8
|
+
check_update_message('rbenv')
|
9
|
+
Open3.popen3('cd ~/.rbenv && git pull && cd plugins/ruby-build/ && git pull') do |stdin, stdout, stderr, thread|
|
10
|
+
puts ' - rbenv updated.'.colorize(:green)
|
11
|
+
end
|
12
|
+
break_output
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/ruby.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
class Ruby
|
2
|
+
class << self
|
3
|
+
def check_rubygems_version
|
4
|
+
check_update_message('Rubygems')
|
5
|
+
get_gem_json('rubygems-update')
|
6
|
+
|
7
|
+
current = %x(gem -v).delete!("\n")
|
8
|
+
latest = @response['version']
|
9
|
+
|
10
|
+
if Gem::Version.new(current) < Gem::Version.new(latest)
|
11
|
+
system 'gem update --system'
|
12
|
+
else
|
13
|
+
puts " - You currently have Rubygems #{current} installed which is the latest version.".colorize(:green)
|
14
|
+
end
|
15
|
+
|
16
|
+
break_output
|
17
|
+
end
|
18
|
+
|
19
|
+
def check_bundler_version
|
20
|
+
check_update_message('Bundler')
|
21
|
+
get_gem_json('bundler')
|
22
|
+
|
23
|
+
current = %x(bundler -v).delete!("Bundler version\n")
|
24
|
+
latest = @response['version']
|
25
|
+
|
26
|
+
if current == nil || Gem::Version.new(current) < Gem::Version.new(latest)
|
27
|
+
system 'gem install bundler'
|
28
|
+
else
|
29
|
+
puts " - You currently have Bundler #{current} installed which is the latest version.".colorize(:green)
|
30
|
+
end
|
31
|
+
|
32
|
+
break_output
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_gem_json(name)
|
36
|
+
uri = URI("https://rubygems.org/api/v1/gems/#{name}.json")
|
37
|
+
@response = Net::HTTP.get(uri)
|
38
|
+
@response = JSON.parse(@response)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/rvm.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
class RVM
|
2
|
+
class << self
|
3
|
+
def installed?
|
4
|
+
File.exist? File.expand_path('~/.rvm')
|
5
|
+
end
|
6
|
+
|
7
|
+
def update
|
8
|
+
check_update_message('RVM')
|
9
|
+
Open3.popen3('rvm get stable') do |stdin, stdout|
|
10
|
+
output = stdout.read
|
11
|
+
puts ' - RVM updated.'.colorize(:green) if output.include?('RVM reloaded')
|
12
|
+
end
|
13
|
+
break_output
|
14
|
+
end
|
15
|
+
|
16
|
+
def cleanup
|
17
|
+
puts 'Cleanup of RVM data'.colorize(:light_white).bold
|
18
|
+
if run?
|
19
|
+
begin
|
20
|
+
PTY.spawn('rvm cleanup all') do |stdin, stdout, stderr, thread|
|
21
|
+
begin
|
22
|
+
stdin.each { |line| print line.indent(2) }
|
23
|
+
rescue Errno::EIO
|
24
|
+
end
|
25
|
+
end
|
26
|
+
rescue PTY::ChildExited
|
27
|
+
puts 'The child process exited!'
|
28
|
+
end
|
29
|
+
else
|
30
|
+
puts ' - Skipped.'.colorize(:red)
|
31
|
+
end
|
32
|
+
break_output
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/system.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path('..', __FILE__)
|
2
|
+
# require_relative 'lib'
|
3
|
+
|
4
|
+
# Gems
|
5
|
+
require 'colorize'
|
6
|
+
require 'open3'
|
7
|
+
require 'pty'
|
8
|
+
require 'json'
|
9
|
+
require 'net/http'
|
10
|
+
|
11
|
+
# Local files
|
12
|
+
require 'utility'
|
13
|
+
require 'rvm'
|
14
|
+
require 'brew'
|
15
|
+
require 'ruby'
|
16
|
+
require 'osx'
|
17
|
+
require 'zsh'
|
18
|
+
require 'rbenv'
|
19
|
+
|
20
|
+
module System
|
21
|
+
class Update
|
22
|
+
AUTO_RUN = ARGV[0]
|
23
|
+
|
24
|
+
def perform
|
25
|
+
OSX.system_info
|
26
|
+
Ruby.check_rubygems_version
|
27
|
+
Ruby.check_bundler_version
|
28
|
+
|
29
|
+
ZSH.update if ZSH.installed?
|
30
|
+
Rbenv.update if Rbenv.installed?
|
31
|
+
|
32
|
+
if Brew.installed?
|
33
|
+
Brew.update
|
34
|
+
Brew.cleanup
|
35
|
+
end
|
36
|
+
|
37
|
+
if RVM.installed?
|
38
|
+
RVM.update
|
39
|
+
RVM.cleanup
|
40
|
+
end
|
41
|
+
|
42
|
+
OSX.intro
|
43
|
+
OSX.check_mac_store_updates
|
44
|
+
OSX.repair_disk_permissions
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/utility.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
module StringExtensions
|
2
|
+
refine String do
|
3
|
+
def undent
|
4
|
+
gsub(/^.{#{(slice(/^ +/) || '').length}}/, '')
|
5
|
+
end
|
6
|
+
|
7
|
+
alias_method :undent_________________________________________________________72, :undent
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
String.class_eval do
|
12
|
+
def indent(count, char = ' ')
|
13
|
+
gsub(/([^\n]*)(\n|$)/) do |match|
|
14
|
+
last_iteration = ($1 == '' && $2 == '')
|
15
|
+
line = ''
|
16
|
+
line << (char * count) unless last_iteration
|
17
|
+
line << $1
|
18
|
+
line << $2
|
19
|
+
line
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def file_or_folder_exists?(file)
|
25
|
+
home = ENV['HOME']
|
26
|
+
path = "#{home}" "#{file}"
|
27
|
+
File.exist?(path)
|
28
|
+
end
|
29
|
+
|
30
|
+
def check_update_message(app)
|
31
|
+
puts "Checking #{app} for updates...".colorize(:light_white).bold
|
32
|
+
end
|
33
|
+
|
34
|
+
def break_output
|
35
|
+
puts ''
|
36
|
+
end
|
37
|
+
|
38
|
+
def yes_or_no
|
39
|
+
begin
|
40
|
+
system('stty raw -echo')
|
41
|
+
str = STDIN.getc
|
42
|
+
ensure
|
43
|
+
system('stty -raw echo')
|
44
|
+
end
|
45
|
+
if str == 'y'
|
46
|
+
puts ' - Performing...'
|
47
|
+
return true
|
48
|
+
elsif str == 'n'
|
49
|
+
return false
|
50
|
+
else
|
51
|
+
raise 'Invalid choice. Options are "y" or "n"'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def run?
|
56
|
+
if System::Update::AUTO_RUN == '--auto'
|
57
|
+
return true
|
58
|
+
else
|
59
|
+
puts ' - Do you want to perform this action? (y/n)'
|
60
|
+
yes_or_no
|
61
|
+
end
|
62
|
+
end
|
data/lib/zsh.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
class ZSH
|
2
|
+
class << self
|
3
|
+
def installed?
|
4
|
+
file_or_folder_exists?('/.oh-my-zsh')
|
5
|
+
end
|
6
|
+
|
7
|
+
def update
|
8
|
+
check_update_message('Oh My Zsh')
|
9
|
+
|
10
|
+
Open3.popen3('env ZSH=$ZSH /bin/sh $ZSH/tools/upgrade.sh') do |stdin, stdout|
|
11
|
+
output = stdout.read
|
12
|
+
if output.include?('Current branch master is up to date')
|
13
|
+
puts ' - Oh My Zsh already up to date.'.colorize(:green)
|
14
|
+
else
|
15
|
+
puts ' - Updating Oh My Zsh...'.colorize(:green)
|
16
|
+
system 'env ZSH=$ZSH /bin/sh $ZSH/tools/upgrade.sh'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
break_output
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dev_osx_updater
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Callum Barratt
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.9'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Keep your development tools up to date like homebrew, zsh with an easy
|
70
|
+
run all script.
|
71
|
+
email:
|
72
|
+
- callum@bolser.co.uk
|
73
|
+
executables:
|
74
|
+
- dev_osx_update
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- README.md
|
79
|
+
- bin/dev_osx_update
|
80
|
+
- lib/brew.rb
|
81
|
+
- lib/dev_osx_updater/version.rb
|
82
|
+
- lib/osx.rb
|
83
|
+
- lib/rbenv.rb
|
84
|
+
- lib/ruby.rb
|
85
|
+
- lib/rvm.rb
|
86
|
+
- lib/system.rb
|
87
|
+
- lib/utility.rb
|
88
|
+
- lib/zsh.rb
|
89
|
+
homepage: https://github.com/cbarratt/mac_system_update
|
90
|
+
licenses:
|
91
|
+
- MIT
|
92
|
+
metadata: {}
|
93
|
+
post_install_message:
|
94
|
+
rdoc_options: []
|
95
|
+
require_paths:
|
96
|
+
- lib
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
requirements: []
|
108
|
+
rubyforge_project:
|
109
|
+
rubygems_version: 2.4.7
|
110
|
+
signing_key:
|
111
|
+
specification_version: 4
|
112
|
+
summary: Updates todays Ruby/Rails development tools used for developers.
|
113
|
+
test_files: []
|