hackmac 0.6.0 → 0.8.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 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: []