smcutil 0.1.0 → 0.1.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
  SHA1:
3
- metadata.gz: 165680ad2d5588af70e496f3f6b7a7d4a56a4314
4
- data.tar.gz: 4d6c65c58123b7c21ae7be1daa1a8697e8f1ed25
3
+ metadata.gz: 3c4bb933bb6f5f67cd3df1439465c31ea4e2bc98
4
+ data.tar.gz: 9e473e109138ab90e03d6aec19267ef494a15bb9
5
5
  SHA512:
6
- metadata.gz: 6727b4a69f724a5b814b60f455a560b3b477cfb47dfaa9777064960a9488a4abff82428be826c75f50949e5a9e60d6f32c4de861f060bb8f73e9c672f610ec16
7
- data.tar.gz: e58bac82ff91fc468d389c56d1a86773a2c0a4c0b3ac2d052069bff4464146bbd7356e306131688db3c90c1b8cd3e86227bd20624689769dfe6e80021fd8f8b0
6
+ metadata.gz: f6ee078e9cd3e827bae43c9a69ba6fec82c7cb73b9e4a24aa565eb38f4747de909e1958fbfc3cde64a70f180bff6402195829692a5a9a355f0f310c347d51d56
7
+ data.tar.gz: 8644ee2a9b45a9aed11e5d551399626d4f19f3c6f15f289c127ff41224bd1e3553aef19dc2f489c60fa6384865045ac08ff529cfadb552f20fd1541843cebfb8
data/.idea/.rakeTasks ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build smcutil-0.1.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated files" fullCmd="clobber" taksId="clobber" /><RakeTask description="Build and install smcutil-0.1.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install smcutil-0.1.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Create tag v0.1.0 and build and push smcutil-0.1.0.gem to Rubygems" fullCmd="release[remote]" taksId="release[remote]" /><RakeTask description="Run RSpec code examples" fullCmd="spec" taksId="spec" /><RakeTask description="" fullCmd="default" taksId="default" /><RakeTask description="" fullCmd="release" taksId="release" /><RakeGroup description="" fullCmd="" taksId="release"><RakeTask description="" fullCmd="release:guard_clean" taksId="guard_clean" /><RakeTask description="" fullCmd="release:rubygem_push" taksId="rubygem_push" /><RakeTask description="" fullCmd="release:source_control_push" taksId="source_control_push" /></RakeGroup></RakeGroup></Settings>
data/.idea/smcutil.iml CHANGED
@@ -8,5 +8,12 @@
8
8
  <orderEntry type="inheritedJdk" />
9
9
  <orderEntry type="sourceFolder" forTests="false" />
10
10
  <orderEntry type="library" scope="PROVIDED" name="bundler (v1.15.4, rbenv: 2.4.2) [gem]" level="application" />
11
+ <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.3, rbenv: 2.4.2) [gem]" level="application" />
12
+ <orderEntry type="library" scope="PROVIDED" name="rake (v10.5.0, rbenv: 2.4.2) [gem]" level="application" />
13
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v3.6.0, rbenv: 2.4.2) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.6.0, rbenv: 2.4.2) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.6.0, rbenv: 2.4.2) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.6.0, rbenv: 2.4.2) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.6.0, rbenv: 2.4.2) [gem]" level="application" />
11
18
  </component>
12
19
  </module>
data/.idea/workspace.xml CHANGED
@@ -1,31 +1,17 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
+ <component name="AutoTestManager">
4
+ <enabled-run-configurations>
5
+ <run-configuration type="RakeRunConfigurationType" name="Rake: spec" />
6
+ </enabled-run-configurations>
7
+ </component>
3
8
  <component name="ChangeListManager">
4
9
  <list default="true" id="79f8e064-6b6b-45b7-a43f-11c6b4aaa82e" name="Default" comment="">
5
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.gitignore" />
6
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
7
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/modules.xml" />
8
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/smcutil.iml" />
9
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
10
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
11
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.rspec" />
12
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.travis.yml" />
13
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/CODE_OF_CONDUCT.md" />
14
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Gemfile" />
15
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/LICENSE.txt" />
16
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/README.md" />
17
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Rakefile" />
18
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/bin/console" />
19
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/bin/setup" />
20
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/exe/smcutil" />
21
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/smcutil.rb" />
22
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/smcutil/file_validator.rb" />
23
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/smcutil/version.rb" />
24
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/smcutil.gemspec" />
25
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/spec/fixtures/flasher_base.smc" />
26
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb" />
27
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/spec/smcutil_spec.rb" />
28
- <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/spec/spec_helper.rb" />
10
+ <change type="DELETED" beforePath="$PROJECT_DIR$/smcutil-0.1.0.gem" afterPath="" />
11
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
12
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
13
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/exe/smcutil" afterPath="$PROJECT_DIR$/exe/smcutil" />
14
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/smcutil/version.rb" afterPath="$PROJECT_DIR$/lib/smcutil/version.rb" />
29
15
  </list>
