dply 0.0.5 → 0.0.7

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.
@@ -0,0 +1,68 @@
1
+ require 'dply/logger'
2
+ require 'dply/lock'
3
+ require 'dply/build'
4
+ require 'dply/build_config'
5
+
6
+ module Dply
7
+ module Cli
8
+ class Build
9
+
10
+ include Logger
11
+
12
+ def initialize(argv)
13
+ @argv = argv
14
+ end
15
+
16
+ def run
17
+ lock.acquire
18
+ opts.parse!(@argv)
19
+ build.run
20
+ end
21
+
22
+ def build
23
+ @build ||= ::Dply::Build.new(config)
24
+ end
25
+
26
+ def config
27
+ @config ||= ::Dply::BuildConfig.new.to_struct
28
+ end
29
+
30
+ def dir
31
+ @dir ||= Dir.pwd
32
+ end
33
+
34
+ def lock
35
+ @lock ||= ::Dply::Lock.new
36
+ end
37
+
38
+ def opts
39
+ OptionParser.new do |opts|
40
+
41
+ opts.banner = "Usage: drake build [options] [target]"
42
+
43
+ opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
44
+ config.branch = b
45
+ end
46
+
47
+ opts.on("-r", "--revision [REVISION]", "Specify revision") do |r|
48
+ config.revision = r
49
+ end
50
+
51
+ opts.on("--no-pull", "Enable/disable git pull") do |e|
52
+ config.no_pull = true
53
+ end
54
+
55
+ opts.on("--skip-git", "Disable git") do |e|
56
+ config.git = false
57
+ end
58
+
59
+ opts.on("-h", "--help", "Help") do
60
+ puts opts
61
+ exit
62
+ end
63
+ end
64
+ end
65
+
66
+ end
67
+ end
68
+ end
@@ -1,6 +1,7 @@
1
1
  require 'dply/deploy'
2
2
  require 'dply/logger'
3
3
  require 'dply/lock'
4
+ require 'dply/config'
4
5
 
5
6
  module Dply
6
7
  module Cli
@@ -8,29 +9,28 @@ module Dply
8
9
 
9
10
  include Logger
10
11
 
11
- attr_reader :deploy_dir, :argv, :config
12
+ attr_reader :argv
12
13
 
13
- def initialize(deploy_dir, config, argv)
14
- @deploy_dir = deploy_dir
15
- @config = config
14
+ def initialize(argv)
16
15
  @argv = argv
17
16
  end
18
17
 
19
18
  def run
20
19
  lock.acquire
21
20
  opts.parse!(argv)
22
- target = argv.shift
23
- config.target = target if target
24
- deploy.options = options
25
- deploy.run
21
+ strategy.deploy
26
22
  end
27
23
 
28
- def deploy
29
- @deploy ||= ::Dply::Deploy.new(deploy_dir, config)
24
+ def strategy
25
+ @strategy ||= Strategy.load(config, options)
30
26
  end
31
27
 
32
28
  def lock
33
- @lock ||= ::Dply::Lock.new(deploy_dir)
29
+ @lock ||= Lock.new
30
+ end
31
+
32
+ def config
33
+ @config ||= Config.new.to_struct
34
34
  end
35
35
 
36
36
  def opts
@@ -39,7 +39,11 @@ module Dply
39
39
  opts.banner = "Usage: dply deploy [options] [target]"
40
40
 
41
41
  opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
42
- options[:branch] = b
42
+ config.branch = b
43
+ end
44
+
45
+ opts.on("-r", "--revision [REVISION]", "Specify build revision (only used in archive strategy)") do |r|
46
+ config.revision = r
43
47
  end
44
48
 
45
49
  opts.on("--no-pull", "Enable/disable git pull") do |e|
@@ -1,4 +1,3 @@
1
- require 'dply/reload'
2
1
  require 'dply/logger'
3
2
  require 'dply/lock'
4
3
 
@@ -8,45 +7,29 @@ module Dply
8
7
 
9
8
  include Logger
10
9
 
11
- attr_reader :deploy_dir, :argv, :config
12
-
13
- def initialize(deploy_dir, config, argv)
14
- @deploy_dir = deploy_dir
10
+ def initialize(argv)
15
11
  @argv = argv
16
- @config = config
17
12
  end
18
13
 
19
14
  def run
20
15
  lock.acquire
21
- opts.parse!(argv)
22
- target = argv.shift
23
- config.target = target if target
24
- reload.options = options
25
- reload.run
16
+ strategy.deploy
26
17
  end
27
18
 
28
- def reload
29
- @reload ||= ::Dply::Reload.new(deploy_dir, config)
19
+ def strategy
20
+ @strategy ||= ::Dply::Strategy.load(config, options)
30
21
  end
31
22
 
