labrea 0.0.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.
- data/lib/labrea.rb +128 -0
- metadata +92 -0
data/lib/labrea.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'digest/sha1'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
class Labrea
|
8
|
+
# Class initialization
|
9
|
+
def initialize(filename, install_dir, exclude)
|
10
|
+
@filename = filename
|
11
|
+
@install_dir = install_dir
|
12
|
+
@exclude = exclude
|
13
|
+
@working_dir = Dir.pwd()
|
14
|
+
@changeset = Array.new
|
15
|
+
end
|
16
|
+
|
17
|
+
# Installation of binary archive
|
18
|
+
def install(testmode=false)
|
19
|
+
@changeset.clear
|
20
|
+
extract_files(testmode)
|
21
|
+
|
22
|
+
# Generate checksums and add to hash
|
23
|
+
checksums = Hash.new
|
24
|
+
if File.exists?(@install_dir)
|
25
|
+
Dir.chdir(@install_dir) do |path|
|
26
|
+
Dir.glob("**/*.*") do |file|
|
27
|
+
@changeset << file.to_s
|
28
|
+
if File.file?(file)
|
29
|
+
puts file
|
30
|
+
if !@exclude.include? file
|
31
|
+
checksums[file] = sha1sum(file)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Write out checksum file
|
39
|
+
File.open("#{@install_dir}/checksum.json", "w+") do |file|
|
40
|
+
file.puts JSON.generate(checksums)
|
41
|
+
end
|
42
|
+
|
43
|
+
return @changeset
|
44
|
+
end
|
45
|
+
|
46
|
+
# Update of binary archive
|
47
|
+
def update(testmode=false)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Verification of binary archive
|
51
|
+
def verify(testmode=false)
|
52
|
+
@changeset.clear
|
53
|
+
|
54
|
+
# Read checksums from file
|
55
|
+
checksums = Hash.new
|
56
|
+
File.open("#{@install_dir}/checksum.json", "r+") do |file|
|
57
|
+
checksums = JSON.load(file)
|
58
|
+
end
|
59
|
+
|
60
|
+
checksums.each_pair do |k,v|
|
61
|
+
Dir.chdir(@install_dir) do |path|
|
62
|
+
if sha1sum(k) != v
|
63
|
+
extract_file(k, testmode)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
return @changeset
|
69
|
+
end
|
70
|
+
|
71
|
+
def filetype(filename)
|
72
|
+
if filename.match('.*\.tgz')
|
73
|
+
return :tgz
|
74
|
+
end
|
75
|
+
|
76
|
+
if filename.match('.*\.tar\.gz')
|
77
|
+
return :tgz
|
78
|
+
end
|
79
|
+
|
80
|
+
if filename.match('.*\.zip')
|
81
|
+
return :zip
|
82
|
+
end
|
83
|
+
|
84
|
+
if filename.match('.*\.bz2')
|
85
|
+
return :bz2
|
86
|
+
end
|
87
|
+
|
88
|
+
return :unknown
|
89
|
+
end
|
90
|
+
|
91
|
+
def extract_files(testmode)
|
92
|
+
Dir.chdir(@working_dir) do |path|
|
93
|
+
@changeset << @install_dir
|
94
|
+
|
95
|
+
case filetype(@filename)
|
96
|
+
when :tgz
|
97
|
+
`tar -xzvf #{@filename} -C #{@install_dir}` unless testmode
|
98
|
+
when :zip
|
99
|
+
`unzip #{@filename} -d #{@install_dir}` unless testmode
|
100
|
+
when :bz2
|
101
|
+
`tar -xjvf #{@filename} -C #{@install_dir}` unless testmode
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def extract_file(file, testmode)
|
107
|
+
Dir.chdir(@working_dir) do |path|
|
108
|
+
@changeset << file.to_s
|
109
|
+
|
110
|
+
case filetype(@filename)
|
111
|
+
when :tgz
|
112
|
+
`tar -xzvf #{@filename} -C #{@install_dir} #{file}` unless testmode
|
113
|
+
when :zip
|
114
|
+
`unzip #{@filename} -d #{@install_dir} #{file}` unless testmode
|
115
|
+
when :bz2
|
116
|
+
`tar -xjvf #{@filename} -C #{@install_dir} #{file}` unless testmode
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def sha1sum(file)
|
122
|
+
if File.file?(file)
|
123
|
+
return Digest::SHA1.hexdigest File.read(file)
|
124
|
+
end
|
125
|
+
|
126
|
+
return false
|
127
|
+
end
|
128
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: labrea
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- David Sledge
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2013-08-14 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: json
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: bundler
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
description: A binary installation utility
|
49
|
+
email: dsledge@appriss.com
|
50
|
+
executables: []
|
51
|
+
|
52
|
+
extensions: []
|
53
|
+
|
54
|
+
extra_rdoc_files: []
|
55
|
+
|
56
|
+
files:
|
57
|
+
- lib/labrea.rb
|
58
|
+
homepage: https://github.com/dsledge/labrea
|
59
|
+
licenses:
|
60
|
+
- GPL3
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
|
64
|
+
require_paths:
|
65
|
+
- lib
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
hash: 3
|
81
|
+
segments:
|
82
|
+
- 0
|
83
|
+
version: "0"
|
84
|
+
requirements: []
|
85
|
+
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 1.8.15
|
88
|
+
signing_key:
|
89
|
+
specification_version: 3
|
90
|
+
summary: Binary Installation Utility
|
91
|
+
test_files: []
|
92
|
+
|