reapack-index 1.1 → 1.2rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd904ac44e1103ecec541683a97a3a4cce44fa32
4
- data.tar.gz: 5c0bcfb7ca38662c267993920846a6bdf270580f
3
+ metadata.gz: db912d74637f26faf3747b1efa0018a0f7c1bd17
4
+ data.tar.gz: da3003e1d50cc3020bd3d4dc74abcb4c23ca5a97
5
5
  SHA512:
6
- metadata.gz: 07e3ffd47e2b8ea8dcbbba7ec78178ed2144f07c26b93b867b90f587ba0cc3b6550d02931ee426878d55b8d32fa4b066ddb596ecf4012a2e6d287a52be943ecd
7
- data.tar.gz: 9cf9cae21b26317a80b70ee11f7e9aa5a17de84be34901263279b611ff9939164e076c4e1e20cd1d9b8fe09f2143136c2e003957dfcd760a63b707e57ac0fc54
6
+ metadata.gz: ce3c8c51d057eaed233bb2bdeff53db11895c8e13ee9a526d69730484967db1fd00d42386defc64d55c2f56dadc9db94ad5bc13ee2151567bb37056da81dfab8
7
+ data.tar.gz: af451fe2ec7c69a9d50d78e8d460c08064837bd25acff3cc3755e1050ee6f8e940646c8164a73537560b9093b0c100eabdcfbe8bfb9f8c02edcc925ab72e2961
data/lib/reapack/index.rb CHANGED
@@ -39,12 +39,16 @@ class ReaPack::Index
39
39
  theme: %w{theme},
40
40
  langpack: %w{reaperlangpack},
41
41
  webinterface: %w{www},
42
+ projecttpl: %w{rpp},
43
+ tracktpl: %w{rtracktemplate},
44
+ midinotenames: %w{txt},
45
+ autoitem: %w{reaperautoitem},
42
46
  }.freeze
43
47
 
44
48
  FS_ROOT = File.expand_path('/').freeze
45
49
 
46
- NAME_REGEX = /\A[^*\\:<>?\/|"[:cntrl:]]{4,24}\Z/.freeze
47
- NAME_INVALID = /\A(:?[\.\x20].+|.+[\.\x20]|CLOCK\$|COM\d|LPT\d)\Z/i.freeze
50
+ NAME_REGEX = /\A[^*\\:<>?\/|"[:cntrl:]]+\Z/.freeze
51
+ NAME_INVALID = /\A(:?[\.\x20].*|.+[\.\x20]|CLOCK\$|COM\d|LPT\d)\Z/i.freeze
48
52
 
49
53
  attr_reader :path, :url_template, :cdetector
50
54
  attr_accessor :amend, :commit, :files, :time, :strict
@@ -191,6 +191,10 @@ class ReaPack::Index::CLI
191
191
  end
192
192
  end.parse! args
193
193
 
194
+ if basepath && !args.empty?
195
+ raise OptionParser::InvalidOption, "#{args.first}"
196
+ end
197
+
194
198
  opts
195
199
  rescue OptionParser::ParseError => e
196
200
  $stderr.puts "#{PROGRAM_NAME}: #{e.message}"
@@ -1,6 +1,6 @@
1
1
  module ReaPack
2
2
  class Index
3
3
  # bump in setup/reapack-index.nsi too
4
- VERSION = '1.1'
4
+ VERSION = '1.2rc1'
5
5
  end
6
6
  end
@@ -68,9 +68,10 @@ class ReaPack::Index
68
68
  return unless remote
69
69
 
70
70
  uri = Gitable::URI.parse remote.url
71
- return unless uri.path =~ /\A\/?(?<user>[^\/]+)\/(?<repo>[^\/]+)(\.git)?\Z/
71
+ return unless uri.path =~ /\A\/?(?<user>[^\/]+)\/(?<repo>[^\/]+)(\.git|\/)?\Z/
72
72
 
73
73
  tpl = uri.to_web_uri
74
+ tpl.path.chomp! '/'
74
75
  tpl.path += '/raw/$commit/$path'
75
76
 
76
77
  tpl.to_s
@@ -40,6 +40,7 @@ class ReaPack::Index
40
40
  :extension_name, :langpack_name, :webinterface_name,
41
41
  :desc, :name] => :description,
42
42
  [:links, :website] => :link,
43
+ :donate => :donation,
43
44
  :screenshots => :screenshot,
44
45
  }.freeze
