hackmac 0.6.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e60de0cfd1893bbebe2b12c6f178e119a22c11df20db0dd820246e6c0871aa85
4
- data.tar.gz: 45b5a00acf8685a38335a57c9262aba1fb871f47eff040038db0e417447115ff
3
+ metadata.gz: 1c4e84816963538116a40d14930813dc43f284196de0909c9685ac26133c8c8a
4
+ data.tar.gz: 9cc12d81f2fb041279c7e50ee4787222ce2d51ed1461e086282278f9edd09f3c
5
5
  SHA512:
6
- metadata.gz: 55d0fe323e378ca5d28fb7ff231e392c19776ff8688c4e493413d2f63813d88de979c93dcaf2b2c0307f31f49abdad905cf6e988bbe9fc3f3799ca3877d334ca
7
- data.tar.gz: 6cea068e98c7fb0467ff90cf98bd10c563c838589a2b0d3157fc1b9dee2d0e48b015c8355410fc5846e320e71d5903e15a1d8d317c7ec66adfcf1a10de1c78ca
6
+ metadata.gz: 715e90bca64b6cf603e5c886e69367f2f05941b08d5f5e8010cb93b66fbf1aa011909058e08361bf347463191baae2c691aedef220fcc3de484bb1ce91353a77
7
+ data.tar.gz: 275adcacccf97fdca702fe4f77839373156371bc3de9445a13e06003fcecf2968738135bb0298260481e922b6b92cee03fb1de0be1cff217de0cfdb0e4530638
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.8.1
data/bin/efi CHANGED
@@ -21,7 +21,7 @@ end
21
21
  def boot_dev
22
22
  unless @boot_dev
23
23
  value = x(%{bdmesg}, verbose: false).lines.
24
- find { |l| l =~ /SelfDevicePath=(.*)\r/ and break $1 }
24
+ find { |l| l =~ /SelfDevicePath=(.*)\r?\n/ and break $1 }
25
25
  uuid = value.split('\\').last[/(?:<?GPT,)([\h-]+)/, 1] or exit 1
