dply 0.2.19 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +5 -5
  2. data/.rspec +4 -0
  3. data/Rakefile +0 -14
  4. data/TODO +0 -1
  5. data/code_dump/old_remote_task.rb +2 -0
  6. data/{dev_bin → dev_exe}/dplyr +0 -0
  7. data/{dev_bin → dev_exe}/drake +1 -1
  8. data/dply.gemspec +2 -2
  9. data/{bin → exe}/dplyr +0 -0
  10. data/{bin → exe}/drake +12 -14
  11. data/lib/dply/TEST_TODO +50 -0
  12. data/lib/dply/app_config.rb +108 -0
  13. data/lib/dply/base_config.rb +110 -0
  14. data/lib/dply/build.rb +17 -11
  15. data/lib/dply/build_config.rb +28 -96
  16. data/lib/dply/bundle.rb +7 -30
  17. data/lib/dply/cli/build.rb +5 -12
  18. data/lib/dply/cli/ctl.rb +7 -8
  19. data/lib/dply/cli/deploy.rb +6 -10
  20. data/lib/dply/cli/devbuild.rb +6 -10
  21. data/lib/dply/cli/install_pkgs.rb +2 -3
  22. data/lib/dply/cli/run.rb +27 -0
  23. data/lib/dply/cli/status.rb +1 -2
  24. data/lib/dply/cli/task.rb +6 -12
  25. data/lib/dply/code_archive.rb +123 -0
  26. data/lib/dply/command.rb +57 -0
  27. data/lib/dply/config_downloader.rb +3 -2
  28. data/lib/dply/curl.rb +1 -5
  29. data/lib/dply/custom_logger.rb +18 -1
  30. data/lib/dply/deplist.rb +16 -48
  31. data/lib/dply/deploy_config.rb +34 -0
  32. data/lib/dply/elf.rb +60 -0
  33. data/lib/dply/env.rb +9 -0
  34. data/lib/dply/git.rb +15 -8
  35. data/lib/dply/helper.rb +21 -33
  36. data/lib/dply/linker.rb +27 -27
  37. data/lib/dply/lock.rb +2 -9
  38. data/lib/dply/logger.rb +1 -1
  39. data/lib/dply/pkgs.rb +9 -11
  40. data/lib/dply/release.rb +2 -2
  41. data/lib/dply/{archive.rb → remote_archive.rb} +1 -1
  42. data/lib/dply/repo.rb +3 -3
  43. data/lib/dply/rpm.rb +12 -20
  44. data/lib/dply/scripts/depcheck.rb +4 -0
  45. data/lib/dply/shared_dirs.rb +1 -1
  46. data/lib/dply/strategy/archive.rb +15 -22
  47. data/lib/dply/strategy/base.rb +82 -0
  48. data/lib/dply/strategy/git.rb +18 -19
  49. data/lib/dply/task_dsl.rb +101 -0
  50. data/lib/dply/util.rb +75 -0
  51. data/lib/dply/venv.rb +53 -0
  52. data/lib/dply/version.rb +1 -1
  53. data/lib/dply/yum.rb +21 -31
  54. data/lib/dplyr/consul.rb +1 -1
  55. data/spec/dply/base_config_spec.rb +178 -0
  56. data/spec/dply/bundle_spec.rb +100 -0
  57. data/spec/dply/command_spec.rb +190 -0
  58. data/spec/dply/curl_spec.rb +41 -0
  59. data/spec/dply/deplist_spec.rb +48 -0
  60. data/spec/dply/elf_spec.rb +64 -0
  61. data/spec/dply/env_spec.rb +57 -0
  62. data/spec/dply/git_spec.rb +136 -0
  63. data/spec/dply/helper_spec.rb +168 -0
  64. data/spec/dply/linker_spec.rb +81 -0
  65. data/spec/dply/lock_spec.rb +24 -0
  66. data/spec/dply/pkgs_spec.rb +105 -0
  67. data/spec/dply/repo_spec.rb +58 -0
  68. data/spec/dply/rpm_spec.rb +32 -0
  69. data/spec/dply/yum_spec.rb +29 -0
  70. data/spec/integration/archive_flow_spec.rb +87 -0
  71. data/spec/integration/git_flow_spec.rb +63 -0
  72. data/spec/repo.rb +27 -0
  73. data/spec/spec_helper.rb +44 -0
  74. data/spec/test_data/build.tar.gz +0 -0
  75. data/spec/test_data/build.tar.gz.md5 +1 -0
  76. data/spec/test_data/bundle/gems_installed/Gemfile +1 -0
  77. data/spec/test_data/bundle/gems_not_installed/Gemfile +2 -0
  78. data/spec/test_data/bundle/no_gemfile/.gitkeep +0 -0
  79. data/spec/test_data/command/test.rb +7 -0
  80. data/spec/test_data/elf/elf +0 -0
  81. data/spec/test_data/elf/libpgtypes.so.3 +0 -0
  82. data/spec/test_data/elf/not_elf +1 -0
  83. data/spec/test_data/sample_repo/.dply.lock +0 -0
  84. data/spec/test_data/sample_repo/Gemfile +2 -0
  85. data/spec/test_data/sample_repo/Rakefile +3 -0
  86. data/spec/test_data/sample_repo/app.rb +1 -0
  87. data/spec/test_data/sample_repo/dply/app.rb +33 -0
  88. data/spec/test_data/sample_repo/lib/libacl.so.1 +0 -0
  89. data/spec/test_data/sample_repo/pkgs.yml +2 -0
  90. data/spec/webserver.rb +21 -0
  91. metadata +96 -28
  92. data/lib/dply/cli/app_task.rb +0 -38
  93. data/lib/dply/config.rb +0 -120
  94. data/lib/dply/config_struct.rb +0 -52
  95. data/lib/dply/rakelib/drake.rake +0 -33
  96. data/lib/dply/tasks.rb +0 -136
