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 +4 -4
- data/VERSION +1 -1
- data/bin/efi +26 -9
- data/hackmac.gemspec +5 -5
- data/lib/hackmac.rb +1 -0
- data/lib/hackmac/config.rb +15 -7
- data/lib/hackmac/kext.rb +11 -2
- data/lib/hackmac/kext_download.rb +39 -0
- data/lib/hackmac/kext_source.rb +5 -4
- data/lib/hackmac/kext_upgrader.rb +14 -1
- data/lib/hackmac/version.rb +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1c4e84816963538116a40d14930813dc43f284196de0909c9685ac26133c8c8a
|
|
4
|
+
data.tar.gz: 9cc12d81f2fb041279c7e50ee4787222ce2d51ed1461e086282278f9edd09f3c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 715e90bca64b6cf603e5c886e69367f2f05941b08d5f5e8010cb93b66fbf1aa011909058e08361bf347463191baae2c691aedef220fcc3de484bb1ce91353a77
|
|
7
|
+
data.tar.gz: 275adcacccf97fdca702fe4f77839373156371bc3de9445a13e06003fcecf2968738135bb0298260481e922b6b92cee03fb1de0be1cff217de0cfdb0e4530638
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
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
|
-
|
|
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(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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(
|
|
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(
|
|
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}"
|
data/hackmac.gemspec
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: hackmac 0.
|
|
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
|
+
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-
|
|
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
|
data/lib/hackmac.rb
CHANGED
data/lib/hackmac/config.rb
CHANGED
|
@@ -15,14 +15,14 @@ module Hackmac
|
|
|
15
15
|
os: '/Applications/Install macOS Mojave.app'
|
|
16
16
|
devices:
|
|
17
17
|
main:
|
|
18
|
-
name:
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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('
|
|
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')
|
data/lib/hackmac/kext.rb
CHANGED
|
@@ -40,11 +40,20 @@ module Hackmac
|
|
|
40
40
|
def remote_kext
|
|
41
41
|
return @remote_kext if @remote_kext
|
|
42
42
|
if @config
|
|
43
|
-
|
|
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 =
|
|
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
|
data/lib/hackmac/kext_source.rb
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
48
|
+
decompress(name)
|
|
36
49
|
kext_pathes = []
|
|
37
50
|
Find.find(dir) do |path|
|
|
38
51
|
if File.directory?(path)
|
data/lib/hackmac/version.rb
CHANGED
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.
|
|
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-
|
|
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: []
|