bukin 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +0 -1
- data/Gemfile +2 -0
- data/README.md +3 -3
- data/bukin.gemspec +2 -2
- data/docs/process.md +24 -0
- data/lib/bukin.rb +54 -2
- data/lib/bukin/bukfile.rb +46 -48
- data/lib/bukin/bukget.rb +63 -0
- data/lib/bukin/bukkit_dl.rb +45 -0
- data/lib/bukin/cli.rb +109 -83
- data/lib/bukin/download.rb +16 -0
- data/lib/bukin/file_match.rb +33 -0
- data/lib/bukin/installer.rb +65 -68
- data/lib/bukin/jenkins.rb +47 -0
- data/lib/bukin/lockfile.rb +23 -21
- data/lib/bukin/resource.rb +17 -0
- data/lib/bukin/version.rb +1 -1
- data/spec/bukfile_spec.rb +0 -16
- data/spec/bukget_spec.rb +56 -0
- data/spec/bukkit_dl_spec.rb +50 -0
- data/spec/cassettes/Bukin_Bukget/chooses_the_version_with_a_jar_file_when_there_are_multiple_versions.yml +61 -0
- data/spec/cassettes/Bukin_Bukget/installs_a_specific_version_of_a_resource.yml +61 -0
- data/spec/cassettes/Bukin_Bukget/installs_the_latest_version_of_a_resource.yml +49 -0
- data/spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml +61 -0
- data/spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml +43 -0
- data/spec/cassettes/Bukin_Bukget/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml +435 -0
- data/spec/cassettes/Bukin_BukkitDl/chooses_the_first_file_when_there_are_multiple_files.yml +59 -0
- data/spec/cassettes/Bukin_BukkitDl/installs_a_specific_version_of_a_resource.yml +59 -0
- data/spec/cassettes/Bukin_BukkitDl/installs_the_latest_version_of_a_resource.yml +59 -0
- data/spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml +59 -0
- data/spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml +128 -0
- data/spec/cassettes/Bukin_BukkitDl/returns_an_error_when_asked_for_a_version_that_doese_not_exist.yml +128 -0
- data/spec/cassettes/Bukin_Jenkins/chooses_the_first_file_when_there_are_multiple_files.yml +50 -0
- data/spec/cassettes/Bukin_Jenkins/installs_a_specific_version_of_a_resource.yml +50 -0
- data/spec/cassettes/Bukin_Jenkins/installs_the_latest_version_of_a_resource.yml +49 -0
- data/spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_file_that_does_not_exist.yml +50 -0
- data/spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_resource_that_doese_not_exist.yml +59 -0
- data/spec/cassettes/Bukin_Jenkins/returns_an_error_when_asked_for_a_version_that_does_not_exist.yml +59 -0
- data/spec/file_match_spec.rb +39 -0
- data/spec/installer_spec.rb +0 -1
- data/spec/jenkins_spec.rb +61 -0
- data/spec/lockfile_spec.rb +8 -8
- data/spec/spec_helper.rb +10 -0
- metadata +57 -26
- data/lib/bukin/exceptions.rb +0 -5
- data/lib/bukin/friendly_errors.rb +0 -22
- data/lib/bukin/providers/bukget.rb +0 -54
- data/lib/bukin/providers/bukkit_dl.rb +0 -29
- 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.
|
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:
|
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:
|
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:
|
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/
|
83
|
-
- lib/bukin/
|
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/
|
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:
|
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:
|
data/lib/bukin/exceptions.rb
DELETED
@@ -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
|