bukin 0.6.0 → 0.7.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.
Files changed (49) hide show
  1. data/.travis.yml +0 -1
  2. data/Gemfile +2 -0
  3. data/README.md +3 -3
  4. data/bukin.gemspec +2 -2
  5. data/docs/process.md +24 -0
  6. data/lib/bukin.rb +54 -2
  7. data/lib/bukin/bukfile.rb +46 -48
  8. data/lib/bukin/bukget.rb +63 -0
  9. data/lib/bukin/bukkit_dl.rb +45 -0
  10. data/lib/bukin/cli.rb +109 -83
  11. data/lib/bukin/download.rb +16 -0
  12. data/lib/bukin/file_match.rb +33 -0
  13. data/lib/bukin/installer.rb +65 -68
  14. data/lib/bukin/jenkins.rb +47 -0
  15. data/lib/bukin/lockfile.rb +23 -21
  16. data/lib/bukin/resource.rb +17 -0
  17. data/lib/bukin/version.rb +1 -1
  18. data/spec/bukfile_spec.rb +0 -16
  19. data/spec/bukget_spec.rb +56 -0
  20. data/spec/bukkit_dl_spec.rb +50 -0
  21. data/spec/cassettes/Bukin_Bukget/chooses_the_version_with_a_jar_file_when_there_are_multiple_versions.yml +61 -0
  22. data/spec/cassettes/Bukin_Bukget/installs_a_specific_version_of_a_resource.yml +61 -0
  23. data/spec/cassettes/Bukin_Bukget/installs_the_latest_version_of_a_resource.yml +49 -0
  24. data/spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml +61 -0
  25. data/spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml +43 -0
  26. data/spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml +435 -0
  27. data/spec/cassettes/Bukin_BukkitDl/chooses_the_first_file_when_there_are_multiple_files.yml +59 -0
  28. data/spec/cassettes/Bukin_BukkitDl/installs_a_specific_version_of_a_resource.yml +59 -0
  29. data/spec/cassettes/Bukin_BukkitDl/installs_the_latest_version_of_a_resource.yml +59 -0
  30. data/spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml +59 -0
  31. data/spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml +128 -0
  32. data/spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml +128 -0
  33. data/spec/cassettes/Bukin_Jenkins/chooses_the_first_file_when_there_are_multiple_files.yml +50 -0
  34. data/spec/cassettes/Bukin_Jenkins/installs_a_specific_version_of_a_resource.yml +50 -0
  35. data/spec/cassettes/Bukin_Jenkins/installs_the_latest_version_of_a_resource.yml +49 -0
  36. data/spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml +50 -0
  37. data/spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml +59 -0
  38. data/spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_version_that_does_not_exist.yml +59 -0
  39. data/spec/file_match_spec.rb +39 -0
  40. data/spec/installer_spec.rb +0 -1
  41. data/spec/jenkins_spec.rb +61 -0
  42. data/spec/lockfile_spec.rb +8 -8
  43. data/spec/spec_helper.rb +10 -0
  44. metadata +57 -26
  45. data/lib/bukin/exceptions.rb +0 -5
  46. data/lib/bukin/friendly_errors.rb +0 -22
  47. data/lib/bukin/providers/bukget.rb +0 -54
  48. data/lib/bukin/providers/bukkit_dl.rb +0 -29
  49. data/lib/bukin/providers/jenkins.rb +0 -40
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'coveralls'
2
+ require 'vcr'
2
3
 
3
4
  # This file was generated by the `rspec --init` command. Conventionally, all
4
5
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
@@ -19,4 +20,13 @@ RSpec.configure do |config|
19
20
 
20
21
  # Enable Coveralls: https://coveralls.io
21
22
  Coveralls.wear!
23
+
24
+ # Enable VCR for mocking web requests
25
+ config.treat_symbols_as_metadata_keys_with_true_values = true
26
+ end
27
+
28
+ VCR.configure do |vcr|
29
+ vcr.cassette_library_dir = 'spec/cassettes'
30
+ vcr.hook_into :webmock
31
+ vcr.configure_rspec_metadata!
22
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bukin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-22 00:00:00.000000000 Z
12
+ date: 2014-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: 0.18.1
30
- - !ruby/object:Gem::Dependency
31
- name: json
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 1.8.0
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 1.8.0
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: rubyzip
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +34,7 @@ dependencies:
50
34
  requirements:
51
35
  - - ~>
52
36
  - !ruby/object:Gem::Version
53
- version: 0.9.9
37
+ version: 1.1.0
54
38
  type: :runtime
55
39
  prerelease: false
56
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +42,7 @@ dependencies:
58
42
  requirements:
59
43
  - - ~>
60
44
  - !ruby/object:Gem::Version
61
- version: 0.9.9
45
+ version: 1.1.0
62
46
  description: Plugin and server package manager for Minecraft
63
47
  email:
64
48
  - contact@nullreff.net
