gritano 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gritano/database.yml +2 -0
- data/{tmp → .ssh}/.gitignore +1 -1
- data/README.rdoc +3 -3
- data/Rakefile +2 -2
- data/TODO +3 -1
- data/VERSION +1 -1
- data/bin/gritano +1 -96
- data/bin/gritano-check +1 -46
- data/features/cli.feature +183 -0
- data/features/console.feature +16 -0
- data/features/data/help-check.txt +13 -0
- data/features/data/help-test.txt +27 -0
- data/features/data/help.txt +27 -0
- data/features/help.feature +9 -0
- data/features/ssh.feature +150 -0
- data/features/step_definitions/cli_steps.rb +71 -0
- data/features/step_definitions/console_step.rb +28 -3
- data/features/step_definitions/help.rb +9 -0
- data/features/step_definitions/ssh_steps.rb +35 -0
- data/features/support/env.rb +4 -2
- data/gritano.gemspec +23 -10
- data/lib/gritano.rb +1 -1
- data/lib/gritano/cli.rb +33 -0
- data/lib/gritano/console.rb +18 -235
- data/lib/gritano/console/base.rb +74 -0
- data/lib/gritano/console/check.rb +83 -0
- data/lib/gritano/console/executor.rb +246 -0
- data/lib/gritano/console/gritano.rb +35 -0
- data/lib/gritano/console/installer.rb +37 -0
- data/spec/{console_spec.rb → executor_spec.rb} +24 -19
- data/spec/gritano_spec.rb +20 -0
- data/spec/installer_spec.rb +23 -0
- data/spec/spec_helper.rb +1 -1
- metadata +23 -10
- data/db/database.yml +0 -2
- data/features/command.feature +0 -32
- data/features/step_definitions/command_step.rb +0 -9
- data/lib/gritano/command.rb +0 -24
- data/spec/command_spec.rb +0 -41
data/{tmp → .ssh}/.gitignore
RENAMED
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Gritano v0.
|
1
|
+
= Gritano v0.5.0
|
2
2
|
|
3
3
|
Gritano is the simplest way to configure a git server over ssh. You can create repositories and manage user access using this practical tool.
|
4
4
|
|
@@ -17,7 +17,7 @@ If you are using a previous version, you should update your instalation:
|
|
17
17
|
|
18
18
|
$ gem install gritano
|
19
19
|
|
20
|
-
$ gritano
|
20
|
+
$ gritano setup:install
|
21
21
|
|
22
22
|
== Usage
|
23
23
|
|
@@ -25,7 +25,7 @@ First of all you should create a git user who will be responsible for store and
|
|
25
25
|
|
26
26
|
All you need to do to set up Gritano is
|
27
27
|
|
28
|
-
$ gritano install
|
28
|
+
$ gritano setup:prepare && gritano setup:install
|
29
29
|
|
30
30
|
After that you can add users:
|
31
31
|
|
data/Rakefile
CHANGED
@@ -56,7 +56,7 @@ require 'yaml'
|
|
56
56
|
namespace :db do
|
57
57
|
desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
|
58
58
|
task :migrate do
|
59
|
-
ActiveRecord::Base.establish_connection(YAML::load(File.open('
|
59
|
+
ActiveRecord::Base.establish_connection(YAML::load(File.open('.gritano/database.yml')))
|
60
60
|
ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
|
61
61
|
end
|
62
|
-
end
|
62
|
+
end
|
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/bin/gritano
CHANGED
@@ -4,99 +4,4 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
4
4
|
|
5
5
|
require 'gritano'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
def help
|
10
|
-
puts "
|
11
|
-
gritano [command] parameters
|
12
|
-
|
13
|
-
Examples:
|
14
|
-
gritano install
|
15
|
-
gritano update
|
16
|
-
gritano user:add username
|
17
|
-
gritano user:rm username
|
18
|
-
gritano user:key:add username keyname < key.pub
|
19
|
-
gritano user:key:rm username keyname
|
20
|
-
gritano user:admin:add username
|
21
|
-
gritano user:admin:rm username
|
22
|
-
gritano user:list
|
23
|
-
gritano user:key:list username
|
24
|
-
gritano user:repo:list username
|
25
|
-
gritano repo:add reponame.git
|
26
|
-
gritano repo:add reponame.git user1 user2 user3
|
27
|
-
gritano repo:rm reponame.git
|
28
|
-
gritano repo:read:add reponame.git username
|
29
|
-
gritano repo:write:add reponame.git username
|
30
|
-
gritano repo:read:rm reponame.git username
|
31
|
-
gritano repo:write:rm reponame.git username
|
32
|
-
gritano repo:list
|
33
|
-
gritano repo:user:list reponame.git
|
34
|
-
|
35
|
-
--
|
36
|
-
v#{File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')).readlines.join}"
|
37
|
-
end
|
38
|
-
|
39
|
-
def migrate
|
40
|
-
ActiveRecord::Base.establish_connection(YAML::load(File.open(File.join(Etc.getpwuid.dir, '.gritano', 'database.yml'))))
|
41
|
-
ActiveRecord::Migrator.migrate(File.join(File.dirname(__FILE__),'../db/migrate'), ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
|
42
|
-
end
|
43
|
-
|
44
|
-
def install
|
45
|
-
Dir.mkdir(File.join(Etc.getpwuid.dir, '.gritano')) unless File.exist?(File.join(Etc.getpwuid.dir, '.gritano'))
|
46
|
-
Dir.mkdir(File.join(Etc.getpwuid.dir, '.ssh')) unless File.exist?(File.join(Etc.getpwuid.dir, '.ssh'))
|
47
|
-
File.open(File.join(Etc.getpwuid.dir, '.gritano', 'database.yml'), "w") do |f|
|
48
|
-
f.write("adapter: sqlite3\ndatabase: #{File.join(Etc.getpwuid.dir, '.gritano', 'database.db')}\n")
|
49
|
-
end
|
50
|
-
FileUtils.rm(File.join(Etc.getpwuid.dir, '.gritano', 'database.db')) if File.exist?(File.join(Etc.getpwuid.dir, '.gritano', 'database.db'))
|
51
|
-
migrate
|
52
|
-
end
|
53
|
-
|
54
|
-
def version
|
55
|
-
puts "v#{File.open(File.join(File.dirname(__FILE__),'../VERSION')).readlines.join}"
|
56
|
-
end
|
57
|
-
|
58
|
-
def check_git
|
59
|
-
if `which git` == ""
|
60
|
-
puts "Error: git must be installed on the local system"
|
61
|
-
exit
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def check_gritano
|
66
|
-
unless File.exist?(File.join(Etc.getpwuid.dir, '.gritano'))
|
67
|
-
puts "Error: First run 'gritano install'"
|
68
|
-
exit
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
check_git
|
73
|
-
if ARGV.length == 0
|
74
|
-
help
|
75
|
-
else
|
76
|
-
|
77
|
-
if ARGV[0] =='install'
|
78
|
-
install
|
79
|
-
elsif ARGV[0] =='update'
|
80
|
-
migrate
|
81
|
-
elsif ARGV[0] =='version'
|
82
|
-
version
|
83
|
-
elsif ARGV[0] =='help'
|
84
|
-
help
|
85
|
-
else
|
86
|
-
check_gritano
|
87
|
-
ActiveRecord::Base.establish_connection(YAML::load(File.open(File.join(Etc.getpwuid.dir, '.gritano', 'database.yml'))))
|
88
|
-
console = Gritano::Console.new(STDIN)
|
89
|
-
console.repo_path = Etc.getpwuid.dir
|
90
|
-
console.ssh_path = File.join(Etc.getpwuid.dir, '.ssh')
|
91
|
-
begin
|
92
|
-
cmd_return = console.execute(ARGV)
|
93
|
-
if cmd_return[0]
|
94
|
-
puts "#{cmd_return[1]}"
|
95
|
-
else
|
96
|
-
puts "error: #{cmd_return[1]}"
|
97
|
-
end
|
98
|
-
rescue NoMethodError
|
99
|
-
puts help
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
7
|
+
puts Gritano::CLI::execute(ARGV)
|
data/bin/gritano-check
CHANGED
@@ -1,51 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
2
|
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
4
3
|
|
5
4
|
require 'gritano'
|
6
5
|
|
7
|
-
|
8
|
-
puts "
|
9
|
-
ssh user@host command
|
10
|
-
|
11
|
-
Examples:
|
12
|
-
ssh git@host.com repo:list
|
13
|
-
ssh git@host.com key:list
|
14
|
-
ssh git@host.com key:add keyname < key.pub
|
15
|
-
ssh git@host.com key:rm keyname
|
16
|
-
ssh git@host.com admin:help
|
17
|
-
|
18
|
-
--
|
19
|
-
v#{File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')).readlines.join}"
|
20
|
-
end
|
21
|
-
|
22
|
-
ActiveRecord::Base.establish_connection(YAML::load(File.open(File.join(Etc.getpwuid.dir, '.gritano', 'database.yml'))))
|
23
|
-
|
24
|
-
login = ARGV[0]
|
25
|
-
command = Gritano::Command.eval(ENV['SSH_ORIGINAL_COMMAND'])
|
26
|
-
begin
|
27
|
-
case command[:access]
|
28
|
-
when :read, :write then
|
29
|
-
user = Gritano::User.find_by_login(login)
|
30
|
-
repository = Gritano::Repository.find_by_name(command[:repo])
|
31
|
-
if user and repository
|
32
|
-
if user.check_access(repository, command[:access])
|
33
|
-
puts "#{command[:command]} #{File.join(repository.full_path)}"
|
34
|
-
exec "#{command[:command]} #{File.join(repository.full_path)}"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
when :user_cmd
|
38
|
-
cmd = command[:command].gsub("[USER]", login)
|
39
|
-
exec "gritano #{cmd}"
|
40
|
-
when :admin_cmd
|
41
|
-
cmd = command[:command]
|
42
|
-
user = Gritano::User.find_by_login(login)
|
43
|
-
if user.admin?
|
44
|
-
exec "gritano #{cmd}"
|
45
|
-
else
|
46
|
-
puts "access denied"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
rescue
|
50
|
-
puts help
|
51
|
-
end
|
6
|
+
puts Gritano::CLI::check(ENV['SSH_ORIGINAL_COMMAND'].split(' '), ARGV[0])
|
@@ -0,0 +1,183 @@
|
|
1
|
+
Feature: Console operations
|
2
|
+
In order to use gritano via CLI
|
3
|
+
As a user
|
4
|
+
I want to execute some commands
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given the following users exist:
|
8
|
+
| login | admin |
|
9
|
+
| igorbonadio | true |
|
10
|
+
| jessicaeto | false |
|
11
|
+
|
12
|
+
And the following keys exist:
|
13
|
+
| login | key |
|
14
|
+
| igorbonadio | eva |
|
15
|
+
| jessicaeto | hal |
|
16
|
+
|
17
|
+
And the following repositories exist:
|
18
|
+
| name |
|
19
|
+
| tmp/gritano.git |
|
20
|
+
| tmp/jeka.git |
|
21
|
+
|
22
|
+
And the following permissions exist:
|
23
|
+
| user | repo | access |
|
24
|
+
| igorbonadio | tmp/gritano.git | read |
|
25
|
+
| igorbonadio | tmp/gritano.git | write |
|
26
|
+
| igorbonadio | tmp/jeka.git | read |
|
27
|
+
| jessicaeto | tmp/jeka.git | read |
|
28
|
+
| jessicaeto | tmp/jeka.git | write |
|
29
|
+
|
30
|
+
Scenario: Git read access
|
31
|
+
Given I start the CLI with "igorbonadio"
|
32
|
+
When I try to get tmp/gritano.git from CLI.check
|
33
|
+
Then I should get it
|
34
|
+
|
35
|
+
Scenario: Git write access
|
36
|
+
Given I start the CLI with "igorbonadio"
|
37
|
+
When I try to send data to tmp/gritano.git from CLI.check
|
38
|
+
Then I should send it
|
39
|
+
|
40
|
+
Scenario: Error
|
41
|
+
Given I start the CLI with "igorbonadio"
|
42
|
+
When I try to send an invalid command to CLI.check
|
43
|
+
Then CLI should return the help-check
|
44
|
+
|
45
|
+
Scenario: Get help
|
46
|
+
Given I start the CLI
|
47
|
+
When I send "help" to the CLI.execute
|
48
|
+
Then CLI should return the help
|
49
|
+
|
50
|
+
Scenario: Check git
|
51
|
+
Given I start the CLI but gritano is not installed
|
52
|
+
When I send a command to the CLI.execute
|
53
|
+
Then CLI should exit
|
54
|
+
|
55
|
+
Scenario Outline: Add user
|
56
|
+
Given I start the CLI
|
57
|
+
When I send "<command>" to the CLI.execute
|
58
|
+
Then CLI should return "<result>"
|
59
|
+
Examples:
|
60
|
+
| command | result |
|
61
|
+
| version | v0.4.1 |
|
62
|
+
| user:add jose | User jose added. |
|
63
|
+
| user:key:add igorbonadio marvin | Key added successfully. |
|
64
|
+
| user:key:rm igorbonadio eva | Key removed successfully. |
|
65
|
+
| user:rm igorbonadio | User igorbonadio removed. |
|
66
|
+
| user:admin:add igorbonadio | Now, user igorbonadio is an administrator |
|
67
|
+
| user:admin:rm igorbonadio | Now, user igorbonadio is not an administrator |
|
68
|
+
| repo:add tmp/p-lang.git | Repository tmp/p-lang.git created successfully. |
|
69
|
+
| repo:add tmp/p-lang.git igorbonadio | Repository tmp/p-lang.git created successfully. |
|
70
|
+
| repo:add tmp/p-lang.git igorbonadio jessicaeto | Repository tmp/p-lang.git created successfully. |
|
71
|
+
| repo:rm tmp/jeka.git | Repository tmp/jeka.git removed successfully. |
|
72
|
+
| repo:read:add tmp/gritano.git jessicaeto | User jessicaeto has read access to tmp/gritano.git. |
|
73
|
+
| repo:write:add tmp/gritano.git jessicaeto | User jessicaeto has write access to tmp/gritano.git. |
|
74
|
+
| repo:read:rm tmp/jeka.git igorbonadio | User igorbonadio has not read access to tmp/jeka.git. |
|
75
|
+
| repo:write:rm tmp/gritano.git igorbonadio | User igorbonadio has not write access to tmp/gritano.git. |
|
76
|
+
| user:add igorbonadio | error: Login has already been taken. |
|
77
|
+
| user:rm jose | error: User jose could not be removed. |
|
78
|
+
| user:key:add userrr marvino | error: Key could not be added. |
|
79
|
+
| user:key:rm igorbonadio marvino | error: Key could not be removed. |
|
80
|
+
| user:key:list arybonadio | error: User arybonadio is not registered |
|
81
|
+
| user:repo:list arybonadio | error: User arybonadio is not registered |
|
82
|
+
| user:admin:add arybonadio | error: User arybonadio could not be modified |
|
83
|
+
| user:admin:rm arybonadio | error: User arybonadio could not be modified |
|
84
|
+
| repo:add tmp/jeka.git | error: Repository tmp/jeka.git could not be created. |
|
85
|
+
| repo:rm tmp/p-lang.git | error: Repository tmp/p-lang.git could not be removed. |
|
86
|
+
| repo:read:add tmp/gritano.git arybonadio | error: An error occurred. Permissions was not modified. |
|
87
|
+
| repo:read:add tmp/p-lang.git jessicaeto | error: An error occurred. Permissions was not modified. |
|
88
|
+
| repo:write:add tmp/gritano.git arybonadio | error: An error occurred. Permissions was not modified. |
|
89
|
+
| repo:write:add tmp/p-lang.git jessicaeto | error: An error occurred. Permissions was not modified. |
|
90
|
+
| repo:read:rm tmp/jeka.git aribonadio | error: An error occurred. Permissions was not modified. |
|
91
|
+
| repo:read:rm tmp/p-lang.git igorbonadio | error: An error occurred. Permissions was not modified. |
|
92
|
+
| repo:write:rm tmp/gritano.git arybonadio | error: An error occurred. Permissions was not modified. |
|
93
|
+
| repo:write:rm tmp/p-lang.git igorbonadio | error: An error occurred. Permissions was not modified. |
|
94
|
+
| repo:user:list tmp/ruby.git | error: Repository tmp/ruby.git doesn't exist. |
|
95
|
+
|
96
|
+
Scenario Outline: Admin via ssh
|
97
|
+
Given I start the CLI with "igorbonadio"
|
98
|
+
When I send "<command>" to the CLI.check
|
99
|
+
Then CLI should return "<result>"
|
100
|
+
Examples:
|
101
|
+
| command | result |
|
102
|
+
| version | v0.4.1 |
|
103
|
+
| key:add keyname | Key added successfully. |
|
104
|
+
| key:rm eva | Key removed successfully. |
|
105
|
+
| key:rm keyname | error: Key could not be removed. |
|
106
|
+
| admin:user:add jose | User jose added. |
|
107
|
+
| admin:user:key:add igorbonadio marvin | Key added successfully. |
|
108
|
+
| admin:user:key:rm igorbonadio eva | Key removed successfully. |
|
109
|
+
| admin:user:rm igorbonadio | User igorbonadio removed. |
|
110
|
+
| admin:user:admin:add igorbonadio | Now, user igorbonadio is an administrator |
|
111
|
+
| admin:user:admin:rm igorbonadio | Now, user igorbonadio is not an administrator |
|
112
|
+
| admin:repo:add tmp/p-lang.git | Repository tmp/p-lang.git created successfully. |
|
113
|
+
| admin:repo:add tmp/p-lang.git igorbonadio | Repository tmp/p-lang.git created successfully. |
|
114
|
+
| admin:repo:add tmp/p-lang.git igorbonadio jessicaeto | Repository tmp/p-lang.git created successfully. |
|
115
|
+
| admin:repo:rm tmp/jeka.git | Repository tmp/jeka.git removed successfully. |
|
116
|
+
| admin:repo:read:add tmp/gritano.git jessicaeto | User jessicaeto has read access to tmp/gritano.git. |
|
117
|
+
| admin:repo:write:add tmp/gritano.git jessicaeto | User jessicaeto has write access to tmp/gritano.git. |
|
118
|
+
| admin:repo:read:rm tmp/jeka.git igorbonadio | User igorbonadio has not read access to tmp/jeka.git. |
|
119
|
+
| admin:repo:write:rm tmp/gritano.git igorbonadio | User igorbonadio has not write access to tmp/gritano.git. |
|
120
|
+
| admin:user:add igorbonadio | error: Login has already been taken. |
|
121
|
+
| admin:user:rm jose | error: User jose could not be removed. |
|
122
|
+
| admin:user:key:add userrr marvino | error: Key could not be added. |
|
123
|
+
| admin:user:key:rm igorbonadio marvino | error: Key could not be removed. |
|
124
|
+
| admin:user:key:list arybonadio | error: User arybonadio is not registered |
|
125
|
+
| admin:user:repo:list arybonadio | error: User arybonadio is not registered |
|
126
|
+
| admin:user:admin:add arybonadio | error: User arybonadio could not be modified |
|
127
|
+
| admin:user:admin:rm arybonadio | error: User arybonadio could not be modified |
|
128
|
+
| admin:repo:add tmp/jeka.git | error: Repository tmp/jeka.git could not be created. |
|
129
|
+
| admin:repo:rm tmp/p-lang.git | error: Repository tmp/p-lang.git could not be removed. |
|
130
|
+
| admin:repo:read:add tmp/gritano.git arybonadio | error: An error occurred. Permissions was not modified. |
|
131
|
+
| admin:repo:read:add tmp/p-lang.git jessicaeto | error: An error occurred. Permissions was not modified. |
|
132
|
+
| admin:repo:write:add tmp/gritano.git arybonadio | error: An error occurred. Permissions was not modified. |
|
133
|
+
| admin:repo:write:add tmp/p-lang.git jessicaeto | error: An error occurred. Permissions was not modified. |
|
134
|
+
| admin:repo:read:rm tmp/jeka.git aribonadio | error: An error occurred. Permissions was not modified. |
|
135
|
+
| admin:repo:read:rm tmp/p-lang.git igorbonadio | error: An error occurred. Permissions was not modified. |
|
136
|
+
| admin:repo:write:rm tmp/gritano.git arybonadio | error: An error occurred. Permissions was not modified. |
|
137
|
+
| admin:repo:write:rm tmp/p-lang.git igorbonadio | error: An error occurred. Permissions was not modified. |
|
138
|
+
| admin:repo:user:list tmp/ruby.git | error: Repository tmp/ruby.git doesn't exist. |
|
139
|
+
|
140
|
+
Scenario Outline: Normal user via ssh
|
141
|
+
Given I start the CLI with "jessicaeto"
|
142
|
+
When I send "<command>" to the CLI.check
|
143
|
+
Then CLI should return "<result>"
|
144
|
+
Examples:
|
145
|
+
| command | result |
|
146
|
+
| version | v0.4.1 |
|
147
|
+
| key:add keyname | Key added successfully. |
|
148
|
+
| key:rm hal | Key removed successfully. |
|
149
|
+
| key:rm keyname | error: Key could not be removed. |
|
150
|
+
| admin:user:add jose | error: access denied |
|
151
|
+
| admin:user:key:add igorbonadio marvin | error: access denied |
|
152
|
+
| admin:user:key:rm igorbonadio eva | error: access denied |
|
153
|
+
| admin:user:rm igorbonadio | error: access denied |
|
154
|
+
| admin:user:admin:add igorbonadio | error: access denied |
|
155
|
+
| admin:user:admin:rm igorbonadio | error: access denied |
|
156
|
+
| admin:repo:add tmp/p-lang.git | error: access denied |
|
157
|
+
| admin:repo:add tmp/p-lang.git igorbonadio | error: access denied |
|
158
|
+
| admin:repo:add tmp/p-lang.git igorbonadio jessicaeto | error: access denied |
|
159
|
+
| admin:repo:rm tmp/jeka.git | error: access denied |
|
160
|
+
| admin:repo:read:add tmp/gritano.git jessicaeto | error: access denied |
|
161
|
+
| admin:repo:write:add tmp/gritano.git jessicaeto | error: access denied |
|
162
|
+
| admin:repo:read:rm tmp/jeka.git igorbonadio | error: access denied |
|
163
|
+
| admin:repo:write:rm tmp/gritano.git igorbonadio | error: access denied |
|
164
|
+
| admin:user:add igorbonadio | error: access denied |
|
165
|
+
| admin:user:rm jose | error: access denied |
|
166
|
+
| admin:user:key:add userrr marvino | error: access denied |
|
167
|
+
| admin:user:key:rm igorbonadio marvino | error: access denied |
|
168
|
+
| admin:user:key:list arybonadio | error: access denied |
|
169
|
+
| admin:user:repo:list arybonadio | error: access denied |
|
170
|
+
| admin:user:admin:add arybonadio | error: access denied |
|
171
|
+
| admin:user:admin:rm arybonadio | error: access denied |
|
172
|
+
| admin:repo:add tmp/jeka.git | error: access denied |
|
173
|
+
| admin:repo:rm tmp/p-lang.git | error: access denied |
|
174
|
+
| admin:repo:read:add tmp/gritano.git arybonadio | error: access denied |
|
175
|
+
| admin:repo:read:add tmp/p-lang.git jessicaeto | error: access denied |
|
176
|
+
| admin:repo:write:add tmp/gritano.git arybonadio | error: access denied |
|
177
|
+
| admin:repo:write:add tmp/p-lang.git jessicaeto | error: access denied |
|
178
|
+
| admin:repo:read:rm tmp/jeka.git aribonadio | error: access denied |
|
179
|
+
| admin:repo:read:rm tmp/p-lang.git igorbonadio | error: access denied |
|
180
|
+
| admin:repo:write:rm tmp/gritano.git arybonadio | error: access denied |
|
181
|
+
| admin:repo:write:rm tmp/p-lang.git igorbonadio | error: access denied |
|
182
|
+
| admin:repo:user:list tmp/ruby.git | error: access denied |
|
183
|
+
|
data/features/console.feature
CHANGED
@@ -27,12 +27,28 @@ Feature: Console operations
|
|
27
27
|
| jessicaeto | tmp/jeka.git | read |
|
28
28
|
| jessicaeto | tmp/jeka.git | write |
|
29
29
|
|
30
|
+
Scenario: Get help
|
31
|
+
Given I start the gritano console
|
32
|
+
When I execute "help"
|
33
|
+
Then I should see the help
|
34
|
+
|
35
|
+
Scenario: Check git
|
36
|
+
Given I start the gritano console but gritano is not installed
|
37
|
+
When I execute a command
|
38
|
+
Then I should see an error
|
39
|
+
|
40
|
+
Scenario: Install
|
41
|
+
Given I start the gritano console but gritano is not installed
|
42
|
+
When I install it
|
43
|
+
Then I should see a success message
|
44
|
+
|
30
45
|
Scenario Outline: Add user
|
31
46
|
Given I start the gritano console
|
32
47
|
When I execute "<command>"
|
33
48
|
Then I should see a <result> message
|
34
49
|
Examples:
|
35
50
|
| command | result |
|
51
|
+
| version | success |
|
36
52
|
| user:add jose | success |
|
37
53
|
| user:key:add igorbonadio marvin | success |
|
38
54
|
| user:key:rm igorbonadio eva | success |
|
@@ -0,0 +1,13 @@
|
|
1
|
+
ssh git@host.com [command]
|
2
|
+
|
3
|
+
Examples:
|
4
|
+
ssh git@host.com version
|
5
|
+
ssh git@host.com help
|
6
|
+
ssh git@host.com repo:list
|
7
|
+
ssh git@host.com key:list
|
8
|
+
ssh git@host.com key:add keyname < key.pub
|
9
|
+
ssh git@host.com key:rm keyname
|
10
|
+
ssh git@host.com admin:help
|
11
|
+
|
12
|
+
--
|
13
|
+
v0.4.1
|
@@ -0,0 +1,27 @@
|
|
1
|
+
test [command]
|
2
|
+
|
3
|
+
Examples:
|
4
|
+
test help
|
5
|
+
test version
|
6
|
+
test setup:prepare
|
7
|
+
test setup:install
|
8
|
+
test user:list
|
9
|
+
test user:key:list username
|
10
|
+
test user:repo:list username
|
11
|
+
test user:add username
|
12
|
+
test user:rm username
|
13
|
+
test user:key:add username keyname < key.pub
|
14
|
+
test user:key:rm username keyname
|
15
|
+
test user:admin:add username
|
16
|
+
test user:admin:rm username
|
17
|
+
test repo:list
|
18
|
+
test repo:add reponame.git [username1 username2 ...]*
|
19
|
+
test repo:user:list reponame.git
|
20
|
+
test repo:rm reponame.git
|
21
|
+
test repo:read:add reponame.git username
|
22
|
+
test repo:write:add reponame.git username
|
23
|
+
test repo:read:rm reponame.git username
|
24
|
+
test repo:write:rm reponame.git username
|
25
|
+
|
26
|
+
--
|
27
|
+
v0.4.1
|