mspac 0.2.7 → 0.3.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.
- checksums.yaml +4 -4
- data/lib/mspac.rb +13 -13
- data/lib/mspac/error.rb +5 -5
- data/lib/mspac/error/{missing_pellet_error.rb → missing_pellet.rb} +1 -1
- data/lib/mspac/error/{pellet_not_installed_error.rb → pellet_not_installed.rb} +1 -1
- data/lib/mspac/error/{pellet_repo_error.rb → pellet_repo.rb} +1 -1
- data/lib/mspac/error/{unsupported_package_manager_error.rb → unsupported_package_manager.rb} +1 -1
- data/lib/mspac/error/{unsupported_vcs_error.rb → unsupported_vcs.rb} +1 -1
- data/lib/mspac/package_manager.rb +14 -9
- data/lib/mspac/pellet.rb +39 -19
- data/lib/mspac/version_control.rb +24 -18
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc9b4c5cf07936d804430a524e80596432812d75
|
4
|
+
data.tar.gz: d5b8fd7f13e87f73ee15f9fb6e22899dc3daf565
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cd180a86cf6980c36ba81d70684e9e4856208322aeb46896a5b66105c531d44a8a54e088f5e0a20a15c51ae06cee30d6700902761e5f32dd59b0f90175957ab
|
7
|
+
data.tar.gz: 45ab1681fdca5555b13cb8a6abfa38f76bf24e7d558d15523137b82f2f9fc07d3d71ad48ee7e35c8abe4adcaccad5ce202560422e386c04cb52d6e78acf8345b
|
data/lib/mspac.rb
CHANGED
@@ -6,8 +6,8 @@ require "scoobydoo"
|
|
6
6
|
|
7
7
|
class MsPac
|
8
8
|
def cached
|
9
|
-
return @pellets.keys.sort.
|
10
|
-
|
9
|
+
return @pellets.keys.sort.keep_if do |name|
|
10
|
+
@pellets[name].cached?
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -30,7 +30,7 @@ class MsPac
|
|
30
30
|
|
31
31
|
@pellets_dir = Pathname.new("~/.mspac/pellets").expand_path
|
32
32
|
if (@pellets_dir.nil? || !@pellets_dir.exist?)
|
33
|
-
raise Error::
|
33
|
+
raise Error::PelletRepo.new
|
34
34
|
end
|
35
35
|
end
|
36
36
|
private :ensure_pellets_repo
|
@@ -56,14 +56,14 @@ class MsPac
|
|
56
56
|
@@hilight = hilight
|
57
57
|
FileUtils.mkdir_p(Pathname.new("~/.mspac").expand_path)
|
58
58
|
@mspac_dir = Pathname.new("~/.mspac").expand_path
|
59
|
-
@pm = PackageManager.new
|
59
|
+
@pm = PackageManager.new(self)
|
60
60
|
@vcs = VersionControl.new("git")
|
61
61
|
load_pellets
|
62
62
|
end
|
63
63
|
|
64
64
|
def install(pellets, force = false)
|
65
65
|
if (pellets.nil? || pellets.empty?)
|
66
|
-
raise Error::
|
66
|
+
raise Error::MissingPellet.new
|
67
67
|
end
|
68
68
|
|
69
69
|
pellets.each do |name|
|
@@ -79,7 +79,7 @@ class MsPac
|
|
79
79
|
pellet.install
|
80
80
|
end
|
81
81
|
else
|
82
|
-
raise Error::
|
82
|
+
raise Error::MissingPellet.new(name)
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -96,7 +96,7 @@ class MsPac
|
|
96
96
|
@pellets = Hash.new
|
97
97
|
Dir["#{@pellets_dir}/*.pellet"].each do |pellet|
|
98
98
|
begin
|
99
|
-
p = Pellet.new(JSON.parse(File.read(pellet)))
|
99
|
+
p = Pellet.new(JSON.parse(File.read(pellet)), @pm)
|
100
100
|
@pellets[p.name] = p
|
101
101
|
rescue JSON::ParserError => e
|
102
102
|
puts hilight_error("#{pellet} is not valid JSON!")
|
@@ -110,14 +110,14 @@ class MsPac
|
|
110
110
|
|
111
111
|
def lock(pellets)
|
112
112
|
if (pellets.nil? || pellets.empty?)
|
113
|
-
raise Error::
|
113
|
+
raise Error::MissingPellet.new
|
114
114
|
end
|
115
115
|
|
116
116
|
pellets.each do |name|
|
117
117
|
if (@pellets.has_key?(name))
|
118
118
|
@pellets[name].lock
|
119
119
|
else
|
120
|
-
raise Error::
|
120
|
+
raise Error::MissingPellet.new(name)
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
@@ -135,14 +135,14 @@ class MsPac
|
|
135
135
|
|
136
136
|
def remove(pellets, nosave)
|
137
137
|
if (pellets.nil? || pellets.empty?)
|
138
|
-
raise Error::
|
138
|
+
raise Error::MissingPellet.new
|
139
139
|
end
|
140
140
|
|
141
141
|
pellets.each do |name|
|
142
142
|
if (@pellets.has_key?(name))
|
143
143
|
@pellets[name].remove(nosave)
|
144
144
|
else
|
145
|
-
raise Error::
|
145
|
+
raise Error::MissingPellet.new(name)
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
@@ -158,14 +158,14 @@ class MsPac
|
|
158
158
|
|
159
159
|
def unlock(pellets)
|
160
160
|
if (pellets.nil? || pellets.empty?)
|
161
|
-
raise Error::
|
161
|
+
raise Error::MissingPellet.new
|
162
162
|
end
|
163
163
|
|
164
164
|
pellets.each do |name|
|
165
165
|
if (@pellets.has_key?(name))
|
166
166
|
@pellets[name].unlock
|
167
167
|
else
|
168
|
-
raise Error::
|
168
|
+
raise Error::MissingPellet.new(name)
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
data/lib/mspac/error.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class MsPac::Error < RuntimeError
|
2
2
|
end
|
3
3
|
|
4
|
-
require "mspac/error/
|
5
|
-
require "mspac/error/
|
6
|
-
require "mspac/error/
|
7
|
-
require "mspac/error/
|
8
|
-
require "mspac/error/
|
4
|
+
require "mspac/error/missing_pellet"
|
5
|
+
require "mspac/error/pellet_not_installed"
|
6
|
+
require "mspac/error/pellet_repo"
|
7
|
+
require "mspac/error/unsupported_package_manager"
|
8
|
+
require "mspac/error/unsupported_vcs"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "scoobydoo"
|
2
2
|
|
3
3
|
class MsPac::PackageManager
|
4
|
+
attr_reader :mspac
|
4
5
|
attr_reader :pkgmgr
|
5
6
|
|
6
7
|
def alt_install(packages, pkgmgr = @pkgmgr)
|
@@ -10,25 +11,27 @@ class MsPac::PackageManager
|
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
|
-
def initialize
|
14
|
+
def initialize(mspac)
|
15
|
+
@mspac = mspac
|
16
|
+
|
14
17
|
if (ScoobyDoo.where_are_you("apt-get"))
|
15
18
|
@pkgmgr = "apt-get"
|
16
19
|
elsif (ScoobyDoo.where_are_you("brew"))
|
17
|
-
raise MsPac::Error::
|
20
|
+
raise MsPac::Error::UnsupportedPackageManager.new(
|
18
21
|
"brew"
|
19
22
|
)
|
20
23
|
elsif (ScoobyDoo.where_are_you("pacman"))
|
21
24
|
@pkgmgr = "pacman"
|
22
25
|
elsif (ScoobyDoo.where_are_you("yum"))
|
23
|
-
raise MsPac::Error::
|
26
|
+
raise MsPac::Error::UnsupportedPackageManager.new(
|
24
27
|
"yum"
|
25
28
|
)
|
26
29
|
elsif (ScoobyDoo.where_are_you("zipper"))
|
27
|
-
raise MsPac::Error::
|
30
|
+
raise MsPac::Error::UnsupportedPackageManager.new(
|
28
31
|
"zipper"
|
29
32
|
)
|
30
33
|
else
|
31
|
-
raise MsPac::Error::
|
34
|
+
raise MsPac::Error::UnsupportedPackageManager.new
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
@@ -42,9 +45,11 @@ class MsPac::PackageManager
|
|
42
45
|
when "apt-get"
|
43
46
|
system("sudo apt-get install -y #{pkgs}")
|
44
47
|
when "brew"
|
45
|
-
raise MsPac::Error::
|
48
|
+
raise MsPac::Error::UnsupportedPackageManager.new(
|
46
49
|
"brew"
|
47
50
|
)
|
51
|
+
when "mspac"
|
52
|
+
@mspac.install(pkgs.split(" "))
|
48
53
|
when "pacman"
|
49
54
|
system("sudo pacman --needed --noconfirm -S #{pkgs}")
|
50
55
|
when "perl"
|
@@ -54,15 +59,15 @@ class MsPac::PackageManager
|
|
54
59
|
when "python3"
|
55
60
|
system("umask 022 && sudo python3 -m pip install #{pkgs}")
|
56
61
|
when "yum"
|
57
|
-
raise MsPac::Error::
|
62
|
+
raise MsPac::Error::UnsupportedPackageManager.new(
|
58
63
|
"yum"
|
59
64
|
)
|
60
65
|
when "zipper"
|
61
|
-
raise MsPac::Error::
|
66
|
+
raise MsPac::Error::UnsupportedPackageManager.new(
|
62
67
|
"zipper"
|
63
68
|
)
|
64
69
|
else
|
65
|
-
raise MsPac::Error::
|
70
|
+
raise MsPac::Error::UnsupportedPackageManager.new
|
66
71
|
end
|
67
72
|
end
|
68
73
|
private :pkgmgr_install
|
data/lib/mspac/pellet.rb
CHANGED
@@ -21,9 +21,19 @@ class MsPac::Pellet < Hash
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def execute(operation)
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
if (self["vcs"] != "powerpellet")
|
25
|
+
Dir.chdir("#{@@install_dir}/#{name}") do
|
26
|
+
system(
|
27
|
+
["umask 022"].concat(self[operation]).join("; ")
|
28
|
+
)
|
29
|
+
end if (!self[operation].empty?)
|
30
|
+
else
|
31
|
+
if (!self[operation].empty?)
|
32
|
+
system(
|
33
|
+
["umask 022"].concat(self[operation]).join("; ")
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
27
37
|
end
|
28
38
|
private :execute
|
29
39
|
|
@@ -47,8 +57,12 @@ class MsPac::Pellet < Hash
|
|
47
57
|
end
|
48
58
|
|
49
59
|
def get_deps
|
50
|
-
puts hilight_status("Installing dependencies...")
|
51
|
-
|
60
|
+
puts hilight_status("Installing dependencies for #{name}...")
|
61
|
+
deps = Array.new
|
62
|
+
deps.push(self["vcs"]) if (self["vcs"] != "powerpellet")
|
63
|
+
deps.push(self["deps"][@pm.pkgmgr])
|
64
|
+
@pm.install(deps)
|
65
|
+
@pm.install(self["deps"]["mspac"], "mspac")
|
52
66
|
@pm.install(self["deps"]["perl"], "perl")
|
53
67
|
@pm.install(self["deps"]["python2"], "python2")
|
54
68
|
@pm.install(self["deps"]["python3"], "python3")
|
@@ -81,7 +95,7 @@ class MsPac::Pellet < Hash
|
|
81
95
|
end
|
82
96
|
private :hilight_installed
|
83
97
|
|
84
|
-
def hilight_name(name
|
98
|
+
def hilight_name(name)
|
85
99
|
return name if (!MsPac.hilight?)
|
86
100
|
return name.light_white
|
87
101
|
end
|
@@ -93,18 +107,18 @@ class MsPac::Pellet < Hash
|
|
93
107
|
end
|
94
108
|
private :hilight_status
|
95
109
|
|
96
|
-
def initialize(json)
|
110
|
+
def initialize(json, pm)
|
97
111
|
json.keys.each do |key|
|
98
112
|
self[key] = json[key]
|
99
113
|
end
|
100
114
|
|
101
|
-
@pm =
|
115
|
+
@pm = pm
|
102
116
|
@vcs = MsPac::VersionControl.new(self["vcs"])
|
103
117
|
end
|
104
118
|
|
105
119
|
def install
|
106
|
-
if (!cached?)
|
107
|
-
raise MsPac::Error::
|
120
|
+
if (!cached? && (self["vcs"] != "powerpellet"))
|
121
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
108
122
|
end
|
109
123
|
|
110
124
|
link if (!installed?)
|
@@ -119,10 +133,12 @@ class MsPac::Pellet < Hash
|
|
119
133
|
end
|
120
134
|
|
121
135
|
def link
|
122
|
-
if (!cached?)
|
123
|
-
raise MsPac::Error::
|
136
|
+
if (!cached? && (self["vcs"] != "powerpellet"))
|
137
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
124
138
|
end
|
125
139
|
|
140
|
+
return if (self["vcs"] == "powerpellet")
|
141
|
+
|
126
142
|
puts hilight_status("Linking #{name}...")
|
127
143
|
FileUtils.ln_sf(
|
128
144
|
"#{@@cache_dir}/#{name}",
|
@@ -132,7 +148,7 @@ class MsPac::Pellet < Hash
|
|
132
148
|
|
133
149
|
def lock
|
134
150
|
if (!installed?)
|
135
|
-
raise MsPac::Error::
|
151
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
136
152
|
end
|
137
153
|
|
138
154
|
puts hilight_status("Locking #{name}...")
|
@@ -144,17 +160,19 @@ class MsPac::Pellet < Hash
|
|
144
160
|
end
|
145
161
|
|
146
162
|
def purge
|
147
|
-
if (!cached?)
|
148
|
-
raise MsPac::Error::
|
163
|
+
if (!cached? && (self["vcs"] != "powerpellet"))
|
164
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
149
165
|
end
|
150
166
|
|
167
|
+
return if (self["vcs"] == "powerpellet")
|
168
|
+
|
151
169
|
puts hilight_status("Purging #{name}...")
|
152
170
|
FileUtils.rm_rf("#{@@cache_dir}/#{name}")
|
153
171
|
end
|
154
172
|
|
155
173
|
def remove(nosave = false)
|
156
174
|
if (!installed?)
|
157
|
-
raise MsPac::Error::
|
175
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
158
176
|
end
|
159
177
|
|
160
178
|
puts hilight_status("Removing #{name}...")
|
@@ -181,7 +199,7 @@ class MsPac::Pellet < Hash
|
|
181
199
|
|
182
200
|
def unlink
|
183
201
|
if (!installed?)
|
184
|
-
raise MsPac::Error::
|
202
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
185
203
|
end
|
186
204
|
|
187
205
|
puts hilight_status("Unlinking #{name}...")
|
@@ -190,7 +208,7 @@ class MsPac::Pellet < Hash
|
|
190
208
|
|
191
209
|
def unlock
|
192
210
|
if (!installed?)
|
193
|
-
raise MsPac::Error::
|
211
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
194
212
|
end
|
195
213
|
|
196
214
|
puts hilight_status("Unlocking #{name}...")
|
@@ -199,9 +217,11 @@ class MsPac::Pellet < Hash
|
|
199
217
|
|
200
218
|
def update(force = false)
|
201
219
|
if (!installed?)
|
202
|
-
raise MsPac::Error::
|
220
|
+
raise MsPac::Error::PelletNotInstalled.new(name)
|
203
221
|
end
|
204
222
|
|
223
|
+
return if (self["vcs"] == "powerpellet")
|
224
|
+
|
205
225
|
Dir.chdir("#{@@install_dir}/#{name}") do
|
206
226
|
if (Pathname.new(".mspac_lock").expand_path.exist?)
|
207
227
|
puts hilight_error("Locked: #{name}")
|
@@ -5,47 +5,51 @@ class MsPac::VersionControl
|
|
5
5
|
case @vcs
|
6
6
|
when "git", "hg"
|
7
7
|
system("#{@vcs} clone #{repo}")
|
8
|
+
when "powerpellet"
|
9
|
+
# do nothing
|
8
10
|
else
|
9
|
-
raise Error::
|
11
|
+
raise MsPac::Error::UnsupportedVCS.new(@vcs)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
13
15
|
def ignore_file_perms(name)
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
case @vcs
|
17
|
+
when "git"
|
18
|
+
Dir.chdir(name) do
|
17
19
|
system("git config core.filemode false")
|
18
|
-
when "hg"
|
19
|
-
# do nothing
|
20
|
-
else
|
21
|
-
raise Error::UnsupportedVCSError.new(@vcs)
|
22
20
|
end
|
21
|
+
when "hg", "powerpellet"
|
22
|
+
# do nothing
|
23
|
+
else
|
24
|
+
raise MsPac::Error::UnsupportedVCS.new(@vcs)
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
26
28
|
def initialize(vcs)
|
27
29
|
case vcs
|
28
30
|
when "bzr"
|
29
|
-
raise Error::
|
30
|
-
when "git"
|
31
|
-
@vcs = vcs
|
32
|
-
when "hg"
|
31
|
+
raise MsPac::Error::UnsupportedVCS.new(vcs)
|
32
|
+
when "git", "hg", "powerpellet"
|
33
33
|
@vcs = vcs
|
34
34
|
when "svn"
|
35
|
-
raise Error::
|
35
|
+
raise MsPac::Error::UnsupportedVCS.new(vcs)
|
36
36
|
else
|
37
|
-
raise Error::
|
37
|
+
raise MsPac::Error::UnsupportedVCS.new
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
def revision
|
42
42
|
case @vcs
|
43
43
|
when "git"
|
44
|
-
%x(
|
44
|
+
return %x(
|
45
|
+
git log --oneline | head -n 1 | awk '{print $1}'
|
46
|
+
)
|
45
47
|
when "hg"
|
46
|
-
%(hg tip --template "{node}")
|
48
|
+
return %(hg tip --template "{node}")
|
49
|
+
when "powerpellet"
|
50
|
+
return "powerpellet"
|
47
51
|
else
|
48
|
-
raise Error::
|
52
|
+
raise MsPac::Error::UnsupportedVCS.new(@vcs)
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
@@ -55,8 +59,10 @@ class MsPac::VersionControl
|
|
55
59
|
system("git reset && git pull")
|
56
60
|
when "hg"
|
57
61
|
system("hg pull && hg update")
|
62
|
+
when "powerpellet"
|
63
|
+
# do nothing
|
58
64
|
else
|
59
|
-
raise Error::
|
65
|
+
raise MsPac::Error::UnsupportedVCS.new(@vcs)
|
60
66
|
end
|
61
67
|
end
|
62
68
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mspac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Whittaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04
|
11
|
+
date: 2016-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: '0.1'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.1.
|
42
|
+
version: 0.1.3
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
version: '0.1'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.1.
|
52
|
+
version: 0.1.3
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: scoobydoo
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,11 +84,11 @@ files:
|
|
84
84
|
- bin/mspac
|
85
85
|
- lib/mspac.rb
|
86
86
|
- lib/mspac/error.rb
|
87
|
-
- lib/mspac/error/
|
88
|
-
- lib/mspac/error/
|
89
|
-
- lib/mspac/error/
|
90
|
-
- lib/mspac/error/
|
91
|
-
- lib/mspac/error/
|
87
|
+
- lib/mspac/error/missing_pellet.rb
|
88
|
+
- lib/mspac/error/pellet_not_installed.rb
|
89
|
+
- lib/mspac/error/pellet_repo.rb
|
90
|
+
- lib/mspac/error/unsupported_package_manager.rb
|
91
|
+
- lib/mspac/error/unsupported_vcs.rb
|
92
92
|
- lib/mspac/package_manager.rb
|
93
93
|
- lib/mspac/pellet.rb
|
94
94
|
- lib/mspac/version_control.rb
|