@@ -76,19 +60,43 @@ files:
76
60
  - Rakefile
77
61
  - bin/bukin
78
62
  - bukin.gemspec
63
+ - docs/process.md
79
64
  - lib/bukin.rb
80
65
  - lib/bukin/bukfile.rb
66
+ - lib/bukin/bukget.rb
67
+ - lib/bukin/bukkit_dl.rb
81
68
  - lib/bukin/cli.rb
82
- - lib/bukin/exceptions.rb
83
- - lib/bukin/friendly_errors.rb
69
+ - lib/bukin/download.rb
70
+ - lib/bukin/file_match.rb
84
71
  - lib/bukin/installer.rb
72
+ - lib/bukin/jenkins.rb
85
73
  - lib/bukin/lockfile.rb
86
- - lib/bukin/providers/bukget.rb
87
- - lib/bukin/providers/bukkit_dl.rb
88
- - lib/bukin/providers/jenkins.rb
74
+ - lib/bukin/resource.rb
89
75
  - lib/bukin/version.rb
90
76
  - spec/bukfile_spec.rb
77
+ - spec/bukget_spec.rb
78
+ - spec/bukkit_dl_spec.rb
79
+ - spec/cassettes/Bukin_Bukget/chooses_the_version_with_a_jar_file_when_there_are_multiple_versions.yml
80
+ - spec/cassettes/Bukin_Bukget/installs_a_specific_version_of_a_resource.yml
81
+ - spec/cassettes/Bukin_Bukget/installs_the_latest_version_of_a_resource.yml
82
+ - spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml
83
+ - spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml
84
+ - spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml
85
+ - spec/cassettes/Bukin_BukkitDl/chooses_the_first_file_when_there_are_multiple_files.yml
86
+ - spec/cassettes/Bukin_BukkitDl/installs_a_specific_version_of_a_resource.yml
87
+ - spec/cassettes/Bukin_BukkitDl/installs_the_latest_version_of_a_resource.yml
88
+ - spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml
89
+ - spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml
90
+ - spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml
91
+ - spec/cassettes/Bukin_Jenkins/chooses_the_first_file_when_there_are_multiple_files.yml
92
+ - spec/cassettes/Bukin_Jenkins/installs_a_specific_version_of_a_resource.yml
93
+ - spec/cassettes/Bukin_Jenkins/installs_the_latest_version_of_a_resource.yml
94
+ - spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml
95
+ - spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml
96
+ - spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_version_that_does_not_exist.yml
97
+ - spec/file_match_spec.rb
91
98
  - spec/installer_spec.rb
99
+ - spec/jenkins_spec.rb
92
100
  - spec/lockfile_spec.rb
93
101
  - spec/spec_helper.rb
94
102
  homepage: http://github.com/Nullreff/bukin
@@ -102,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
110
  requirements:
103
111
  - - ! '>='
104
112
  - !ruby/object:Gem::Version
105
- version: '0'
113
+ version: 1.9.1
106
114
  required_rubygems_version: !ruby/object:Gem::Requirement
107
115
  none: false
108
116
  requirements:
@@ -117,6 +125,29 @@ specification_version: 3
117
125
  summary: Plugin and server package manager for Minecraft
118
126
  test_files:
119
127
  - spec/bukfile_spec.rb
128
+ - spec/bukget_spec.rb
129
+ - spec/bukkit_dl_spec.rb
130
+ - spec/cassettes/Bukin_Bukget/chooses_the_version_with_a_jar_file_when_there_are_multiple_versions.yml
131
+ - spec/cassettes/Bukin_Bukget/installs_a_specific_version_of_a_resource.yml
132
+ - spec/cassettes/Bukin_Bukget/installs_the_latest_version_of_a_resource.yml
133
+ - spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml
134
+ - spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml
135
+ - spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml
136
+ - spec/cassettes/Bukin_BukkitDl/chooses_the_first_file_when_there_are_multiple_files.yml
137
+ - spec/cassettes/Bukin_BukkitDl/installs_a_specific_version_of_a_resource.yml
138
+ - spec/cassettes/Bukin_BukkitDl/installs_the_latest_version_of_a_resource.yml
139
+ - spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml
140
+ - spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml
141
+ - spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml
142
+ - spec/cassettes/Bukin_Jenkins/chooses_the_first_file_when_there_are_multiple_files.yml
143
+ - spec/cassettes/Bukin_Jenkins/installs_a_specific_version_of_a_resource.yml
144
+ - spec/cassettes/Bukin_Jenkins/installs_the_latest_version_of_a_resource.yml
145
+ - spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml
146
+ - spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml
147
+ - spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_version_that_does_not_exist.yml
148
+ - spec/file_match_spec.rb
120
149
  - spec/installer_spec.rb
150
+ - spec/jenkins_spec.rb
121
151
  - spec/lockfile_spec.rb
122
152
  - spec/spec_helper.rb