26
26
  @boot_dev = x(%{partutil --search-uuid #{uuid}}).chomp
27
27
  end
@@ -139,16 +139,18 @@ when /\Aun?mount\z/
139
139
  x %{sudo diskutil unmount "#{mdev}"}
140
140
  # TODO remove /Volumes/mdev if it is a symlink
141
141
  when /\Adiff\z/
142
- mdev = git_args(default: %w[ --color --stat ])
142
+ mdev = git_args(default: %w[ --color --stat --cached ])
143
143
  x %{sudo diskutil mount "#{mdev}"}
144
144
  cd "/Volumes/#{mdev}" do
145
+ x %{git add -A}
145
146
  x %{git diff #{Shellwords.join(ARGV)}}
146
147
  end
147
148
  when /\Acommit\z/
148
149
  mdev = git_args(default: %w[ -v ])
149
150
  x %{sudo diskutil mount "#{mdev}"}
150
151
  cd "/Volumes/#{mdev}" do
151
- system %{git commit -a #{Shellwords.join(ARGV)}} and
152
+ x %{git add -A}
153
+ system %{git commit #{Shellwords.join(ARGV)}} and
152
154
  x %{ git push }
153
155
  end
154
156
  when 'clone'
@@ -167,10 +169,13 @@ when 'kexts'
167
169
  puts 'EFI'.yellow.bold + " (#{mdev})".bold
168
170
  puts Tabulo::Table.new(on_efi, align_header: :left, border: :modern) { |t|
169
171
  t.add_column(:name, header_styler: bold_head)
170
- t.add_column(:itself, header: 'Version/Remote',
171
- styler: -> v, s { v.version < v.remote_version ? s.red : s.green rescue s.yellow },
172
- formatter: -> e { "%s %s %s" % [ e.version, ({ 0 => ?=, -1 => ?<, 1 => ?> }[e.version <=> e.remote_version] rescue nil), e.remote_version ] },
173
- header_styler: bold_head)
172
+ t.add_column(
173
+ :itself,
174
+ header: 'Version/Remote',
175
+ styler: -> v, s { v.version < v.remote_version ? s.red : s.green rescue s.yellow },
176
+ formatter: -> e { "%s %s %s" % [ e.version, ({ 0 => ?=, -1 => ?<, 1 => ?> }[e.version <=> e.remote_version] rescue nil), e.remote_version ] },
177
+ header_styler: bold_head
178
+ )
174
179
  t.add_column(:path, header_styler: bold_head)
175
180
  }.pack
176
181
  when 'kext'
@@ -194,13 +199,25 @@ when 'list'
194
199
  e.Volumes =
195
200
  ContainerDisk.new(disk: e.ParentWholeDisk, limiter: 'internal').VolumesFromDisks
196
201
  end
202
+ aliases = $config.devices.to_h.each_with_object({}) do |(dk,dv),h|
203
+ h[dv[:name]] = dk
204
+ end
197
205
  puts Tabulo::Table.new(efis, align_header: :left, border: :modern) { |t|
198
- t.add_column(:Booted, styler: -> v, _ { v == ?☑ ? v.green : v.red }, header_styler: bold_head) { |e| e.Booted ? ?☑ : ?☐ }
206
+ t.add_column(
207
+ :Booted,
208
+ styler: -> v, _ { v == ?☑ ? v.green : v.red },
209
+ header_styler: bold_head
210
+ ) { |e| e.Booted ? ?☑ : ?☐ }
199
211
  t.add_column(:VolumeName, header_styler: bold_head)
212
+ t.add_column(:Alias, header_styler: bold_head) { |e| aliases[e.VolumeName] }
200
213
  t.add_column(:DeviceIdentifier, header_styler: bold_head)
201
214
  t.add_column(:ParentWholeDisk, header_styler: bold_head)
202
215
  t.add_column(:Volumes, header_styler: bold_head) { |e| e.Volumes * ?, }
203
- t.add_column(:MountPoint, styler: -> v, _ { v.empty? ? v : v.green }, header_styler: bold_head)
216
+ t.add_column(
217
+ :MountPoint,
218
+ styler: -> v, _ { v.empty? ? v : v.green },
219
+ header_styler: bold_head
220
+ )
204
221
  }.pack
205
222
  else
206
223
  fail "don't know how to #{command}"
@@ -1,19 +1,19 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: hackmac 0.6.0 ruby lib
2
+ # stub: hackmac 0.8.1 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "hackmac".freeze
6
- s.version = "0.6.0"
6
+ s.version = "0.8.1"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2020-05-05"
11
+ s.date = "2020-08-22"
12
12
  s.description = "This ruby gem provides some useful tools for working with a Hackintosh.".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["gfxmon".freeze, "usb".freeze, "efi".freeze]
15
- s.extra_rdoc_files = ["README.md".freeze, "lib/hackmac.rb".freeze, "lib/hackmac/config.rb".freeze, "lib/hackmac/disks.rb".freeze, "lib/hackmac/kext.rb".freeze, "lib/hackmac/kext_source.rb".freeze, "lib/hackmac/kext_upgrader.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/utils.rb".freeze, "lib/hackmac/version.rb".freeze]
16
- s.files = [".gitignore".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/efi".freeze, "bin/gfxmon".freeze, "bin/usb".freeze, "hackmac.gemspec".freeze, "lib/hackmac.rb".freeze, "lib/hackmac/config.rb".freeze, "lib/hackmac/disks.rb".freeze, "lib/hackmac/kext.rb".freeze, "lib/hackmac/kext_source.rb".freeze, "lib/hackmac/kext_upgrader.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/utils.rb".freeze, "lib/hackmac/version.rb".freeze]
15
+ s.extra_rdoc_files = ["README.md".freeze, "lib/hackmac.rb".freeze, "lib/hackmac/config.rb".freeze, "lib/hackmac/disks.rb".freeze, "lib/hackmac/kext.rb".freeze, "lib/hackmac/kext_download.rb".freeze, "lib/hackmac/kext_source.rb".freeze, "lib/hackmac/kext_upgrader.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/utils.rb".freeze, "lib/hackmac/version.rb".freeze]
16
+ s.files = [".gitignore".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/efi".freeze, "bin/gfxmon".freeze, "bin/usb".freeze, "hackmac.gemspec".freeze, "lib/hackmac.rb".freeze, "lib/hackmac/config.rb".freeze, "lib/hackmac/disks.rb".freeze, "lib/hackmac/kext.rb".freeze, "lib/hackmac/kext_download.rb".freeze, "lib/hackmac/kext_source.rb".freeze, "lib/hackmac/kext_upgrader.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/utils.rb".freeze, "lib/hackmac/version.rb".freeze]
17
17
  s.homepage = "http://github.com/flori/hackmac".freeze
18
18
  s.rdoc_options = ["--title".freeze, "Hackmac - Some useful tools for working with a Hackintosh".freeze, "--main".freeze, "README.md".freeze]
19
19
  s.rubygems_version = "3.1.2".freeze
@@ -8,6 +8,7 @@ require 'hackmac/plist'
8
8
  require 'hackmac/disks'
9
9
  require 'hackmac/kext'
10
10
  require 'hackmac/kext_source'
11
+ require 'hackmac/kext_download'
11
12
  require 'hackmac/kext_upgrader'
12
13
  require 'hackmac/config'
13
14
  require 'hackmac/utils'
@@ -15,14 +15,14 @@ module Hackmac
15
15
  os: '/Applications/Install macOS Mojave.app'
16
16
  devices:
17
17
  main:
18
- name: EFI
19
- #backup:
20
- # name: BACKUP_EFI
18
+ name: 'OSX_EFI'
19
+ backup:
20
+ name: 'BACKUP_EFI'
21
21
  github:
22
22
  user: null
23
23
  access_token: null
24
24
  kext:
25
- efi_path: EFI/CLOVER/kexts/Other
25
+ efi_path: 'EFI/CLOVER/kexts/Other'
26
26
  sources:
27
27
  AppleALC:
28
28
  github: 'acidanthera/AppleALC'
@@ -30,19 +30,27 @@ module Hackmac
30
30
  github: 'acidanthera/IntelMausi'
31
31
  Lilu:
32
32
  github: 'acidanthera/Lilu'
33
- USBInjectAll:
34
- github: 'Sniki/OS-X-USB-Inject-All'
33
+ #USBInjectAll:
34
+ # github: 'Sniki/OS-X-USB-Inject-All'
35
35
  VirtualSMC:
36
36
  github: 'acidanthera/VirtualSMC'
37
+ debug: false
37
38
  plugins:
38
39
  - SMCProcessor
39
40
  - SMCSuperIO
41
+ BrcmPatchRAM2:
42
+ download:
43
+ name: 'BrcmPatchRAM'
44
+ version: '2.2.10'
45
+ url: 'https://bitbucket.org/RehabMan/os-x-brcmpatchram/downloads/RehabMan-BrcmPatchRAM-2018-0505.zip'
46
+ plugins:
47
+ - BrcmFirmwareData
40
48
  WhateverGreen:
41
49
  github: 'acidanthera/WhateverGreen'
42
50
  end
43
51
 
44
52
  def self.load
45
- path = File.expand_path('~/config')
53
+ path = File.expand_path('~/.config/hackmac')
46
54
  mkdir_p path
47
55
  ComplexConfig::Provider.config_dir = path
48
56
  config_path = File.join(path, 'hackmac.yml')
@@ -40,11 +40,20 @@ module Hackmac
40
40
  def remote_kext
41
41
  return @remote_kext if @remote_kext
42
42
  if @config
43
- if source = @config.kext.sources[name] and github = source&.github
43
+ source = @config.kext.sources[name] or return
44
+ case
45
+ when github = source&.github?
44
46
  auth = [ @config.github.user, @config.github.access_token ].compact
45
47
  auth.empty? and auth = nil
46
- suffix = source.debug? ? 'DEBUG' : 'RELEASE'
48
+ suffix =
49
+ case debug = source.debug?
50
+ when true then 'DEBUG'
51
+ when false then 'RELEASE'
52
+ when nil then nil
53
+ end
47
54
  @remote_kext = Hackmac::KextSource.new(github, auth: auth, suffix: suffix)
55
+ when download = source&.download
56
+ @remote_kext = Hackmac::KextDownload.new(download.name, download.version, download.url)
48
57
  end
49
58
  end
50
59
  end
@@ -0,0 +1,39 @@
1
+ require 'open-uri'
2
+ require 'tins/string_version'
3
+
4
+ module Hackmac
5
+ class KextDownload
6
+ include Tins::StringVersion
7
+
8
+ def initialize(name, version, url)
9
+ @name = name
10
+ @url = url
11
+ @version = Version.new(version)
12
+ end
13
+
14
+ attr_reader :name
15
+
16
+ attr_reader :version
17
+
18
+ def download_asset
19
+ data = URI.open(
20
+ @url,
21
+ 'Accept' => 'application/octet-stream',
22
+ &:read
23
+ )
24
+ return File.basename(@url), data
25
+ end
26
+
27
+ def inspect
28
+ "#<#{self.class}: #{to_s}>"
29
+ end
30
+
31
+ def to_s
32
+ "#{name} #{version}"
33
+ end
34
+
35
+ def to_s
36
+ "#{name} #{version}"
37
+ end
38
+ end
39
+ end
@@ -11,7 +11,7 @@ module Hackmac
11
11
  def initialize(github, auth: nil, suffix: nil)
12
12
  @github = github
13
13
  @auth = auth
14
- @suffix = Regexp.quote(suffix || 'RELEASE')
14
+ @suffix = (Regexp.quote(suffix) if suffix)
15
15
  account, repo = github.split(?/)
16
16
  @name = repo
17
17
  releases = URI.open(
@@ -42,12 +42,13 @@ module Hackmac
42
42
 
43
43
  def download_asset
44
44
  @release or return
45
- asset = @release.assets.find { |a| a.name =~ /#@suffix.*\.zip\z/i } or return
45
+ asset = @release.assets.find { |a| a.name =~ /#@suffix.*\.(zip|tar\.gz)\z/i } or return
46
46
  data = URI.open(
47
47
  (GITHUB_API_URL % github) + ("/assets/%s" % asset.id),
48
48
  'Accept' => 'application/octet-stream',
49
- http_basic_authentication: auth
50
- ) { |o| o.read }
49
+ http_basic_authentication: auth,
50
+ &:read
51
+ )
51
52
  return asset.name, data
52
53
  end
53
54
 
@@ -20,6 +20,19 @@ module Hackmac
20
20
  end
21
21
  end
22
22
 
23
+ def decompress(name)
24
+ print "Decompressing #{name.inspect}…"
25
+ case name
26
+ when /\.zip\z/i
27
+ system "unzip #{name.inspect}" or fail "Could not unzip #{name.inspect}"
28
+ when /\.tar\.gz\z/i
29
+ system "tar xfz #{name.inspect}" or fail "Could not tar xfz #{name.inspect}"
30
+ else
31
+ fail "Cannot decompress #{name.inspect}"
32
+ end
33
+ puts "done!"
34
+ end
35
+
23
36
  public
24
37
 
25
38
  def perform
@@ -32,7 +45,7 @@ module Hackmac
32
45
  name, data = kext.remote_kext.download_asset
33
46
  if name
34
47
  File.secure_write(name, data)
35
- system "unzip #{name.inspect}" or fail "Could not unzip #{name.inspect}"
48
+ decompress(name)
36
49
  kext_pathes = []
37
50
  Find.find(dir) do |path|
38
51
  if File.directory?(path)
@@ -1,6 +1,6 @@
1
1
  module Hackmac
2
2
  # Hackmac version
3
- VERSION = '0.6.0'
3
+ VERSION = '0.8.1'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hackmac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-05 00:00:00.000000000 Z
11
+ date: 2020-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -149,6 +149,7 @@ extra_rdoc_files:
149
149
  - lib/hackmac/config.rb
150
150
  - lib/hackmac/disks.rb
151
151
  - lib/hackmac/kext.rb
152
+ - lib/hackmac/kext_download.rb
152
153
  - lib/hackmac/kext_source.rb
153
154
  - lib/hackmac/kext_upgrader.rb
154
155
  - lib/hackmac/plist.rb
@@ -168,6 +169,7 @@ files:
168
169
  - lib/hackmac/config.rb
169
170
  - lib/hackmac/disks.rb
170
171
  - lib/hackmac/kext.rb
172
+ - lib/hackmac/kext_download.rb
171
173
  - lib/hackmac/kext_source.rb
172
174
  - lib/hackmac/kext_upgrader.rb
173
175
  - lib/hackmac/plist.rb
@@ -176,7 +178,7 @@ files:
176
178
  homepage: http://github.com/flori/hackmac
177
179
  licenses: []
178
180
  metadata: {}
179
- post_install_message:
181
+ post_install_message:
180
182
  rdoc_options:
181
183
  - "--title"
182
184
  - Hackmac - Some useful tools for working with a Hackintosh
@@ -196,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
198
  version: '0'
197
199
  requirements: []
198
200
  rubygems_version: 3.1.2
199
- signing_key:
201
+ signing_key:
200
202
  specification_version: 4
201
203
  summary: Some useful tools for working with a Hackintosh
202
204
  test_files: []