30
16
  <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
31
17
  <option name="TRACKING_ENABLED" value="true" />
@@ -34,53 +20,56 @@
34
20
  <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
35
21
  <option name="LAST_RESOLUTION" value="IGNORE" />
36
22
  </component>
23
+ <component name="CoverageDataManager">
24
+ <SUITE FILE_PATH="coverage/smcutil@Rake__spec.coverage" NAME="Rake: spec Coverage Results" MODIFIED="1507714768825" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="smcutil" />
25
+ </component>
37
26
  <component name="FileEditorManager">
38
- <leaf>
39
- <file leaf-file-name="smcutil.rb" pinned="false" current-in-tab="false">
40
- <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
27
+ <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
28
+ <file leaf-file-name="file_extractor.rb" pinned="false" current-in-tab="false">
29
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_extractor.rb">
41
30
  <provider selected="true" editor-type-id="text-editor">
42
- <state relative-caret-position="45">
43
- <caret line="3" column="26" lean-forward="true" selection-start-line="3" selection-start-column="26" selection-end-line="3" selection-end-column="26" />
31
+ <state relative-caret-position="0">
32
+ <caret line="24" column="3" lean-forward="false" selection-start-line="24" selection-start-column="3" selection-end-line="24" selection-end-column="3" />
44
33
  <folding />
45
34
  </state>
46
35
  </provider>
47
36
  </entry>
48
37
  </file>
49
- <file leaf-file-name="smcutil.gemspec" pinned="false" current-in-tab="true">
50
- <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
38
+ <file leaf-file-name="smcutil" pinned="false" current-in-tab="false">
39
+ <entry file="file://$PROJECT_DIR$/exe/smcutil">
51
40
  <provider selected="true" editor-type-id="text-editor">
52
- <state relative-caret-position="283">
53
- <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
41
+ <state relative-caret-position="105">
42
+ <caret line="7" column="12" lean-forward="false" selection-start-line="7" selection-start-column="12" selection-end-line="7" selection-end-column="12" />
54
43
  <folding />
55
44
  </state>
56
45
  </provider>
57
46
  </entry>
58
47
  </file>
59
- <file leaf-file-name="spec_helper.rb" pinned="false" current-in-tab="false">
60
- <entry file="file://$PROJECT_DIR$/spec/spec_helper.rb">
48
+ <file leaf-file-name="smcutil.gemspec" pinned="false" current-in-tab="false">
49
+ <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
61
50
  <provider selected="true" editor-type-id="text-editor">
62
- <state relative-caret-position="0">
63
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
51
+ <state relative-caret-position="283">
52
+ <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
64
53
  <folding />
65
54
  </state>
66
55
  </provider>
67
56
  </entry>
68
57
  </file>
69
- <file leaf-file-name="version.rb" pinned="false" current-in-tab="false">
58
+ <file leaf-file-name="version.rb" pinned="false" current-in-tab="true">
70
59
  <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
71
60
  <provider selected="true" editor-type-id="text-editor">
72
- <state relative-caret-position="45">
73
- <caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
61
+ <state relative-caret-position="15">
62
+ <caret line="1" column="18" lean-forward="false" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
74
63
  <folding />
75
64
  </state>
76
65
  </provider>
77
66
  </entry>
78
67
  </file>
79
- <file leaf-file-name="file_validator.rb" pinned="false" current-in-tab="false">
80
- <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
68
+ <file leaf-file-name="file_reader_spec.rb" pinned="false" current-in-tab="false">
69
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_reader_spec.rb">
81
70
  <provider selected="true" editor-type-id="text-editor">
82
- <state relative-caret-position="60">
83
- <caret line="4" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
71
+ <state relative-caret-position="75">
72
+ <caret line="5" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
84
73
  <folding />
85
74
  </state>
86
75
  </provider>
@@ -88,19 +77,29 @@
88
77
  </file>
89
78
  <file leaf-file-name="file_validator_spec.rb" pinned="false" current-in-tab="false">
90
79
  <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
