dandelion 0.3.15 → 0.4.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +11 -0
  5. data/LICENSE +1 -1
  6. data/README.md +15 -26
  7. data/Rakefile +4 -8
  8. data/bin/dandelion +4 -3
  9. data/dandelion.gemspec +23 -20
  10. data/lib/dandelion.rb +26 -10
  11. data/lib/dandelion/adapter.rb +45 -0
  12. data/lib/dandelion/{backend → adapter}/ftp.rb +22 -17
  13. data/lib/dandelion/adapter/noop.rb +14 -0
  14. data/lib/dandelion/{backend → adapter}/s3.rb +14 -15
  15. data/lib/dandelion/{backend → adapter}/sftp.rb +29 -16
  16. data/lib/dandelion/change.rb +11 -0
  17. data/lib/dandelion/changeset.rb +49 -0
  18. data/lib/dandelion/cli.rb +127 -0
  19. data/lib/dandelion/command.rb +26 -92
  20. data/lib/dandelion/command/deploy.rb +54 -41
  21. data/lib/dandelion/command/status.rb +14 -13
  22. data/lib/dandelion/config.rb +36 -0
  23. data/lib/dandelion/deployer.rb +53 -0
  24. data/lib/dandelion/diff.rb +62 -0
  25. data/lib/dandelion/tree.rb +22 -0
  26. data/lib/dandelion/utils.rb +13 -0
  27. data/lib/dandelion/version.rb +2 -2
  28. data/lib/dandelion/workspace.rb +71 -0
  29. data/spec/dandelion/adapter_spec.rb +42 -0
  30. data/spec/dandelion/change_spec.rb +17 -0
  31. data/spec/dandelion/changeset_spec.rb +73 -0
  32. data/spec/dandelion/command/deploy_spec.rb +111 -0
  33. data/spec/dandelion/command/status_spec.rb +4 -0
  34. data/spec/dandelion/command_spec.rb +70 -0
  35. data/spec/dandelion/config_spec.rb +15 -0
  36. data/spec/dandelion/deployer_spec.rb +65 -0
  37. data/spec/dandelion/diff_spec.rb +54 -0
  38. data/spec/dandelion/tree_spec.rb +15 -0
  39. data/spec/dandelion/workspace_spec.rb +77 -0
  40. data/{test/test_git.git → spec/fixtures/repo.git}/HEAD +0 -0
  41. data/{test/test_git.git → spec/fixtures/repo.git}/config +1 -0
  42. data/{test/test_git.git → spec/fixtures/repo.git}/description +0 -0
  43. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/applypatch-msg.sample +0 -0
  44. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/commit-msg.sample +0 -0
  45. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/post-update.sample +0 -0
  46. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/pre-applypatch.sample +0 -0
  47. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/pre-commit.sample +6 -2
  48. data/spec/fixtures/repo.git/hooks/pre-push.sample +53 -0
  49. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/pre-rebase.sample +0 -0
  50. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/prepare-commit-msg.sample +0 -0
  51. data/{test/test_git.git → spec/fixtures/repo.git}/hooks/update.sample +1 -1
  52. data/{test/test_git.git → spec/fixtures/repo.git}/info/exclude +0 -0
  53. data/spec/fixtures/repo.git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99 +0 -0
  54. data/spec/fixtures/repo.git/objects/34/e64fe350f3ea80c989cdac7a99c2adb8574fca +0 -0
  55. data/spec/fixtures/repo.git/objects/3d/9b743acb4a84dd99002d2c6f3fcf1a47e9f06b +0 -0
  56. data/spec/fixtures/repo.git/objects/4e/44973d41d33bf5342037f56497efe0a9604d25 +0 -0
  57. data/{test/test_git.git → spec/fixtures/repo.git}/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6 +0 -0
  58. data/spec/fixtures/repo.git/objects/6c/a0f54491390579ce9438ec89c64c6b3499683a +0 -0
  59. data/spec/fixtures/repo.git/objects/8a/e33865a630c5d141c8a498f0c0166ff240b433 +0 -0
  60. data/{test/test_git.git → spec/fixtures/repo.git}/objects/90/2dce0535b19f0c15ac8407fc4468256ad672d7 +0 -0
  61. data/spec/fixtures/repo.git/objects/c3/9af82404cc4267b1ba5f4b4437a511e0776abb +0 -0
  62. data/spec/fixtures/repo.git/objects/c8/85b3f693ed6e2926971ef75680f41b318072ae +0 -0
  63. data/spec/fixtures/repo.git/objects/d8/7cbcba0e2ede0752bdafc5938da35546803ba5 +0 -0
  64. data/spec/fixtures/repo.git/objects/e2/89ff1e2729839759dbd6fe99b6e35880910c7c +0 -0
  65. data/{test/test_git.git → spec/fixtures/repo.git}/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  66. data/{test/test_git.git → spec/fixtures/repo.git}/objects/ea/41dba10b54a794284e0be009a11f0ff3716a28 +0 -0
  67. data/spec/fixtures/repo.git/objects/ee/314a31b622b027c10981acaed7903a3607dbd4 +0 -0
  68. data/spec/fixtures/repo.git/objects/f6/66b137794d56880bab05e8fd256713a8fccf92 +0 -0
  69. data/spec/fixtures/repo.git/refs/heads/master +1 -0
  70. data/spec/spec_helper.rb +28 -0
  71. metadata +119 -127
  72. data/lib/dandelion/application.rb +0 -73
  73. data/lib/dandelion/backend.rb +0 -54
  74. data/lib/dandelion/deployment.rb +0 -173
  75. data/lib/dandelion/git.rb +0 -123
  76. data/test/fixtures/diff +0 -3
  77. data/test/fixtures/ls_tree +0 -5
  78. data/test/test_diff_deployment.rb +0 -122
  79. data/test/test_ftp.rb +0 -49
  80. data/test/test_git.git/hooks/post-commit.sample +0 -8
  81. data/test/test_git.git/hooks/post-receive.sample +0 -15
  82. data/test/test_git.git/objects/0c/a605e9f0f1d42ce8193ac36db11ec3cc9efc08 +0 -0
  83. data/test/test_git.git/objects/11/bada4e36fd065c8d1d3ca97b8dffa496c8e021 +0 -0
  84. data/test/test_git.git/objects/88/d4480861346093048e08ce8dcc577d8aa69379 +0 -1
  85. data/test/test_git.git/objects/a6/394b3e8a82b76b0dd5b6b317f489dfe22426a6 +0 -0
  86. data/test/test_git.git/objects/a6/5140d5ec9f47064f614ecf8e43776baa5c0c11 +0 -0
  87. data/test/test_git.git/objects/f5/5f3c44c89e5d215fbaaef9d33563117fe0b61b +0 -1
  88. data/test/test_git.git/objects/ff/1f1d4bd0c99e1c9cca047c46b2194accf89504 +0 -4
  89. data/test/test_git.git/refs/heads/master +0 -1
  90. data/test/test_git.rb +0 -50
  91. data/test/test_sftp.rb +0 -54
