repo_manager 0.7.1
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.
- data/.gemfiles +115 -0
- data/.gitattributes +1 -0
- data/.gitignore +7 -0
- data/.rspec +3 -0
- data/.yardopts +11 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +99 -0
- data/Guardfile +63 -0
- data/HISTORY.markdown +12 -0
- data/LICENSE +20 -0
- data/README.markdown +192 -0
- data/Rakefile +94 -0
- data/TODO.markdown +15 -0
- data/VERSION +1 -0
- data/bin/repo +151 -0
- data/cucumber.yml +28 -0
- data/examples/pc_saved_game_backup/.gitignore +2 -0
- data/examples/pc_saved_game_backup/INSTALL.markdown +420 -0
- data/examples/pc_saved_game_backup/README.markdown +108 -0
- data/examples/pc_saved_game_backup/remote/.gitignore +2 -0
- data/examples/pc_saved_game_backup/repo_manager/Gemfile +12 -0
- data/examples/pc_saved_game_backup/repo_manager/Gemfile.lock +66 -0
- data/examples/pc_saved_game_backup/repo_manager/assets/.gitignore +2 -0
- data/examples/pc_saved_game_backup/repo_manager/features/support/aruba.rb +15 -0
- data/examples/pc_saved_game_backup/repo_manager/features/support/env.rb +11 -0
- data/examples/pc_saved_game_backup/repo_manager/features/support/steps.rb +3 -0
- data/examples/pc_saved_game_backup/repo_manager/features/tasks/update.feature +144 -0
- data/examples/pc_saved_game_backup/repo_manager/global/default/asset.conf +2 -0
- data/examples/pc_saved_game_backup/repo_manager/repo.conf +64 -0
- data/examples/pc_saved_game_backup/repo_manager/tasks/.gitignore +0 -0
- data/examples/pc_saved_game_backup/repo_manager/tasks/remote.rb +57 -0
- data/examples/pc_saved_game_backup/repo_manager/tasks/update.rb +65 -0
- data/examples/pc_saved_game_backup/saved_games/hearts/save1 +1 -0
- data/examples/pc_saved_game_backup/saved_games/hearts/save2 +1 -0
- data/examples/pc_saved_game_backup/saved_games/mines/my_profile.ini +1 -0
- data/examples/pc_saved_game_backup/saved_games/mines/saves/save1 +1 -0
- data/examples/pc_saved_game_backup/saved_games/mines/saves/save2 +1 -0
- data/features/actions/git.feature +296 -0
- data/features/actions/help.feature +53 -0
- data/features/actions/list.feature +624 -0
- data/features/actions/path.feature +195 -0
- data/features/actions/status.feature +261 -0
- data/features/actions/task.feature +127 -0
- data/features/assets/configuration.feature +204 -0
- data/features/assets/rendering.feature +42 -0
- data/features/assets/user_attributes.feature +98 -0
- data/features/bin.feature +42 -0
- data/features/logger.feature +218 -0
- data/features/settings.feature +240 -0
- data/features/support/aruba.rb +15 -0
- data/features/support/env.rb +11 -0
- data/features/support/steps.rb +3 -0
- data/features/tasks/add/asset.feature +178 -0
- data/features/tasks/generate/init.feature +56 -0
- data/lib/repo_manager.rb +36 -0
- data/lib/repo_manager/actions.rb +8 -0
- data/lib/repo_manager/actions/action_helper.rb +39 -0
- data/lib/repo_manager/actions/app_action.rb +30 -0
- data/lib/repo_manager/actions/base_action.rb +296 -0
- data/lib/repo_manager/actions/git_action.rb +113 -0
- data/lib/repo_manager/actions/help_action.rb +52 -0
- data/lib/repo_manager/actions/list_action.rb +123 -0
- data/lib/repo_manager/actions/path_action.rb +22 -0
- data/lib/repo_manager/actions/status_action.rb +192 -0
- data/lib/repo_manager/actions/task_action.rb +71 -0
- data/lib/repo_manager/app.rb +116 -0
- data/lib/repo_manager/assets.rb +3 -0
- data/lib/repo_manager/assets/app_asset.rb +15 -0
- data/lib/repo_manager/assets/asset_accessors.rb +67 -0
- data/lib/repo_manager/assets/asset_configuration.rb +137 -0
- data/lib/repo_manager/assets/asset_manager.rb +72 -0
- data/lib/repo_manager/assets/base_asset.rb +199 -0
- data/lib/repo_manager/assets/repo_asset.rb +30 -0
- data/lib/repo_manager/core.rb +2 -0
- data/lib/repo_manager/core/array.rb +21 -0
- data/lib/repo_manager/core/hash.rb +83 -0
- data/lib/repo_manager/errors.rb +10 -0
- data/lib/repo_manager/extensions/hash.rb +86 -0
- data/lib/repo_manager/git.rb +2 -0
- data/lib/repo_manager/git/lib.rb +69 -0
- data/lib/repo_manager/git/status.rb +196 -0
- data/lib/repo_manager/logger.rb +39 -0
- data/lib/repo_manager/settings.rb +98 -0
- data/lib/repo_manager/tasks.rb +3 -0
- data/lib/repo_manager/tasks/add/asset.rb +213 -0
- data/lib/repo_manager/tasks/generate/init.rb +42 -0
- data/lib/repo_manager/tasks/generate/templates/config/repo.conf.tt +61 -0
- data/lib/repo_manager/tasks/generate/templates/init/assets/.gitignore +0 -0
- data/lib/repo_manager/tasks/generate/templates/init/global/default/asset.conf +2 -0
- data/lib/repo_manager/tasks/generate/templates/init/tasks/.gitignore +0 -0
- data/lib/repo_manager/tasks/task_manager.rb +166 -0
- data/lib/repo_manager/tasks/thor_helper.rb +29 -0
- data/lib/repo_manager/test/asset_steps.rb +19 -0
- data/lib/repo_manager/test/base_steps.rb +152 -0
- data/lib/repo_manager/test/repo_api.rb +41 -0
- data/lib/repo_manager/test/repo_steps.rb +83 -0
- data/lib/repo_manager/test/test_api.rb +88 -0
- data/lib/repo_manager/views.rb +2 -0
- data/lib/repo_manager/views/app_view.rb +15 -0
- data/lib/repo_manager/views/base_view.rb +137 -0
- data/lib/repo_manager/views/templates/css/basic.css +26 -0
- data/lib/repo_manager/views/templates/default.erb +40 -0
- data/lib/repo_manager/views/templates/default.slim +37 -0
- data/lib/repo_manager/views/view_helper.rb +55 -0
- data/repo_manager.gemspec +75 -0
- data/spec/basic_app/actions/action_helper_spec.rb +54 -0
- data/spec/basic_app/assets/base_asset_spec.rb +210 -0
- data/spec/basic_app/core_spec.rb +78 -0
- data/spec/basic_app/settings_spec.rb +64 -0
- data/spec/basic_app/views/view_helper_spec.rb +28 -0
- data/spec/basic_gem/aruba_helper_spec.rb +33 -0
- data/spec/basic_gem/basic_gem_spec.rb +84 -0
- data/spec/basic_gem/gemspec_spec.rb +68 -0
- data/spec/repo_manager/git_spec.rb +31 -0
- data/spec/spec_helper.rb +25 -0
- metadata +472 -0
File without changes
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module RepoManager
|
4
|
+
|
5
|
+
class Generate < Thor
|
6
|
+
|
7
|
+
# full path to the remote folder
|
8
|
+
REMOTE = File.expand_path('remote')
|
9
|
+
|
10
|
+
# Create, add, and commit the contents of the current working directory and
|
11
|
+
# then push it to a predefined remote folder
|
12
|
+
#
|
13
|
+
# @example From the repo working
|
14
|
+
#
|
15
|
+
# cd ~/my_repo_name
|
16
|
+
# repo generate:remote my_repo_name
|
17
|
+
#
|
18
|
+
# @example Specify the path to the working folder
|
19
|
+
#
|
20
|
+
# repo generate:remote my_repo_name --path=/path/to/my_repo_name
|
21
|
+
|
22
|
+
method_option :remote, :type => :string, :desc => "remote folder or git host, defaults to '#{REMOTE}'"
|
23
|
+
method_option :path, :type => :string, :desc => "path to working folder, defaults to CWD"
|
24
|
+
|
25
|
+
desc "remote REPO_NAME", "init a git repo in CWD and push to remote '#{REMOTE}'"
|
26
|
+
def remote(name)
|
27
|
+
path = options[:path] || FileUtils.pwd
|
28
|
+
remote = options[:remote] || "#{File.join(REMOTE, name + '.git')}"
|
29
|
+
|
30
|
+
Dir.chdir path do
|
31
|
+
run("git init")
|
32
|
+
|
33
|
+
# core config with windows in mind but works fine on POSIX
|
34
|
+
run("git config core.autocrlf false")
|
35
|
+
run("git config core.filemode false")
|
36
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
37
|
+
|
38
|
+
# add everthing and commit
|
39
|
+
run("git add .")
|
40
|
+
run("git commit --message #{shell_quote('initial commit')}")
|
41
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
42
|
+
|
43
|
+
# remove old origin first, if it exists
|
44
|
+
run("git remote add origin #{remote}")
|
45
|
+
run("git config branch.master.remote origin")
|
46
|
+
run("git config branch.master.merge refs/heads/master")
|
47
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
48
|
+
end
|
49
|
+
|
50
|
+
run("git clone --bare #{shell_quote(path)} #{remote}")
|
51
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
52
|
+
|
53
|
+
say "init done on '#{name}'", :green
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# @see features/tasks/action.feature
|
2
|
+
module RepoManager
|
3
|
+
class Action < Thor
|
4
|
+
namespace :action
|
5
|
+
include Thor::Actions
|
6
|
+
include RepoManager::ThorHelper
|
7
|
+
|
8
|
+
class_option :force, :type => :boolean, :desc => "Force overwrite and answer 'yes' to any prompts"
|
9
|
+
|
10
|
+
method_option :repos, :type => :string, :desc => "Restrict update to comma delimited list of repo names", :banner => "repo1,repo2"
|
11
|
+
method_option :message, :type => :string, :desc => "Override 'automatic commit' message"
|
12
|
+
method_option 'no-push', :type => :boolean, :default => false, :desc => "Force overwrite of existing config file"
|
13
|
+
|
14
|
+
desc "update", "run repo add -A, repo commit, and repo push on all modified repos"
|
15
|
+
def update
|
16
|
+
|
17
|
+
initial_filter = options[:repos] ? "--repos=#{options[:repos]}" : ""
|
18
|
+
output = run("repo status --short --unmodified=HIDE --no-verbose --no-color #{initial_filter}", :capture => true)
|
19
|
+
|
20
|
+
case $?.exitstatus
|
21
|
+
when 0
|
22
|
+
say 'no changed repos', :green
|
23
|
+
else
|
24
|
+
|
25
|
+
unless output
|
26
|
+
say "failed to successfully run 'repo status'", :red
|
27
|
+
exit $?.exitstatus
|
28
|
+
end
|
29
|
+
|
30
|
+
repos = []
|
31
|
+
output = output.split("\n")
|
32
|
+
while line = output.shift
|
33
|
+
st,repo = line.split("\t")
|
34
|
+
repos << repo
|
35
|
+
end
|
36
|
+
filter = repos.join(',')
|
37
|
+
|
38
|
+
unless options[:force]
|
39
|
+
say "Repo(s) '#{filter}' have changed."
|
40
|
+
unless ask("Add, commit and push them? (y/n)") == 'y'
|
41
|
+
say "aborting"
|
42
|
+
exit 0
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
say "updating #{filter}"
|
47
|
+
|
48
|
+
run "repo add -A --no-verbose --repos #{filter}"
|
49
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
50
|
+
|
51
|
+
commit_message = options[:message] || "automatic commit @ #{Time.now}"
|
52
|
+
run "repo commit --message=#{shell_quote(commit_message)} --no-verbose --repos #{filter}"
|
53
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
54
|
+
|
55
|
+
unless options['no-push']
|
56
|
+
run "repo push --no-verbose --repos #{filter}"
|
57
|
+
exit $?.exitstatus if ($?.exitstatus > 1)
|
58
|
+
end
|
59
|
+
|
60
|
+
say "update finished", :green
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy save
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy save
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy profile data
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy save
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy save
|
@@ -0,0 +1,296 @@
|
|
1
|
+
@announce
|
2
|
+
Feature: Running an arbitrary git command
|
3
|
+
|
4
|
+
The application should run an arbitrary git command echoing output and
|
5
|
+
collecting status result codes. RepoManager provides alternatives to some of the
|
6
|
+
git commands. For example, RepoManager has its own status command that provides
|
7
|
+
summary information. To use the native command, you must place the arg 'git'
|
8
|
+
in front of the status command.
|
9
|
+
|
10
|
+
Example:
|
11
|
+
|
12
|
+
Run the native Git status command
|
13
|
+
|
14
|
+
repo git status -v
|
15
|
+
|
16
|
+
Run RepoManager version of the status command
|
17
|
+
|
18
|
+
repo status -v
|
19
|
+
|
20
|
+
Add and commit all
|
21
|
+
|
22
|
+
repo add .
|
23
|
+
repo commit -m "automatic add and commit"
|
24
|
+
|
25
|
+
Since there is no RepoManager version of the 'ls-files' command, these command
|
26
|
+
lines are equivalent:
|
27
|
+
|
28
|
+
repo git ls-files --others --ignored -v
|
29
|
+
repo ls-files --others --ignored -v
|
30
|
+
|
31
|
+
These command lines are also equivalent, note the alias for '--filter' is '--repos':
|
32
|
+
|
33
|
+
repo add . --filter=test
|
34
|
+
repo git add . --filter=test
|
35
|
+
repo git add . --repos=test
|
36
|
+
|
37
|
+
Git native commands do not allow any args that match exactly to a repo name
|
38
|
+
unless a filter is specified or args=0. Example, if 'screenshots' is a
|
39
|
+
repo name:
|
40
|
+
|
41
|
+
repo push # OK
|
42
|
+
repo push screenshots # error
|
43
|
+
repo git push screenshots # error
|
44
|
+
repo push -r screenshots # OK
|
45
|
+
repo git push -r screenshots # OK
|
46
|
+
|
47
|
+
Short formatted log information
|
48
|
+
|
49
|
+
repo git log -1 --pretty=format:"%h committed %cr"
|
50
|
+
|
51
|
+
Background: A valid config file
|
52
|
+
Given a file named "repo.conf" with:
|
53
|
+
"""
|
54
|
+
---
|
55
|
+
folders:
|
56
|
+
assets : repo_assets
|
57
|
+
commands:
|
58
|
+
- diff
|
59
|
+
- grep
|
60
|
+
- log
|
61
|
+
- ls-files
|
62
|
+
- show
|
63
|
+
- status
|
64
|
+
- add
|
65
|
+
- commit
|
66
|
+
"""
|
67
|
+
And a repo in folder "test_path_1" with the following:
|
68
|
+
| filename | status | content |
|
69
|
+
| .gitignore | C | |
|
70
|
+
And a repo in folder "test_path_2" with the following:
|
71
|
+
| filename | status | content |
|
72
|
+
| .gitignore | C | |
|
73
|
+
And the folder "repo_assets" with the following asset configurations:
|
74
|
+
| name | path |
|
75
|
+
| test1 | test_path_1 |
|
76
|
+
| test2 | test_path_2 |
|
77
|
+
|
78
|
+
Scenario: Missing all run arguments
|
79
|
+
When I run `repo git`
|
80
|
+
Then the exit status should be 1
|
81
|
+
And the output should contain:
|
82
|
+
"""
|
83
|
+
no git command given
|
84
|
+
"""
|
85
|
+
|
86
|
+
Scenario: Run 'git ls-files' on each repo
|
87
|
+
When I run `repo git ls-files`
|
88
|
+
Then the exit status should be 0
|
89
|
+
And the output should contain:
|
90
|
+
"""
|
91
|
+
test1
|
92
|
+
.gitignore
|
93
|
+
test2
|
94
|
+
.gitignore
|
95
|
+
"""
|
96
|
+
|
97
|
+
Scenario: Run 'ls-files' on each repo, 'git' is an optional first argument
|
98
|
+
When I run `repo ls-files`
|
99
|
+
Then the exit status should be 0
|
100
|
+
And the output should contain:
|
101
|
+
"""
|
102
|
+
test1
|
103
|
+
.gitignore
|
104
|
+
test2
|
105
|
+
.gitignore
|
106
|
+
"""
|
107
|
+
|
108
|
+
Scenario: Run 'ls-files' on each repo using a filter
|
109
|
+
When I run `repo --verbose ls-files --repos=test1`
|
110
|
+
Then the exit status should be 0
|
111
|
+
And the output should contain:
|
112
|
+
"""
|
113
|
+
test1
|
114
|
+
.gitignore
|
115
|
+
"""
|
116
|
+
And the output should not contain:
|
117
|
+
"""
|
118
|
+
test2
|
119
|
+
.gitignore
|
120
|
+
"""
|
121
|
+
|
122
|
+
Scenario: Run 'ls-files' using a repo name as an argument with no filter
|
123
|
+
supplied (failure)
|
124
|
+
When I run `repo ls-files test1`
|
125
|
+
Then the exit status should be 1
|
126
|
+
And the output should contain:
|
127
|
+
"""
|
128
|
+
'test1' cannot be used as a filter
|
129
|
+
"""
|
130
|
+
|
131
|
+
Scenario: Run 'git ls-files' using a repo name as an argument with no filter
|
132
|
+
supplied (failure)
|
133
|
+
When I run `repo git ls-files test1`
|
134
|
+
Then the exit status should be 1
|
135
|
+
And the output should contain:
|
136
|
+
"""
|
137
|
+
'test1' cannot be used as a filter
|
138
|
+
"""
|
139
|
+
|
140
|
+
Scenario: Run 'git ls-files' using argument that is not a repo name with no
|
141
|
+
filter supplied (success)
|
142
|
+
When I run `repo git ls-files .gitignore`
|
143
|
+
Then the exit status should be 0
|
144
|
+
|
145
|
+
Scenario: Run 'git status' on each repo with no changes
|
146
|
+
When I run `repo git status`
|
147
|
+
Then the exit status should be 0
|
148
|
+
And the output should contain:
|
149
|
+
"""
|
150
|
+
test1
|
151
|
+
# On branch master
|
152
|
+
nothing to commit (working directory clean)
|
153
|
+
test2
|
154
|
+
# On branch master
|
155
|
+
nothing to commit (working directory clean)
|
156
|
+
"""
|
157
|
+
|
158
|
+
Scenario: Run 'git status --porcelain' on each repo with no changes shows nothing on stdout
|
159
|
+
When I run `repo git status --porcelain`
|
160
|
+
Then the exit status should be 0
|
161
|
+
And the output should not contain:
|
162
|
+
"""
|
163
|
+
test1: test_path_1
|
164
|
+
"""
|
165
|
+
And the output should not contain:
|
166
|
+
"""
|
167
|
+
test2: test_path_2
|
168
|
+
"""
|
169
|
+
|
170
|
+
Scenario: Run native 'git status' on each repo with uncommited change
|
171
|
+
Given a repo in folder "test_path_1" with the following:
|
172
|
+
| filename | status | content |
|
173
|
+
| .gitignore | M | tmp/* |
|
174
|
+
When I run `repo --verbose git status --porcelain`
|
175
|
+
Then the exit status should be 0
|
176
|
+
And the output should contain:
|
177
|
+
"""
|
178
|
+
test1
|
179
|
+
M .gitignore
|
180
|
+
"""
|
181
|
+
|
182
|
+
Scenario: Run native git status command on an invalid repo
|
183
|
+
Given the folder "repo_assets" with the following asset configurations:
|
184
|
+
| name | path |
|
185
|
+
| test1 | test_path_1 |
|
186
|
+
| test2 | test_path_2 |
|
187
|
+
| bad_repo | not_a_repo |
|
188
|
+
And a directory named "not_a_repo"
|
189
|
+
When I run `repo git status --porcelain --repos=test1,test2,bad_repo`
|
190
|
+
Then the exit status should be 128
|
191
|
+
And the output should contain:
|
192
|
+
"""
|
193
|
+
bad_repo
|
194
|
+
fatal: Not a git repository
|
195
|
+
"""
|
196
|
+
|
197
|
+
Scenario: Run RepoManager status command on an invalid repo
|
198
|
+
Given the folder "repo_assets" with the following asset configurations:
|
199
|
+
| name | path |
|
200
|
+
| test1 | test_path_1 |
|
201
|
+
| test2 | test_path_2 |
|
202
|
+
| bad_repo | not_a_repo |
|
203
|
+
And a directory named "not_a_repo"
|
204
|
+
When I run `repo status --repos=test1,bad_repo --unmodified=SHOW --no-verbose`
|
205
|
+
Then the exit status should be 2
|
206
|
+
And the normalized output should contain:
|
207
|
+
"""
|
208
|
+
I bad_repo: ./not_a_repo [not a valid repo]
|
209
|
+
test1
|
210
|
+
"""
|
211
|
+
|
212
|
+
Scenario: Native and repo_manager status command missing repo folder has different
|
213
|
+
exit status values
|
214
|
+
Given the folder "repo_assets" with the following asset configurations:
|
215
|
+
| name | path |
|
216
|
+
| bad_repo | bad_repo_path |
|
217
|
+
When I run `repo git status --filter=bad_repo --unmodified DOTS --no-verbose`
|
218
|
+
Then the exit status should be 0
|
219
|
+
And the output should contain exactly:
|
220
|
+
"""
|
221
|
+
bad_repo: ./bad_repo_path [no such path]
|
222
|
+
|
223
|
+
"""
|
224
|
+
When I run `repo status --filter=bad_repo --unmodified DOTS --no-verbose`
|
225
|
+
Then the exit status should be 1
|
226
|
+
|
227
|
+
Scenario: Folders with spaces in path
|
228
|
+
Given a file named "repo1.conf" with:
|
229
|
+
"""
|
230
|
+
---
|
231
|
+
folders:
|
232
|
+
assets : assets1
|
233
|
+
"""
|
234
|
+
And a repo in folder "test 1/test path 1" with the following:
|
235
|
+
| filename | status | content |
|
236
|
+
| testfile 1.txt | CM | something |
|
237
|
+
And the folder "assets1" with the following asset configurations:
|
238
|
+
| name | path |
|
239
|
+
| test1 | test 1/test path 1 |
|
240
|
+
| test2 | test_path_2 |
|
241
|
+
When I run `repo git ls-files --config=repo1.conf`
|
242
|
+
Then the exit status should be 0
|
243
|
+
And the output should contain:
|
244
|
+
"""
|
245
|
+
test1
|
246
|
+
testfile 1.txt
|
247
|
+
test2
|
248
|
+
.gitignore
|
249
|
+
"""
|
250
|
+
|
251
|
+
Scenario: Git 'add' on a repo with uncommited change
|
252
|
+
Given a repo in folder "test_path_1" with the following:
|
253
|
+
| filename | status | content |
|
254
|
+
| .gitignore | M | tmp/* |
|
255
|
+
When I run `repo add . --repo test1`
|
256
|
+
Then the exit status should be 0
|
257
|
+
And the output should not contain:
|
258
|
+
"""
|
259
|
+
test1: test_path_1
|
260
|
+
"""
|
261
|
+
|
262
|
+
Scenario: Git 'commit' on a repo with an added file
|
263
|
+
Given a repo in folder "test_path_1" with the following:
|
264
|
+
| filename | status | content |
|
265
|
+
| new_stuff.txt | A | tmp/* |
|
266
|
+
When I run `repo commit -m 'automatic commit via repo_manager' --repos test1`
|
267
|
+
Then the exit status should be 0
|
268
|
+
And the output should contain:
|
269
|
+
"""
|
270
|
+
1 files changed, 1 insertions(+), 0 deletions(-)
|
271
|
+
"""
|
272
|
+
|
273
|
+
Scenario: Running a git command that is not whitelisted
|
274
|
+
Given a file named "repo.conf" with:
|
275
|
+
"""
|
276
|
+
---
|
277
|
+
folders:
|
278
|
+
assets : repo_assets
|
279
|
+
commands:
|
280
|
+
- diff
|
281
|
+
- grep
|
282
|
+
- log
|
283
|
+
"""
|
284
|
+
And a repo in folder "test_path_1" with the following:
|
285
|
+
| filename | status | content |
|
286
|
+
| new_stuff.txt | A | tmp/* |
|
287
|
+
When I run `repo commit -m 'automatic commit via repo_manager' --repos test1`
|
288
|
+
Then the exit status should be 1
|
289
|
+
And the output should not contain:
|
290
|
+
"""
|
291
|
+
1 files changed, 1 insertions(+), 0 deletions(-)
|
292
|
+
"""
|
293
|
+
And the output should contain:
|
294
|
+
"""
|
295
|
+
repo failed: git command 'commit' is not enabled
|
296
|
+
"""
|
@@ -0,0 +1,53 @@
|
|
1
|
+
Feature: Show help on actions
|
2
|
+
|
3
|
+
Show action specific help to STDOUT for a given action
|
4
|
+
|
5
|
+
Example usage:
|
6
|
+
|
7
|
+
repo help list
|
8
|
+
repo help task
|
9
|
+
repo help help
|
10
|
+
|
11
|
+
Notes
|
12
|
+
|
13
|
+
* abbreviated help general app help is available via the --help option
|
14
|
+
|
15
|
+
Background: Empty configuration file so that we don't read global config locations
|
16
|
+
Given an empty file named "repo.conf"
|
17
|
+
|
18
|
+
Scenario Outline: Valid action, help available
|
19
|
+
When I run `repo help <action>`
|
20
|
+
Then the exit status should be 0
|
21
|
+
And its output should match:
|
22
|
+
"""
|
23
|
+
Usage: repo.* <action>
|
24
|
+
"""
|
25
|
+
And its output should match:
|
26
|
+
"""
|
27
|
+
Options:
|
28
|
+
"""
|
29
|
+
|
30
|
+
Examples:
|
31
|
+
| action |
|
32
|
+
| help |
|
33
|
+
| list |
|
34
|
+
| task |
|
35
|
+
| git |
|
36
|
+
| path |
|
37
|
+
| status |
|
38
|
+
|
39
|
+
Scenario: Missing action
|
40
|
+
When I run `repo help`
|
41
|
+
Then the exit status should be 0
|
42
|
+
And the output should contain:
|
43
|
+
"""
|
44
|
+
no action specified
|
45
|
+
"""
|
46
|
+
|
47
|
+
Scenario: Invalid action
|
48
|
+
When I run `repo help badaction`
|
49
|
+
Then the exit status should be 0
|
50
|
+
And the output should contain:
|
51
|
+
"""
|
52
|
+
invalid help action
|
53
|
+
"""
|