gordon 0.0.8 → 0.0.10
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/.rspec +2 -0
- data/README.md +3 -3
- data/gordon.gemspec +1 -0
- data/lib/gordon/application/templates/ruby_standalone_app.rb +42 -0
- data/lib/gordon/application/types.rb +6 -0
- data/lib/gordon/cookery/common.rb +1 -1
- data/lib/gordon/cookery/standalone.rb +15 -0
- data/lib/gordon/factory.rb +1 -1
- data/lib/gordon/version.rb +1 -1
- data/lib/gordon.rb +1 -0
- data/spec/gordon/application/templates/ruby_standalone_app_spec.rb +16 -0
- data/spec/gordon/application/templates/ruby_web_app_spec.rb +16 -0
- data/spec/gordon/cli_spec.rb +11 -0
- data/spec/gordon/cooker_spec.rb +14 -0
- data/spec/gordon/cookery/application_user_spec.rb +11 -0
- data/spec/gordon/cookery/common_spec.rb +16 -0
- data/spec/gordon/cookery/dependency_resolver_spec.rb +8 -0
- data/spec/gordon/cookery/http_server_spec.rb +8 -0
- data/spec/gordon/cookery/init_spec.rb +11 -0
- data/spec/gordon/cookery/ruby/common_spec.rb +8 -0
- data/spec/gordon/cookery/standalone_spec.rb +8 -0
- data/spec/gordon/env_vars_spec.rb +62 -0
- data/spec/gordon/factory_spec.rb +8 -0
- data/spec/gordon/options_spec.rb +8 -0
- data/spec/gordon/process_spec.rb +8 -0
- data/spec/gordon/recipe_spec.rb +22 -0
- data/spec/gordon/skeleton/types_spec.rb +21 -0
- data/spec/spec_helper.rb +1 -0
- metadata +56 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9f8efe52ee3bd5876f355540c996a8651fe78d5
|
4
|
+
data.tar.gz: ac8f7fca341bbba05bd1ae012c36d2cfd1904309
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b89bd962c396966d1708cd09f8e054bc8658e2806108166d28c759bf71d608c8b5949233e2d7158aa97f45556f0c8c7a8cdf0d4a186e9fe7ef1985587e5e941c
|
7
|
+
data.tar.gz: 2f134d3478e0658a3eb9a1175eaa2141de00f76d6afa5738ab6188afc10ce5d4262cf9858e0a01414616eb09c7c59ab919317c5e24d3e42648a1357d483b7a42
|
data/.rspec
ADDED
data/README.md
CHANGED
@@ -60,18 +60,18 @@ Here a simple example to build a Ruby Web App that runs Nginx and uses Systemd a
|
|
60
60
|
It will generate a RPM package in pkg/ with the following structure:
|
61
61
|
|
62
62
|
* /usr/share/nginx/html/*all-app-stuff*
|
63
|
-
* /usr/lib/systemd/system/*
|
63
|
+
* /usr/lib/systemd/system/*all-systemd-stuff*
|
64
64
|
|
65
65
|
Due for conventions, remember:
|
66
66
|
|
67
67
|
* /usr/share/nginx/html is $HOME of user *app-name*
|
68
|
-
* Systemd will run app using user *app-name*
|
68
|
+
* Systemd will run app using user *app-name.target*
|
69
69
|
|
70
70
|
Sounds good?
|
71
71
|
|
72
72
|
## Why you not use Omnibus or Heroku buildpacks?
|
73
73
|
|
74
|
-
Because I want to create a tool
|
74
|
+
Because I want to create a tool able to create Linux packages.
|
75
75
|
|
76
76
|
## Why you use fpm-cookery templates instead of fpm?
|
77
77
|
|
data/gordon.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "debugger"
|
24
|
+
spec.add_development_dependency "rspec"
|
24
25
|
|
25
26
|
spec.add_dependency "bundler"
|
26
27
|
spec.add_dependency "fpm-cookery"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
path = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift path
|
3
|
+
|
4
|
+
require 'gordon'
|
5
|
+
|
6
|
+
$env_vars = Gordon::EnvVars.load
|
7
|
+
|
8
|
+
class RubyStandaloneApp < FPM::Cookery::Recipe
|
9
|
+
extend Gordon::Cookery::DependencyResolver
|
10
|
+
|
11
|
+
include Gordon::Cookery::Common,
|
12
|
+
Gordon::Cookery::Init,
|
13
|
+
Gordon::Cookery::ApplicationUser,
|
14
|
+
Gordon::Cookery::Standalone,
|
15
|
+
Gordon::Cookery::Ruby::Common
|
16
|
+
|
17
|
+
name $env_vars.app_name
|
18
|
+
description $env_vars.app_desc
|
19
|
+
version $env_vars.app_version
|
20
|
+
homepage $env_vars.app_repo
|
21
|
+
|
22
|
+
source $env_vars.app_source_dir, with: :local_path
|
23
|
+
|
24
|
+
depends *resolve_dependencies($env_vars)
|
25
|
+
|
26
|
+
def build
|
27
|
+
home_path = get_skeleton_path_from_type(:misc)
|
28
|
+
|
29
|
+
create_user_and_group($env_vars, home_path)
|
30
|
+
setup_user_permissions($env_vars, home_path)
|
31
|
+
|
32
|
+
create_init($env_vars, :misc)
|
33
|
+
|
34
|
+
ruby_vendor_gems
|
35
|
+
end
|
36
|
+
|
37
|
+
def install
|
38
|
+
install_init($env_vars)
|
39
|
+
install_standalone_files($env_vars, RUBY_BLACKLIST_FILES)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Gordon
|
2
|
+
module Cookery
|
3
|
+
module Standalone
|
4
|
+
def install_standalone_files(env_vars, blacklist)
|
5
|
+
skeleton_path = get_skeleton_path_from_type(:misc)
|
6
|
+
|
7
|
+
application_files = all_files_except_blacklisted(blacklist)
|
8
|
+
|
9
|
+
root(skeleton_path).install application_files
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
data/lib/gordon/factory.rb
CHANGED
data/lib/gordon/version.rb
CHANGED
data/lib/gordon.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gordon::Cookery::Common do
|
4
|
+
describe 'getting skeleton path from type' do
|
5
|
+
pending
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'getting all files with blacklist' do
|
9
|
+
pending
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'creating skeleton type' do
|
13
|
+
pending
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gordon::EnvVars do
|
4
|
+
let(:attributes) do
|
5
|
+
{
|
6
|
+
app_type: :ruby_web_app,
|
7
|
+
app_name: :xirubiru,
|
8
|
+
app_desc: "a nice description",
|
9
|
+
app_repo: "http://some.github.repo",
|
10
|
+
app_version: "2.0.0",
|
11
|
+
app_source_dir: ".",
|
12
|
+
runtime_version: "2.2.0",
|
13
|
+
http_server_type: "nginx",
|
14
|
+
init_type: "systemd",
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:options) { double(Gordon::Options, attributes) }
|
19
|
+
|
20
|
+
describe 'getting from cook options' do
|
21
|
+
it 'returns a array of environment variables setted' do
|
22
|
+
expected = [
|
23
|
+
"GORDON_APP_TYPE='#{options.app_type}'",
|
24
|
+
"GORDON_APP_NAME='#{options.app_name}'",
|
25
|
+
"GORDON_APP_DESC='#{options.app_desc}'",
|
26
|
+
"GORDON_APP_REPO='#{options.app_repo}'",
|
27
|
+
"GORDON_APP_VERSION='#{options.app_version}'",
|
28
|
+
"GORDON_APP_SOURCE_DIR='#{File.expand_path(options.app_source_dir)}'",
|
29
|
+
"GORDON_RUNTIME_VERSION='#{options.runtime_version}'",
|
30
|
+
"GORDON_HTTP_SERVER_TYPE='#{options.http_server_type}'",
|
31
|
+
"GORDON_INIT_TYPE='#{options.init_type}'",
|
32
|
+
]
|
33
|
+
|
34
|
+
expect(described_class.from_cook(options)).to eq(expected)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'loading from environment' do
|
39
|
+
it 'returns a instance with all specified values' do
|
40
|
+
env = {
|
41
|
+
'GORDON_APP_TYPE' => options.app_type,
|
42
|
+
'GORDON_APP_NAME' => options.app_name,
|
43
|
+
'GORDON_APP_DESC' => options.app_desc,
|
44
|
+
'GORDON_APP_REPO' => options.app_repo,
|
45
|
+
'GORDON_APP_VERSION' => options.app_version,
|
46
|
+
'GORDON_APP_SOURCE_DIR' => options.app_source_dir,
|
47
|
+
'GORDON_RUNTIME_VERSION' => options.runtime_version,
|
48
|
+
'GORDON_HTTP_SERVER_TYPE' => options.http_server_type,
|
49
|
+
'GORDON_INIT_TYPE' => options.init_type,
|
50
|
+
}
|
51
|
+
|
52
|
+
env.each_pair { |k, v| expect(ENV).to receive(:[]).with(k).and_return(v.to_s) }
|
53
|
+
|
54
|
+
described_class.load.tap do |env_vars|
|
55
|
+
env.each_pair do |k, v|
|
56
|
+
expect(env_vars.send(k.gsub(/GORDON_/, '').downcase)).to eq(v.to_s)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gordon::Recipe do
|
4
|
+
describe 'creating a new instance' do
|
5
|
+
pending
|
6
|
+
end
|
7
|
+
|
8
|
+
# TODO: check if is really needed
|
9
|
+
describe 'getting a platform' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
13
|
+
# TODO: check if is really needed
|
14
|
+
describe 'checking if requires platform' do
|
15
|
+
pending
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'getting application template path' do
|
19
|
+
pending
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gordon::Skeleton::Types::Base do
|
4
|
+
pending
|
5
|
+
end
|
6
|
+
|
7
|
+
describe Gordon::Skeleton::Types::Nginx do
|
8
|
+
pending
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Gordon::Skeleton::Types::Apache do
|
12
|
+
pending
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Gordon::Skeleton::Types::Systemd do
|
16
|
+
pending
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Gordon::Skeleton::Types::Misc do
|
20
|
+
pending
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'gordon'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gordon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcelo Pinheiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
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: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,6 +118,7 @@ extensions: []
|
|
104
118
|
extra_rdoc_files: []
|
105
119
|
files:
|
106
120
|
- .gitignore
|
121
|
+
- .rspec
|
107
122
|
- Gemfile
|
108
123
|
- LICENSE.txt
|
109
124
|
- README.md
|
@@ -112,6 +127,7 @@ files:
|
|
112
127
|
- gordon.gemspec
|
113
128
|
- lib/gordon.rb
|
114
129
|
- lib/gordon/application/factory.rb
|
130
|
+
- lib/gordon/application/templates/ruby_standalone_app.rb
|
115
131
|
- lib/gordon/application/templates/ruby_web_app.rb
|
116
132
|
- lib/gordon/application/types.rb
|
117
133
|
- lib/gordon/cli.rb
|
@@ -122,6 +138,7 @@ files:
|
|
122
138
|
- lib/gordon/cookery/http_server.rb
|
123
139
|
- lib/gordon/cookery/init.rb
|
124
140
|
- lib/gordon/cookery/ruby/common.rb
|
141
|
+
- lib/gordon/cookery/standalone.rb
|
125
142
|
- lib/gordon/env_vars.rb
|
126
143
|
- lib/gordon/factory.rb
|
127
144
|
- lib/gordon/options.rb
|
@@ -130,6 +147,24 @@ files:
|
|
130
147
|
- lib/gordon/skeleton/factory.rb
|
131
148
|
- lib/gordon/skeleton/types.rb
|
132
149
|
- lib/gordon/version.rb
|
150
|
+
- spec/gordon/application/templates/ruby_standalone_app_spec.rb
|
151
|
+
- spec/gordon/application/templates/ruby_web_app_spec.rb
|
152
|
+
- spec/gordon/cli_spec.rb
|
153
|
+
- spec/gordon/cooker_spec.rb
|
154
|
+
- spec/gordon/cookery/application_user_spec.rb
|
155
|
+
- spec/gordon/cookery/common_spec.rb
|
156
|
+
- spec/gordon/cookery/dependency_resolver_spec.rb
|
157
|
+
- spec/gordon/cookery/http_server_spec.rb
|
158
|
+
- spec/gordon/cookery/init_spec.rb
|
159
|
+
- spec/gordon/cookery/ruby/common_spec.rb
|
160
|
+
- spec/gordon/cookery/standalone_spec.rb
|
161
|
+
- spec/gordon/env_vars_spec.rb
|
162
|
+
- spec/gordon/factory_spec.rb
|
163
|
+
- spec/gordon/options_spec.rb
|
164
|
+
- spec/gordon/process_spec.rb
|
165
|
+
- spec/gordon/recipe_spec.rb
|
166
|
+
- spec/gordon/skeleton/types_spec.rb
|
167
|
+
- spec/spec_helper.rb
|
133
168
|
homepage: https://github.com/salizzar/gordon
|
134
169
|
licenses:
|
135
170
|
- MIT
|
@@ -154,4 +189,22 @@ rubygems_version: 2.0.14
|
|
154
189
|
signing_key:
|
155
190
|
specification_version: 4
|
156
191
|
summary: A tool to create application OS packages
|
157
|
-
test_files:
|
192
|
+
test_files:
|
193
|
+
- spec/gordon/application/templates/ruby_standalone_app_spec.rb
|
194
|
+
- spec/gordon/application/templates/ruby_web_app_spec.rb
|
195
|
+
- spec/gordon/cli_spec.rb
|
196
|
+
- spec/gordon/cooker_spec.rb
|
197
|
+
- spec/gordon/cookery/application_user_spec.rb
|
198
|
+
- spec/gordon/cookery/common_spec.rb
|
199
|
+
- spec/gordon/cookery/dependency_resolver_spec.rb
|
200
|
+
- spec/gordon/cookery/http_server_spec.rb
|
201
|
+
- spec/gordon/cookery/init_spec.rb
|
202
|
+
- spec/gordon/cookery/ruby/common_spec.rb
|
203
|
+
- spec/gordon/cookery/standalone_spec.rb
|
204
|
+
- spec/gordon/env_vars_spec.rb
|
205
|
+
- spec/gordon/factory_spec.rb
|
206
|
+
- spec/gordon/options_spec.rb
|
207
|
+
- spec/gordon/process_spec.rb
|
208
|
+
- spec/gordon/recipe_spec.rb
|
209
|
+
- spec/gordon/skeleton/types_spec.rb
|
210
|
+
- spec/spec_helper.rb
|