bow 0.0.0 → 0.5.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/.gitignore +12 -0
- data/Gemfile +7 -0
- data/LICENSE +21 -0
- data/README.md +156 -0
- data/Rakefile +11 -0
- data/bin/bow +6 -0
- data/bow.gemspec +10 -4
- data/lib/bow.rb +25 -0
- data/lib/bow/application.rb +96 -0
- data/lib/bow/command.rb +60 -0
- data/lib/bow/commands/apply.rb +24 -0
- data/lib/bow/commands/exec.rb +29 -0
- data/lib/bow/commands/init.rb +15 -0
- data/lib/bow/commands/ping.rb +16 -0
- data/lib/bow/commands/prepare.rb +24 -0
- data/lib/bow/config.rb +57 -0
- data/lib/bow/inventory.rb +84 -0
- data/lib/bow/inventory_example.rb +61 -0
- data/lib/bow/locker.rb +180 -0
- data/lib/bow/memorable.rb +37 -0
- data/lib/bow/options.rb +74 -0
- data/lib/bow/rake.rb +118 -0
- data/lib/bow/response_formatter.rb +39 -0
- data/lib/bow/ssh/rsync.rb +24 -0
- data/lib/bow/ssh/scp.rb +29 -0
- data/lib/bow/ssh_helper.rb +84 -0
- data/lib/bow/targets.rb +54 -0
- data/lib/bow/thread_pool.rb +67 -0
- data/lib/bow/version.rb +5 -0
- data/src/preprovision.sh +42 -0
- metadata +48 -5
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bow
|
4
|
+
class ThreadPool
|
5
|
+
attr_accessor :max_threads, :queue
|
6
|
+
|
7
|
+
def initialize(max_threads = 4)
|
8
|
+
@queue = []
|
9
|
+
@threads = []
|
10
|
+
@history = []
|
11
|
+
@max_threads = max_threads
|
12
|
+
return unless block_given?
|
13
|
+
yield(self)
|
14
|
+
run
|
15
|
+
end
|
16
|
+
|
17
|
+
def add(&task)
|
18
|
+
add_task(task)
|
19
|
+
end
|
20
|
+
|
21
|
+
def run
|
22
|
+
@queue.each do |task|
|
23
|
+
wait
|
24
|
+
run_task(task)
|
25
|
+
end
|
26
|
+
wait_for_all
|
27
|
+
end
|
28
|
+
|
29
|
+
def from_enumerable(enumerable, &block)
|
30
|
+
enumerable.each do |params|
|
31
|
+
task = build_task(block, params)
|
32
|
+
add_task(task)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def run_task(task)
|
39
|
+
thr = Thread.new(&task)
|
40
|
+
@threads << thr
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_task(handler, params)
|
44
|
+
-> { handler.call(params) }
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_task(task)
|
48
|
+
@queue << task
|
49
|
+
end
|
50
|
+
|
51
|
+
def wait
|
52
|
+
return if @threads.count < @max_threads
|
53
|
+
until @threads.count < @max_threads
|
54
|
+
active_threads = @threads.select(&:alive?)
|
55
|
+
@history += (@threads - active_threads)
|
56
|
+
@threads = active_threads
|
57
|
+
sleep 0.001
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def wait_for_all
|
62
|
+
return if @threads.empty?
|
63
|
+
# @threads.map!(&:run)
|
64
|
+
@threads.each(&:join)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/bow/version.rb
ADDED
data/src/preprovision.sh
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
################################################
|
4
|
+
# INSTALLS RVM & RUBY & RAKE #
|
5
|
+
# TO REMOVE RUN: rvm implode #
|
6
|
+
################################################
|
7
|
+
|
8
|
+
RUBY_VERSION="2.4"
|
9
|
+
|
10
|
+
# Install rvm
|
11
|
+
which rvm &>/dev/null
|
12
|
+
if [[ 0 != $? ]]; then
|
13
|
+
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
|
14
|
+
echo ">> Installing RVM..."
|
15
|
+
\curl -sSL https://get.rvm.io | sudo bash -s stable
|
16
|
+
source /usr/local/rvm/scripts/rvm
|
17
|
+
if [[ $? == 0 ]]; then echo "RVM installed!"; fi
|
18
|
+
else
|
19
|
+
echo ">> RVM already installed!"
|
20
|
+
fi
|
21
|
+
|
22
|
+
# Install ruby
|
23
|
+
which ruby &>/dev/null
|
24
|
+
if [[ 0 != $? ]]; then
|
25
|
+
echo ">> Installing Ruby $RUBY_VERSION..."
|
26
|
+
source /usr/local/rvm/scripts/rvm
|
27
|
+
rvm install $RUBY_VERSION
|
28
|
+
rvm --default use $RUBY_VERSION
|
29
|
+
if [[ $? == 0 ]]; then echo "Ruby $RUBY_VERSION installed!"; fi
|
30
|
+
else
|
31
|
+
echo ">> Ruby already installed!"
|
32
|
+
fi
|
33
|
+
|
34
|
+
# Install bow
|
35
|
+
which bow &>/dev/null
|
36
|
+
if [[ 0 != $? ]]; then
|
37
|
+
echo ">> Installing Bow..."
|
38
|
+
gem install bow
|
39
|
+
if [[ $? == 0 ]]; then echo "Bow installed!"; fi
|
40
|
+
else
|
41
|
+
echo ">> Bow already installed!"
|
42
|
+
fi
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zinovyev Ivan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mocha
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rubocop
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,14 +80,43 @@ dependencies:
|
|
66
80
|
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
|
-
description: Simple provisioning
|
83
|
+
description: Simple provisioning via rake tasks
|
70
84
|
email: zinovyev.id@gmail.com
|
71
|
-
executables:
|
85
|
+
executables:
|
86
|
+
- bow
|
72
87
|
extensions: []
|
73
88
|
extra_rdoc_files: []
|
74
89
|
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- Gemfile
|
92
|
+
- LICENSE
|
93
|
+
- README.md
|
94
|
+
- Rakefile
|
95
|
+
- bin/bow
|
75
96
|
- bow.gemspec
|
76
97
|
- lib/bow.rb
|
98
|
+
- lib/bow/application.rb
|
99
|
+
- lib/bow/command.rb
|
100
|
+
- lib/bow/commands/apply.rb
|
101
|
+
- lib/bow/commands/exec.rb
|
102
|
+
- lib/bow/commands/init.rb
|
103
|
+
- lib/bow/commands/ping.rb
|
104
|
+
- lib/bow/commands/prepare.rb
|
105
|
+
- lib/bow/config.rb
|
106
|
+
- lib/bow/inventory.rb
|
107
|
+
- lib/bow/inventory_example.rb
|
108
|
+
- lib/bow/locker.rb
|
109
|
+
- lib/bow/memorable.rb
|
110
|
+
- lib/bow/options.rb
|
111
|
+
- lib/bow/rake.rb
|
112
|
+
- lib/bow/response_formatter.rb
|
113
|
+
- lib/bow/ssh/rsync.rb
|
114
|
+
- lib/bow/ssh/scp.rb
|
115
|
+
- lib/bow/ssh_helper.rb
|
116
|
+
- lib/bow/targets.rb
|
117
|
+
- lib/bow/thread_pool.rb
|
118
|
+
- lib/bow/version.rb
|
119
|
+
- src/preprovision.sh
|
77
120
|
homepage: https://github.com/zinovyev/bow
|
78
121
|
licenses:
|
79
122
|
- MIT
|
@@ -97,5 +140,5 @@ rubyforge_project:
|
|
97
140
|
rubygems_version: 2.6.11
|
98
141
|
signing_key:
|
99
142
|
specification_version: 4
|
100
|
-
summary: Simple provisioning
|
143
|
+
summary: Simple provisioning via rake tasks
|
101
144
|
test_files: []
|