32
- def lock
33
- @lock ||= ::Dply::Lock.new(deploy_dir)
23
+ def config
24
+ @config ||= ::Dply::Config.new(dir).to_struct
34
25
  end
35
26
 
36
- def opts
37
- OptionParser.new do |opts|
38
-
39
- opts.banner = "Usage: dply reload [options] [target]"
40
-
41
- opts.on("--skip-bundler", "Skip bundle install") do |e|
42
- options[:skip_bundler] = true
43
- end
27
+ def dir
28
+ @dir ||= Dir.pwd
29
+ end
44
30
 
45
- opts.on("-h", "--help", "Help") do
46
- puts opts
47
- exit
48
- end
49
- end
31
+ def lock
32
+ @lock ||= ::Dply::Lock.new
50
33
  end
51
34
 
52
35
  def options
data/lib/dply/config.rb CHANGED
@@ -1,39 +1,36 @@
1
- require 'ostruct'
2
1
  require 'dply/helper'
2
+ require 'dply/config_struct'
3
3
 
4
4
  module Dply
5
5
  class Config
6
6
 
7
7
  include Helper
8
- attr_reader :deploy_dir, :read_config
8
+ attr_reader :read_config
9
9
 
10
- def initialize(deploy_dir, read_config: true)
11
- @deploy_dir = deploy_dir
10
+ def initialize(dir = nil, read_config: true)
11
+ @dir = dir || Dir.pwd
12
12
  @read_config = read_config
13
13
  end
14
14
 
15
+ def to_struct
16
+ config
17
+ end
18
+
19
+ private
20
+
15
21
  def config
16
22
  return @config if @config
17
- @config = {
18
- deploy_dir: deploy_dir,
19
- target: :default,
20
- branch: :master,
21
- strategy: :default,
22
- repo: nil,
23
- env: {},
24
- link_config: false,
25
- config_map: nil,
26
- dir_map: nil,
27
- shared_dirs: [],
28
- config_skip_download: [],
29
- config_download_url: nil
30
- }
23
+ @config = ConfigStruct.new(@dir)
31
24
  read_from_file if read_config
32
25
  return @config
33
26
  end
34
27
 
35
- def target(target)
36
- set :target, target
28
+ def name(name)
29
+ set :name, name
30
+ end
31
+
32
+ def repo(repo)
33
+ set :repo, repo
37
34
  end
38
35
 
39
36
  def branch(branch)
@@ -41,74 +38,75 @@ module Dply
41
38
  end
42
39
 
43
40
  def strategy(strategy)
44
- set :strategy, strategy
41
+ set :strategy, strategy.to_sym
45
42
  end
46
43
 
47
- def repo(repo)
48
- set :repo, repo
44
+ def target(target)
45
+ set :target, target
49
46
  end
50
47
 
51
- def link_config(link_config)
52
- set :link_config, link_config
48
+ def shared_dirs(dirs)
49
+ raise if not dirs.is_a? Array
50
+ set :shared_dirs, dirs
53
51
  end
54
52
 
55
53
  def config_map(map)
56
- set :link_config, true
57
54
  set :config_map, map
58
55
  end
59
56
 
60
- def config_skip_download(list)
61
- set :config_skip_download, list
57
+ def dir_map(map)
58
+ set :dir_map, map
62
59
  end
63
60
 
64
61
  def config_download_url(url)
65
62
  set :config_download_url, url
66
63
  end
67
64
 
68
-
69
-
70
- def dir_map(map)
71
- set :dir_map, map
65
+ def config_skip_download(list)
66
+ set :config_skip_download, list
72
67
  end
73
68
 
74
- def set_env(key, value)
75
- @config[:env].store key, value
69
+ def verify_checksum(verify_checksum)
70
+ set :verify_checksum, verify_checksum
76
71
  end
77
72
 
78
- def set(key, value)
79
- @config.store key, value
80
- end
81
73
 
82
- def to_struct
83
- OpenStruct.new(config)
74
+ def set(key, value)
75
+ method = "#{key}=".to_sym
76
+ @config.send method, value
84
77
  end
85
78
 
86
79
  def env(h)
87
80
  raise if not h.is_a? Hash
88
- @config[:env] = h
89
- @config[:env].each do |k,v|
81
+ h.each do |k,v|
90
82
  ENV[k.to_s] = v.to_s
91
83
  end
92
84
  end
93
85
 
94
86
  def config_file
95
- @config_file ||= "#{deploy_dir}/dply.rb"
87
+ @config_file ||= begin
88
+ found = ["#{@dir}/deploy.rb", "#{@dir}/dply.rb"].find { |f| File.readable? f }
89
+ found || "#{@dir}/deploy.rb"
90
+ end
96
91
  end
97
92
 
98
- def shared_dirs(dirs)
99
- raise if not dirs.is_a? Array
100
- @config[:shared_dirs] = dirs
93
+ def revision(&block)
94
+ set :revision_proc , block
95
+ end
96
+
97
+ def build_url(&block)
98
+ set :build_url_proc, block
101
99
  end