45
46
 
@@ -145,8 +146,15 @@ class ReaPack::Index
145
146
 
146
147
  files.map {|file|
147
148
  if line.target
148
- target = line.target
149
- expanded = ReaPack::Index.expand line.target, @pkg.category
149
+ if line.target =~ /[\/\\\.]+\z/
150
+ new_dir = ReaPack::Index.expand line.target, ''
151
+ base_file = File.basename file
152
+ target = new_dir.empty? ? base_file : File.join(new_dir, base_file)
153
+ else
154
+ target = line.target
155
+ end
156
+
157
+ expanded = ReaPack::Index.expand target, @pkg.category
150
158
  else
151
159
  target = file
152
160
  end
@@ -10,10 +10,12 @@ class ReaPack::Index
10
10
  all: nil,
11
11
  windows: :all, win32: :windows, win64: :windows,
12
12
  darwin: :all, darwin32: :darwin, darwin64: :darwin,
13
+ linux: :all, linux32: :linux, linux64: :linux,
13
14
  }.freeze
14
15
 
15
16
  SECTIONS = [
16
- :main, :midi_editor
17
+ :main, :midi_editor, :midi_inlineeditor, :midi_eventlisteditor,
18
+ :mediaexplorer
17
19
  ].freeze
18
20
 
19
21
  class << self
@@ -59,6 +61,12 @@ class ReaPack::Index
59
61
  case pkg.topdir.downcase
60
62
  when 'midi editor'
61
63
  :midi_editor
64
+ when 'midi inline editor'
65
+ :midi_inlineeditor
66
+ when 'midi event list editor'
67
+ :midi_eventlisteditor
68
+ when 'media explorer'
69
+ :mediaexplorer
62
70
  else
63
71
  :main
64
72
  end
@@ -363,7 +363,9 @@ class TestIndex::Provides < MiniTest::Test
363
363
 
364
364
  def test_rename_target
365
365
  index = ReaPack::Index.new @dummy_path
366
- index.files = ['Category/source.lua', 'Category/source.png']
366
+ index.files = ['Category/source.lua', 'Category/source.png',
367
+ 'Category/source1.jpg', 'Category/source2.jpg',
368
+ 'Category/sub/source.txt']
367
369
  index.url_template = 'http://host/$path'
368
370
 
369
371
  index.scan index.files.first, <<-IN
@@ -371,6 +373,8 @@ class TestIndex::Provides < MiniTest::Test
371
373
  @provides
372
374
  source.lua > target.lua
373
375
  source.png > target.png
376
+ source*.jpg > target_dir/
377
+ sub/source.txt > .
374
378
  IN
375
379
 
376
380
  index.write!
@@ -379,6 +383,9 @@ class TestIndex::Provides < MiniTest::Test
379
383
 
380
384
  assert_match 'file="target.lua"', xml
381
385
  assert_match 'file="target.png"', xml
386
+ assert_match 'file="target_dir/source1.jpg"', xml
387
+ assert_match 'file="target_dir/source2.jpg"', xml
388
+ assert_match 'file="source.txt"', xml
382
389
  refute_match 'file="source.png"', xml
383
390
 
384
391
  assert_equal 1,
@@ -386,6 +393,23 @@ class TestIndex::Provides < MiniTest::Test
386
393
  assert_match 'http://host/Category/source.png', xml
387
394
  end
388
395
 
396
+ def test_rename_target_conflict
397
+ index = ReaPack::Index.new @dummy_path
398
+
399
+ # target.lua is not in the same directory
400
+ index.files = ['Category/target.lua', 'Category/sub/target.lua']
401
+ index.url_template = 'http://host/$path'
402
+
403
+ error = assert_raises ReaPack::Index::Error do
404
+ index.scan index.files.first, <<-IN
405
+ @version 1.0
406
+ @provides . > target.lua
407
+ @provides sub/target.lua > ./
408
+ IN
409
+ end
410
+ assert_equal "duplicate file 'Category/target.lua'", error.message
411
+ end
412
+
389
413
  def test_rename_target_no_wrong_conflict
390
414
  index = ReaPack::Index.new @dummy_path
391
415
 
@@ -279,4 +279,100 @@ class TestIndex::Scan < MiniTest::Test
279
279
  index.write!
280
280
  assert_equal expected, File.read(index.path)
281
281
  end