153
+ has_rdoc:
@@ -1,5 +0,0 @@
1
- module Bukin
2
- class BukinError < StandardError; end
3
- class BukfileError < BukinError; end
4
- class InstallError < BukinError; end
5
- end
@@ -1,22 +0,0 @@
1
- require 'socket'
2
-
3
- module Bukin
4
- def self.with_friendly_errors
5
- yield
6
- rescue Bukin::BukinError => error
7
- abort error.message
8
- rescue SocketError => error
9
- abort "#{error.message}\nCheck that you have a stable connection and the service is online"
10
- rescue Errno::ENOENT => error
11
- abort error.message
12
- rescue Interrupt
13
- abort ''
14
- rescue Exception => error
15
- puts %Q(
16
- Oops, Bukin just crashed. Please report this at http://bit.ly/bukin-issues
17
- Be sure to include as much information as possible such as your Bukfile,
18
- Bukfile.lock and the stack trace below.
19
- )
20
- raise error
21
- end
22
- end
@@ -1,54 +0,0 @@
1
- require 'json'
2
- require 'cgi'
3
-
4
- # BukGet api
5
- # Docs: http://bukget.org/pages/docs/API3.html
6
- class Bukin::Bukget
7
- DEFAULT_URL = 'http://api.bukget.org'
8
- attr_reader :data
9
-
10
- def initialize(data)
11
- @data = data
12
- end
13
-
14
- def resolve_info
15
- info = JSON.parse(open(url).read)
16
- versions = info['versions']
17
- if versions.empty?
18
- raise Bukin::InstallError, "The plugin #{name} (#{version}) has no available downloads from BukGet."
19
- end
20
-
21
- # Some people release two of the same version on bukkit
22
- # dev, one as a zip package and one with the jar only.
23
- # This downloads the jar only version by default.
24
- version_data = versions.find {|version_data| jar_extension?(version_data)} || versions.first
25
- data[:version] = version_data['version']
26
- data[:download] = version_data['download']
27
- data
28
- end
29
-
30
- def url
31
- "#{data[:bukget]}/3/plugins/#{CGI.escape(server)}/#{CGI.escape(name)}/#{CGI.escape(version)}"
32
- end
33
-
34
- def name
35
- data[:name]
36
- end
37
-
38
- def version
39
- data[:version] || 'latest'
40
- end
41
-
42
- def server
43
- if data[:server].nil? || data[:server] == 'craftbukkit'
44
- 'bukkit'
45
- else
46
- data[:server]
47
- end
48
- end
49
-
50
- private
51
- def jar_extension?(version_data)
52
- File.extname(version_data['filename']) == '.jar'
53
- end
54
- end
@@ -1,29 +0,0 @@
1
- require 'json'
2
-
3
- # Bukkit download api
4
- # Docs: http://dl.bukkit.org/about/
5
- class Bukin::BukkitDl
6
- DEFAULT_URL = 'http://dl.bukkit.org'
7
- attr_reader :data
8
-
9
- def initialize(data)
10
- @data = data
11
- end
12
-
13
- def resolve_info
14
- name = data[:name]
15
- version = data[:version] || 'latest-rb'
16
-
17
- url = "#{api_url}/projects/#{name}/view/#{version}/"
18
- info = JSON.parse(open(url).read)
19
-
20
- data[:version] = "build-#{info['build_number']}"
21
- data[:download] = data[:bukkit_dl] + info['file']['url']
22
- data
23
- end
24
-
25
- private
26
- def api_url
27
- "#{data[:bukkit_dl]}/api/1.0/downloads"
28
- end
29
- end
@@ -1,40 +0,0 @@
1
- require 'json'
2
-
3
- # Api for downloading from jenkins
4
- class Bukin::Jenkins
5
- attr_reader :data
6
-
7
- def initialize(data)
8
- @data = data
9
- end
10
-
11
- def resolve_info
12
- name = data[:name]
13
- version = data[:version] || 'lastSuccessfulBuild'
14
-
15
- unless /^build-(.*)$/.match(version)
16
- raise Bukin::InstallError, "The plugin #{name} (#{version}) has an improper version format for downloading from Jenkins. It should be in the form of 'build-<number>'"
17
- end
18
-
19
- base_path = "#{data[:jenkins]}/job/#{name}/#{$1}"
20
- url = "#{base_path}/api/json"
21
- info = JSON.parse(open(url).read)
22
-
23
- download_info = find_file(info['artifacts'], data[:file])
24
- data[:version] = version
25
- data[:download] = "#{base_path}/artifact/#{download_info['relativePath']}"
26
- data
27
- end
28
-
29
- def find_file(artifacts, file_name)
30
- artifacts.find do |artifact|
31
- if file_name.is_a?(Regexp)
32
- file_name =~ artifact['fileName']
33
- elsif file_name.is_a?(String)
34
- file_name == artifact['fileName']
35
- else
36
- true
37
- end
38
- end
39
- end
40
- end