propro 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 +7 -0
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/LICENSE +339 -0
- data/README.md +134 -0
- data/Rakefile +9 -0
- data/bin/propro +6 -0
- data/examples/vagrant.propro +41 -0
- data/examples/vps_webserver.propro +51 -0
- data/ext/bash/app/nginx.sh +9 -0
- data/ext/bash/app/node.sh +5 -0
- data/ext/bash/app/pg.sh +5 -0
- data/ext/bash/app/puma/nginx.sh +58 -0
- data/ext/bash/app/puma.sh +64 -0
- data/ext/bash/app/rvm.sh +7 -0
- data/ext/bash/app/sidekiq.sh +69 -0
- data/ext/bash/app.sh +75 -0
- data/ext/bash/db/pg.sh +47 -0
- data/ext/bash/db/redis.sh +20 -0
- data/ext/bash/lib/extras.sh +11 -0
- data/ext/bash/lib/nginx.sh +233 -0
- data/ext/bash/lib/node.sh +28 -0
- data/ext/bash/lib/pg.sh +44 -0
- data/ext/bash/lib/propro.sh +104 -0
- data/ext/bash/lib/redis.sh +59 -0
- data/ext/bash/lib/rvm.sh +21 -0
- data/ext/bash/lib/system.sh +57 -0
- data/ext/bash/lib/ubuntu.sh +175 -0
- data/ext/bash/vagrant/nginx.sh +31 -0
- data/ext/bash/vagrant/node.sh +5 -0
- data/ext/bash/vagrant/pg.sh +12 -0
- data/ext/bash/vagrant/redis.sh +5 -0
- data/ext/bash/vagrant/rvm.sh +6 -0
- data/ext/bash/vagrant/system.sh +26 -0
- data/ext/bash/vagrant.sh +3 -0
- data/ext/bash/vps/system.sh +156 -0
- data/lib/propro/cli/templates/init.tt +21 -0
- data/lib/propro/cli.rb +125 -0
- data/lib/propro/command.rb +17 -0
- data/lib/propro/export.rb +119 -0
- data/lib/propro/option.rb +36 -0
- data/lib/propro/package.rb +68 -0
- data/lib/propro/script.rb +95 -0
- data/lib/propro/source.rb +86 -0
- data/lib/propro/version.rb +3 -0
- data/lib/propro.rb +57 -0
- data/propro.gemspec +27 -0
- data/test/export_spec.rb +88 -0
- data/test/minitest_helper.rb +6 -0
- data/test/option_spec.rb +34 -0
- metadata +167 -0
data/test/export_spec.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Propro::Export do
|
4
|
+
def parse(string)
|
5
|
+
Propro::Export.parse("#{string}\n")
|
6
|
+
end
|
7
|
+
|
8
|
+
def assert_parse(bash, ruby)
|
9
|
+
assert_equal parse(bash).to_ruby, ruby
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'parses unquoted values' do
|
13
|
+
assert_parse \
|
14
|
+
'export WAT_IS=neato',
|
15
|
+
'set :wat_is, "neato"'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'parses single quoted values' do
|
19
|
+
assert_parse \
|
20
|
+
"export WAT_IS='neato'",
|
21
|
+
'set :wat_is, "neato", lit: true'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'parses double quoted values' do
|
25
|
+
assert_parse \
|
26
|
+
'export WAT_IS="neato"',
|
27
|
+
'set :wat_is, "neato"'
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'parses booleans' do
|
31
|
+
assert_parse \
|
32
|
+
'export BOOL=yes',
|
33
|
+
'set :bool, true'
|
34
|
+
assert_parse \
|
35
|
+
'export BOOL=no',
|
36
|
+
'set :bool, false'
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'parses integers' do
|
40
|
+
assert_parse \
|
41
|
+
'export INT=1234',
|
42
|
+
'set :int, 1234'
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'parses floats' do
|
46
|
+
assert_parse \
|
47
|
+
'export FLOAT=123.4567',
|
48
|
+
'set :float, 123.4567'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'parses strings' do
|
52
|
+
assert_parse \
|
53
|
+
'export STR="super/cool.str"',
|
54
|
+
'set :str, "super/cool.str"'
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'parses arrays' do
|
58
|
+
assert_parse \
|
59
|
+
'export ARY="super cool"',
|
60
|
+
'set :ary, ["super", "cool"]'
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'passes comments though' do
|
64
|
+
assert_parse \
|
65
|
+
'export HI="yes" # comment, zro',
|
66
|
+
'set :hi, true # comment, zro'
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'removes tags from comments' do
|
70
|
+
assert_parse \
|
71
|
+
'export HI="no" # @specify comment, zro',
|
72
|
+
'set :hi, false # comment, zro'
|
73
|
+
|
74
|
+
assert_parse \
|
75
|
+
'export HI="lo" # @specify',
|
76
|
+
'set :hi, "lo"'
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'parses @specify' do
|
80
|
+
export = parse('export HI="yes" # @specify I am important')
|
81
|
+
export.is_specified?.must_equal true
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'parses @require' do
|
85
|
+
export = parse('export HI="yes" # @require I am important')
|
86
|
+
export.is_required?.must_equal true
|
87
|
+
end
|
88
|
+
end
|
data/test/option_spec.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Propro::Option do
|
4
|
+
def build(*args)
|
5
|
+
Propro::Option.new(*args)
|
6
|
+
end
|
7
|
+
|
8
|
+
def assert_option(*builder, bash_value)
|
9
|
+
assert_equal build(:my_key, *builder).to_bash, "MY_KEY=#{bash_value}"
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'handles array values' do
|
13
|
+
assert_option ['a', 'b', 'c'], '"a b c"'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'handles integer values' do
|
17
|
+
assert_option 1234, '"1234"'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'handles float values' do
|
21
|
+
assert_option 1.23, '"1.23"'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'handles boolean values' do
|
25
|
+
assert_option true, '"yes"'
|
26
|
+
assert_option false, '"no"'
|
27
|
+
assert_option 'yes', '"yes"'
|
28
|
+
assert_option 'no', '"no"'
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'handles literal values' do
|
32
|
+
assert_option 'hello', { lit: true }, "'hello'"
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: propro
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Carsten Nielsen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.18'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.18'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: net-scp
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
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'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Propro is a tool for provisioning remote servers.
|
84
|
+
email:
|
85
|
+
- heycarsten@gmail.com
|
86
|
+
executables:
|
87
|
+
- propro
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- Gemfile
|
93
|
+
- LICENSE
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- bin/propro
|
97
|
+
- examples/vagrant.propro
|
98
|
+
- examples/vps_webserver.propro
|
99
|
+
- ext/bash/app.sh
|
100
|
+
- ext/bash/app/nginx.sh
|
101
|
+
- ext/bash/app/node.sh
|
102
|
+
- ext/bash/app/pg.sh
|
103
|
+
- ext/bash/app/puma.sh
|
104
|
+
- ext/bash/app/puma/nginx.sh
|
105
|
+
- ext/bash/app/rvm.sh
|
106
|
+
- ext/bash/app/sidekiq.sh
|
107
|
+
- ext/bash/db/pg.sh
|
108
|
+
- ext/bash/db/redis.sh
|
109
|
+
- ext/bash/lib/extras.sh
|
110
|
+
- ext/bash/lib/nginx.sh
|
111
|
+
- ext/bash/lib/node.sh
|
112
|
+
- ext/bash/lib/pg.sh
|
113
|
+
- ext/bash/lib/propro.sh
|
114
|
+
- ext/bash/lib/redis.sh
|
115
|
+
- ext/bash/lib/rvm.sh
|
116
|
+
- ext/bash/lib/system.sh
|
117
|
+
- ext/bash/lib/ubuntu.sh
|
118
|
+
- ext/bash/vagrant.sh
|
119
|
+
- ext/bash/vagrant/nginx.sh
|
120
|
+
- ext/bash/vagrant/node.sh
|
121
|
+
- ext/bash/vagrant/pg.sh
|
122
|
+
- ext/bash/vagrant/redis.sh
|
123
|
+
- ext/bash/vagrant/rvm.sh
|
124
|
+
- ext/bash/vagrant/system.sh
|
125
|
+
- ext/bash/vps/system.sh
|
126
|
+
- lib/propro.rb
|
127
|
+
- lib/propro/cli.rb
|
128
|
+
- lib/propro/cli/templates/init.tt
|
129
|
+
- lib/propro/command.rb
|
130
|
+
- lib/propro/export.rb
|
131
|
+
- lib/propro/option.rb
|
132
|
+
- lib/propro/package.rb
|
133
|
+
- lib/propro/script.rb
|
134
|
+
- lib/propro/source.rb
|
135
|
+
- lib/propro/version.rb
|
136
|
+
- propro.gemspec
|
137
|
+
- test/export_spec.rb
|
138
|
+
- test/minitest_helper.rb
|
139
|
+
- test/option_spec.rb
|
140
|
+
homepage: http://github.com/heycarsten/propro
|
141
|
+
licenses:
|
142
|
+
- GNU v2
|
143
|
+
metadata: {}
|
144
|
+
post_install_message:
|
145
|
+
rdoc_options: []
|
146
|
+
require_paths:
|
147
|
+
- lib
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
requirements: []
|
159
|
+
rubyforge_project:
|
160
|
+
rubygems_version: 2.2.0
|
161
|
+
signing_key:
|
162
|
+
specification_version: 4
|
163
|
+
summary: A standalone server provisioning tool
|
164
|
+
test_files:
|
165
|
+
- test/export_spec.rb
|
166
|
+
- test/minitest_helper.rb
|
167
|
+
- test/option_spec.rb
|