vx-builder 0.5.54 → 0.5.55
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/lib/vx/builder/build_configuration.rb +2 -0
- data/lib/vx/builder/script_builder_v2/base.rb +67 -0
- data/lib/vx/builder/script_builder_v2/cache.rb +62 -0
- data/lib/vx/builder/script_builder_v2/clojure.rb +35 -0
- data/lib/vx/builder/script_builder_v2/clone.rb +43 -0
- data/lib/vx/builder/script_builder_v2/defaults.rb +44 -0
- data/lib/vx/builder/script_builder_v2/deploy.rb +40 -0
- data/lib/vx/builder/script_builder_v2/env.rb +65 -0
- data/lib/vx/builder/script_builder_v2/go.rb +64 -0
- data/lib/vx/builder/script_builder_v2/java.rb +36 -0
- data/lib/vx/builder/script_builder_v2/nodejs.rb +58 -0
- data/lib/vx/builder/script_builder_v2/python.rb +69 -0
- data/lib/vx/builder/script_builder_v2/ruby.rb +87 -0
- data/lib/vx/builder/script_builder_v2/rust.rb +48 -0
- data/lib/vx/builder/script_builder_v2/scala.rb +52 -0
- data/lib/vx/builder/script_builder_v2/services.rb +25 -0
- data/lib/vx/builder/script_builder_v2.rb +158 -0
- data/lib/vx/builder/templates/script_builder_v2/to_script.erb +29 -0
- data/lib/vx/builder/version.rb +1 -1
- data/lib/vx/builder.rb +5 -0
- data/spec/fixtures/script_builder_v2/simple.sh +15 -0
- data/spec/fixtures/script_builder_v2/simple.yml +89 -0
- data/spec/integration/script_builder_v2/clojure_spec.rb +41 -0
- data/spec/integration/script_builder_v2/go_spec.rb +54 -0
- data/spec/integration/script_builder_v2/nodejs_spec.rb +63 -0
- data/spec/integration/script_builder_v2/python_spec.rb +43 -0
- data/spec/integration/script_builder_v2/ruby_spec.rb +141 -0
- data/spec/integration/script_builder_v2/rust_spec.rb +41 -0
- data/spec/lib/builder/build_configuration_spec.rb +1 -0
- data/spec/lib/builder/script_builder_v2_spec.rb +52 -0
- data/spec/lib/builder/task_spec.rb +1 -1
- data/spec/support/create.rb +1 -1
- metadata +37 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dc5e509544ffeff672245424d59e62d7d6cebe0
|
4
|
+
data.tar.gz: a7b222086011c1c59c1f31be46355dd4b7888ebc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c90f593060af8044c5883a15cc2c72bef734c4046bf33a233af95be53c4ac684f05027a5b38b496ae64a1db6234dfa874881217eebd4df124cfdd7f6d4992f09
|
7
|
+
data.tar.gz: 38f7ecd0466b9c319511c1bb94c23f4240b2edf3705f132711862a6b60b7b6ee9a144f290e155aed1e8325a1ba4015865859c9e5e5716debd4f01f7e8f895149
|
data/.travis.yml
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
Base = Struct.new(:app) do
|
6
|
+
|
7
|
+
def do_cache_key(env)
|
8
|
+
yield env.cache_key
|
9
|
+
end
|
10
|
+
|
11
|
+
def do_cached_directories(env)
|
12
|
+
if env.source.cached_directories != false
|
13
|
+
yield env.source.cached_directories
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def do_script(env)
|
18
|
+
if env.source.script.empty? && !env.source.deploy_modules?
|
19
|
+
yield
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def do_install(env)
|
24
|
+
if env.source.install.empty?
|
25
|
+
yield
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def do_before_script(env)
|
30
|
+
if env.source.before_script.empty? && !deploy?(env)
|
31
|
+
yield
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def do_database(env)
|
36
|
+
if env.source.database.empty?
|
37
|
+
yield
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def do_deploy_script(env)
|
42
|
+
if deploy?(env)
|
43
|
+
yield
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def do_before_deploy(env)
|
48
|
+
if deploy?(env)
|
49
|
+
yield
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def do_after_deploy(env)
|
54
|
+
if deploy?(env)
|
55
|
+
yield
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def deploy?(env)
|
60
|
+
env.source.deploy_modules?
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Cache < Base
|
6
|
+
|
7
|
+
include Helper::Config
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
rs = app.call env
|
11
|
+
|
12
|
+
if env.task.cache_url_prefix && enabled?(env)
|
13
|
+
env.stage("init").add_task "cache_fetch", "url" => cache_fetch_urls(env)
|
14
|
+
env.stage("init").add_task "cache_add", "dir" => cache_directories(env)
|
15
|
+
env.stage("teardown").add_task "cache_push", "url" => cache_push_url(env)
|
16
|
+
end
|
17
|
+
|
18
|
+
rs
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def enabled?(env)
|
24
|
+
env.source.cache.enabled? && cache_directories(env).any?
|
25
|
+
end
|
26
|
+
|
27
|
+
def cache_directories(env)
|
28
|
+
env.source.cache.directories
|
29
|
+
end
|
30
|
+
|
31
|
+
def cache_push_url(env)
|
32
|
+
url_for(env, env.task.branch)
|
33
|
+
end
|
34
|
+
|
35
|
+
def cache_fetch_urls(env)
|
36
|
+
urls = []
|
37
|
+
branch = env.task.branch
|
38
|
+
if branch != 'master'
|
39
|
+
urls << url_for(env, branch)
|
40
|
+
end
|
41
|
+
urls << url_for(env, 'master')
|
42
|
+
|
43
|
+
urls
|
44
|
+
end
|
45
|
+
|
46
|
+
def url_for(env, branch)
|
47
|
+
name = branch
|
48
|
+
|
49
|
+
key =
|
50
|
+
if env.cache_key.empty?
|
51
|
+
"cache"
|
52
|
+
else
|
53
|
+
env.cache_key.join("-").downcase.gsub(/[^a-z0-9_\-.]/, '-')
|
54
|
+
end
|
55
|
+
|
56
|
+
"#{env.task.cache_url_prefix}/#{name}/#{key}.tgz"
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Clojure < Base
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
if enabled?(env)
|
9
|
+
env.stage("install").tap do |i|
|
10
|
+
do_install(env) do
|
11
|
+
i.add_task "shell", "lein version"
|
12
|
+
i.add_task "shell", "lein deps"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
env.stage("script").tap do |i|
|
17
|
+
do_script(env) do
|
18
|
+
i.add_task "shell", "lein test"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
app.call(env)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def enabled?(env)
|
29
|
+
env.source.language == 'clojure'
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'vx/common'
|
2
|
+
|
3
|
+
module Vx
|
4
|
+
module Builder
|
5
|
+
class ScriptBuilderV2
|
6
|
+
|
7
|
+
Clone = Struct.new(:app) do
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
|
11
|
+
env.stage("clone").tap do |e|
|
12
|
+
e.add_var "ssh_key", env.task.deploy_key
|
13
|
+
|
14
|
+
e.add_task "ssh_agent", "key" => "$ssh_key"
|
15
|
+
clone = {}
|
16
|
+
clone["repo"] = env.task.src
|
17
|
+
clone["dest"] = "~/#{env.task.name}"
|
18
|
+
clone["branch"] = branch_name(env)
|
19
|
+
clone["sha"] = env.task.sha
|
20
|
+
if pr = env.task.pull_request_id
|
21
|
+
clone["pr"] = pr
|
22
|
+
end
|
23
|
+
e.add_task "git_clone", clone
|
24
|
+
end
|
25
|
+
|
26
|
+
env.stage("init").chdir!("~/#{env.task.name}")
|
27
|
+
|
28
|
+
app.call(env)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def branch_name(env)
|
34
|
+
b = env.task && env.task.branch
|
35
|
+
if b && b != 'HEAD'
|
36
|
+
b
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Defaults < Base
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
env.source.before_install.each do |c|
|
9
|
+
env.stage("before_install").tap do |i|
|
10
|
+
i.add_task "shell", c
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
env.source.install.each do |c|
|
15
|
+
env.stage("install").tap do |i|
|
16
|
+
i.add_task "shell", c
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
env.source.before_script.each do |c|
|
21
|
+
env.stage("before_script").tap do |i|
|
22
|
+
i.add_task "shell", c
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
env.source.script.each do |c|
|
27
|
+
env.stage("script").tap do |i|
|
28
|
+
i.add_task "shell", c
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
env.source.after_success.each do |c|
|
33
|
+
env.stage("after_success").tap do |i|
|
34
|
+
i.add_task "shell", c
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
app.call env
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Deploy < Base
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
do_before_deploy(env) do
|
9
|
+
env.stage("before_script").tap do |i|
|
10
|
+
env.source.before_deploy.each do |c|
|
11
|
+
i.add_task "shell", c
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
do_deploy_script(env) do
|
17
|
+
env.stage("script").tap do |i|
|
18
|
+
env.source.deploy_modules.each do |m|
|
19
|
+
m.to_commands.each do |c|
|
20
|
+
i.add_task "shell", c
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
do_after_deploy(env) do
|
27
|
+
env.stage("after_success").tap do |i|
|
28
|
+
env.source.after_deploy.each do |c|
|
29
|
+
i.add_task "shell", c
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
app.call(env)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Env < Base
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
env.stage("init").tap do |e|
|
9
|
+
e.add_env "CI", "1"
|
10
|
+
e.add_env "CI_JOB_ID", env.task.job_id
|
11
|
+
e.add_env "CI_JOB_NUMBER", env.task.job_number
|
12
|
+
e.add_env "CI_BUILD_ID", env.task.build_id
|
13
|
+
e.add_env "CI_BUILD_NUMBER", env.task.build_number
|
14
|
+
e.add_env "CI_PROJECT_NAME", env.task.name
|
15
|
+
e.add_env "CI_BUILD_SHA", env.task.sha
|
16
|
+
|
17
|
+
if env.task.project_token
|
18
|
+
e.add_env "CI_PROJECT_TOKEN", env.task.project_token, hidden: true
|
19
|
+
end
|
20
|
+
|
21
|
+
if env.task.pull_request_id
|
22
|
+
e.add_env "CI_PULL_REQUEST_ID", env.task.pull_request_id
|
23
|
+
end
|
24
|
+
|
25
|
+
if env.task.branch
|
26
|
+
e.add_env "CI_BRANCH", env.task.branch
|
27
|
+
end
|
28
|
+
|
29
|
+
e.add_env "DISPLAY", ":99"
|
30
|
+
|
31
|
+
if env.source.parallel?
|
32
|
+
e.add_env "CI_PARALLEL_JOBS", env.source.parallel
|
33
|
+
e.add_env "CI_PARALLEL_JOB_NUMBER", env.source.parallel_job_number
|
34
|
+
end
|
35
|
+
|
36
|
+
env.source.env.global.each do |i|
|
37
|
+
i = i.split("=")
|
38
|
+
key = i.shift
|
39
|
+
value = i.join("=").to_s
|
40
|
+
e.add_env key, normalize_env_value(value)
|
41
|
+
end
|
42
|
+
|
43
|
+
env.source.env.matrix.each do |i|
|
44
|
+
i = i.split("=")
|
45
|
+
key = i.shift
|
46
|
+
value = i.join("=").to_s
|
47
|
+
e.add_env key, normalize_env_value(value)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
app.call(env)
|
52
|
+
end
|
53
|
+
|
54
|
+
def normalize_env_value(value)
|
55
|
+
if value[0] == '"' && value[-1] == '"'
|
56
|
+
value[1..-2]
|
57
|
+
else
|
58
|
+
value
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Go < Base
|
6
|
+
|
7
|
+
DEFAULT_GO = '1.2'
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
if enabled?(env)
|
11
|
+
|
12
|
+
do_install(env) do
|
13
|
+
env.stage("before_install").tap do |i|
|
14
|
+
i.add_task "vxvm", "go #{go_version(env)}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
do_install(env) do
|
19
|
+
env.stage("install").tap do |i|
|
20
|
+
i.add_env 'GOPATH', '${HOME}/gopath:${GOPATH}'
|
21
|
+
i.add_env 'PATH', '${HOME}/gopath/bin:${PATH}'
|
22
|
+
i.add_env 'VX_ORIG_CODE_ROOT', '${PWD}'
|
23
|
+
i.add_env "VX_NEW_CODE_ROOT", "${HOME}/gopath/src/#{project_path env}"
|
24
|
+
|
25
|
+
i.add_task 'shell', 'mkdir -p $VX_NEW_CODE_ROOT'
|
26
|
+
i.add_task 'shell', 'rmdir $VX_NEW_CODE_ROOT'
|
27
|
+
i.add_task 'shell', 'cp -r $VX_ORIG_CODE_ROOT $VX_NEW_CODE_ROOT'
|
28
|
+
i.add_task 'chdir', '${VX_NEW_CODE_ROOT}'
|
29
|
+
|
30
|
+
i.add_task 'shell', 'go version'
|
31
|
+
i.add_task 'shell', 'go env'
|
32
|
+
i.add_task 'shell', 'go get -v ./...'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
do_script(env) do
|
37
|
+
env.stage("script").tap do |i|
|
38
|
+
i.add_task 'shell', 'go test -v ./...'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
app.call(env)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def project_path(env)
|
50
|
+
"#{env.task.project_host}/#{env.task.name}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def enabled?(env)
|
54
|
+
env.source.language == 'go'
|
55
|
+
end
|
56
|
+
|
57
|
+
def go_version(env)
|
58
|
+
env.source.go.first || DEFAULT_GO
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Java < Base
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
if java(env)
|
9
|
+
=begin
|
10
|
+
do_cache_key(env) do |i|
|
11
|
+
i << "jdk-#{java env}"
|
12
|
+
end
|
13
|
+
|
14
|
+
env.stage("before_install").tap do |i|
|
15
|
+
end
|
16
|
+
|
17
|
+
do_before_install(env) do |i|
|
18
|
+
i << "source $(which jdk_switcher.sh)"
|
19
|
+
i << trace_sh_command("jdk_switcher use #{java env}")
|
20
|
+
end
|
21
|
+
=end
|
22
|
+
end
|
23
|
+
|
24
|
+
app.call(env)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def java(env)
|
30
|
+
env.source.jdk.first
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Nodejs < Base
|
6
|
+
|
7
|
+
DEFAULT_NODE = '0.10'
|
8
|
+
NPM_PACKAGES = 'node_modules'
|
9
|
+
BOWER_COMPONENTS = 'bower_components'
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
if enabled?(env)
|
13
|
+
|
14
|
+
do_cache_key(env) do |i|
|
15
|
+
i << "nodejs-#{node_version env}"
|
16
|
+
end
|
17
|
+
|
18
|
+
do_cached_directories(env) do |i|
|
19
|
+
i << NPM_PACKAGES
|
20
|
+
i << BOWER_COMPONENTS
|
21
|
+
end
|
22
|
+
|
23
|
+
do_install(env) do
|
24
|
+
env.stage("install").tap do |i|
|
25
|
+
i.add_env 'PATH', "${PATH}:${PWD}/#{NPM_PACKAGES}/bin"
|
26
|
+
|
27
|
+
i.add_task "vxvm", "nodejs #{node_version(env)}"
|
28
|
+
i.add_task "shell", 'npm config set spin false'
|
29
|
+
i.add_task 'shell', 'node --version'
|
30
|
+
i.add_task 'shell', 'npm --version'
|
31
|
+
i.add_task 'shell', 'npm install'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
do_script(env) do
|
36
|
+
env.stage("script").tap do |i|
|
37
|
+
i.add_task 'shell', 'npm test'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
app.call(env)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def enabled?(env)
|
48
|
+
env.source.node_js.first || env.source.language == 'node_js'
|
49
|
+
end
|
50
|
+
|
51
|
+
def node_version(env)
|
52
|
+
env.source.node_js.first || DEFAULT_NODE
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilderV2
|
4
|
+
|
5
|
+
class Python < Base
|
6
|
+
|
7
|
+
DEFAULT_PYTHON = '2.7'
|
8
|
+
PIP_DOWNLOADS = "~/.pip-downloads"
|
9
|
+
PIP_OPTS = " --download-cache=#{PIP_DOWNLOADS}"
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
if enabled?(env)
|
13
|
+
|
14
|
+
py_version = python_version(env)
|
15
|
+
|
16
|
+
do_cache_key(env) do |i|
|
17
|
+
i << "python-#{py_version}"
|
18
|
+
end
|
19
|
+
|
20
|
+
do_cached_directories(env) do |i|
|
21
|
+
i << PIP_DOWNLOADS
|
22
|
+
end
|
23
|
+
|
24
|
+
env.stage("init").tap do |i|
|
25
|
+
i.add_env 'TRAVIS_PYTHON_VERSION', "py_version"
|
26
|
+
end
|
27
|
+
|
28
|
+
do_install(env) do
|
29
|
+
env.stage("install").tap do |i|
|
30
|
+
i.add_task "python", "action" => "install", "python" => DEFAULT_PYTHON
|
31
|
+
i.add_task "python", "virtualenv"
|
32
|
+
i.add_task "python", "announce"
|
33
|
+
|
34
|
+
i.add_task "python", "action" => "pip:install", "pip_args" => PIP_OPTS
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
do_before_script(env) do
|
39
|
+
env.stage("before_script").tap do |i|
|
40
|
+
i.add_task "python", "django:settings"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
do_script(env) do
|
45
|
+
env.stage("script").tap do |i|
|
46
|
+
i.add_task "python", "script"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
app.call(env)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def enabled?(env)
|
58
|
+
env.source.python.first || env.source.language == 'python'
|
59
|
+
end
|
60
|
+
|
61
|
+
def python_version(env)
|
62
|
+
v = env.source.python.first
|
63
|
+
v || DEFAULT_PYTHON
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|