sweatshop_gears 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/Gemfile.lock +4 -5
- data/README.md +10 -2
- data/Rakefile +9 -2
- data/bin/sweatshop-gears +19 -8
- data/lib/robot_sweatshop/gears.rb +2 -1
- data/lib/robot_sweatshop/gears/binaries.rb +4 -15
- data/lib/robot_sweatshop/gears/dependencies.rb +1 -1
- data/lib/robot_sweatshop/gears/metadata.rb +41 -0
- data/lib/robot_sweatshop/gears/packages.rb +34 -0
- data/lib/robot_sweatshop/gears/services.rb +6 -11
- data/lib/robot_sweatshop/gears/sweatshop_gears.eye.eruby +1 -3
- data/sweatshop_gears.gemspec +1 -1
- data/test/help_test.rb +7 -0
- data/test/init.bats +2 -24
- data/test/init_test.rb +11 -0
- data/test/install.bats +32 -0
- data/test/install_test.rb +16 -0
- data/test/teststrap.rb +14 -0
- metadata +9 -3
- data/lib/robot_sweatshop/gears/base.rb +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c674ba7dbd21928d11433b49f7ba0ff722a5d976
|
4
|
+
data.tar.gz: c3fafd46ef7a1f223fdf58ec6cc40a0e7d681e89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ec3981a117a1229536b823f2f25766a274e21d54f5a3432a87a551bcf646563103d91d12438f4d517de4b28ebef627a8a60c5dc87a50c5c867e43086d319d15
|
7
|
+
data.tar.gz: 21aaf7fcab481a610792499c29bd3799a2a214def189ce688a813389d0bfeb87a5606dce0c08e100cfa6e30bda0dce4514ce6ef6f45fd79e85b280d6c513ccfc
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sweatshop_gears (1.0.
|
4
|
+
sweatshop_gears (1.0.2)
|
5
5
|
bundler
|
6
6
|
commander
|
7
7
|
contracts
|
@@ -18,7 +18,6 @@ GEM
|
|
18
18
|
celluloid-io (0.15.0)
|
19
19
|
celluloid (>= 0.15.0)
|
20
20
|
nio4r (>= 0.5.0)
|
21
|
-
colorize (0.7.7)
|
22
21
|
commander (4.3.4)
|
23
22
|
highline (~> 1.7.2)
|
24
23
|
configatron (4.5.0)
|
@@ -49,7 +48,7 @@ GEM
|
|
49
48
|
moneta (0.8.0)
|
50
49
|
nio4r (1.1.0)
|
51
50
|
oj (2.12.9)
|
52
|
-
rack (1.6.
|
51
|
+
rack (1.6.2)
|
53
52
|
rack-protection (1.5.3)
|
54
53
|
rack
|
55
54
|
rainbow (2.0.0)
|
@@ -58,9 +57,8 @@ GEM
|
|
58
57
|
moneta (~> 0.8)
|
59
58
|
riot (0.12.7)
|
60
59
|
rr
|
61
|
-
robot_sweatshop (0.4.
|
60
|
+
robot_sweatshop (0.4.7)
|
62
61
|
bundler
|
63
|
-
colorize
|
64
62
|
commander
|
65
63
|
configatron
|
66
64
|
contracts
|
@@ -72,6 +70,7 @@ GEM
|
|
72
70
|
sinatra
|
73
71
|
sinatra-cross_origin
|
74
72
|
stubborn_queue
|
73
|
+
terminal-announce
|
75
74
|
rr (1.1.2)
|
76
75
|
sigar (0.7.3)
|
77
76
|
simplecov (0.10.0)
|
data/README.md
CHANGED
@@ -2,10 +2,18 @@
|
|
2
2
|
|
3
3
|
Package management for [Robot Sweatshop](https://github.com/JScott/robot_sweatshop) scripts.
|
4
4
|
|
5
|
-
`sweatshop gears <package-name>`
|
5
|
+
`sweatshop gears install <package-name>`
|
6
|
+
|
7
|
+
If you can't create `/usr/local/gears`, use the `--path` flag to install everything to somewhere you can.
|
6
8
|
|
7
9
|
## Future
|
8
10
|
|
9
11
|
- Figure out something sane for finding ports for services
|
10
|
-
- More metadata (author, description)
|
11
12
|
- Source from custom repo
|
13
|
+
- More commands:
|
14
|
+
- show <package>
|
15
|
+
- list [--all]
|
16
|
+
- uninstall
|
17
|
+
- update
|
18
|
+
- Package versioning
|
19
|
+
- Scaffolding scripts?
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rake'
|
2
|
+
require 'rake/testtask'
|
2
3
|
|
3
|
-
task :
|
4
|
+
task :bats do
|
4
5
|
`sweatshop stop`
|
5
6
|
$stdout.sync = true
|
6
7
|
puts 'sweatshop-gears'
|
@@ -11,6 +12,12 @@ task :test do
|
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
15
|
+
task :riot do
|
16
|
+
Dir.glob('test/*_test.rb').each do |path|
|
17
|
+
require_relative path
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
14
21
|
task :build do
|
15
22
|
print 'Building and installing local gem..'
|
16
23
|
`gem build sweatshop_gears.gemspec --force`
|
@@ -20,4 +27,4 @@ task :build do
|
|
20
27
|
end
|
21
28
|
|
22
29
|
task default: :test
|
23
|
-
task test: :build
|
30
|
+
task test: [:build, :riot]
|
data/bin/sweatshop-gears
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'yaml'
|
3
|
+
require 'fileutils'
|
3
4
|
require 'commander/import'
|
4
5
|
require 'robot_sweatshop/gears'
|
5
6
|
|
6
7
|
program :name, 'Sweatshop Gears'
|
7
|
-
program :version, '1.0.
|
8
|
+
program :version, '1.0.3'
|
8
9
|
program :description, 'Package management for Robot Sweatshop'
|
9
10
|
program :help, 'Author', 'Justin Scott <jvscott@gmail.com>'
|
10
11
|
|
@@ -12,14 +13,24 @@ default_command :help
|
|
12
13
|
|
13
14
|
command :init do |c|
|
14
15
|
c.syntax = 'sweatshop-gears init'
|
15
|
-
c.description = '
|
16
|
+
c.description = 'Downloads the Sweatshop Gears metadata'
|
16
17
|
c.option '--path STRING', String, 'The working path for downloading packages'
|
17
18
|
c.action do |_args, options|
|
18
|
-
options.default path: '/
|
19
|
-
|
20
|
-
Gears.
|
21
|
-
Gears::
|
22
|
-
|
23
|
-
|
19
|
+
options.default path: '/usr/local/gears'
|
20
|
+
FileUtils.mkpath options.path
|
21
|
+
Gears::Metadata.download to_path: options.path
|
22
|
+
Gears::Metadata.create_runtime_paths # TODO: ensure robot_sweatshop ran and the compiled config exists? Only errors in Services
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
command :install do |c|
|
27
|
+
c.syntax = 'sweatshop-gears install <package-name>'
|
28
|
+
c.description = 'Makes a Gears package available to Robot Sweatshop'
|
29
|
+
c.option '--path STRING', String, 'The working path for downloading packages'
|
30
|
+
c.action do |args, options|
|
31
|
+
options.default path: '/usr/local/gears'
|
32
|
+
system "sweatshop-gears init --path #{options.path}" unless Dir.exist? options.path
|
33
|
+
fail "#{args.first} already installed" if Dir.exist? "#{options.path}/#{args.first}"
|
34
|
+
Gears::Packages.install args.first, from_path: options.path
|
24
35
|
end
|
25
36
|
end
|
@@ -5,20 +5,9 @@ module Gears
|
|
5
5
|
# Installs binary Gears packages
|
6
6
|
module Binaries
|
7
7
|
def self.expose(from_path:)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.contains_binary?(package_path)
|
14
|
-
metadata = Gears.metadata package_path
|
15
|
-
metadata['type'] == 'binary'
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.link(package_path)
|
19
|
-
binary_name = File.basename package_path
|
20
|
-
original_binary = "#{package_path}/#{binary_name}"
|
21
|
-
binary_link = "#{scripts_path}/#{binary_name}"
|
8
|
+
binary_name = File.basename from_path
|
9
|
+
original_binary = File.expand_path "#{from_path}/#{binary_name}"
|
10
|
+
binary_link = File.expand_path "#{scripts_path}/#{binary_name}"
|
22
11
|
begin
|
23
12
|
FileUtils.symlink original_binary, binary_link
|
24
13
|
Announce.success "Symlinked #{binary_name}"
|
@@ -29,7 +18,7 @@ module Gears
|
|
29
18
|
|
30
19
|
def self.scripts_path
|
31
20
|
config = File.expand_path '~/.robot_sweatshop/compiled_config.yaml'
|
32
|
-
|
21
|
+
fail 'Please run `sweatshop start` again' unless File.exist? config
|
33
22
|
config = YAML.load File.read(config)
|
34
23
|
config[:scripts_path]
|
35
24
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'git'
|
2
|
+
require 'yaml'
|
3
|
+
require 'terminal-announce'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
# Provides information and downloading of Gears metadata
|
7
|
+
module Gears
|
8
|
+
module Metadata
|
9
|
+
def self.clone(path)
|
10
|
+
Git.clone git_repo, File.basename(path), path: File.dirname(path)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.git_repo
|
14
|
+
'https://github.com/JScott/sweatshop-gears-packages.git'
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.download(to_path:)
|
18
|
+
puts "Downloading metadata from '#{git_repo}'"
|
19
|
+
clone to_path
|
20
|
+
Announce.success 'Metadata downloaded'
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.metadata(package_path)
|
24
|
+
YAML.load File.read("#{package_path}/metadata.yaml")
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.create_runtime_paths
|
28
|
+
config_path = File.expand_path '~/.robot_sweatshop/compiled_config.yaml'
|
29
|
+
config = YAML.load_file config_path
|
30
|
+
FileUtils.mkpath config[:logfile_path]
|
31
|
+
FileUtils.mkpath config[:pidfile_path]
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.download_and_install(package_name, from_path:)
|
35
|
+
metadata_path = "#{from_path}/#{package_name}.yaml"
|
36
|
+
fail "#{package_name} not found" unless File.exist? metadata_path
|
37
|
+
metadata = YAML.load_file metadata_path
|
38
|
+
Gears::Package.install_from metadata
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'terminal-announce'
|
2
|
+
|
3
|
+
# Provides information and downloading of Gears packages
|
4
|
+
module Gears
|
5
|
+
module Packages
|
6
|
+
def self.clone(git_repo, to_path:)
|
7
|
+
Git.clone git_repo, File.basename(to_path), path: File.dirname(to_path)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.packages(gears_path)
|
11
|
+
paths = Dir["#{gears_path}/*"].select { |path| File.directory? path }
|
12
|
+
paths.map { |path| File.expand_path path }
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.data_for(package_name, path)
|
16
|
+
install_path = "#{path}/#{package_name}"
|
17
|
+
metadata_path = "#{path}/#{package_name}.yaml"
|
18
|
+
fail "Metadata for '#{package_name}' not found" unless File.exist? metadata_path
|
19
|
+
[install_path, YAML.load_file(metadata_path)]
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.install(package_name, from_path:)
|
23
|
+
install_path, metadata = data_for package_name, from_path
|
24
|
+
clone metadata['repo'], to_path: install_path
|
25
|
+
Announce.success "#{package_name} downloaded"
|
26
|
+
Gears::Dependencies.install from_path: install_path
|
27
|
+
Gears::Binaries.expose from_path: install_path if metadata['type'] == 'binary'
|
28
|
+
Gears::Services.load from_path: install_path if metadata['type'] == 'service'
|
29
|
+
rescue
|
30
|
+
Announce.failure 'Error occurred, rolling back installation'
|
31
|
+
FileUtils.rm_rf "#{from_path}/#{package_name}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -6,29 +6,24 @@ module Gears
|
|
6
6
|
# Installs service Gears packages
|
7
7
|
module Services
|
8
8
|
def self.load(from_path:)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
services.each { |service| Announce.success "Loaded #{service} into Eye" }
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.contains_service?(package_path)
|
16
|
-
metadata = Gears.metadata package_path
|
17
|
-
metadata['type'] == 'service'
|
9
|
+
service = File.basename from_path
|
10
|
+
dynamically_load_eye service, from_path
|
11
|
+
Announce.success "Loaded #{service} into Eye"
|
18
12
|
end
|
19
13
|
|
20
14
|
def self.write_and_load(eye_config)
|
21
15
|
eye_file = '/tmp/.sweatshop_gears.eye'
|
22
16
|
File.write eye_file, eye_config
|
17
|
+
puts eye_config
|
23
18
|
puts `eye load #{eye_file}`
|
24
19
|
puts `eye stop sweatshop_gears`
|
25
20
|
File.delete eye_file
|
26
21
|
end
|
27
22
|
|
28
|
-
def self.dynamically_load_eye(
|
23
|
+
def self.dynamically_load_eye(service, gears_path)
|
29
24
|
input = File.read "#{__dir__}/sweatshop_gears.eye.eruby"
|
30
25
|
eruby = Erubis::Eruby.new input
|
31
|
-
context = {
|
26
|
+
context = { service: service, gears_path: File.expand_path(gears_path) }
|
32
27
|
write_and_load eruby.result(context)
|
33
28
|
end
|
34
29
|
end
|
@@ -15,12 +15,10 @@ Eye.application :sweatshop_gears do
|
|
15
15
|
check :cpu, every: 10.seconds, below: 100, times: 3
|
16
16
|
working_dir CONFIG[:working_path]
|
17
17
|
|
18
|
-
<% for service in services %>
|
19
18
|
process :'<%= service %>' do
|
20
19
|
pid_file "#{PID_PATH}/gears/<%= service %>.pid"
|
21
20
|
stdall "#{LOG_PATH}/gears/<%= service %>.log"
|
22
|
-
start_command "<%= gears_path %>/<%= service
|
21
|
+
start_command "<%= gears_path %>/<%= service %>"
|
23
22
|
daemonize true
|
24
23
|
end
|
25
|
-
<% end %>
|
26
24
|
end
|
data/sweatshop_gears.gemspec
CHANGED
data/test/help_test.rb
ADDED
data/test/init.bats
CHANGED
@@ -5,31 +5,9 @@
|
|
5
5
|
[ -f .test_download_path/README.md ]
|
6
6
|
}
|
7
7
|
|
8
|
-
@test "
|
8
|
+
@test "Doesn't download any packages" {
|
9
9
|
run sweatshop-gears init --path .test_download_path
|
10
|
-
|
11
|
-
[ -f $scripts_path/git-sync ]
|
12
|
-
}
|
13
|
-
|
14
|
-
@test "Doesn't expose services" {
|
15
|
-
run sweatshop-gears init --path .test_download_path
|
16
|
-
scripts_path=.robot_sweatshop/scripts
|
17
|
-
[ ! -f $scripts_path/big-green-button ]
|
18
|
-
}
|
19
|
-
|
20
|
-
@test "Loads services into Eye" {
|
21
|
-
eye stop big-green-button
|
22
|
-
run sweatshop-gears init --path .test_download_path
|
23
|
-
eye start big-green-button
|
24
|
-
sleep 3
|
25
|
-
[[ $(eye info | grep big-green-button) =~ up ]]
|
26
|
-
}
|
27
|
-
|
28
|
-
@test "Installs dependencies" {
|
29
|
-
skip "I need a gem to be installed that isn't used by Sweatshop or Gears"
|
30
|
-
yes | gem uninstall SOME_GEM --all
|
31
|
-
sweatshop-gears init --path .test_download_path
|
32
|
-
[[ $(gem list) =~ "SOME_GEM " ]]
|
10
|
+
[ ! -f .test_download_path/packages/big-green-button/README.md ]
|
33
11
|
}
|
34
12
|
|
35
13
|
teardown() {
|
data/test/init_test.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative 'teststrap'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
|
5
|
+
context 'sweatshop-gears init' do
|
6
|
+
teardown { clean_up_paths }
|
7
|
+
setup { `bin/sweatshop-gears init --path #{PACKAGES_PATH}` }
|
8
|
+
denies_topic('the output').empty
|
9
|
+
asserts('metadata is downloaded') { File.exist? "#{PACKAGES_PATH}/git-sync.yaml" }
|
10
|
+
denies('packages are downloaded') { File.exist? "#{SWEATSHOP_SCRIPTS_PATH}/git-sync" }
|
11
|
+
end
|
data/test/install.bats
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env bats
|
2
|
+
|
3
|
+
@test "Exposes package binaries" {
|
4
|
+
run sweatshop-gears install git-sync --path .test_download_path
|
5
|
+
scripts_path=.robot_sweatshop/scripts
|
6
|
+
[ -f $scripts_path/git-sync ]
|
7
|
+
}
|
8
|
+
|
9
|
+
@test "Doesn't expose services" {
|
10
|
+
run sweatshop-gears install big-green-button --path .test_download_path
|
11
|
+
scripts_path=.robot_sweatshop/scripts
|
12
|
+
[ ! -f $scripts_path/big-green-button ]
|
13
|
+
}
|
14
|
+
|
15
|
+
@test "Loads services into Eye" {
|
16
|
+
eye stop big-green-button
|
17
|
+
run sweatshop-gears install big-green-button --path .test_download_path
|
18
|
+
eye start big-green-button
|
19
|
+
sleep 3
|
20
|
+
[[ $(eye info | grep big-green-button) =~ up ]]
|
21
|
+
}
|
22
|
+
|
23
|
+
@test "Installs dependencies" {
|
24
|
+
skip "I need a gem to be installed that isn't used by Sweatshop or Gears"
|
25
|
+
yes | gem uninstall SOME_GEM --all
|
26
|
+
sweatshop-gears install git-sync --path .test_download_path
|
27
|
+
[[ $(gem list) =~ "SOME_GEM " ]]
|
28
|
+
}
|
29
|
+
|
30
|
+
teardown() {
|
31
|
+
rm -rf .test_download_path
|
32
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'teststrap'
|
2
|
+
|
3
|
+
context 'sweatshop-gears install' do
|
4
|
+
setup do
|
5
|
+
clean_up_paths
|
6
|
+
%w(git-sync big-green-button).each do |package|
|
7
|
+
`sweatshop-gears install #{package} --path #{PACKAGES_PATH}`
|
8
|
+
end
|
9
|
+
end
|
10
|
+
denies_topic('the output').empty
|
11
|
+
asserts('packages are downloaded') { File.exist? "#{PACKAGES_PATH}/git-sync" }
|
12
|
+
asserts('binaries are symlinked') { File.exist? "#{SWEATSHOP_SCRIPTS_PATH}/git-sync" }
|
13
|
+
denies('services are symlinked') { File.exist? "#{SWEATSHOP_SCRIPTS_PATH}/big-green-button" }
|
14
|
+
asserts('services are loaded into Eye') { not `eye info | grep big-green-button`.empty? }
|
15
|
+
# asserts('dependencies are installed') { ??? }
|
16
|
+
end
|
data/test/teststrap.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'riot'
|
3
|
+
require 'yaml'
|
4
|
+
require 'robot_sweatshop/config'
|
5
|
+
|
6
|
+
`sweatshop start`
|
7
|
+
`sweatshop stop`
|
8
|
+
|
9
|
+
PACKAGES_PATH = '.test_download_path'
|
10
|
+
SWEATSHOP_SCRIPTS_PATH = '.robot_sweatshop/scripts'
|
11
|
+
|
12
|
+
def clean_up_paths
|
13
|
+
FileUtils.rm_rf PACKAGES_PATH
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sweatshop_gears
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Scott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -166,14 +166,20 @@ files:
|
|
166
166
|
- Rakefile
|
167
167
|
- bin/sweatshop-gears
|
168
168
|
- lib/robot_sweatshop/gears.rb
|
169
|
-
- lib/robot_sweatshop/gears/base.rb
|
170
169
|
- lib/robot_sweatshop/gears/binaries.rb
|
171
170
|
- lib/robot_sweatshop/gears/dependencies.rb
|
171
|
+
- lib/robot_sweatshop/gears/metadata.rb
|
172
|
+
- lib/robot_sweatshop/gears/packages.rb
|
172
173
|
- lib/robot_sweatshop/gears/services.rb
|
173
174
|
- lib/robot_sweatshop/gears/sweatshop_gears.eye.eruby
|
174
175
|
- sweatshop_gears.gemspec
|
175
176
|
- test/cli.bats
|
177
|
+
- test/help_test.rb
|
176
178
|
- test/init.bats
|
179
|
+
- test/init_test.rb
|
180
|
+
- test/install.bats
|
181
|
+
- test/install_test.rb
|
182
|
+
- test/teststrap.rb
|
177
183
|
homepage: http://www.github.com/jscott/sweatshop-gears-cli/
|
178
184
|
licenses:
|
179
185
|
- MIT
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'git'
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
# Provides information and downloading of Gears packages
|
5
|
-
module Gears
|
6
|
-
def self.clone_packages(path)
|
7
|
-
Git.clone git_repo, File.basename(path), path: File.dirname(path)
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.git_repo
|
11
|
-
'https://github.com/JScott/sweatshop-gears-packages.git'
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.download(to_path:)
|
15
|
-
puts "Downloading packages from '#{git_repo}'"
|
16
|
-
clone_packages to_path
|
17
|
-
Announce.success 'Packages downloaded'
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.packages(gears_path)
|
21
|
-
paths = Dir["#{gears_path}/*"].select { |path| File.directory? path }
|
22
|
-
paths.map { |path| File.expand_path path }
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.metadata(package_path)
|
26
|
-
YAML.load File.read("#{package_path}/metadata.yaml")
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.create_runtime_paths
|
30
|
-
config_path = File.expand_path '~/.robot_sweatshop/compiled_config.yaml'
|
31
|
-
config = YAML.load_file config_path
|
32
|
-
FileUtils.mkpath config[:logfile_path]
|
33
|
-
FileUtils.mkpath config[:pidfile_path]
|
34
|
-
end
|
35
|
-
end
|