escualo 0.1.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 +15 -0
- data/bin/escualo +41 -0
- data/lib/command.rb +9 -0
- data/lib/escualo.rb +18 -0
- data/lib/session.rb +64 -0
- data/lib/template.rb +34 -0
- metadata +150 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OWY3ZjE5YWNiNGZhZWFiZGJkZWExNzdiOTZkZWNlYzI0NWFkMzMyOA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MzJiM2MxMjcxMmY0Mzk5M2Y5ZjMyMTU4MTMwYWUxMjQ2M2U1YTYxYQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZGM5Yjg4NDNlYWRmZDQwOGVlYjA5OTJhYjk1YjIwNjVhY2ExNTFiY2I1OWYw
|
10
|
+
YmVmOTE1MTFmODgxZGFjYTJkMjY2YzhjM2U5YTU5NzI0YzU2ZTA3M2YxMjQz
|
11
|
+
ZDNmOWY3MjViNDU5ZDY1ZDMwMWQ2OGZjZTFjY2ZlODhiNDY2Yzk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NGQxNTY2MmFhNzRkYmRlZTYzODhiZWIyNDM2MDhjNmYzZTBjYmYyZWJjOTc5
|
14
|
+
Y2ZmZTIyMDAyMWJkMzJkMWZkN2Q0MmM4ZjRhNjYwYzNmNjRkYTlmNjE4Y2Ey
|
15
|
+
MzBmM2ZlYThjMzc2NWEyMjczMDUwMjNkMjM4ZGQ0MDFlNjdhODU=
|
data/bin/escualo
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'commander/import'
|
6
|
+
|
7
|
+
require_relative '../lib/escualo'
|
8
|
+
|
9
|
+
program :name, 'escualo'
|
10
|
+
program :version, Escualo::VERSION
|
11
|
+
program :description, 'escualo provisioning tool implementation for ruby'
|
12
|
+
|
13
|
+
require_relative '../lib/command'
|
14
|
+
|
15
|
+
def step(name, &block)
|
16
|
+
say name
|
17
|
+
block.call
|
18
|
+
end
|
19
|
+
|
20
|
+
def do_unless(done, done_message, options)
|
21
|
+
if !options.force && done
|
22
|
+
say "Nothing to do. #{done_message}"
|
23
|
+
say 'Use --force to proceed it anyway'
|
24
|
+
else
|
25
|
+
yield
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
require_relative '../lib/commands/globals'
|
30
|
+
|
31
|
+
require_relative '../lib/commands/bootstrap'
|
32
|
+
require_relative '../lib/commands/deploy'
|
33
|
+
require_relative '../lib/commands/script'
|
34
|
+
require_relative '../lib/commands/upload'
|
35
|
+
require_relative '../lib/commands/rake'
|
36
|
+
|
37
|
+
require_relative '../lib/commands/plugin'
|
38
|
+
require_relative '../lib/commands/artifact'
|
39
|
+
require_relative '../lib/commands/remote'
|
40
|
+
require_relative '../lib/commands/env'
|
41
|
+
|
data/lib/command.rb
ADDED
data/lib/escualo.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'net/ssh'
|
2
|
+
require 'net/scp'
|
3
|
+
require 'securerandom'
|
4
|
+
require 'yaml'
|
5
|
+
require 'mumukit/core'
|
6
|
+
|
7
|
+
module Escualo
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative './session'
|
11
|
+
require_relative './template'
|
12
|
+
|
13
|
+
require_relative './escualo/version'
|
14
|
+
require_relative './escualo/env'
|
15
|
+
require_relative './escualo/bootstrap'
|
16
|
+
require_relative './escualo/plugin'
|
17
|
+
require_relative './escualo/remote'
|
18
|
+
require_relative './escualo/artifact'
|
data/lib/session.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
class Net::SSH::Connection::Session
|
2
|
+
def upload_template!(destination, name, bindings)
|
3
|
+
Mumukit::Core::Template
|
4
|
+
.new(File.join(__dir__, 'templates', "#{name}.erb"), bindings)
|
5
|
+
.with_tempfile!('template') do |file|
|
6
|
+
scp.upload! file, destination
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def tell!(command)
|
11
|
+
channel = self.open_channel do |ch|
|
12
|
+
ch.exec command do |ch, success|
|
13
|
+
raise 'could not execute command' unless success
|
14
|
+
ch.on_data do |c, data|
|
15
|
+
$stdout.print data
|
16
|
+
end
|
17
|
+
ch.on_extended_data do |c, type, data|
|
18
|
+
$stderr.print data
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
channel.wait
|
23
|
+
end
|
24
|
+
|
25
|
+
def shell
|
26
|
+
Shell.new self
|
27
|
+
end
|
28
|
+
|
29
|
+
def perform!(command, options)
|
30
|
+
if options.verbose
|
31
|
+
tell! command
|
32
|
+
else
|
33
|
+
exec! command
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Shell
|
38
|
+
attr_reader :ssh
|
39
|
+
|
40
|
+
def initialize(ssh)
|
41
|
+
@ssh = ssh
|
42
|
+
end
|
43
|
+
|
44
|
+
def perform!(command, options)
|
45
|
+
ssh.perform! wrap(command), options
|
46
|
+
end
|
47
|
+
|
48
|
+
def exec!(command)
|
49
|
+
ssh.exec! wrap(command)
|
50
|
+
end
|
51
|
+
|
52
|
+
def tell!(command)
|
53
|
+
ssh.tell! wrap(command)
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def wrap(command)
|
59
|
+
"bash -i -s <<EOBASH
|
60
|
+
#{command}
|
61
|
+
EOBASH"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/template.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
class Mumukit::Core::Template
|
2
|
+
attr_accessor :path
|
3
|
+
|
4
|
+
def initialize(path, variables)
|
5
|
+
@path = path
|
6
|
+
variables.each do |key, value|
|
7
|
+
instance_variable_set "@#{key}", value
|
8
|
+
self.singleton_class.class_eval { attr_reader key }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def render
|
13
|
+
template_file.result binding
|
14
|
+
end
|
15
|
+
|
16
|
+
def write!(file)
|
17
|
+
File.write file, render
|
18
|
+
end
|
19
|
+
|
20
|
+
def with_tempfile!(prefix)
|
21
|
+
file = Tempfile.new(prefix)
|
22
|
+
write! file
|
23
|
+
yield file
|
24
|
+
ensure
|
25
|
+
file.unlink
|
26
|
+
file.close
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def template_file
|
32
|
+
ERB.new File.read(path)
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: escualo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Franco Leonardo Bulgarelli
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: commander
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: net-ssh
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: net-scp
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mumukit-core
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.11'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.11'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '10.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '10.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.0'
|
111
|
+
description: ! "escualo.rb is command-line tools that implements of the escualo provisioning
|
112
|
+
format used by Mumuki Platform.\n It allows to deploy mumuki
|
113
|
+
artifacts to any host"
|
114
|
+
email:
|
115
|
+
- flbulgarelli@yahoo.com.ar
|
116
|
+
executables: []
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- bin/escualo
|
121
|
+
- lib/command.rb
|
122
|
+
- lib/escualo.rb
|
123
|
+
- lib/session.rb
|
124
|
+
- lib/template.rb
|
125
|
+
homepage: http://github.com/mumuki/escualo.rb
|
126
|
+
licenses:
|
127
|
+
- MIT
|
128
|
+
metadata:
|
129
|
+
allowed_push_host: ! 'TODO: Set to ''http://mygemserver.com'''
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 2.4.5
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: Mumuki Platform provisioning tool
|
150
|
+
test_files: []
|