80
+ <provider selected="true" editor-type-id="text-editor">
81
+ <state relative-caret-position="240">
82
+ <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
83
+ <folding />
84
+ </state>
85
+ </provider>
86
+ </entry>
87
+ </file>
88
+ <file leaf-file-name="file_extractor_spec.rb" pinned="false" current-in-tab="false">
89
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
91
90
  <provider selected="true" editor-type-id="text-editor">
92
91
  <state relative-caret-position="135">
93
- <caret line="9" column="3" lean-forward="true" selection-start-line="9" selection-start-column="3" selection-end-line="9" selection-end-column="3" />
92
+ <caret line="9" column="42" lean-forward="false" selection-start-line="9" selection-start-column="42" selection-end-line="9" selection-end-column="42" />
94
93
  <folding />
95
94
  </state>
96
95
  </provider>
97
96
  </entry>
98
97
  </file>
99
- <file leaf-file-name="flasher_base.smc" pinned="false" current-in-tab="false">
100
- <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc">
98
+ <file leaf-file-name="file_validator.rb" pinned="false" current-in-tab="false">
99
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
101
100
  <provider selected="true" editor-type-id="text-editor">
102
- <state relative-caret-position="0">
103
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
101
+ <state relative-caret-position="45">
102
+ <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
104
103
  <folding />
105
104
  </state>
106
105
  </provider>
@@ -114,12 +113,24 @@
114
113
  <component name="IdeDocumentHistory">
115
114
  <option name="CHANGED_PATHS">
116
115
  <list>
117
- <option value="$PROJECT_DIR$/lib/smcutil.rb" />
118
- <option value="$PROJECT_DIR$/lib/smcutil/version.rb" />
119
- <option value="$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb" />
116
+ <option value="$PROJECT_DIR$/smcutil.gemspec" />
117
+ <option value="$PROJECT_DIR$/lib/smcutil/file_parser.rb" />
118
+ <option value="$PROJECT_DIR$/spec/smcutil_spec.rb" />
120
119
  <option value="$PROJECT_DIR$/lib/smcutil/file_validator.rb" />
120
+ <option value="$PROJECT_DIR$/spec/smcutil/file_spec.rb" />
121
+ <option value="$PROJECT_DIR$/lib/smcutil/file.rb" />
122
+ <option value="$PROJECT_DIR$/spec/smcutil/file_reader_spec.rb" />
123
+ <option value="$PROJECT_DIR$/spec/fixtures/flasher_base_unknown_command.smc" />
124
+ <option value="$PROJECT_DIR$/spec/fixtures/flasher_base_lenth.smc" />
125
+ <option value="$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb" />
126
+ <option value="$PROJECT_DIR$/spec/fixtures/flasher_base_checksum.smc" />
127
+ <option value="$PROJECT_DIR$/lib/smcutil.rb" />
128
+ <option value="$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb" />
129
+ <option value="$PROJECT_DIR$/lib/smcutil/file_reader.rb" />
130
+ <option value="$PROJECT_DIR$/lib/smcutil/file_extractor.rb" />
121
131
  <option value="$PROJECT_DIR$/exe/smcutil" />
122
- <option value="$PROJECT_DIR$/smcutil.gemspec" />
132
+ <option value="$PROJECT_DIR$/README.md" />
133
+ <option value="$PROJECT_DIR$/lib/smcutil/version.rb" />
123
134
  </list>
124
135
  </option>
125
136
  </component>
@@ -129,10 +140,10 @@
129
140
  <detection-done>true</detection-done>
130
141
  <sorting>DEFINITION_ORDER</sorting>
131
142
  </component>
132
- <component name="ProjectFrameBounds">
143
+ <component name="ProjectFrameBounds" extendedState="6">
133
144
  <option name="y" value="23" />
134
145
  <option name="width" value="1680" />
135
- <option name="height" value="986" />
146
+ <option name="height" value="983" />
136
147
  </component>
137
148
  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
138
149
  <component name="ProjectView">
@@ -151,6 +162,7 @@
151
162
  </navigator>
152
163
  <panes>
153
164
  <pane id="Scope" />
165
+ <pane id="Scratches" />
154
166
  <pane id="ProjectPane">
155
167
  <subPane>
156
168
  <expand>
@@ -190,15 +202,21 @@
190
202
  <item name="spec" type="462c0819:PsiDirectoryNode" />
191
203
  <item name="fixtures" type="462c0819:PsiDirectoryNode" />
192
204
  </path>