282
+
283
+ def test_projecttpl
284
+ index = ReaPack::Index.new @dummy_path
285
+ index.url_template = 'http://host/$path'
286
+ index.files = ['Cat/test.RPP']
287
+
288
+ index.scan index.files.first, '@version 1.0'
289
+
290
+ expected = <<-XML
291
+ <?xml version="1.0" encoding="utf-8"?>
292
+ <index version="1">
293
+ <category name="Cat">
294
+ <reapack name="test.RPP" type="projecttpl">
295
+ <version name="1.0">
296
+ <source>http://host/Cat/test.RPP</source>
297
+ </version>
298
+ </reapack>
299
+ </category>
300
+ </index>
301
+ XML
302
+
303
+ index.write!
304
+ assert_equal expected, File.read(index.path)
305
+ end
306
+
307
+ def test_tracktpl
308
+ index = ReaPack::Index.new @dummy_path
309
+ index.url_template = 'http://host/$path'
310
+ index.files = ['Cat/test.RTrackTemplate']
311
+
312
+ index.scan index.files.first, '@version 1.0'
313
+
314
+ expected = <<-XML
315
+ <?xml version="1.0" encoding="utf-8"?>
316
+ <index version="1">
317
+ <category name="Cat">
318
+ <reapack name="test.RTrackTemplate" type="tracktpl">
319
+ <version name="1.0">
320
+ <source>http://host/Cat/test.RTrackTemplate</source>
321
+ </version>
322
+ </reapack>
323
+ </category>
324
+ </index>
325
+ XML
326
+
327
+ index.write!
328
+ assert_equal expected, File.read(index.path)
329
+ end
330
+
331
+ def test_midinotenames
332
+ index = ReaPack::Index.new @dummy_path
333
+ index.url_template = 'http://host/$path'
334
+ index.files = ['Cat/test.txt']
335
+
336
+ index.scan index.files.first, '@version 1.0'
337
+
338
+ expected = <<-XML
339
+ <?xml version="1.0" encoding="utf-8"?>
340
+ <index version="1">
341
+ <category name="Cat">
342
+ <reapack name="test.txt" type="midinotenames">
343
+ <version name="1.0">
344
+ <source>http://host/Cat/test.txt</source>
345
+ </version>
346
+ </reapack>
347
+ </category>
348
+ </index>
349
+ XML
350
+
351
+ index.write!
352
+ assert_equal expected, File.read(index.path)
353
+ end
354
+
355
+ def test_autoitem
356
+ index = ReaPack::Index.new @dummy_path
357
+ index.url_template = 'http://host/$path'
358
+ index.files = ['Cat/test.ReaperAutoItem']
359
+
360
+ index.scan index.files.first, '@version 1.0'
361
+
362
+ expected = <<-XML
363
+ <?xml version="1.0" encoding="utf-8"?>
364
+ <index version="1">
365
+ <category name="Cat">
366
+ <reapack name="test.ReaperAutoItem" type="autoitem">
367
+ <version name="1.0">
368
+ <source>http://host/Cat/test.ReaperAutoItem</source>
369
+ </version>
370
+ </reapack>
371
+ </category>
372
+ </index>
373
+ XML
374
+
375
+ index.write!
376
+ assert_equal expected, File.read(index.path)
377
+ end
282
378
  end
data/test/test_cli.rb CHANGED
@@ -170,6 +170,16 @@ class TestCLI < MiniTest::Test
170
170
  end
171
171
  end
172
172
 
173
+ def test_config_garbage
174
+ assert_output '', /invalid option: not$/ do
175
+ catch :stop do
176
+ wrapper [], setup: proc {
177
+ mkfile '.reapack-index.conf', "not an option"
178
+ }
179
+ end
180
+ end
181
+ end
182
+
173
183
  def test_working_directory_with_options
174
184
  wrapper do
175
185
  @git.create_commit 'initial commit',
data/test/test_git.rb CHANGED
@@ -37,6 +37,10 @@ class TestGit < MiniTest::Test
37
37
  assert_match "https://github.com/User/Repo/raw/$commit/$path",
38
38
  @git.guess_url_template
39
39
 
40
+ @repo.remotes.set_url 'origin', 'https://github.com/User/Repo/'
41
+ assert_match "https://github.com/User/Repo/raw/$commit/$path",
42
+ @git.guess_url_template
43
+
40
44
  @repo.remotes.set_url 'origin', 'scp://weird/url'