@@ -1,101 +1,33 @@
1
- require 'ostruct'
2
- require 'dply/helper'
1
+ require 'dply/base_config'
3
2
 
4
3
  module Dply
5
- class BuildConfig
6
-
7
- include Helper
8
-
9
- def initialize(dir: nil, read_config: true)
10
- @read_config = read_config
11
- @dir = (dir || Dir.pwd)
4
+ class BuildConfig < BaseConfig
5
+ define_opts do
6
+ opt :dir
7
+ opt :task
8
+ opt :branch
9
+ opt :repo
10
+ opt :mirror
11
+ opt :git
12
+ opt :no_pull
13
+ opt :revision
14
+ opt :config_map, type: Hash
15
+ opt :dir_map, type: Hash
16
+ opt :shared_dirs, type: Array
17
+ opt :config_download_url
18
+ opt :config_skip_download, type: Array
19
+ end
20
+
21
+ def default_config
22
+ dir Dir.pwd
23
+ git true
24
+ task :build
25
+ branch "master"
26
+ shared_dirs []
27
+ dir_map({
28
+ "tmp" => "tmp",
29
+ "log" => "log"
30
+ })
12
31
  end
13
-
14
- def config
15
- return @config if @config
16
- @config = {
17
- dir: @dir,
18
- task: "app:build",
19
- branch: :master,
20
- repo: nil,
21
- git: true,
22
- env: {},
23
- config_map: nil,
24
- dir_map: nil,
25
- shared_dirs: [],
26
- config_skip_download: [],
27
- config_download_url: nil
28
- }
29
- read_from_file if @read_config
30
- return @config
31
- end
32
-
33
- def branch(branch)
34
- set :branch, branch
35
- end
36
-
37
- def task(task)
38
- set :task, task
39
- end
40
-
41
- def repo(repo)
42
- set :repo, repo
43
- end
44
-
45
- def config_map(map)
46
- set :config_map, map
47
- end
48
-
49
- def config_skip_download(list)
50
- set :config_skip_download, list
51
- end
52
-
53
- def config_download_url(url)
54
- set :config_download_url, url
55
- end
56
-
57
- def dir_map(map)
58
- set :dir_map, map
59
- end
60
-
61
- def set_env(key, value)
62
- @config[:env].store key, value
63
- end
64
-
65
- def set(key, value)
66
- @config.store key, value
67
- end
68
-
69
- def to_struct
70
- OpenStruct.new(config)
71
- end
72
-
73
- def env(h)
74
- raise if not h.is_a? Hash
75
- @config[:env] = h
76
- @config[:env].each do |k,v|
77
- ENV[k.to_s] = v.to_s
78
- end
79
- end
80
-
81
- def config_file
82
- @config_file ||= "#{@dir}/build.rb"
83
- end
84
-
85
- def shared_dirs(dirs)
86
- raise if not dirs.is_a? Array
87
- @config[:shared_dirs] = dirs
88
- end
89
-
90
- def read_from_file
91
- if not File.readable? config_file
92
- error "build.rb not found in #{@dir}"
93
- return
94
- end
95
- instance_eval(File.read(config_file), config_file)
96
- rescue NoMethodError => e
97
- error "invalid option used in config: #{e.name}"
98
- end
99
-
100
32
  end