205
+ <path>
206
+ <item name="smcutil" type="b2602c69:ProjectViewProjectNode" />
207
+ <item name="smcutil" type="462c0819:PsiDirectoryNode" />
208
+ <item name="spec" type="462c0819:PsiDirectoryNode" />
209
+ <item name="smcutil" type="462c0819:PsiDirectoryNode" />
210
+ </path>
193
211
  </expand>
194
212
  <select />
195
213
  </subPane>
196
214
  </pane>
197
- <pane id="Scratches" />
198
215
  </panes>
199
216
  </component>
200
217
  <component name="PropertiesComponent">
201
218
  <property name="WebServerToolWindowFactoryState" value="false" />
219
+ <property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
202
220
  </component>
203
221
  <component name="RecentsManager">
204
222
  <key name="CopyFile.RECENT_KEYS">
@@ -217,10 +235,37 @@
217
235
  </list>
218
236
  </option>
219
237
  </component>
238
+ <component name="RunManager" selected="Rake.Rake: spec">
239
+ <configuration name="Rake: spec" type="RakeRunConfigurationType" factoryName="Rake">
240
+ <module name="smcutil" />
241
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
242
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
243
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
244
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
245
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
246
+ <envs />
247
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
248
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
249
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
250
+ <COVERAGE_PATTERN ENABLED="true">
251
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
252
+ </COVERAGE_PATTERN>
253
+ </EXTENSION>
254
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="spec" />
255
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
256
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE=":rspec " />
257
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
258
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
259
+ <RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
260
+ </configuration>
261
+ </component>
220
262
  <component name="ShelveChangesManager" show_recycled="false">
221
263
  <option name="remove_strategy" value="false" />
222
264
  </component>
223
265
  <component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" />
266
+ <component name="SvnConfiguration">
267
+ <configuration />
268
+ </component>
224
269
  <component name="TaskManager">
225
270
  <task active="true" id="Default" summary="Default task">
226
271
  <changelist id="79f8e064-6b6b-45b7-a43f-11c6b4aaa82e" name="Default" comment="" />
@@ -228,33 +273,67 @@
228
273
  <option name="number" value="Default" />
229
274
  <option name="presentableId" value="Default" />
230
275
  <updated>1507637323942</updated>
231
- <workItem from="1507637325399" duration="1046000" />
276
+ <workItem from="1507637325399" duration="2380000" />
277
+ <workItem from="1507706458195" duration="11326000" />
278
+ <workItem from="1507771477082" duration="56000" />
232
279
  </task>
233
280
  <servers />
234
281
  </component>
282
+ <component name="TestHistory">
283
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 32m 45s.xml">
284
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
285
+ </history-entry>
286
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 32m 58s.xml">
287
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
288
+ </history-entry>
289
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 35m 01s.xml">
290
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
291
+ </history-entry>
292
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 35m 22s.xml">
293
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
294
+ </history-entry>
295
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 35m 36s.xml">
296
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
297
+ </history-entry>
298
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 36m 23s.xml">
299
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
300
+ </history-entry>
301
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 37m 07s.xml">
302
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
303
+ </history-entry>
304
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 37m 18s.xml">
305
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
306
+ </history-entry>
307
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 39m 08s.xml">
308
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
309
+ </history-entry>
310
+ <history-entry file="Rake__spec - 2017.10.11 at 02h 39m 29s.xml">
311
+ <configuration name="Rake: spec" configurationId="RakeRunConfigurationType" />
312
+ </history-entry>
313
+ </component>
235
314
  <component name="TimeTrackingManager">
236
- <option name="totallyTimeSpent" value="1046000" />
315
+ <option name="totallyTimeSpent" value="13762000" />
237
316
  </component>
238
317
  <component name="ToolWindowManager">
239
- <frame x="0" y="23" width="1680" height="986" extended-state="0" />
318
+ <frame x="0" y="23" width="1680" height="983" extended-state="6" />
240
319
  <editor active="true" />
241
320
  <layout>
242
- <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24969475" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
321
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1990232" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
243
322
  <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
244
- <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
245
- <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
246
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33043477" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
247
- <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
323
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
324
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
325
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
326
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33151582" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
248
327
  <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
249
- <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
328
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
329
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
250
330
  <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
251
- <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
252
331
  <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
253
- <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
254
332
  <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
255
333
  <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
256
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
257
334
  <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
335
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
336
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32934782" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
258
337
  <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
259
338
  </layout>
260
339
  </component>
@@ -269,11 +348,84 @@
269
348
  <watches-manager />
270
349
  </component>