41
45
  assert_nil @git.guess_url_template
42
46
  end
data/test/test_index.rb CHANGED
@@ -16,16 +16,20 @@ class TestIndex < MiniTest::Test
16
16
  ].each {|fn| assert_nil ReaPack::Index.type_of(fn) }
17
17
 
18
18
  {
19
- 'Cat/test.lua' => :script,
20
- 'Cat/test.eel' => :script,
21
- 'Cat/test.py' => :script,
22
- 'Cat/test.ext' => :extension,
23
- 'Cat/test.jsfx' => :effect,
24
- 'Cat/test.data' => :data,
25
- 'Cat/test.theme' => :theme,
26
- 'Cat/test.reaperlangpack' => :langpack,
27
- 'Cat/test.ReaperLangPack' => :langpack,
28
- 'Cat/test.www' => :webinterface,
19
+ 'Cat/test.lua' => :script,
20
+ 'Cat/test.eel' => :script,
21
+ 'Cat/test.py' => :script,
22
+ 'Cat/test.ext' => :extension,
23
+ 'Cat/test.jsfx' => :effect,
24
+ 'Cat/test.data' => :data,
25
+ 'Cat/test.theme' => :theme,
26
+ 'Cat/test.reaperlangpack' => :langpack,
27
+ 'Cat/test.ReaperLangPack' => :langpack,
28
+ 'Cat/test.www' => :webinterface,
29
+ 'Cat/test.RPP' => :projecttpl,
30
+ 'Cat/test.RTrackTemplate' => :tracktpl,
31
+ 'Cate/test.txt' => :midinotenames,
32
+ 'Cate/test.ReaperAutoItem' => :autoitem,
29
33
  }.each {|fn, type|
30
34
  actual = ReaPack::Index.type_of fn
31
35
  assert_equal type, actual,
@@ -33,7 +33,9 @@ class TestProvides < MiniTest::Test
33
33
  end
34
34
 
35
35
  def test_platforms
36
- assert_equal [:windows, :win32, :win64, :darwin, :darwin32, :darwin64],
36
+ assert_equal [:windows, :win32, :win64,
37
+ :darwin, :darwin32, :darwin64,
38
+ :linux, :linux32, :linux64],
37
39
  [
38
40
  '[windows] file',
39
41
  '[win32] file',
@@ -41,6 +43,9 @@ class TestProvides < MiniTest::Test
41
43
  '[Darwin]file',
42
44
  ' [ darwin32 ] file',
43
45
  '[win32 darwin64] file',
46
+ '[linux] file',
47
+ '[linux32] file',
48
+ '[linux64] file',
44
49
  ].map {|l| ReaPack::Index::Provides.parse(l).platform }
45
50
  end
46
51
 
data/test/test_source.rb CHANGED
@@ -135,14 +135,16 @@ class TestSource < MiniTest::Test
135
135
  before = make_node '<version name="1.0"/>'
136
136
  after = <<-XML
137
137
  <version name="1.0">
138
- <source main="main midi_editor">http://host/</source>
138
+ <source main="main mediaexplorer midi_eventlisteditor midi_inlineeditor midi_editor">http://host/</source>
139
139
  </version>
140
140
  XML
141
141
 
142
142
  src = ReaPack::Index::Source.new 'http://host/'
143
143
  assert_empty src.sections
144
- src.sections = [:midi_editor, :main]
145
- assert_equal [:main, :midi_editor], src.sections
144
+ src.sections = [:midi_editor, :main, :midi_inlineeditor,
145
+ :midi_eventlisteditor, :mediaexplorer]
146
+ assert_equal [:main, :mediaexplorer, :midi_eventlisteditor,
147
+ :midi_inlineeditor, :midi_editor], src.sections
146
148
 
147
149
  assert_raises ReaPack::Index::Error do
148
150
  src.sections = [:abc]
@@ -179,14 +181,21 @@ class TestSource < MiniTest::Test
179
181
 
180
182
  def test_auto_main_midi_editor
181
183
  pkg = MiniTest::Mock.new
182
- pkg.expect :type, :script
183
- pkg.expect :topdir, 'MIDI Editor'
184
-
185
184
  src = ReaPack::Index::Source.new 'http://host/'
186
- src.detect_sections pkg
187
- assert_equal [:midi_editor], src.sections
188
185
 
189
- pkg.verify
186
+ {
187
+ 'MIDI Editor' => :midi_editor,
188
+ 'midi editor' => :midi_editor,
189
+ 'midi inline editor' => :midi_inlineeditor,
190
+ 'midi event list editor' => :midi_eventlisteditor,
191
+ 'media explorer' => :mediaexplorer,
192
+ }.each {|dir, section|
193
+ pkg.expect :type, :script
194
+ pkg.expect :topdir, dir
195
+ src.detect_sections pkg
196
+ assert_equal [section], src.sections
197
+ pkg.verify
198
+ }
190
199
  end
191
200
 
192
201
  def test_is_platform
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reapack-index
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.1'
4
+ version: 1.2rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - cfillion
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-16 00:00:00.000000000 Z
11
+ date: 2017-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -222,9 +222,6 @@ files:
222
222
  - lib/reapack/index/source.rb
223
223
  - lib/reapack/index/version.rb
224
224
  - reapack-index.gemspec
225
- - setup/.gitignore
226
- - setup/StrRep.nsh
227
- - setup/reapack-index.nsi
228
225
  - test/cli/test_check.rb
229
226
  - test/cli/test_metadata.rb
230
227
  - test/cli/test_scan.rb
@@ -263,12 +260,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
263
260
  version: '2.3'
264
261
  required_rubygems_version: !ruby/object:Gem::Requirement
265
262
  requirements:
266
- - - ">="
263
+ - - ">"
267
264
  - !ruby/object:Gem::Version
268
- version: '0'
265
+ version: 1.3.1
269
266
  requirements: []
270
267
  rubyforge_project:
271
- rubygems_version: 2.6.8
268
+ rubygems_version: 2.6.13
272
269
  signing_key:
273
270
  specification_version: 4
274
271
  summary: Package indexer for git-based ReaPack repositories
data/setup/.gitignore DELETED
@@ -1 +0,0 @@
1
- *.exe
data/setup/StrRep.nsh DELETED
@@ -1,59 +0,0 @@
1
- ; Source: http://nsis.sourceforge.net/StrRep
2
-
3
- !macro StrRep output string old new
4
- Push `${string}`
5
- Push `${old}`
6
- Push `${new}`
7
- Call StrRep
8
- Pop ${output}
9
- !macroend
10
-
11
- Function StrRep
12
- Exch $R2 ;new
13
- Exch 1
14
- Exch $R1 ;old
15
- Exch 2
16
- Exch $R0 ;string
17
- Push $R3
18
- Push $R4
19
- Push $R5
20
- Push $R6
21
- Push $R7
22
- Push $R8
23
- Push $R9
24
-
25
- StrCpy $R3 0
26
- StrLen $R4 $R1
27
- StrLen $R6 $R0
28
- StrLen $R9 $R2
29
- loop:
30
- StrCpy $R5 $R0 $R4 $R3
31
- StrCmp $R5 $R1 found
32
- StrCmp $R3 $R6 done
33
- IntOp $R3 $R3 + 1 ;move offset by 1 to check the next character
34
- Goto loop
35
- found:
36
- StrCpy $R5 $R0 $R3
37
- IntOp $R8 $R3 + $R4
38
- StrCpy $R7 $R0 "" $R8
39
- StrCpy $R0 $R5$R2$R7
40
- StrLen $R6 $R0
41
- IntOp $R3 $R3 + $R9 ;move offset by length of the replacement string
42
- Goto loop
43
- done:
44
-
45
- Pop $R9
46
- Pop $R8
47
- Pop $R7
48
- Pop $R6
49
- Pop $R5
50
- Pop $R4
51
- Pop $R3
52
- Push $R0
53
- Push $R1
54
- Pop $R0
55
- Pop $R1
56
- Pop $R0
57
- Pop $R2
58
- Exch $R1
59
- FunctionEnd
@@ -1,189 +0,0 @@
1
- Unicode true
2
-
3
- !include MUI2.nsh
4
- !include Sections.nsh
5
- !include StrRep.nsh
6
-
7
- !define VERSION "1.1"
8
- !define NAME "reapack-index ${VERSION}"
9
- !define LONG_VERSION "0.1.0.0"
10
-
11
- !define RUBY_VERSION "2.3.3"
12
- !define RUBYINSTALLER_FILE "rubyinstaller-${RUBY_VERSION}.exe"
13
- !define RUBYINSTALLER_URL \
14
- "http://dl.bintray.com/oneclick/rubyinstaller/${RUBYINSTALLER_FILE}"
15
-
16
- !define PANDOC_VERSION "1.19.1"
17
- !define PANDOC_FILE "pandoc-${PANDOC_VERSION}-windows.msi"
18
- !define PANDOC_URL \
19
- "https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/${PANDOC_FILE}"
20
-
21
- !define RUGGED_VERSION "0.25.1"
22
- !define RUGGED_FILE "rugged-${RUGGED_VERSION}-%PLATFORM%.gem"
23
- !define RUGGED_URL \
24
- "https://github.com/cfillion/reapack-index/releases/download/v1.1/${RUGGED_FILE}"
25
-
26
- Name "${NAME}"
27
- OutFile "reapack-index-${VERSION}.exe"
28
- ShowInstDetails show
29
- XPStyle on
30
- RequestExecutionLevel user
31
- SpaceTexts none
32
-
33
- VIProductVersion "${LONG_VERSION}"
34
- VIAddVersionKey "ProductName" "${NAME}"
35
- VIAddVersionKey "ProductVersion" "${LONG_VERSION}"
36
- VIAddVersionKey "FileDescription" "${NAME} Setup"
37
- VIAddVersionKey "FileVersion" "${LONG_VERSION}"
38
- VIAddVersionKey "LegalCopyright" "Copyright (C) 2015-2017 Christian Fillion"
39
-
40
- !define ABORT_MSG "Installation aborted."
41
-
42
- !insertmacro MUI_PAGE_WELCOME
43
- !insertmacro MUI_PAGE_COMPONENTS
44
- !insertmacro MUI_PAGE_INSTFILES
45
- !insertmacro MUI_PAGE_FINISH
46
-
47
- !insertmacro MUI_LANGUAGE "English"
48
-
49
- !macro DOWNLOAD url file
50
- inetc::get /CONNECTTIMEOUT=30000 "${url}" "${file}" /END
51
- Pop $0
52
- StrCmp $0 "OK" +4
53
- DetailPrint "Error while downloading ${url} to ${file}:"
54
- DetailPrint " $0"
55
- Abort "${ABORT_MSG}"
56
- !macroend
57
-
58
- !macro EXEC_GUI cmd basename
59
- ExecWait '${cmd}' $0
60
- StrCmp $0 "0" +3
61
- DetailPrint "${basename} failed with exit code $0"
62
- Abort "${ABORT_MSG}"
63
- !macroend
64
-
65
- !macro EXEC_CLI cmd basename
66
- DetailPrint 'Execute: ${basename}'
67
- nsExec::ExecToStack '${cmd}'
68
- Pop $0
69
- StrCmp $0 "0" +5
70
- Pop $1
71
- DetailPrint $1
72
- DetailPrint "`${basename}` failed with exit code $0"
73
- Abort "${ABORT_MSG}"
74
- !macroend
75
-
76
- !macro RELOAD_PATH
77
- ; reload the path to use the one freshly set by the ruby installer
78
- ReadRegStr $R1 HKCU "Environment" "Path"
79
- System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("Path", R1).r2'
80
- !macroend
81
-
82
- Section /o "Ruby for Windows" InstallRuby
83
- InitPluginsDir
84
- StrCpy $R0 "$PLUGINSDIR\${RUBYINSTALLER_FILE}"
85
- !insertmacro DOWNLOAD "${RUBYINSTALLER_URL}" $R0
86
-
87
- DetailPrint "Installing Ruby ${RUBY_VERSION}..."
88
- !insertmacro EXEC_GUI '"$R0" /VERYSILENT /TASKS=MODPATH' ${RUBYINSTALLER_FILE}
89
-
90
- !insertmacro RELOAD_PATH
91
-
92
- nsExec::ExecToStack 'ruby -v'
93
- Pop $0
94
-
95
- StrCmp $0 "error" 0 +6 ; failed to launch ruby
96
- MessageBox MB_YESNO|MB_ICONQUESTION "This computer need to be rebooted \
97
- in order to complete the installation process. Reboot now?" IDNO +3
98
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
99
- "reapack-index installer" "$EXEPATH"
100
- Reboot
101
-
102
- DetailPrint "Relaunch reapack-index installer after rebooting your computer."
103
- Abort
104
- SectionEnd
105
-
106
- Section /o "Rugged (libgit2)" InstallRugged
107
- nsExec::ExecToStack '"ruby" -e "print Gem::Platform.local"'
108
- Pop $0
109
- Pop $1
110
- !insertmacro StrRep $R2 "${RUGGED_FILE}" "%PLATFORM%" $1
111
- !insertmacro StrRep $R3 "${RUGGED_URL}" "%PLATFORM%" $1
112
-
113
- InitPluginsDir
114
- StrCpy $R0 "$PLUGINSDIR\$R2"
115
- !insertmacro DOWNLOAD "$R3" $R0
116
-
117
- DetailPrint "Installing rugged/libgit2 with pre-built C extensions..."
118
- !insertmacro EXEC_CLI '"cmd" /C gem install $R0' "gem install $R2"
119
- SectionEnd
120
-
121
- Section /o "Pandoc" InstallPandoc
122
- InitPluginsDir
123
- StrCpy $R0 "$PLUGINSDIR\${PANDOC_FILE}"
124
- !insertmacro DOWNLOAD "${PANDOC_URL}" $R0
125
-
126
- DetailPrint "Installing Pandoc..."
127
- !insertmacro EXEC_GUI '"msiexec" /i $R0 /passive' ${PANDOC_FILE}
128
- SectionEnd
129
-
130
- Section "reapack-index" InstallMain
131
- SectionIn RO
132
-
133
- DetailPrint "Installing reapack-index... (this can take a while)"
134
-
135
- StrCpy $R0 "gem install reapack-index --version=${VERSION}"
136
- !insertmacro EXEC_CLI '"cmd" /C $R0' "$R0"
137
- SectionEnd
138
-
139
- Function .onInit
140
- !insertmacro RELOAD_PATH
141
- nsExec::ExecToStack '"ruby" -e " \
142
- rubyver = Gem::Version.new(RUBY_VERSION); \
143
- exit 2 unless rubyver >= Gem::Version.new(\"${RUBY_VERSION}\"); \
144
- ; \
145
- spec = Gem::Specification.find_all_by_name(\"rugged\").first; \
146
- req = Gem::Requirement.new(\"~> ${RUGGED_VERSION}\"); \
147
- exit 3 unless spec && req =~ spec.version'
148
- Pop $0
149
-
150
- StrCmp $0 "2" +2 0 ; ruby out of date
151
- StrCmp $0 "error" 0 +6 ; failed to launch ruby
152
- SectionGetFlags ${InstallRuby} $1
153
- IntOp $1 $1 | ${SF_SELECTED}
154
- IntOp $1 $1 | ${SF_RO}
155
- SectionSetFlags ${InstallRuby} $1
156
- Goto +2 ; also install rugged
157
-
158
- StrCmp $0 "3" 0 +5 ; rugged missing/out of date
159
- SectionGetFlags ${InstallRugged} $1
160
- IntOp $1 $1 | ${SF_SELECTED}
161
- IntOp $1 $1 | ${SF_RO}
162
- SectionSetFlags ${InstallRugged} $1
163
-
164
- nsExec::ExecToStack '"pandoc" --version'
165
- Pop $0
166
-
167
- StrCmp $0 "error" 0 +4 ; failed to launch pandoc
168
- SectionGetFlags ${InstallPandoc} $1
169
- IntOp $1 $1 | ${SF_SELECTED}
170
- SectionSetFlags ${InstallPandoc} $1
171
-
172
- SectionGetFlags ${InstallMain} $1
173
- IntOp $1 $1 | ${SF_PSELECTED}
174
- SectionSetFlags ${InstallMain} $1
175
- FunctionEnd
176
-
177
- !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
178
- !insertmacro MUI_DESCRIPTION_TEXT ${InstallRuby} \
179
- "Download and install Ruby v${RUBY_VERSION} for Windows on your computer."
180
-
181
- !insertmacro MUI_DESCRIPTION_TEXT ${InstallRugged} \
182
- "Install a pre-built version of rugged, a Ruby bindings to the libgit2 C library."
183
-
184
- !insertmacro MUI_DESCRIPTION_TEXT ${InstallPandoc} \
185
- "Install Pandoc to enable automatic conversion from various document formats into RTF."
186
-
187
- !insertmacro MUI_DESCRIPTION_TEXT ${InstallMain} \
188
- "Install Package indexer for git-based ReaPack repositories v${VERSION} on your computer."
189
- !insertmacro MUI_FUNCTION_DESCRIPTION_END