@@ -0,0 +1,53 @@
1
+ #!/bin/sh
2
+
3
+ # An example hook script to verify what is about to be pushed. Called by "git
4
+ # push" after it has checked the remote status, but before anything has been
5
+ # pushed. If this script exits with a non-zero status nothing will be pushed.
6
+ #
7
+ # This hook is called with the following parameters:
8
+ #
9
+ # $1 -- Name of the remote to which the push is being done
10
+ # $2 -- URL to which the push is being done
11
+ #
12
+ # If pushing without using a named remote those arguments will be equal.
13
+ #
14
+ # Information about the commits which are being pushed is supplied as lines to
15
+ # the standard input in the form:
16
+ #
17
+ # <local ref> <local sha1> <remote ref> <remote sha1>
18
+ #
19
+ # This sample shows how to prevent push of commits where the log message starts
20
+ # with "WIP" (work in progress).
21
+
22
+ remote="$1"
23
+ url="$2"
24
+
25
+ z40=0000000000000000000000000000000000000000
26
+
27
+ IFS=' '
28
+ while read local_ref local_sha remote_ref remote_sha
29
+ do
30
+ if [ "$local_sha" = $z40 ]
31
+ then
32
+ # Handle delete
33
+ else
34
+ if [ "$remote_sha" = $z40 ]
35
+ then
36
+ # New branch, examine all commits
37
+ range="$local_sha"
38
+ else
39
+ # Update to existing branch, examine new commits
40
+ range="$remote_sha..$local_sha"
41
+ fi
42
+
43
+ # Check for WIP commit
44
+ commit=`git rev-list -n 1 --grep '^WIP' "$range"`
45
+ if [ -n "$commit" ]
46
+ then
47
+ echo "Found WIP commit in $local_ref, not pushing"
48
+ exit 1
49
+ fi
50
+ fi
51
+ done
52
+
53
+ exit 0
@@ -38,7 +38,7 @@ if [ -z "$GIT_DIR" ]; then
38
38
  fi