102
100
 
103
101
  def read_from_file
104
102
  if not File.readable? config_file
105
- raise error "dply.rb not found in #{deploy_dir}"
103
+ error "deploy.rb not found in #{@dir}"
106
104
  return
107
105
  end
108
106
  instance_eval(File.read(config_file))
109
107
  rescue NoMethodError => e
110
- raise error "invalid option used in config: #{e.name}"
108
+ error "invalid option used in config: #{e.name}"
111
109
  end
112
-
110
+
113
111
  end
114
112
  end
@@ -3,17 +3,15 @@ module Dply
3
3
  class ConfigDownloader
4
4
 
5
5
  include Helper
6
- attr_accessor :base_url, :config_files, :config_skip_download
6
+ attr_writer :config_skip_download
7
7
 
8
- def initialize(config_files , base_url, secret: nil, config_skip_download: [])
8
+ def initialize(config_files , base_url)
9
9
  @config_files = config_files
10
10
  @base_url = base_url
11
- @secret = secret
12
- @config_skip_download = config_skip_download
13
11
  end
14
12
 
15
13
  def download_all
16
- config_files.each do |f|
14
+ @config_files.each do |f|
17
15
  if config_skip_download.include? f
18
16
  logger.debug "skipping to download file #{f}"
19
17
  next
@@ -22,14 +20,21 @@ module Dply
22
20
  end
23
21
  end
24
22
 
23
+ private
24
+
25
25
  def download(file)
26
- url = "#{base_url}/#{file}"
26
+ url = "#{@base_url}/#{file}"
27
27
  logger.bullet "downloading #{file}"
28
28
  http_status = `curl -w "%{http_code}" -f -s -o 'config/#{file}' '#{url}' `
29
29
  if http_status != "200"
30
- raise error "failed to download #{file}, http status #{http_status}"
30
+ error "failed to download #{file}, http status #{http_status}"
31
31
  end
32
32
  end
33
33
 
34
+
35
+ def config_skip_download
36
+ @config_skip_download ||= []
37
+ end
38
+
34
39
  end
35
40
  end
@@ -0,0 +1,41 @@
1
+ require 'dply/jenkins'
2
+ module Dply
3
+ class ConfigStruct
4
+
5
+ attr_writer :revision, :build_url, :build_url_proc,
6
+ :revision_proc
7
+ attr_accessor :dir, :name, :repo, :branch,
8
+ :strategy, :target, :verify_checksum,
9
+ :config_map, :dir_map, :shared_dirs,
10
+ :config_download_url, :config_skip_download
11
+
12
+ def initialize(dir = nil)
13
+ @dir = dir || Dir.pwd
14
+ @target = :default
15
+ @branch = :master
16
+ @verify_checksum = true
17
+ end
18
+
19
+ def revision
20
+ @revision ||= instance_eval(&revision_proc)
21
+ end
22
+
23
+ def build_url
24
+ @build_url ||= instance_eval(&build_url_proc)
25
+ end
26
+
27
+ def revision_proc
28
+ @revision_proc ||= Proc.new do
29
+ jenkins = Jenkins.new(repo, name)
30
+ jenkins.latest_successful_revision
31
+ end
32
+ end
33
+
34
+ def build_url_proc
35
+ @build_url_proc ||= Proc.new do
36
+ "#{repo.chomp("/")}/job/#{name}/#{revision}/artifact/build/#{name}-#{revision}-#{branch}.tar.gz"
37
+ end
38
+ end
39
+
40
+ end
41
+ end
@@ -3,6 +3,8 @@ require 'dply/ext/string'
3
3
  module Dply
4
4
  class CustomLogger < ::Logger
5
5
 
6
+ attr_writer :trace_mode, :remote_mode
7
+
6
8
  def initialize(file)
7
9
  super(file)
8
10
  @level = ::Logger::INFO
@@ -17,7 +19,7 @@ module Dply
17
19
  when "WARN"
18
20
  "#{severity.downcase.bold.yellow} #{msg}\n"
19
21
  else
20
- "#{severity.downcase.bold.blue} #{msg}\n"
22
+ "#{severity[0].bold.blue} #{msg}\n"
21
23
  end
22
24
  end
23
25
 
@@ -25,5 +27,15 @@ module Dply
25
27
  puts "#{"\u2219".bold.blue} #{msg}"
26
28
  end
27
29
 
30
+ def trace(msg)
31
+ return if not @trace_mode
32
+ puts %(#{"T".bold.blue} #{msg}\n)
33
+ end
34
+
35
+ def remote(msg)
36
+ return if not @remote_mode
37
+ puts %{dply_msg|#{msg}}
38
+ end
39
+
28
40
  end
29
41
  end