hackmac 0.0.4 → 0.1.0
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/Rakefile +2 -0
- data/VERSION +1 -1
- data/bin/efi +70 -67
- data/hackmac.gemspec +9 -5
- data/lib/hackmac/config.rb +49 -0
- data/lib/hackmac/kext.rb +30 -20
- data/lib/hackmac/kext_source.rb +48 -0
- data/lib/hackmac/plist.rb +9 -0
- data/lib/hackmac/version.rb +1 -1
- data/lib/hackmac.rb +2 -0
- metadata +34 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 770a49155c7dd33375a43996b62f7e594b6d18f0e9fba87b8bfd6124bcc98d5f
|
4
|
+
data.tar.gz: 9c4d786f6df212bc390cfe64caae581da4833dfe161c48fcee0aeccf435ffd5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e5ab0f0d08aa06c4854208a53961b11d7f8ef8d5478168da7799d4b682c3ec2a785816bd20744f5d0d6f3ef6f34071882dfea6a4ac521558c6d4f94db20c4c4
|
7
|
+
data.tar.gz: a62c1e3e3ebbd650a5904cbcd7d4f54d248de162415aedbe8fdc36ec66b874525f98b5af5b841638c0c0728176d27352496ee0e8f57f847c84e6ff40342f9782
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/bin/efi
CHANGED
@@ -6,6 +6,7 @@ require 'term/ansicolor'
|
|
6
6
|
class String
|
7
7
|
include Term::ANSIColor
|
8
8
|
end
|
9
|
+
require 'tabulo'
|
9
10
|
|
10
11
|
def x(cmd, verbose: true)
|
11
12
|
prompt = cmd =~ /\A\s*sudo/ ? ?# : ?$
|
@@ -31,27 +32,25 @@ def clone(from:, to:)
|
|
31
32
|
end
|
32
33
|
x %{sudo mkdir -v "/Volumes/#{from}"}
|
33
34
|
x %{sudo mkdir -v "/Volumes/#{to}"}
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
exit 1
|
42
|
-
end
|
43
|
-
x %{rsync -av --exclude ".*" --delete "/Volumes/#{from}/" "/Volumes/#{to}/"}
|
44
|
-
ensure
|
45
|
-
x %{sudo diskutil unmount "#{from}"}
|
46
|
-
x %{sudo diskutil unmount "#{to}"}
|
35
|
+
x %{sudo diskutil mount -mountPoint "/Volumes/#{from}" "#{from}"}
|
36
|
+
x %{sudo diskutil mount -mountPoint "/Volumes/#{to}" "#{to}"}
|
37
|
+
x %{rsync -nav --exclude ".*" --delete "/Volumes/#{from}/" "/Volumes/#{to}/"}
|
38
|
+
print "This will be copied/deleted. Really do it? (y/n) ".bold.yellow
|
39
|
+
if gets !~ /\Ay/i
|
40
|
+
puts " *** Interrupted.".bold.yellow
|
41
|
+
exit 1
|
47
42
|
end
|
43
|
+
x %{rsync -av --exclude ".*" --delete "/Volumes/#{from}/" "/Volumes/#{to}/"}
|
48
44
|
end
|
49
45
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
46
|
+
def boot_dev
|
47
|
+
unless @boot_dev
|
48
|
+
value = x(%{bdmesg}, verbose: false).lines.
|
49
|
+
find { |l| l =~ /SelfDevicePath=(.*)\r/ and break $1 }
|
50
|
+
uuid = value.split('\\').last[/(?:<?GPT,)([\h-]+)/, 1] or exit 1
|
51
|
+
@boot_dev = x(%{partutil --search-uuid #{uuid}}).chomp
|
52
|
+
end
|
53
|
+
@boot_dev
|
55
54
|
end
|
56
55
|
|
57
56
|
def usage
|
@@ -85,18 +84,37 @@ def usage
|
|
85
84
|
|
86
85
|
argument PATH to the kext
|
87
86
|
|
88
|
-
kexts list kexts
|
87
|
+
kexts list kexts versions by clover
|
89
88
|
|
90
89
|
argument DEVICE (defaults to #{default_dev})
|
91
90
|
|
92
91
|
The EFI partion on DEVICE is used to find the clover kexts in
|
93
92
|
subdirectory /Other.
|
94
93
|
|
95
|
-
|
94
|
+
list shows boot disk information (which EFI partition was used)
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
$config = Hackmac::Config.load
|
96
100
|
|
101
|
+
def device_name(mdev)
|
102
|
+
case mdev
|
103
|
+
when 'boot'
|
104
|
+
boot_dev
|
105
|
+
when nil
|
106
|
+
$config.devices.main.name
|
107
|
+
else
|
108
|
+
if n = $config.devices[mdev]&.name
|
109
|
+
n
|
110
|
+
else
|
111
|
+
mdev
|
112
|
+
end
|
97
113
|
end
|
98
114
|
end
|
99
115
|
|
116
|
+
bold_head = -> h { h.sub(/\A[a-z]/) { $&.upcase }.bold }
|
117
|
+
|
100
118
|
case command = ARGV.shift
|
101
119
|
when 'help', nil
|
102
120
|
usage
|
@@ -104,75 +122,60 @@ when 'mount'
|
|
104
122
|
#if File.exist?('/Volumes/EFI')
|
105
123
|
# raise "/Volumes/EFI already exists => Sort this out first."
|
106
124
|
#end
|
107
|
-
mdev = ARGV.shift
|
125
|
+
mdev = device_name(ARGV.shift)
|
108
126
|
x %{sudo diskutil mount "#{mdev}"}
|
109
127
|
# TODO symlink to /Volumes/mdev, mdev should be foo['MountPoint'] from efi boot
|
110
128
|
when /\Aun?mount\z/
|
111
|
-
mdev = ARGV.shift
|
129
|
+
mdev = device_name(ARGV.shift)
|
112
130
|
x %{sudo diskutil unmount "#{mdev}"}
|
113
131
|
# TODO remove /Volumes/mdev if it is a symlink
|
114
132
|
when 'clone'
|
115
133
|
from = ARGV.shift or fail "need from argument"
|
116
|
-
from
|
117
|
-
to
|
118
|
-
to
|
134
|
+
from = device_name(from)
|
135
|
+
to = ARGV.shift or fail "need to argument"
|
136
|
+
to = device_name(to)
|
119
137
|
from != to or fail "cloning only allowed from one partition to another"
|
120
138
|
clone from: from, to: to
|
121
139
|
when 'kexts'
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
puts 'L/E'.yellow.bold
|
136
|
-
on_le.each do |kext|
|
137
|
-
puts kext.compare_to(on_efi)
|
138
|
-
end
|
139
|
-
ensure
|
140
|
-
x %{sudo diskutil umount "#{mdev}"}
|
141
|
-
end
|
140
|
+
mdev = device_name(ARGV.shift)
|
141
|
+
x %{sudo diskutil mount "#{mdev}"}
|
142
|
+
on_efi = Dir["/Volumes/#{mdev}/#{$config.kext.efi_path}/*.kext"].map { |path|
|
143
|
+
Kext.new(path: path, config: $config)
|
144
|
+
}.sort_by(&:name)
|
145
|
+
puts 'EFI'.yellow.bold + " (#{mdev})".bold
|
146
|
+
puts Tabulo::Table.new(on_efi, align_header: :left, border: :modern) { |t|
|
147
|
+
t.add_column(:name, header_styler: bold_head)
|
148
|
+
t.add_column(:itself, header: 'Version/Remote',
|
149
|
+
styler: -> v, s { v.version < v.remote_version ? s.red : s.green rescue s.yellow },
|
150
|
+
formatter: -> e { "%s %s %s" % [ e.version, ({ 0 => ?=, -1 => ?<, 1 => ?> }[e.version <=> e.remote_version] rescue nil), e.remote_version ] },
|
151
|
+
header_styler: bold_head)
|
152
|
+
}.pack
|
142
153
|
when 'kext'
|
143
154
|
path = ARGV.shift or fail 'need kext dir'
|
144
155
|
puts Kext.new(path: path)
|
145
|
-
when '
|
156
|
+
when 'list'
|
146
157
|
disks = Disks.new
|
147
158
|
efis = []
|
148
159
|
disks.as_hash['AllDisksAndPartitions'].each_with_object([]) { |d, ps|
|
149
160
|
uuids = Array(d['Partitions']&.map { |p| p['DiskUUID'] }&.compact)
|
150
161
|
efis.concat uuids.
|
151
162
|
map { |uuid| DiskInfo.new(disk: uuid) }.
|
152
|
-
select { |di| di.
|
163
|
+
select { |di| di.FilesystemType == 'msdos' }
|
153
164
|
}
|
154
|
-
efis.map!(&:as_hash)
|
155
165
|
efis.each do |e|
|
156
|
-
e
|
157
|
-
e
|
158
|
-
ContainerDisk.new(disk: e
|
159
|
-
as_hash['VolumesFromDisks']
|
166
|
+
e.Booted = e.DeviceIdentifier == boot_dev
|
167
|
+
e.Volumes =
|
168
|
+
ContainerDisk.new(disk: e.ParentWholeDisk, limiter: 'internal').VolumesFromDisks
|
160
169
|
end
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
'ParentWholeDisk',
|
171
|
-
'VolumeName',
|
172
|
-
'Volumes',
|
173
|
-
)
|
174
|
-
}
|
175
|
-
).bold
|
170
|
+
puts Tabulo::Table.new(efis, align_header: :left, border: :modern) { |t|
|
171
|
+
t.add_column(:Booted, styler: -> v, _ { v == ?☑ ? v.green : v.red }, header_styler: bold_head) { |e| e.Booted ? ?☑ : ?☐ }
|
172
|
+
t.add_column(:VolumeName, header_styler: bold_head)
|
173
|
+
t.add_column(:DeviceIdentifier, header_styler: bold_head)
|
174
|
+
t.add_column(:ParentWholeDisk, header_styler: bold_head)
|
175
|
+
t.add_column(:DiskUUID, header_styler: bold_head)
|
176
|
+
t.add_column(:Volumes, header_styler: bold_head) { |e| e.Volumes * ?, }
|
177
|
+
t.add_column(:MountPoint, styler: -> v, _ { v.empty? ? v : v.green }, header_styler: bold_head)
|
178
|
+
}.pack
|
176
179
|
else
|
177
180
|
fail "don't know how to #{command}"
|
178
181
|
end
|
data/hackmac.gemspec
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: hackmac 0.0
|
2
|
+
# stub: hackmac 0.1.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "hackmac".freeze
|
6
|
-
s.version = "0.0
|
6
|
+
s.version = "0.1.0"
|
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-01-
|
11
|
+
s.date = "2020-01-28"
|
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, "efi".freeze]
|
15
|
-
s.extra_rdoc_files = ["README.md".freeze, "lib/hackmac.rb".freeze, "lib/hackmac/disks.rb".freeze, "lib/hackmac/kext.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/search_ui.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, "hackmac.gemspec".freeze, "lib/hackmac.rb".freeze, "lib/hackmac/disks.rb".freeze, "lib/hackmac/kext.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/search_ui.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_source.rb".freeze, "lib/hackmac/plist.rb".freeze, "lib/hackmac/search_ui.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, "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/plist.rb".freeze, "lib/hackmac/search_ui.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
|
@@ -27,13 +27,17 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
|
28
28
|
s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.14"])
|
29
29
|
s.add_runtime_dependency(%q<term-ansicolor>.freeze, ["~> 1.3"])
|
30
|
+
s.add_runtime_dependency(%q<complex_config>.freeze, [">= 0"])
|
30
31
|
s.add_runtime_dependency(%q<amatch>.freeze, [">= 0"])
|
31
32
|
s.add_runtime_dependency(%q<plist>.freeze, [">= 0"])
|
33
|
+
s.add_runtime_dependency(%q<tabulo>.freeze, [">= 0"])
|
32
34
|
else
|
33
35
|
s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
|
34
36
|
s.add_dependency(%q<tins>.freeze, ["~> 1.14"])
|
35
37
|
s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.3"])
|
38
|
+
s.add_dependency(%q<complex_config>.freeze, [">= 0"])
|
36
39
|
s.add_dependency(%q<amatch>.freeze, [">= 0"])
|
37
40
|
s.add_dependency(%q<plist>.freeze, [">= 0"])
|
41
|
+
s.add_dependency(%q<tabulo>.freeze, [">= 0"])
|
38
42
|
end
|
39
43
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'complex_config/shortcuts'
|
2
|
+
require 'tins/xt/secure_write'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
module Hackmac
|
6
|
+
module Config
|
7
|
+
extend FileUtils
|
8
|
+
extend ComplexConfig::Provider::Shortcuts
|
9
|
+
|
10
|
+
DEFAULT = <<~end
|
11
|
+
---
|
12
|
+
devices:
|
13
|
+
boot:
|
14
|
+
name: EFI
|
15
|
+
#backup:
|
16
|
+
# name: BACKUP_EFI
|
17
|
+
github:
|
18
|
+
user: null
|
19
|
+
access_token: null
|
20
|
+
kext:
|
21
|
+
efi_path: EFI/CLOVER/kexts/Other
|
22
|
+
sources:
|
23
|
+
AppleALC:
|
24
|
+
github: 'acidanthera/AppleALC'
|
25
|
+
IntelMausi:
|
26
|
+
github: 'acidanthera/IntelMausi'
|
27
|
+
Lilu:
|
28
|
+
github: 'acidanthera/Lilu'
|
29
|
+
USBInjectAll:
|
30
|
+
github: 'Sniki/OS-X-USB-Inject-All'
|
31
|
+
VirtualSMC:
|
32
|
+
github: 'acidanthera/VirtualSMC'
|
33
|
+
WhateverGreen:
|
34
|
+
github: 'acidanthera/WhateverGreen'
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.load
|
39
|
+
path = File.expand_path('~/config')
|
40
|
+
mkdir_p path
|
41
|
+
ComplexConfig::Provider.config_dir = path
|
42
|
+
config_path = File.join(path, 'hackmac.yml')
|
43
|
+
unless File.exist?(config_path)
|
44
|
+
File.secure_write(config_path, DEFAULT)
|
45
|
+
end
|
46
|
+
complex_config.hackmac
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/hackmac/kext.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
require 'hackmac/plist'
|
2
2
|
require 'pathname'
|
3
|
+
require 'tins/string_version'
|
3
4
|
|
4
5
|
module Hackmac
|
5
6
|
class Kext
|
6
7
|
include Hackmac::Plist
|
8
|
+
include Tins::StringVersion
|
7
9
|
|
8
|
-
def initialize(path:)
|
9
|
-
@path
|
10
|
-
@plist
|
10
|
+
def initialize(path:, config: nil)
|
11
|
+
@path = Pathname.new(path) + 'Contents/Info.plist'
|
12
|
+
@plist = File.open(@path, encoding: 'UTF-8') { |f| ::Plist.parse_xml(f) }
|
13
|
+
@config = config
|
11
14
|
end
|
12
15
|
|
13
16
|
def identifier
|
@@ -19,31 +22,38 @@ module Hackmac
|
|
19
22
|
end
|
20
23
|
|
21
24
|
def version
|
22
|
-
|
25
|
+
unless @version
|
26
|
+
if version = as_hash['CFBundleShortVersionString']
|
27
|
+
begin
|
28
|
+
@version = Version.new(version)
|
29
|
+
rescue ArgumentError
|
30
|
+
@version = version
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
@version
|
23
35
|
end
|
24
36
|
|
25
|
-
def
|
26
|
-
|
37
|
+
def remote_kext
|
38
|
+
if @config
|
39
|
+
if github = @config.kext.sources[name]&.github
|
40
|
+
auth = [ @config.github.user, @config.github.access_token ].compact
|
41
|
+
auth.empty? and auth = nil
|
42
|
+
@remote_kext = Hackmac::KextSource.new(github, auth: auth)
|
43
|
+
end
|
44
|
+
end
|
27
45
|
end
|
28
46
|
|
29
|
-
def
|
30
|
-
|
47
|
+
def remote_version
|
48
|
+
remote_kext&.version
|
31
49
|
end
|
32
50
|
|
33
|
-
def
|
34
|
-
|
35
|
-
candidates.group_by { |c| c.version == version }
|
51
|
+
def inspect
|
52
|
+
"#<#{self.class}: #{to_s}>"
|
36
53
|
end
|
37
54
|
|
38
|
-
def
|
39
|
-
|
40
|
-
if other = matches[false]&.first
|
41
|
-
"#{to_s.red} ⚡#{other.to_s.red}"
|
42
|
-
elsif other = matches[true]&.first
|
43
|
-
"#{to_s.green} = #{other.to_s.green}"
|
44
|
-
else
|
45
|
-
"#{to_s.yellow}"
|
46
|
-
end
|
55
|
+
def to_s
|
56
|
+
"#{name} #{version}"
|
47
57
|
end
|
48
58
|
end
|
49
59
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'json'
|
3
|
+
require 'tins/string_version'
|
4
|
+
|
5
|
+
module Hackmac
|
6
|
+
class KextSource
|
7
|
+
GITHUB_API_URL = 'https://api.github.com/repos/%s/releases'
|
8
|
+
|
9
|
+
include Tins::StringVersion
|
10
|
+
|
11
|
+
def initialize(github, auth: nil)
|
12
|
+
account, repo = github.split(?/)
|
13
|
+
@name = repo
|
14
|
+
releases = URI.open(
|
15
|
+
GITHUB_API_URL % github,
|
16
|
+
http_basic_authentication: auth) { |o|
|
17
|
+
JSON.parse(o.read, object_class: JSON::GenericObject)
|
18
|
+
}
|
19
|
+
if version = releases.map { |r|
|
20
|
+
next unless r.tag_name.include?(?.)
|
21
|
+
version = r.tag_name.delete '^.0-9'
|
22
|
+
begin
|
23
|
+
Version.new(version)
|
24
|
+
rescue ArgumentError
|
25
|
+
end
|
26
|
+
}.compact.max
|
27
|
+
then
|
28
|
+
@version = version
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
attr_reader :name
|
33
|
+
|
34
|
+
attr_reader :version
|
35
|
+
|
36
|
+
def inspect
|
37
|
+
"#<#{self.class}: #{to_s}>"
|
38
|
+
end
|
39
|
+
|
40
|
+
def to_s
|
41
|
+
"#{name} #{version}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def to_s
|
45
|
+
"#{name} #{version}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/hackmac/plist.rb
CHANGED
data/lib/hackmac/version.rb
CHANGED
data/lib/hackmac.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.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: complex_config
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: amatch
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: tabulo
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
description: This ruby gem provides Some useful tools for working with a Hackintosh.
|
84
112
|
email: flori@ping.de
|
85
113
|
executables:
|
@@ -89,8 +117,10 @@ extensions: []
|
|
89
117
|
extra_rdoc_files:
|
90
118
|
- README.md
|
91
119
|
- lib/hackmac.rb
|
120
|
+
- lib/hackmac/config.rb
|
92
121
|
- lib/hackmac/disks.rb
|
93
122
|
- lib/hackmac/kext.rb
|
123
|
+
- lib/hackmac/kext_source.rb
|
94
124
|
- lib/hackmac/plist.rb
|
95
125
|
- lib/hackmac/search_ui.rb
|
96
126
|
- lib/hackmac/version.rb
|
@@ -104,8 +134,10 @@ files:
|
|
104
134
|
- bin/gfxmon
|
105
135
|
- hackmac.gemspec
|
106
136
|
- lib/hackmac.rb
|
137
|
+
- lib/hackmac/config.rb
|
107
138
|
- lib/hackmac/disks.rb
|
108
139
|
- lib/hackmac/kext.rb
|
140
|
+
- lib/hackmac/kext_source.rb
|
109
141
|
- lib/hackmac/plist.rb
|
110
142
|
- lib/hackmac/search_ui.rb
|
111
143
|
- lib/hackmac/version.rb
|