101
33
  end
@@ -1,7 +1,6 @@
1
1
  require 'dply/helper'
2
2
  require 'fileutils'
3
3
  require 'yaml'
4
- require 'shellwords'
5
4
 
6
5
  module Dply
7
6
  class Bundle
@@ -9,26 +8,22 @@ module Dply
9
8
  include Helper
10
9
 
11
10
  def install
12
- init
11
+ return if not gemfile_exists?
12
+ write_config
13
13
  return if check
14
14
  cmd "bundle install -j5 --deployment"
15
15
  end
16
16
 
17
- def rake(task)
18
- rakelib = Shellwords.shellescape "#{__dir__}/rakelib"
19
- rake_cmd = %(rake -R #{rakelib} -Nf dply/Rakefile #{task})
20
- command = gemfile_exists? ? "bundle exec #{rake_cmd}" : rake_cmd
21
- cmd command, env: env, display: false
22
- end
23
-
24
17
  def clean
18
+ return if not gemfile_exists?
19
+ write_config
25
20
  cmd "bundle clean"
26
21
  end
27
22
 
28
23
  private
29
24
 
30
- def init
31
- @init ||= begin
25
+ def write_config
26
+ @write_config ||= begin
32
27
  h = {
33
28
  "BUNDLE_PATH" => "vendor/bundle",
34
29
  "BUNDLE_FROZEN" => "1",
@@ -43,26 +38,8 @@ module Dply
43
38
  system "bundle check > /dev/null"
44
39
  end
45
40
 
46
- def env
47
- @env ||= begin
48
- env = {}
49
- env.merge! env_from_yml(".env.yml")
50
- env.merge! env_from_yml("config/env.yml")
51
- env
52
- end
53
- end
54
-
55
- def env_from_yml(path)
56
- if not File.readable? path
57
- logger.debug "skipped loading env from #{path}"
58
- return {}
59
- end
60
- require 'yaml'
61
- YAML.load_file(path)
62
- end
63
-
64
41
  def gemfile_exists?
65
- File.exists? "Gemfile"
42
+ File.exist? "Gemfile"
66
43
  end
67
44
 
68
45
  end
@@ -24,41 +24,34 @@ module Dply
24
24
  end
25
25
 
26
26
  def config
27
- @config ||= ::Dply::BuildConfig.new.to_struct
28
- end
29
-
30
- def dir
31
- @dir ||= Dir.pwd
27
+ @config ||= BuildConfig.build("#{Dir.pwd}/build.rb")
32
28
  end
33
29
 
34
30
  def lock
35
- @lock ||= ::Dply::Lock.new
31
+ @lock ||= Lock.new(Dir.pwd)
36
32
  end
37
33
 
38
34
  def opts
39
35
  OptionParser.new do |opts|
40
36
 
41
37
  opts.banner = "Usage: drake build [options] [target]"
42
-
38
+
43
39
  opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
44
40
  config.branch = b
45
41
  end
46
42
 
47
43
  opts.on("-r", "--revision [REVISION]", "Specify revision") do |r|
48
44
  config.revision = r
45
+ ENV["BUILD_NUMBER"] = r.to_s
49
46
  end
50
47
 
51
48
  opts.on("--no-pull", "Enable/disable git pull") do |e|
52
49
  config.no_pull = true
53
50
  end
54
51
 
55
- opts.on("--use-yum", "use yum to install packages") do |e|
56
- config.use_yum = true
57
- end
58
-
59
52
  opts.on("--skip-git", "Disable git") do |e|
60
53
  config.git = false
61
- end
54
+ end
62
55
 
63
56
  opts.on("-h", "--help", "Help") do
64
57
  puts opts
@@ -1,7 +1,7 @@
1
1
  require 'dply/lock'
2
2
  require 'dply/strategy'
3
- require 'dply/config'
4
- require 'dply/tasks'
3
+ require 'dply/deploy_config'
4
+ require 'dply/util'
5
5
 
6
6
  module Dply
7
7
  module Cli
@@ -10,9 +10,8 @@ module Dply
10
10
  def run(command)
11
11
  case command
12
12
  when :start, :stop, :reopen_logs
13
- config
14
13
  lock.acquire
15
- Dir.chdir("current") { tasks.send command.to_sym }
14
+ Dir.chdir("current") { util.run command }
16
15
  when :reload
17
16
  lock.acquire
18
17
  strategy.reload
@@ -24,15 +23,15 @@ module Dply
24
23
  end
25
24
 
26
25
  def config
27
- @config ||= Config.new.to_struct
26
+ @config ||= DeployConfig.build("#{Dir.pwd}/deploy.rb")
28
27
  end
29
28
 
30
29
  def lock
31
- @lock ||= Lock.new
30
+ @lock ||= Lock.new(Dir.pwd)
32
31
  end
33
32
 
34
- def tasks
35
- @tasks ||= ::Dply::Tasks.new
33
+ def util
34
+ @util ||= ::Dply::Util.new
36
35
  end
37
36
 
38
37
  end
@@ -1,7 +1,7 @@
1
1
  require 'dply/strategy'
2
2
  require 'dply/logger'
3
3
  require 'dply/lock'
4
- require 'dply/config'
4
+ require 'dply/deploy_config'
5
5
 
6
6
  module Dply
7
7
  module Cli
@@ -26,18 +26,18 @@ module Dply
26
26
  end
27
27
 
28
28
  def lock
29
- @lock ||= Lock.new
29
+ @lock ||= Lock.new(Dir.pwd)
30
30
  end
31
31
 
32
32
  def config
33
- @config ||= Config.new.to_struct
33
+ @config ||= DeployConfig.build("#{Dir.pwd}/deploy.rb")
34
34
  end
35
35
 
36
36
  def opts
37
37
  OptionParser.new do |opts|
38
38
 
39
39
  opts.banner = "Usage: dply deploy [options] [target]"
40
-
40
+
41
41
  opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
42
42
  config.branch = b
43
43
  end
@@ -52,14 +52,10 @@ module Dply
52
52
 
53
53
  opts.on("--skip-git", "Disable git") do |e|
54
54
  options[:skip_git] = true
55
- end
56
-
57
- opts.on("--skip-bundler", "Skip bundle install") do |e|
58
- options[:skip_bundler] = true
59
55
  end
60
56
 
61
- opts.on("--use-yum", "use yum to install packages") do |e|
62
- options[:use_yum] = true
57
+ opts.on("--skip-bundler", "Skip bundle install") do |e|
58
+ options[:skip_bundler] = true
63
59
  end
64
60
 
65
61
  opts.on("-h", "--help", "Help") do
@@ -1,6 +1,6 @@
1
1
  require 'dply/logger'
2
2
  require 'dply/lock'
3
- require 'dply/tasks'
3
+ require 'dply/util'
4
4
  require 'fileutils'
5
5
 
6
6
  module Dply
@@ -24,18 +24,18 @@ module Dply
24
24
  FileUtils.mkdir_p build_artifacts
25
25
 
26
26
  clear_bundle_config
27
- tasks.install_pkgs(build_mode: true, use_yum: @options[:use_yum])
28
- tasks.build "app:build"
27
+ util.install_pkgs(build_mode: true)
28
+ util.run :build
29
29
  ensure
30
30
  clear_bundle_config
31
31
  end
32
32
 
33
- def tasks
34
- @tasks ||= ::Dply::Tasks.new
33
+ def util
34
+ @util ||= ::Dply::Util.new
35
35
  end
36
36
 
37
37
  def lock
38
- @lock ||= ::Dply::Lock.new
38
+ @lock ||= Lock.new(Dir.pwd)
39
39
  end
40
40
 
41
41
  def clear_bundle_config
@@ -51,10 +51,6 @@ module Dply
51
51
  @options[:revision] = r
52
52
  end
53
53
 
54
- opts.on("--use-yum", "use yum to install packages") do |e|
55
- @options[:use_yum] = true
56
- end
57
-
58
54
  opts.on("-h", "--help", "Help") do
59
55
  puts opts
60
56
  exit
@@ -15,7 +15,7 @@ module Dply
15
15
  def run
16
16
  opts.parse!(@argv)
17
17
  error "pkgs.yml cannot be a symlink" if File.symlink? "pkgs.yml"
18
- pkgs = Pkgs.new
18
+ pkgs = Pkgs.new("pkgs.yml")
19
19
  pkgs.install(build_mode: @options[:build_mode])
20
20
  puts "installed"
21
21
  end
@@ -24,7 +24,7 @@ module Dply
24
24
  OptionParser.new do |opts|
25
25
 
26
26
  opts.banner = "Usage: drake install-pkgs [options] [target]"
27
-
27
+
28
28
  opts.on("-b" , "Build mode") do |b|
29
29
  @options[:build_mode] = true
30
30
  end
@@ -36,7 +36,6 @@ module Dply
36
36
  end
37
37
  end
38
38
 
39
-
40
39
  end
41
40
  end
42
41
  end
@@ -0,0 +1,27 @@
1
+ require 'dply/logger'
2
+ require 'dply/lock'
3
+ require 'dply/app_config'
4
+
5
+ module Dply
6
+ module Cli
7
+ class Run
8
+
9
+ include Logger
10
+
11
+ def initialize(argv)
12
+ @argv = argv
13
+ end
14
+
15
+ def run
16
+ lock.acquire
17
+ app_config = AppConfig.new
18
+ app_config.run_task @argv.shift
19
+ end
20
+
21
+ def lock
22
+ @lock ||= Lock.new(Dir.pwd)
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -1,6 +1,5 @@
1
1
  require 'dply/logger'
2
2
  require 'dply/release_helper'
3
- require 'dply/config'
4
3
 
5
4
  module Dply
6
5
  module Cli
@@ -19,7 +18,7 @@ module Dply
19
18
  def print_status
20
19
  r = current_release
21
20
  color = r[:deployed] ? :green : :red
22
- logger.info "#{r[:revision].send color} #{r[:project]} #{r[:branch]} #{r[:timestamp]}"
21
+ logger.info "#{r[:revision].send color} #{r[:project]} #{r[:branch]} #{r[:timestamp]}"
23
22
  end
24
23
 
25
24
  def current_release
@@ -1,7 +1,6 @@
1
1
  require 'dply/logger'
2
2
  require 'dply/lock'
3
- require 'dply/strategy'
4
- require 'dply/config'
3
+ require 'dply/app_config'
5
4
 
6
5
  module Dply
7
6
  module Cli
@@ -17,19 +16,14 @@ module Dply
17
16
  task_name = @argv.shift
18
17
  error "task name not specified" if not task_name
19
18
  lock.acquire
20
- strategy.task(task_name)
21
- end
22
-
23
- def strategy
24
- @strategy ||= Strategy.load(config, {})
25
- end
26
-
27
- def config
28
- @config ||= Config.new.to_struct
19
+ Dir.chdir "current" do
20
+ app_config = AppConfig.new
21
+ app_config.run_task task_name
22
+ end
29
23
  end
30
24
 
31
25
  def lock
32
- @lock ||= Lock.new
26
+ @lock ||= Lock.new(Dir.pwd)
33
27
  end
34
28
 
35
29
  end