39
39
 
40
40
  if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
41
- echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
41
+ echo "usage: $0 <ref> <oldrev> <newrev>" >&2
42
42
  exit 1
43
43
  fi
44
44
 
@@ -0,0 +1 @@
1
+ 3d9b743acb4a84dd99002d2c6f3fcf1a47e9f06b
@@ -0,0 +1,28 @@
1
+ require 'dandelion'
2
+ require 'rugged'
3
+
4
+ Dandelion.logger.level = Logger::UNKNOWN
5
+
6
+ def test_repo
7
+ path = File.join(File.dirname(__FILE__), 'fixtures', 'repo.git')
8
+ @repo ||= Rugged::Repository.new(path)
9
+ end
10
+
11
+ def test_commits
12
+ [
13
+ test_repo.lookup('e289ff1e2729839759dbd6fe99b6e35880910c7c'),
14
+ test_repo.lookup('3d9b743acb4a84dd99002d2c6f3fcf1a47e9f06b')
15
+ ]
16
+ end
17
+
18
+ def test_tree
19
+ Dandelion::Tree.new(test_repo, test_commits.last)
20
+ end
21
+
22
+ def test_changeset(options = {})
23
+ Dandelion::Changeset.new(test_tree, test_commits.first, options)
24
+ end
25
+
26
+ def test_diff
27
+ test_changeset.diff
28
+ end
metadata CHANGED
@@ -1,80 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dandelion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.15
4
+ version: 0.4.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Nelson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-23 00:00:00.000000000 Z
11
+ date: 2014-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: grit
14
+ name: rugged
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.1
19
+ version: 0.19.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 2.4.1
27
- - !ruby/object:Gem::Dependency
28
- name: mocha
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: 0.9.12
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: 0.9.12
41
- - !ruby/object:Gem::Dependency
42
- name: net-sftp
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: 2.0.5
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: 2.0.5
55
- - !ruby/object:Gem::Dependency
56
- name: aws-s3
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: 0.6.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.6.0
69
- description: Incremental Git repository deployment
26
+ version: 0.19.0
27
+ description:
70
28
  email:
71
- - scottbnel@gmail.com
29
+ - scott@scttnlsn.com
72
30
  executables:
73
31
  - dandelion
74
32
  extensions: []
75
33
  extra_rdoc_files: []
76
34
  files:
77
35
  - .gitignore
36
+ - .rspec
37
+ - .travis.yml
78
38
  - Gemfile
79
39
  - LICENSE
80
40
  - README.md
@@ -82,54 +42,76 @@ files:
82
42
  - bin/dandelion
83
43
  - dandelion.gemspec
