docman 0.0.4 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05cf8e4e48f3caf7169aa6a3d492bc6bcd2d57ff
4
- data.tar.gz: 9d41372a3eaf9c7983919c98d505ebdb26e7339b
3
+ metadata.gz: 0f0ba6187a0fad64e125554d5d75a17c3e6fda06
4
+ data.tar.gz: 56c484c7c676ccbb7d7ba394f59e1a32e4d48c2f
5
5
  SHA512:
6
- metadata.gz: 9f282d5d035f25df19ea05bed2fbe2929cf98ccd124b9ad098ae8a557fb06cccf5f0673709640e4c434f1c312893a23633757a6a47c8021151f64666496b2e77
7
- data.tar.gz: 46574cf8a6815bdbe9c93177a0123c8bbd4e0d3b992a02774de5644f428246d27fad0b3f2c572877595ba1fd1fab1e330481441b5334743bd51e48eeafd0a19b
6
+ metadata.gz: 771396971be50da7bf5df9063620b69a40e2728c4de3ff80f6f323f36318108f687b688c466ced4197a615f8341919a90f8e4736d404b6dcb2a340aa5090e4d6
7
+ data.tar.gz: 3179ec03c8f81b8aa86cc4ddea9a2bbee82baa09a5b4b99103fb1fbd84b27b56f9a7170d70c61a927ecb482712f07b012d6c4bef83111cb5b8f8b5711a6c4454
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  deploy_targets:
3
3
  local:
4
- handler: LocalDeployer
4
+ handler: :common_deployer
5
5
  builders:
6
6
  root:
7
7
  handler: :common
@@ -16,7 +16,7 @@ deploy_targets:
16
16
  handler: :common
17
17
  type: dir
18
18
  acquia:
19
- handler: GitDeployer
19
+ handler: :git_deployer
20
20
  deploy_action: git_push
21
21
  builders:
22
22
  root:
@@ -6,8 +6,18 @@ Feature: Docroot management
6
6
 
7
7
  @announce
8
8
  @no-clobber
9
- Scenario: Local init
10
- Given I run `docman init sample-docroot https://github.com/aroq/dm-test-docroot-config.git`
9
+ Scenario: Local force init
10
+ Given I run `docman init sample-docroot https://github.com/aroq/dm-test-docroot-config.git -f`
11
+ Then the exit status should be 0
12
+ Then the following directories should exist:
13
+ | sample-docroot |
14
+ | sample-docroot/config |
15
+
16
+ @announce
17
+ @no-clobber
18
+ Scenario: Local interactive init
19
+ Given I run `docman init sample-docroot https://github.com/aroq/dm-test-docroot-config.git` interactively
20
+ And I type "yes"
11
21
  Then the exit status should be 0
12
22
  Then the following directories should exist:
13
23
  | sample-docroot |
@@ -36,6 +46,9 @@ Feature: Docroot management
36
46
  And I run `git checkout develop`
37
47
  And I run `git pull origin develop`
38
48
  Then the exit status should be 0
49
+ And I store in "name" value "test"
50
+ And I check stored value of "name" should contain "test"
51
+ And I create file with random name in "filename" content in "random_name"
39
52
  Given a file named "develop.txt" with:
40
53
  """
41
54
  test content
@@ -5,17 +5,33 @@
5
5
  # end
6
6
  # end
7
7
  #
8
+
9
+ Then(/^I store in "(.*?)" value "(.*?)"$/) do |name, value|
10
+ @name = value
11
+ end
12
+
13
+ Then(/^I check stored value of "(.*?)" should contain "(.*?)"$/) do |name, value|
14
+ expect(@name).to eq(value)
15
+ end
16
+
17
+ Then(/^I create file with random name and content and store its name in "(.*?)"$/) do |name|
18
+ # random_file_name = ('a'..'z').to_a.shuffle[0,8].join
19
+ # self.instance_variable_set(:@name, random_file_name)
20
+ # self.instance_variable_set(:@name, random_file_name)
21
+ # @random_file_content = ('a'..'z').to_a.shuffle[0,8].join
22
+ end
23
+
8
24
  When(/^I store bump version from file "(.*?)"$/) do |file|
9
25
  ENV['DM_BUMPED_VERSION'] = IO.read(file)
10
26
  end
11
27
 
12
28
  When(/^I change repo state to last bumped tag for "(.*?)" version$/) do |state|
13
- version = ENV["DM_BUMPED_VERSION"]
29
+ version = ENV['DM_BUMPED_VERSION']
14
30
  run "state.sh tag #{version} #{state}"
15
31
  end
16
32
 
17
33
  Then(/^the file "(.*?)" should contain last bumped tag$/) do |file|
18
- version = ENV["DM_BUMPED_VERSION"]
34
+ version = ENV['DM_BUMPED_VERSION']
19
35
  puts "Last bumped tag: #{version}"
20
36
  prep_for_fs_check { expect(IO.read(file)).to eq version }
21
37
  end
@@ -28,10 +28,11 @@ module Docman
28
28
 
29
29
  def build(deploy_target, state, options = false)
30
30
  @options = options
31
- DocrootController.new(@workspace_dir, deploy_target, options).build(state)
31
+ DocrootController.new(@workspace_dir, deploy_target).build(state)
32
32
  end
33
33
 
34
- def deploy(deploy_target, name, type, version)
34
+ def deploy(deploy_target, name, type, version, options = false)
35
+ @options = options
35
36
  DocrootController.new(@workspace_dir, deploy_target).deploy(name, type, version)
36
37
  end
37
38
 
@@ -7,36 +7,48 @@ module Docman
7
7
  # TODO: add proper descriptions.
8
8
 
9
9
  desc 'init NAME', 'init to NAME'
10
+ method_option :force, :aliases => '-f', :desc => 'Force init'
10
11
  def init(name, repo)
11
12
  if File.directory? "#{name}"
12
- say("Complete!", :green)
13
- $stderr.puts "Directory #{name} already exists"
14
- choice = ask('Are you sure you want do delete existing docroot?')
15
- FileUtils.rm_r(name) if choice == 'yes'
13
+ say("Directory #{name} already exists")
14
+ if options[:force]
15
+ FileUtils.rm_r(name)
16
+ elsif
17
+ choice = ask('Are you sure you want do delete existing docroot? Type "yes" if you agree.')
18
+ if choice == 'yes'
19
+ FileUtils.rm_r(name)
20
+ elsif
21
+ Kernel::abort 'Exit'
22
+ end
23
+ end
16
24
  end
17
25
 
18
26
  puts "Init docroot directory #{name} and retrieve config from provided repo."
19
27
  Application.instance.init(name, repo)
28
+ say('Complete!', :green)
20
29
  end
21
30
 
22
31
  desc 'build NAME', 'init to NAME'
23
32
  method_option :force, :aliases => '-f', :desc => 'Force full rebuild'
24
33
  def build(deploy_target, state)
25
34
  config_dir?
26
-
27
35
  Application.instance.build(deploy_target, state, options)
36
+ say('Complete!', :green)
28
37
  end
29
38
 
30
39
  desc 'deploy NAME', 'init to NAME'
40
+ method_option :force, :aliases => '-f', :desc => 'Force full deploy'
31
41
  def deploy(deploy_target, name, type, version)
32
42
  config_dir?
33
- Application.instance.deploy(deploy_target, name, type, version)
43
+ Application.instance.deploy(deploy_target, name, type, version, options)
44
+ say('Complete!', :green)
34
45
  end
35
46
 
36
47
  desc 'state NAME', 'init to NAME'
37
48
  def state(name, type, version)
38
49
  config_dir?
39
50
  Application.instance.state(name, type, version)
51
+ say('Complete!', :green)
40
52
  end
41
53
 
42
54
  no_commands {
@@ -1,6 +1,9 @@
1
1
  module Docman
2
2
  module Deployers
3
- class LocalDeployer < Deployer
3
+ class CommonDeployer < Deployer
4
+
5
+ register_deployer :common_deployer
6
+
4
7
  def push(info, state_name)
5
8
  end
6
9
  end
@@ -4,11 +4,19 @@ module Docman
4
4
 
5
5
  attr_reader :deploy_target
6
6
 
7
- def build(root, info)
8
- return if @deployed.include? info['name']
9
- build_type = build_type(info['type'])
10
- Docman::Builders::Builder.create(build_type['handler'], root, build_type, info).do()
11
- @deployed << info['name']
7
+ @@subclasses = {}
8
+
9
+ def self.create(type, deploy_target)
10
+ c = @@subclasses[type]
11
+ if c
12
+ c.new(deploy_target)
13
+ else
14
+ raise "Bad deployer type: #{type}"
15
+ end
16
+ end
17
+
18
+ def self.register_deployer(name)
19
+ @@subclasses[name] = self
12
20
  end
13
21
 
14
22
  def initialize(deploy_target)
@@ -16,6 +24,13 @@ module Docman
16
24
  @deploy_target = deploy_target
17
25
  end
18
26
 
27
+ def build(root, info)
28
+ return if @deployed.include? info['name']
29
+ build_type = build_type(info['type'])
30
+ Docman::Builders::Builder.create(build_type['handler'], root, build_type, info).do()
31
+ @deployed << info['name']
32
+ end
33
+
19
34
  def build_type(type)
20
35
  @deploy_target['builders'][type]
21
36
  end
@@ -1,6 +1,9 @@
1
1
  module Docman
2
2
  module Deployers
3
3
  class GitDeployer < Deployer
4
+
5
+ register_deployer :git_deployer
6
+
4
7
  def push(info, state_name)
5
8
  version = info['states'][state_name]['version']
6
9
  GitUtil.push(info['full_build_path'], version)
@@ -23,6 +23,7 @@ module Docman
23
23
  def structure_build(path, prefix = '', parent = nil)
24
24
  return unless File.file? File.join(path, 'info.yaml')
25
25
 
26
+ children = []
26
27
  info = YAML::load_file(File.join(path, 'info.yaml'))
27
28
  name = File.basename path
28
29
  prefix = prefix.size > 0 ? File.join(prefix, name) : name
@@ -33,13 +34,14 @@ module Docman
33
34
  info['temp_path'] = File.join(@docroot_dir, 'tmp', info['build_path'])
34
35
  info['name'] = name
35
36
  info['parent'] = parent
37
+ info['children'] = children
36
38
 
37
39
  i = Docman::Info.new(info)
38
40
 
39
41
  @names[name.to_s] = i
40
42
 
41
- data = {:data => info, :info => i}
42
- data[:children] = children = []
43
+ data = [i]
44
+ # data[:children] = children
43
45
  Dir.foreach(path) do |entry|
44
46
  next if (entry == '..' || entry == '.')
45
47
  full_path = File.join(path, entry)
@@ -50,7 +52,7 @@ module Docman
50
52
  end
51
53
  end
52
54
  end
53
- data
55
+ i
54
56
  end
55
57
 
56
58
 
@@ -3,23 +3,21 @@ require 'docman/builders/common_builder'
3
3
  require 'docman/builders/git_builder'
4
4
  require 'docman/deployers/deployer'
5
5
  require 'docman/deployers/git_deployer'
6
- require 'docman/deployers/local_deployer'
6
+ require 'docman/deployers/common_deployer'
7
7
 
8
- # TODO: refactor info into class.
9
8
  # TODO: make universal logging class.
10
9
 
11
10
  module Docman
12
11
  class DocrootController
13
12
 
14
- attr_reader :docroot_dir, :temp_dir
13
+ attr_reader :docroot_dir
15
14
 
16
15
  def initialize(docroot_dir, deploy_target_name, options = {})
17
16
  @deploy_target = Docman::Application.instance.config['deploy_targets'][deploy_target_name]
18
17
  Docman::Application.instance.deploy_target = @deploy_target
19
18
  docroot_config = DocrootConfig.new(docroot_dir, @deploy_target)
20
- @deployer = Object.const_get("Docman::Deployers::#{@deploy_target['handler']}").new(@deploy_target)
19
+ @deployer = Docman::Deployers::Deployer.create(@deploy_target['handler'], @deploy_target)
21
20
  @docroot_dir = docroot_dir
22
- @temp_dir = File.join(docroot_dir, 'tmp')
23
21
  @docroot_config = docroot_config
24
22
  end
25
23
 
@@ -36,11 +34,11 @@ module Docman
36
34
  @deployer.push(@docroot_config.root_dir, state)
37
35
  end
38
36
 
39
- def build_recursive(state, dir = nil)
40
- dir = dir ? dir : @docroot_config.structure
41
- build_dir(state, dir[:info])
37
+ def build_recursive(state, info = nil)
38
+ info = info ? info : @docroot_config.structure
39
+ build_dir(state, info)
42
40
 
43
- dir[:children].each do |child|
41
+ info['children'].each do |child|
44
42
  build_recursive(state, child)
45
43
  end
46
44
  end
@@ -26,7 +26,7 @@ module Docman
26
26
  to_save['type'] = self['type']
27
27
  to_save['build_type'] = self['build_type']
28
28
 
29
- File.open("#{self['full_build_path']}/info.yaml", 'w') {|f| f.write to_save.to_yaml}
29
+ File.open(File.join(self['full_build_path'], 'info.yaml'), 'w') {|f| f.write to_save.to_yaml}
30
30
  end
31
31
 
32
32
  def need_rebuild?
@@ -1,3 +1,3 @@
1
1
  module Docman
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Tolstikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-03 00:00:00.000000000 Z
11
+ date: 2014-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -111,9 +111,9 @@ files:
111
111
  - lib/docman/builders/common_builder.rb
112
112
  - lib/docman/builders/git_builder.rb
113
113
  - lib/docman/cli.rb
114
+ - lib/docman/deployers/common_deployer.rb
114
115
  - lib/docman/deployers/deployer.rb
115
116
  - lib/docman/deployers/git_deployer.rb
116
- - lib/docman/deployers/local_deployer.rb
117
117
  - lib/docman/docroot_config.rb
118
118
  - lib/docman/docroot_controller.rb
119
119
  - lib/docman/exec.rb