271
350
  <component name="editorHistoryManager">
351
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_extractor.rb">
352
+ <provider selected="true" editor-type-id="text-editor">
353
+ <state relative-caret-position="360">
354
+ <caret line="24" column="3" lean-forward="false" selection-start-line="24" selection-start-column="3" selection-end-line="24" selection-end-column="3" />
355
+ <folding />
356
+ </state>
357
+ </provider>
358
+ </entry>
359
+ <entry file="file://$PROJECT_DIR$/exe/smcutil">
360
+ <provider selected="true" editor-type-id="text-editor">
361
+ <state relative-caret-position="105">
362
+ <caret line="7" column="12" lean-forward="false" selection-start-line="7" selection-start-column="12" selection-end-line="7" selection-end-column="12" />
363
+ <folding />
364
+ </state>
365
+ </provider>
366
+ </entry>
367
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_reader_spec.rb">
368
+ <provider selected="true" editor-type-id="text-editor">
369
+ <state relative-caret-position="75">
370
+ <caret line="5" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
371
+ <folding />
372
+ </state>
373
+ </provider>
374
+ </entry>
375
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
376
+ <provider selected="true" editor-type-id="text-editor">
377
+ <state relative-caret-position="240">
378
+ <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
379
+ <folding />
380
+ </state>
381
+ </provider>
382
+ </entry>
383
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
384
+ <provider selected="true" editor-type-id="text-editor">
385
+ <state relative-caret-position="135">
386
+ <caret line="9" column="42" lean-forward="false" selection-start-line="9" selection-start-column="42" selection-end-line="9" selection-end-column="42" />
387
+ <folding />
388
+ </state>
389
+ </provider>
390
+ </entry>
391
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
392
+ <provider selected="true" editor-type-id="text-editor">
393
+ <state relative-caret-position="45">
394
+ <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
395
+ <folding />
396
+ </state>
397
+ </provider>
398
+ </entry>
399
+ <entry file="file://$PROJECT_DIR$/README.md">
400
+ <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
401
+ <state split_layout="SPLIT">
402
+ <first_editor relative-caret-position="210">
403
+ <caret line="14" column="37" lean-forward="true" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
404
+ <folding />
405
+ </first_editor>
406
+ <second_editor />
407
+ </state>
408
+ </provider>
409
+ </entry>
410
+ <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
411
+ <provider selected="true" editor-type-id="text-editor">
412
+ <state relative-caret-position="45">
413
+ <caret line="3" column="32" lean-forward="false" selection-start-line="3" selection-start-column="32" selection-end-line="3" selection-end-column="32" />
414
+ </state>
415
+ </provider>
416
+ </entry>
417
+ <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
418
+ <provider selected="true" editor-type-id="text-editor">
419
+ <state relative-caret-position="285">
420
+ <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
421
+ <folding />
422
+ </state>
423
+ </provider>
424
+ </entry>
272
425
  <entry file="file://$PROJECT_DIR$/spec/spec_helper.rb">
273
426
  <provider selected="true" editor-type-id="text-editor">
274
427
  <state relative-caret-position="0">
275
428
  <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
276
- <folding />
277
429
  </state>
278
430
  </provider>
279
431
  </entry>
@@ -285,50 +437,143 @@
285
437
  </state>
286
438
  </provider>
287
439
  </entry>