84
44
  - lib/dandelion.rb
85
- - lib/dandelion/application.rb
86
- - lib/dandelion/backend.rb
87
- - lib/dandelion/backend/ftp.rb
88
- - lib/dandelion/backend/s3.rb
89
- - lib/dandelion/backend/sftp.rb
45
+ - lib/dandelion/adapter.rb
46
+ - lib/dandelion/adapter/ftp.rb
47
+ - lib/dandelion/adapter/noop.rb
48
+ - lib/dandelion/adapter/s3.rb
49
+ - lib/dandelion/adapter/sftp.rb
50
+ - lib/dandelion/change.rb
51
+ - lib/dandelion/changeset.rb
52
+ - lib/dandelion/cli.rb
90
53
  - lib/dandelion/command.rb
91
54
  - lib/dandelion/command/deploy.rb
92
55
  - lib/dandelion/command/status.rb
93
- - lib/dandelion/deployment.rb
94
- - lib/dandelion/git.rb
56
+ - lib/dandelion/config.rb
57
+ - lib/dandelion/deployer.rb
58
+ - lib/dandelion/diff.rb
59
+ - lib/dandelion/tree.rb
60
+ - lib/dandelion/utils.rb
95
61
  - lib/dandelion/version.rb
96
- - test/fixtures/diff
97
- - test/fixtures/ls_tree
98
- - test/test_diff_deployment.rb
99
- - test/test_ftp.rb
100
- - test/test_git.git/HEAD
101
- - test/test_git.git/config
102
- - test/test_git.git/description
103
- - test/test_git.git/hooks/applypatch-msg.sample
104
- - test/test_git.git/hooks/commit-msg.sample
105
- - test/test_git.git/hooks/post-commit.sample
106
- - test/test_git.git/hooks/post-receive.sample
107
- - test/test_git.git/hooks/post-update.sample
108
- - test/test_git.git/hooks/pre-applypatch.sample
109
- - test/test_git.git/hooks/pre-commit.sample
110
- - test/test_git.git/hooks/pre-rebase.sample
111
- - test/test_git.git/hooks/prepare-commit-msg.sample
112
- - test/test_git.git/hooks/update.sample
113
- - test/test_git.git/info/exclude
114
- - test/test_git.git/objects/0c/a605e9f0f1d42ce8193ac36db11ec3cc9efc08
115
- - test/test_git.git/objects/11/bada4e36fd065c8d1d3ca97b8dffa496c8e021
116
- - test/test_git.git/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6
117
- - test/test_git.git/objects/88/d4480861346093048e08ce8dcc577d8aa69379
118
- - test/test_git.git/objects/90/2dce0535b19f0c15ac8407fc4468256ad672d7
119
- - test/test_git.git/objects/a6/394b3e8a82b76b0dd5b6b317f489dfe22426a6
120
- - test/test_git.git/objects/a6/5140d5ec9f47064f614ecf8e43776baa5c0c11
121
- - test/test_git.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
122
- - test/test_git.git/objects/ea/41dba10b54a794284e0be009a11f0ff3716a28
123
- - test/test_git.git/objects/f5/5f3c44c89e5d215fbaaef9d33563117fe0b61b
124
- - test/test_git.git/objects/ff/1f1d4bd0c99e1c9cca047c46b2194accf89504
125
- - test/test_git.git/refs/heads/master
126
- - test/test_git.rb
127
- - test/test_sftp.rb
128
- homepage: http://github.com/scttnlsn/dandelion
62
+ - lib/dandelion/workspace.rb
63
+ - spec/dandelion/adapter_spec.rb
64
+ - spec/dandelion/change_spec.rb
65
+ - spec/dandelion/changeset_spec.rb
66
+ - spec/dandelion/command/deploy_spec.rb
67
+ - spec/dandelion/command/status_spec.rb
68
+ - spec/dandelion/command_spec.rb
69
+ - spec/dandelion/config_spec.rb
70
+ - spec/dandelion/deployer_spec.rb
71
+ - spec/dandelion/diff_spec.rb
72
+ - spec/dandelion/tree_spec.rb
73
+ - spec/dandelion/workspace_spec.rb
74
+ - spec/fixtures/repo.git/HEAD
75
+ - spec/fixtures/repo.git/config
76
+ - spec/fixtures/repo.git/description
77
+ - spec/fixtures/repo.git/hooks/applypatch-msg.sample
78
+ - spec/fixtures/repo.git/hooks/commit-msg.sample
79
+ - spec/fixtures/repo.git/hooks/post-update.sample
80
+ - spec/fixtures/repo.git/hooks/pre-applypatch.sample
81
+ - spec/fixtures/repo.git/hooks/pre-commit.sample
82
+ - spec/fixtures/repo.git/hooks/pre-push.sample
83
+ - spec/fixtures/repo.git/hooks/pre-rebase.sample
84
+ - spec/fixtures/repo.git/hooks/prepare-commit-msg.sample
85
+ - spec/fixtures/repo.git/hooks/update.sample
86
+ - spec/fixtures/repo.git/info/exclude
87
+ - spec/fixtures/repo.git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99
88
+ - spec/fixtures/repo.git/objects/34/e64fe350f3ea80c989cdac7a99c2adb8574fca
89
+ - spec/fixtures/repo.git/objects/3d/9b743acb4a84dd99002d2c6f3fcf1a47e9f06b
90
+ - spec/fixtures/repo.git/objects/4e/44973d41d33bf5342037f56497efe0a9604d25
91
+ - spec/fixtures/repo.git/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6
92
+ - spec/fixtures/repo.git/objects/6c/a0f54491390579ce9438ec89c64c6b3499683a
93
+ - spec/fixtures/repo.git/objects/8a/e33865a630c5d141c8a498f0c0166ff240b433
94
+ - spec/fixtures/repo.git/objects/90/2dce0535b19f0c15ac8407fc4468256ad672d7
95
+ - spec/fixtures/repo.git/objects/c3/9af82404cc4267b1ba5f4b4437a511e0776abb
96
+ - spec/fixtures/repo.git/objects/c8/85b3f693ed6e2926971ef75680f41b318072ae
97
+ - spec/fixtures/repo.git/objects/d8/7cbcba0e2ede0752bdafc5938da35546803ba5
98
+ - spec/fixtures/repo.git/objects/e2/89ff1e2729839759dbd6fe99b6e35880910c7c
99
+ - spec/fixtures/repo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
100
+ - spec/fixtures/repo.git/objects/ea/41dba10b54a794284e0be009a11f0ff3716a28
101
+ - spec/fixtures/repo.git/objects/ee/314a31b622b027c10981acaed7903a3607dbd4
102
+ - spec/fixtures/repo.git/objects/f6/66b137794d56880bab05e8fd256713a8fccf92
103
+ - spec/fixtures/repo.git/refs/heads/master
104
+ - spec/spec_helper.rb
105
+ homepage: https://github.com/scttnlsn/dandelion
129
106
  licenses:
130
107
  - MIT
131
108
  metadata: {}
132
- post_install_message:
109
+ post_install_message: |
110
+ ! The 'dandelion' gem is installed but you may need to install additional
111
+ ! gems depending on the adapters you intend to use.
112
+ !
113
+ ! Running 'dandelion status' in your project directory will indicate which
114
+ ! additional gems need to be installed.
133
115
  rdoc_options: []
134
116
  require_paths:
135
117
  - lib
@@ -140,45 +122,55 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
122
  version: '0'
141
123
  required_rubygems_version: !ruby/object:Gem::Requirement
142
124
  requirements:
143
- - - '>='
125
+ - - '>'
144
126
  - !ruby/object:Gem::Version
145
- version: '0'
127
+ version: 1.3.1
146
128
  requirements: []
147
129
  rubyforge_project:
148
130
  rubygems_version: 2.0.14
149
131
  signing_key:
150
132
  specification_version: 4
151
- summary: dandelion-0.3.15
133
+ summary: Incremental Git repository deployment
152
134
  test_files:
153
- - test/fixtures/diff
154
- - test/fixtures/ls_tree
155
- - test/test_diff_deployment.rb
156
- - test/test_ftp.rb
157
- - test/test_git.git/HEAD
158
- - test/test_git.git/config
159
- - test/test_git.git/description
160
- - test/test_git.git/hooks/applypatch-msg.sample
161
- - test/test_git.git/hooks/commit-msg.sample
162
- - test/test_git.git/hooks/post-commit.sample
163
- - test/test_git.git/hooks/post-receive.sample
164
- - test/test_git.git/hooks/post-update.sample
165
- - test/test_git.git/hooks/pre-applypatch.sample
166
- - test/test_git.git/hooks/pre-commit.sample
167
- - test/test_git.git/hooks/pre-rebase.sample
168
- - test/test_git.git/hooks/prepare-commit-msg.sample
169
- - test/test_git.git/hooks/update.sample
170
- - test/test_git.git/info/exclude
171
- - test/test_git.git/objects/0c/a605e9f0f1d42ce8193ac36db11ec3cc9efc08
172
- - test/test_git.git/objects/11/bada4e36fd065c8d1d3ca97b8dffa496c8e021
173
- - test/test_git.git/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6
174
- - test/test_git.git/objects/88/d4480861346093048e08ce8dcc577d8aa69379
175
- - test/test_git.git/objects/90/2dce0535b19f0c15ac8407fc4468256ad672d7
176
- - test/test_git.git/objects/a6/394b3e8a82b76b0dd5b6b317f489dfe22426a6
177
- - test/test_git.git/objects/a6/5140d5ec9f47064f614ecf8e43776baa5c0c11
178
- - test/test_git.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
179
- - test/test_git.git/objects/ea/41dba10b54a794284e0be009a11f0ff3716a28
180
- - test/test_git.git/objects/f5/5f3c44c89e5d215fbaaef9d33563117fe0b61b
181
- - test/test_git.git/objects/ff/1f1d4bd0c99e1c9cca047c46b2194accf89504
182
- - test/test_git.git/refs/heads/master
183
- - test/test_git.rb
184
- - test/test_sftp.rb
135
+ - spec/dandelion/adapter_spec.rb
136
+ - spec/dandelion/change_spec.rb
137
+ - spec/dandelion/changeset_spec.rb
138
+ - spec/dandelion/command/deploy_spec.rb
139
+ - spec/dandelion/command/status_spec.rb
140
+ - spec/dandelion/command_spec.rb
141
+ - spec/dandelion/config_spec.rb
142
+ - spec/dandelion/deployer_spec.rb
143
+ - spec/dandelion/diff_spec.rb
144
+ - spec/dandelion/tree_spec.rb
145
+ - spec/dandelion/workspace_spec.rb
146
+ - spec/fixtures/repo.git/HEAD
147
+ - spec/fixtures/repo.git/config
148
+ - spec/fixtures/repo.git/description
149
+ - spec/fixtures/repo.git/hooks/applypatch-msg.sample
150
+ - spec/fixtures/repo.git/hooks/commit-msg.sample
151
+ - spec/fixtures/repo.git/hooks/post-update.sample
152
+ - spec/fixtures/repo.git/hooks/pre-applypatch.sample
153
+ - spec/fixtures/repo.git/hooks/pre-commit.sample
154
+ - spec/fixtures/repo.git/hooks/pre-push.sample
155
+ - spec/fixtures/repo.git/hooks/pre-rebase.sample
156
+ - spec/fixtures/repo.git/hooks/prepare-commit-msg.sample
157
+ - spec/fixtures/repo.git/hooks/update.sample
158
+ - spec/fixtures/repo.git/info/exclude
159
+ - spec/fixtures/repo.git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99
160
+ - spec/fixtures/repo.git/objects/34/e64fe350f3ea80c989cdac7a99c2adb8574fca
161
+ - spec/fixtures/repo.git/objects/3d/9b743acb4a84dd99002d2c6f3fcf1a47e9f06b
162
+ - spec/fixtures/repo.git/objects/4e/44973d41d33bf5342037f56497efe0a9604d25
163
+ - spec/fixtures/repo.git/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6
164
+ - spec/fixtures/repo.git/objects/6c/a0f54491390579ce9438ec89c64c6b3499683a
165
+ - spec/fixtures/repo.git/objects/8a/e33865a630c5d141c8a498f0c0166ff240b433
166
+ - spec/fixtures/repo.git/objects/90/2dce0535b19f0c15ac8407fc4468256ad672d7
167
+ - spec/fixtures/repo.git/objects/c3/9af82404cc4267b1ba5f4b4437a511e0776abb
168
+ - spec/fixtures/repo.git/objects/c8/85b3f693ed6e2926971ef75680f41b318072ae
169
+ - spec/fixtures/repo.git/objects/d8/7cbcba0e2ede0752bdafc5938da35546803ba5
170
+ - spec/fixtures/repo.git/objects/e2/89ff1e2729839759dbd6fe99b6e35880910c7c
171
+ - spec/fixtures/repo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
172
+ - spec/fixtures/repo.git/objects/ea/41dba10b54a794284e0be009a11f0ff3716a28
173
+ - spec/fixtures/repo.git/objects/ee/314a31b622b027c10981acaed7903a3607dbd4
174
+ - spec/fixtures/repo.git/objects/f6/66b137794d56880bab05e8fd256713a8fccf92
175
+ - spec/fixtures/repo.git/refs/heads/master
176
+ - spec/spec_helper.rb
@@ -1,73 +0,0 @@
1
- require 'dandelion/command'
2
-
3
- module Dandelion
4
- class Application
5
- class << self
6
- def execute(args)
7
- new(args).execute
8
- end
9
- end
10
-
11
- def initialize(args)
12
- @args = args
13
- @options = {}
14
- @parser = OptionParser.new
15
- end
16
-
17
- def execute
18
- global = Command::Base.parser(@options)
19
- parse(global)
20
-
21
- begin
22
- name = @args.shift
23
- command = Command::Base.create(name)
24
- parse(command.parser(@options))
25
- rescue Command::InvalidCommandError
26
- log.fatal("Invalid command: #{name}")
27
- log.fatal(global.help)
28
- log.fatal("Available commands:")
29
- log.fatal(Command::Base.commands.map { |name| " #{name}" }.join("\n"))
30
- exit 1
31
- end
32
-
33
- prepare
34
- validate
35
-
36
- command.new(@options) do |cmd|
37
- cmd.setup(@args) if cmd.respond_to?(:setup)
38
- cmd.execute
39
- end
40
- end
41
-
42
- def log
43
- Dandelion.logger
44
- end
45
-
46
- private
47
-
48
- def parse(parser)
49
- begin
50
- parser.order!(@args)
51
- rescue OptionParser::InvalidOption => e
52
- log.fatal(e.to_s.capitalize)
53
- log.fatal(parser.help)
54
- exit 1
55
- end
56
- end
57
-
58
- def prepare
59
- @options[:config] ||= File.join(@options[:repo], 'dandelion.yml')
60
- end
61
-
62
- def validate
63
- unless File.exists?(File.join(@options[:repo], '.git'))
64
- log.fatal("Not a git repository: #{@options[:repo]}")
65
- exit 1
66
- end
67
- unless File.exists?(@options[:config])
68
- log.fatal("Could not find file: #{@options[:config]}")
69
- exit 1
70
- end
71
- end
72
- end
73
- end