mspac 0.2.6 → 0.2.7
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/bin/mspac +3 -3
- data/lib/mspac.rb +23 -23
- data/lib/mspac/pellet.rb +62 -62
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 505169a560cee6762ad4d33918457e7e7b0fe3ee
|
4
|
+
data.tar.gz: fc80f7d307db2fcd808a5422a0ee1605da4388ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90ed333ff3a3422630f0193d418f9442d2acfd44945722ef14f7fd0237d4e1f2f79209dadb64790cd3ebbeeba67a2c736faedf10fc47e12433120f156195a893
|
7
|
+
data.tar.gz: 976dcc5a5aa886186cf278cb5a1895621bfe18be1c2d5300abe80036c8ec8b24af05090483a69bab2f3bd0fcbe75e8f3e5fa3cd6b5f48d7def2b6d1255170189
|
data/bin/mspac
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "hilighter"
|
4
4
|
require "io/wait"
|
5
5
|
require "mspac"
|
6
6
|
require "optparse"
|
@@ -162,7 +162,7 @@ def parse(args)
|
|
162
162
|
end
|
163
163
|
|
164
164
|
opts.on("--nocolor", "Disable colorized output") do
|
165
|
-
|
165
|
+
Hilighter.disable
|
166
166
|
end
|
167
167
|
|
168
168
|
opts.on(
|
@@ -318,7 +318,7 @@ end
|
|
318
318
|
options = parse(ARGV)
|
319
319
|
|
320
320
|
begin
|
321
|
-
mspac = MsPac.new(!
|
321
|
+
mspac = MsPac.new(!Hilighter.disable?)
|
322
322
|
|
323
323
|
case options["operation"]
|
324
324
|
when Operation::LIST_CACHED
|
data/lib/mspac.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "
|
1
|
+
require "hilighter"
|
2
2
|
require "fileutils"
|
3
3
|
require "json"
|
4
4
|
require "pathname"
|
@@ -18,28 +18,11 @@ class MsPac
|
|
18
18
|
# FIXME will miss pellets that get deleted by refresh
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.colorize?
|
22
|
-
@@colorize ||= false
|
23
|
-
return @@colorize
|
24
|
-
end
|
25
|
-
|
26
|
-
def colorize_error(error)
|
27
|
-
return error if (!@@colorize)
|
28
|
-
return error.light_red
|
29
|
-
end
|
30
|
-
private :colorize_error
|
31
|
-
|
32
|
-
def colorize_status(status)
|
33
|
-
return status if (!@@colorize)
|
34
|
-
return status.light_white
|
35
|
-
end
|
36
|
-
private :colorize_status
|
37
|
-
|
38
21
|
def ensure_pellets_repo
|
39
22
|
@pellets_dir = Pathname.new("~/.mspac/pellets").expand_path
|
40
23
|
return if (@pellets_dir && @pellets_dir.exist?)
|
41
24
|
|
42
|
-
puts
|
25
|
+
puts hilight_status("Installing MsPac dependencies...")
|
43
26
|
@pm.install(["git"]) if (ScoobyDoo.where_are_you("git").nil?)
|
44
27
|
Dir.chdir(@mspac_dir) do
|
45
28
|
@vcs.clone("https://gitlab.com/mjwhitta/pellets.git")
|
@@ -52,8 +35,25 @@ class MsPac
|
|
52
35
|
end
|
53
36
|
private :ensure_pellets_repo
|
54
37
|
|
55
|
-
def
|
56
|
-
@@
|
38
|
+
def self.hilight?
|
39
|
+
@@hilight ||= false
|
40
|
+
return @@hilight
|
41
|
+
end
|
42
|
+
|
43
|
+
def hilight_error(error)
|
44
|
+
return error if (!@@hilight)
|
45
|
+
return error.light_red
|
46
|
+
end
|
47
|
+
private :hilight_error
|
48
|
+
|
49
|
+
def hilight_status(status)
|
50
|
+
return status if (!@@hilight)
|
51
|
+
return status.light_white
|
52
|
+
end
|
53
|
+
private :hilight_status
|
54
|
+
|
55
|
+
def initialize(hilight = false)
|
56
|
+
@@hilight = hilight
|
57
57
|
FileUtils.mkdir_p(Pathname.new("~/.mspac").expand_path)
|
58
58
|
@mspac_dir = Pathname.new("~/.mspac").expand_path
|
59
59
|
@pm = PackageManager.new
|
@@ -99,7 +99,7 @@ class MsPac
|
|
99
99
|
p = Pellet.new(JSON.parse(File.read(pellet)))
|
100
100
|
@pellets[p.name] = p
|
101
101
|
rescue JSON::ParserError => e
|
102
|
-
puts
|
102
|
+
puts hilight_error("#{pellet} is not valid JSON!")
|
103
103
|
puts e.message.white.on_red
|
104
104
|
rescue Exception => e
|
105
105
|
puts e.message.white.on_red
|
@@ -127,7 +127,7 @@ class MsPac
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def refresh
|
130
|
-
puts
|
130
|
+
puts hilight_status("Refreshing pellets...")
|
131
131
|
Dir.chdir(@pellets_dir) do
|
132
132
|
@vcs.update
|
133
133
|
end
|
data/lib/mspac/pellet.rb
CHANGED
@@ -1,64 +1,17 @@
|
|
1
|
-
require "
|
1
|
+
require "hilighter"
|
2
2
|
require "fileutils"
|
3
3
|
|
4
4
|
class MsPac::Pellet < Hash
|
5
5
|
@@cache_dir = Pathname("~/.mspac/cache").expand_path
|
6
6
|
@@install_dir = Pathname("~/.mspac/installed").expand_path
|
7
7
|
|
8
|
-
def colorize_cached(cached)
|
9
|
-
if (!MsPac.colorize?)
|
10
|
-
return "[cached]" if (cached)
|
11
|
-
else
|
12
|
-
return "[cached]".light_blue if (cached)
|
13
|
-
end
|
14
|
-
return ""
|
15
|
-
end
|
16
|
-
private :colorize_cached
|
17
|
-
|
18
|
-
def colorize_error(error)
|
19
|
-
return error if (!MsPac.colorize?)
|
20
|
-
return error.light_red
|
21
|
-
end
|
22
|
-
private :colorize_error
|
23
|
-
|
24
|
-
def colorize_installed(installed)
|
25
|
-
if (!MsPac.colorize?)
|
26
|
-
return "[installed]" if (installed)
|
27
|
-
else
|
28
|
-
return "[installed]".light_green if (installed)
|
29
|
-
end
|
30
|
-
return ""
|
31
|
-
end
|
32
|
-
private :colorize_installed
|
33
|
-
|
34
|
-
def colorize_name(name = @name)
|
35
|
-
return name if (!MsPac.colorize?)
|
36
|
-
return name.light_white
|
37
|
-
end
|
38
|
-
private :colorize_name
|
39
|
-
|
40
|
-
def colorize_status(status)
|
41
|
-
return status if (!MsPac.colorize?)
|
42
|
-
return status.light_white
|
43
|
-
end
|
44
|
-
private :colorize_status
|
45
|
-
|
46
|
-
def initialize(json)
|
47
|
-
json.keys.each do |key|
|
48
|
-
self[key] = json[key]
|
49
|
-
end
|
50
|
-
|
51
|
-
@pm = MsPac::PackageManager.new
|
52
|
-
@vcs = MsPac::VersionControl.new(self["vcs"])
|
53
|
-
end
|
54
|
-
|
55
8
|
def cached?
|
56
9
|
Pathname.new("#{@@cache_dir}/#{name}").expand_path.exist?
|
57
10
|
end
|
58
11
|
|
59
12
|
def compile
|
60
13
|
return if (self["compile"].empty?)
|
61
|
-
puts
|
14
|
+
puts hilight_status("Compiling #{name}...")
|
62
15
|
execute("compile")
|
63
16
|
end
|
64
17
|
private :compile
|
@@ -80,7 +33,7 @@ class MsPac::Pellet < Hash
|
|
80
33
|
|
81
34
|
get_deps
|
82
35
|
|
83
|
-
puts
|
36
|
+
puts hilight_status("Fetching #{name}...")
|
84
37
|
if (Pathname.new("#{@@cache_dir}/#{name}").expand_path.exist?)
|
85
38
|
Dir.chdir("#{@@cache_dir}/#{name}") do
|
86
39
|
@vcs.update
|
@@ -94,7 +47,7 @@ class MsPac::Pellet < Hash
|
|
94
47
|
end
|
95
48
|
|
96
49
|
def get_deps
|
97
|
-
puts
|
50
|
+
puts hilight_status("Installing dependencies...")
|
98
51
|
@pm.install([self["vcs"]].concat(self["deps"][@pm.pkgmgr]))
|
99
52
|
@pm.install(self["deps"]["perl"], "perl")
|
100
53
|
@pm.install(self["deps"]["python2"], "python2")
|
@@ -102,6 +55,53 @@ class MsPac::Pellet < Hash
|
|
102
55
|
end
|
103
56
|
private :get_deps
|
104
57
|
|
58
|
+
def hilight_cached(cached)
|
59
|
+
if (!MsPac.hilight?)
|
60
|
+
return "[cached]" if (cached)
|
61
|
+
else
|
62
|
+
return "[cached]".light_blue if (cached)
|
63
|
+
end
|
64
|
+
return ""
|
65
|
+
end
|
66
|
+
private :hilight_cached
|
67
|
+
|
68
|
+
def hilight_error(error)
|
69
|
+
return error if (!MsPac.hilight?)
|
70
|
+
return error.light_red
|
71
|
+
end
|
72
|
+
private :hilight_error
|
73
|
+
|
74
|
+
def hilight_installed(installed)
|
75
|
+
if (!MsPac.hilight?)
|
76
|
+
return "[installed]" if (installed)
|
77
|
+
else
|
78
|
+
return "[installed]".light_green if (installed)
|
79
|
+
end
|
80
|
+
return ""
|
81
|
+
end
|
82
|
+
private :hilight_installed
|
83
|
+
|
84
|
+
def hilight_name(name = @name)
|
85
|
+
return name if (!MsPac.hilight?)
|
86
|
+
return name.light_white
|
87
|
+
end
|
88
|
+
private :hilight_name
|
89
|
+
|
90
|
+
def hilight_status(status)
|
91
|
+
return status if (!MsPac.hilight?)
|
92
|
+
return status.light_white
|
93
|
+
end
|
94
|
+
private :hilight_status
|
95
|
+
|
96
|
+
def initialize(json)
|
97
|
+
json.keys.each do |key|
|
98
|
+
self[key] = json[key]
|
99
|
+
end
|
100
|
+
|
101
|
+
@pm = MsPac::PackageManager.new
|
102
|
+
@vcs = MsPac::VersionControl.new(self["vcs"])
|
103
|
+
end
|
104
|
+
|
105
105
|
def install
|
106
106
|
if (!cached?)
|
107
107
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
@@ -110,7 +110,7 @@ class MsPac::Pellet < Hash
|
|
110
110
|
link if (!installed?)
|
111
111
|
compile
|
112
112
|
|
113
|
-
puts
|
113
|
+
puts hilight_status("Installing #{name}...")
|
114
114
|
execute("install")
|
115
115
|
end
|
116
116
|
|
@@ -123,7 +123,7 @@ class MsPac::Pellet < Hash
|
|
123
123
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
124
124
|
end
|
125
125
|
|
126
|
-
puts
|
126
|
+
puts hilight_status("Linking #{name}...")
|
127
127
|
FileUtils.ln_sf(
|
128
128
|
"#{@@cache_dir}/#{name}",
|
129
129
|
"#{@@install_dir}/#{name}"
|
@@ -135,7 +135,7 @@ class MsPac::Pellet < Hash
|
|
135
135
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
136
136
|
end
|
137
137
|
|
138
|
-
puts
|
138
|
+
puts hilight_status("Locking #{name}...")
|
139
139
|
FileUtils.touch("#{@@install_dir}/#{name}/.mspac_lock")
|
140
140
|
end
|
141
141
|
|
@@ -148,7 +148,7 @@ class MsPac::Pellet < Hash
|
|
148
148
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
149
149
|
end
|
150
150
|
|
151
|
-
puts
|
151
|
+
puts hilight_status("Purging #{name}...")
|
152
152
|
FileUtils.rm_rf("#{@@cache_dir}/#{name}")
|
153
153
|
end
|
154
154
|
|
@@ -157,7 +157,7 @@ class MsPac::Pellet < Hash
|
|
157
157
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
158
158
|
end
|
159
159
|
|
160
|
-
puts
|
160
|
+
puts hilight_status("Removing #{name}...")
|
161
161
|
execute("remove")
|
162
162
|
unlink
|
163
163
|
purge if (nosave)
|
@@ -169,8 +169,8 @@ class MsPac::Pellet < Hash
|
|
169
169
|
|
170
170
|
def to_s
|
171
171
|
header = [
|
172
|
-
|
173
|
-
|
172
|
+
hilight_name(name),
|
173
|
+
hilight_installed(installed?) || hilight_cached(cached?)
|
174
174
|
].join(" ")
|
175
175
|
return [
|
176
176
|
header,
|
@@ -184,7 +184,7 @@ class MsPac::Pellet < Hash
|
|
184
184
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
185
185
|
end
|
186
186
|
|
187
|
-
puts
|
187
|
+
puts hilight_status("Unlinking #{name}...")
|
188
188
|
FileUtils.rm_f("#{@@install_dir}/#{name}")
|
189
189
|
end
|
190
190
|
|
@@ -193,7 +193,7 @@ class MsPac::Pellet < Hash
|
|
193
193
|
raise MsPac::Error::PelletNotInstalledError.new(name)
|
194
194
|
end
|
195
195
|
|
196
|
-
puts
|
196
|
+
puts hilight_status("Unlocking #{name}...")
|
197
197
|
FileUtils.rm_f("#{@@install_dir}/#{name}/.mspac_lock")
|
198
198
|
end
|
199
199
|
|
@@ -204,11 +204,11 @@ class MsPac::Pellet < Hash
|
|
204
204
|
|
205
205
|
Dir.chdir("#{@@install_dir}/#{name}") do
|
206
206
|
if (Pathname.new(".mspac_lock").expand_path.exist?)
|
207
|
-
puts
|
207
|
+
puts hilight_error("Locked: #{name}")
|
208
208
|
return
|
209
209
|
end
|
210
210
|
|
211
|
-
puts
|
211
|
+
puts hilight_status("Updating #{name}...")
|
212
212
|
tip = @vcs.revision
|
213
213
|
@vcs.update
|
214
214
|
new_tip = @vcs.revision
|
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.2.
|
4
|
+
version: 0.2.7
|
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-
|
11
|
+
date: 2016-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -31,25 +31,25 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 10.5.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: hilighter
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
39
|
+
version: '0.1'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.1.0
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '0.
|
49
|
+
version: '0.1'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.
|
52
|
+
version: 0.1.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: scoobydoo
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|