288
- <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc">
440
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
441
+ <provider selected="true" editor-type-id="text-editor">
442
+ <state relative-caret-position="45">
443
+ <caret line="3" column="18" lean-forward="false" selection-start-line="3" selection-start-column="18" selection-end-line="3" selection-end-column="18" />
444
+ <folding />
445
+ </state>
446
+ </provider>
447
+ </entry>
448
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
449
+ <provider selected="true" editor-type-id="text-editor">
450
+ <state relative-caret-position="135">
451
+ <caret line="9" column="3" lean-forward="false" selection-start-line="9" selection-start-column="3" selection-end-line="9" selection-end-column="3" />
452
+ <folding />
453
+ </state>
454
+ </provider>
455
+ </entry>
456
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc" />
457
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
458
+ <provider selected="true" editor-type-id="text-editor">
459
+ <state relative-caret-position="210">
460
+ <caret line="14" column="3" lean-forward="true" selection-start-line="14" selection-start-column="3" selection-end-line="14" selection-end-column="3" />
461
+ </state>
462
+ </provider>
463
+ </entry>
464
+ <entry file="file://$PROJECT_DIR$/Gemfile">
465
+ <provider selected="true" editor-type-id="text-editor">
466
+ <state relative-caret-position="90">
467
+ <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
468
+ <folding />
469
+ </state>
470
+ </provider>
471
+ </entry>
472
+ <entry file="file://$PROJECT_DIR$/spec/smcutil_spec.rb">
473
+ <provider selected="true" editor-type-id="text-editor">
474
+ <state relative-caret-position="105">
475
+ <caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
476
+ </state>
477
+ </provider>
478
+ </entry>
479
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base_unknown_command.smc">
480
+ <provider selected="true" editor-type-id="text-editor">
481
+ <state relative-caret-position="285">
482
+ <caret line="19" column="1" lean-forward="false" selection-start-line="19" selection-start-column="1" selection-end-line="19" selection-end-column="1" />
483
+ </state>
484
+ </provider>
485
+ </entry>
486
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base_lenth.smc">
487
+ <provider selected="true" editor-type-id="text-editor">
488
+ <state relative-caret-position="59">
489
+ <caret line="7" column="4" lean-forward="false" selection-start-line="7" selection-start-column="4" selection-end-line="7" selection-end-column="4" />
490
+ </state>
491
+ </provider>
492
+ </entry>
493
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base_checksum.smc">
494
+ <provider selected="true" editor-type-id="text-editor">
495
+ <state relative-caret-position="195">
496
+ <caret line="13" column="72" lean-forward="false" selection-start-line="13" selection-start-column="72" selection-end-line="13" selection-end-column="72" />
497
+ </state>
498
+ </provider>
499
+ </entry>
500
+ <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
501
+ <provider selected="true" editor-type-id="text-editor">
502
+ <state relative-caret-position="75">
503
+ <caret line="5" column="51" lean-forward="false" selection-start-line="5" selection-start-column="51" selection-end-line="5" selection-end-column="51" />
504
+ </state>
505
+ </provider>
506
+ </entry>
507
+ <entry file="file://$PROJECT_DIR$/spec/spec_helper.rb">
289
508
  <provider selected="true" editor-type-id="text-editor">
290
509
  <state relative-caret-position="0">
291
510
  <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
511
+ </state>
512
+ </provider>
513
+ </entry>
514
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc" />
515
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_reader_spec.rb">
516
+ <provider selected="true" editor-type-id="text-editor">
517
+ <state relative-caret-position="75">
518
+ <caret line="5" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
292
519
  <folding />
293
520
  </state>
294
521
  </provider>
295
522
  </entry>
296
523
  <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
524
+ <provider selected="true" editor-type-id="text-editor">
525
+ <state relative-caret-position="240">
526
+ <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
527
+ <folding />
528
+ </state>
529
+ </provider>
530
+ </entry>
531
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
297
532
  <provider selected="true" editor-type-id="text-editor">
298
533
  <state relative-caret-position="135">
299
- <caret line="9" column="3" lean-forward="true" selection-start-line="9" selection-start-column="3" selection-end-line="9" selection-end-column="3" />
534
+ <caret line="9" column="42" lean-forward="false" selection-start-line="9" selection-start-column="42" selection-end-line="9" selection-end-column="42" />
300
535
  <folding />
301
536
  </state>
302
537
  </provider>
303
538
  </entry>
304
539
  <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
305
540
  <provider selected="true" editor-type-id="text-editor">
306
- <state relative-caret-position="60">
307
- <caret line="4" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
541
+ <state relative-caret-position="45">
542
+ <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
308
543
  <folding />
309
544
  </state>
310
545
  </provider>
311
546
  </entry>
312
- <entry file="file://$PROJECT_DIR$/exe/smcutil">
547
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
313
548
  <provider selected="true" editor-type-id="text-editor">
314
- <state relative-caret-position="375">
315
- <caret line="25" column="3" lean-forward="true" selection-start-line="25" selection-start-column="3" selection-end-line="25" selection-end-column="3" />
316
- <folding />
549
+ <state relative-caret-position="120">
550
+ <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
317
551
  </state>
318
552
  </provider>
319
553
  </entry>
320
- <entry file="file://$PROJECT_DIR$/Gemfile">
554
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_extractor.rb">
321
555
  <provider selected="true" editor-type-id="text-editor">
322
- <state relative-caret-position="90">
323
- <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
556
+ <state relative-caret-position="0">
557
+ <caret line="24" column="3" lean-forward="false" selection-start-line="24" selection-start-column="3" selection-end-line="24" selection-end-column="3" />
324
558
  <folding />
