bukin 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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