325
559
  </state>
326
560
  </provider>
327
561
  </entry>
328
- <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
562
+ <entry file="file://$PROJECT_DIR$/README.md">
563
+ <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
564
+ <state split_layout="SPLIT">
565
+ <first_editor relative-caret-position="210">
566
+ <caret line="14" column="37" lean-forward="false" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
567
+ <folding />
568
+ </first_editor>
569
+ <second_editor />
570
+ </state>
571
+ </provider>
572
+ </entry>
573
+ <entry file="file://$PROJECT_DIR$/exe/smcutil">
329
574
  <provider selected="true" editor-type-id="text-editor">
330
- <state relative-caret-position="45">
331
- <caret line="3" column="26" lean-forward="true" selection-start-line="3" selection-start-column="26" selection-end-line="3" selection-end-column="26" />
575
+ <state relative-caret-position="105">
576
+ <caret line="7" column="12" lean-forward="false" selection-start-line="7" selection-start-column="12" selection-end-line="7" selection-end-column="12" />
332
577
  <folding />
333
578
  </state>
334
579
  </provider>
@@ -341,5 +586,13 @@
341
586
  </state>
342
587
  </provider>
343
588
  </entry>
589
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
590
+ <provider selected="true" editor-type-id="text-editor">
591
+ <state relative-caret-position="15">
592
+ <caret line="1" column="18" lean-forward="false" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
593
+ <folding />
594
+ </state>
595
+ </provider>
596
+ </entry>
344
597
  </component>
345
598
  </project>
data/README.md CHANGED
@@ -1,28 +1,32 @@
1
- # Smcutil
1
+ # `smcutil` for Appple SMC
2
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/smcutil`. 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
3
+ `smcutil` is a command line tool for reading Apple's SMC payloads, validating them, fingerprinting them and extracting the contents for disassembly.
6
4
 
7
5
  ## Installation
8
6
 
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'smcutil'
13
- ```
14
-
15
- And then execute:
16
-
17
- $ bundle
18
-
19
- Or install it yourself as:
7
+ Install it yourself as:
20
8
 
21
9
  $ gem install smcutil
22
10
 
23
11
  ## Usage
24
12
 
25
- TODO: Write usage instructions here
13
+ $ smcutil
14
+
15
+ Usage: smcutil {command} [PARAMS]
16
+
17
+ Command is one of:
18
+
19
+ validate {file.smc}:
20
+ Causes smcutil to parse the Apple SMC file and validate correctness.
21
+
22
+ info {file.smc}:
23
+ Prints information about the SMC update file.
24
+
25
+ flashfile {file.smc} {output.bin}:
26
+ Pretends to execute an update of the SMC flash as though the output.bin file is the SMC flash ROM.
27
+
28
+ save {output.bin}:
29
+ Has magical cow powers. Assuming I can make this work: GOLDEN TICKET
26
30
 
27
31
  ## Development
28
32
 
@@ -32,7 +36,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
36
 
33
37
  ## Contributing
34
38
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/smcutil. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
39
+ Bug reports and pull requests are welcome on GitHub at https://github.com/rickmark/smcutil. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
40
 
37
41
  ## License
38
42
 
@@ -40,4 +44,4 @@ The gem is available as open source under the terms of the [MIT License](http://
40
44
 
41
45
  ## Code of Conduct
42
46
 
43
- Everyone interacting in the Smcutil project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/smcutil/blob/master/CODE_OF_CONDUCT.md).
47
+ Everyone interacting in the SmcUtil project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/rickmark/smcutil/blob/master/CODE_OF_CONDUCT.md).
data/exe/smcutil CHANGED
@@ -5,7 +5,7 @@ require 'optparse'
5
5
 
6
6
 
7
7
  options = {}
8
- OptParse.new do |opts|
8
+ OptionParser.new do |opts|
9
9
  opts.banner = <<-BANNER
10
10
  Usage: smcutil {command} [PARAMS]
11
11
 
@@ -23,4 +23,4 @@ OptParse.new do |opts|
23
23
  save {output.bin}:
24
24
  Has magical cow powers. Assuming I can make this work: GOLDEN TICKET
25
25
  BANNER
26
- end
26
+ end.parse!
@@ -0,0 +1,25 @@
1
+ class SmcUtil::FileExtractor
2
+ OUTPUT_FILE_FLAGS = File::CREAT | File::TRUNC | File::WRONLY
3
+
4
+ def initialize(file_reader)
5
+ @file_reader = file_reader
6
+ end
7
+
8
+
9
+ def extract_to(path)
10
+ File.open(File.join(path, 'header.bin'), OUTPUT_FILE_FLAGS) do |file|
11
+ file.write @file_reader.header
12
+ end
13
+
14
+ File.open(File.join(path, 'signature.bin'), OUTPUT_FILE_FLAGS) do |file|
15
+ file.write @file_reader.signature
16
+ end
17
+
18
+ File.open(File.join(path, 'binary.bin'), OUTPUT_FILE_FLAGS) do |file|
19
+ @file_reader.regions.each do |offset, content|
20
+ file.seek offset
21
+ file.write content
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,60 @@
1
+ module SmcUtil
2
+ LINE_COMMAND = /((?<type>[[:upper:]]):(?<offset>([[:xdigit:]]{2})+:)?|(?<continue>\+\s+:))(?<length>\d+):(?<data>([[:xdigit:]]{2})+):(?<check>[[:xdigit:]]{2})/
3
+
4
+ class FileReader
5
+ attr_reader :header
6
+ attr_reader :signature
7
+ attr_reader :regions
8
+
9
+
10
+ def initialize(data)
11
+
12
+ # Setup the collected data
13
+ @header = String.new
14
+ @signature = String.new
15
+ @regions = {}
16
+
17
+ current_region = nil
18
+
19
+ data.each_line.with_index do |line, index|
20
+ # Zero based indexing is not compatible with how people think about lines in a file
21
+ index += 1
22
+
23
+ # Prepare to parse the line
24
+ line ||= line.strip!
25
+ puts "INFO: #{line}" && next if line.nil? or line.start_with? '#'
26
+ match = LINE_COMMAND.match(line)
27
+ raise "LINE #{index}: Does not match format" unless match
28
+
29
+ # Validate Length
30
+ raise "LINE #{index}: Length mismatch on line; expected #{match[:length]}, got #{match[:data].length / 2}" unless match[:length].to_i == match[:data].length / 2
31
+
32
+ # Validate check digit
33
+ data = match[:data].scan(/../).map { |x| x.hex.chr }.join
34
+ check = match[:check].to_i(16)
35
+ sum = data.codepoints.map { |c| c.to_i }.reduce(:+) & 0xFF
36
+ raise "LINE #{index}: Checksum does not match; exptected #{check}, got #{sum}" unless sum == check
37
+
38
+ case match[:type]
39
+ when 'H'
40
+ @header += data
41
+ when 'S'
42
+ @signature += data
43
+ when 'D'
44
+ current_region = match[:offset].to_i(16)
45
+ @regions[current_region] = String.new
46
+ @regions[current_region] += data
47
+ else
48
+ raise "LINE #{index}: Command #{match[:type]} not recognised" unless match[:continue]
49
+ raise "LINE #{index}: Continuation row with no data region set" unless current_region
50
+
51
+ @regions[current_region] += data
52
+ end
53
+ end
54
+ end
55
+
56
+ def self.parse(path)
57
+ FileReader.new(File.open(path))
58
+ end
59
+ end
60
+ end
@@ -1,6 +1,6 @@
1
1
 
2
2
 
3
- module SmcFlasher
3
+ module SmcUtil
4
4
  class FileValidator
5
5
 
6
6
  end
@@ -1,3 +1,3 @@
1
1
  module SmcUtil
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/smcutil.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require "smcutil/version"
2
2
 
3
3
  module SmcUtil
4
- # Your code goes here...
4
+ autoload :FileReader, 'smcutil/file_reader'
5
+ autoload :FileValidator, 'smcutil/file_validator'
6
+ autoload :FileExtractor, 'smcutil/file_extractor'
5
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smcutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Mark
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-10 00:00:00.000000000 Z
11
+ date: 2017-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -62,6 +62,7 @@ extensions: []
62
62
  extra_rdoc_files: []
63
63
  files:
64
64
  - ".gitignore"
65
+ - ".idea/.rakeTasks"
65
66
  - ".idea/misc.xml"
66
67
  - ".idea/modules.xml"
67
68
  - ".idea/smcutil.iml"
@@ -78,6 +79,8 @@ files:
78
79
  - bin/setup
79
80
  - exe/smcutil
80
81
  - lib/smcutil.rb
82
+ - lib/smcutil/file_extractor.rb
83
+ - lib/smcutil/file_reader.rb
81
84
  - lib/smcutil/file_validator.rb
82
85
  - lib/smcutil/version.rb
83
86
  - smcutil.gemspec