gritano 0.4.1 → 0.5.0
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/.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
@@ -0,0 +1,27 @@
|
|
1
|
+
gritano [command]
|
2
|
+
|
3
|
+
Examples:
|
4
|
+
gritano help
|
5
|
+
gritano version
|
6
|
+
gritano setup:prepare
|
7
|
+
gritano setup:install
|
8
|
+
gritano user:list
|
9
|
+
gritano user:key:list username
|
10
|
+
gritano user:repo:list username
|
11
|
+
gritano user:add username
|
12
|
+
gritano user:rm username
|
13
|
+
gritano user:key:add username keyname < key.pub
|
14
|
+
gritano user:key:rm username keyname
|
15
|
+
gritano user:admin:add username
|
16
|
+
gritano user:admin:rm username
|
17
|
+
gritano repo:list
|
18
|
+
gritano repo:add reponame.git [username1 username2 ...]*
|
19
|
+
gritano repo:user:list reponame.git
|
20
|
+
gritano repo:rm reponame.git
|
21
|
+
gritano repo:read:add reponame.git username
|
22
|
+
gritano repo:write:add reponame.git username
|
23
|
+
gritano repo:read:rm reponame.git username
|
24
|
+
gritano repo:write:rm reponame.git username
|
25
|
+
|
26
|
+
--
|
27
|
+
v0.4.1
|
@@ -0,0 +1,150 @@
|
|
1
|
+
Feature: SSH operations
|
2
|
+
In order to use gritano via ssh
|
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 gritano-check console with "igorbonadio"
|
32
|
+
When I try to get tmp/gritano.git
|
33
|
+
Then I should get it
|
34
|
+
|
35
|
+
Scenario: Git write access
|
36
|
+
Given I start the gritano-check console with "igorbonadio"
|
37
|
+
When I try to send data to tmp/gritano.git
|
38
|
+
Then I should send it
|
39
|
+
|
40
|
+
Scenario: Error
|
41
|
+
Given I start the gritano-check console with "igorbonadio"
|
42
|
+
When I try to send an invalid command
|
43
|
+
Then I should see an exception
|
44
|
+
|
45
|
+
Scenario Outline: Admin via ssh
|
46
|
+
Given I start the gritano-check console with "igorbonadio"
|
47
|
+
When I execute "<command>" via ssh
|
48
|
+
Then I should see a <result> message
|
49
|
+
Examples:
|
50
|
+
| command | result |
|
51
|
+
| version | success |
|
52
|
+
| help | success |
|
53
|
+
| repo:list | success |
|
54
|
+
| key:list | success |
|
55
|
+
| key:add keyname | success |
|
56
|
+
| key:rm eva | success |
|
57
|
+
| admin:help | success |
|
58
|
+
| key:rm keyname | error |
|
59
|
+
| admin:user:add jose | success |
|
60
|
+
| admin:user:key:add igorbonadio marvin | success |
|
61
|
+
| admin:user:key:rm igorbonadio eva | success |
|
62
|
+
| admin:user:rm igorbonadio | success |
|
63
|
+
| admin:user:list | success |
|
64
|
+
| admin:user:key:list igorbonadio | success |
|
65
|
+
| admin:user:repo:list igorbonadio | success |
|
66
|
+
| admin:user:admin:add igorbonadio | success |
|
67
|
+
| admin:user:admin:rm igorbonadio | success |
|
68
|
+
| admin:repo:add tmp/p-lang.git | success |
|
69
|
+
| admin:repo:add tmp/p-lang.git igorbonadio | success |
|
70
|
+
| admin:repo:add tmp/p-lang.git igorbonadio jessicaeto | success |
|
71
|
+
| admin:repo:rm tmp/jeka.git | success |
|
72
|
+
| admin:repo:read:add tmp/gritano.git jessicaeto | success |
|
73
|
+
| admin:repo:write:add tmp/gritano.git jessicaeto | success |
|
74
|
+
| admin:repo:read:rm tmp/jeka.git igorbonadio | success |
|
75
|
+
| admin:repo:write:rm tmp/gritano.git igorbonadio | success |
|
76
|
+
| admin:repo:list | success |
|
77
|
+
| admin:repo:user:list tmp/jeka.git | success |
|
78
|
+
| admin:user:add igorbonadio | error |
|
79
|
+
| admin:user:rm jose | error |
|
80
|
+
| admin:user:key:add userrr marvino | error |
|
81
|
+
| admin:user:key:rm igorbonadio marvino | error |
|
82
|
+
| admin:user:key:list arybonadio | error |
|
83
|
+
| admin:user:repo:list arybonadio | error |
|
84
|
+
| admin:user:admin:add arybonadio | error |
|
85
|
+
| admin:user:admin:rm arybonadio | error |
|
86
|
+
| admin:repo:add tmp/jeka.git | error |
|
87
|
+
| admin:repo:rm tmp/p-lang.git | error |
|
88
|
+
| admin:repo:read:add tmp/gritano.git arybonadio | error |
|
89
|
+
| admin:repo:read:add tmp/p-lang.git jessicaeto | error |
|
90
|
+
| admin:repo:write:add tmp/gritano.git arybonadio | error |
|
91
|
+
| admin:repo:write:add tmp/p-lang.git jessicaeto | error |
|
92
|
+
| admin:repo:read:rm tmp/jeka.git aribonadio | error |
|
93
|
+
| admin:repo:read:rm tmp/p-lang.git igorbonadio | error |
|
94
|
+
| admin:repo:write:rm tmp/gritano.git arybonadio | error |
|
95
|
+
| admin:repo:write:rm tmp/p-lang.git igorbonadio | error |
|
96
|
+
| admin:repo:user:list tmp/ruby.git | error |
|
97
|
+
|
98
|
+
Scenario Outline: Normal user via ssh
|
99
|
+
Given I start the gritano-check console with "jessicaeto"
|
100
|
+
When I execute "<command>" via ssh
|
101
|
+
Then I should see a <result> message
|
102
|
+
Examples:
|
103
|
+
| command | result |
|
104
|
+
| version | success |
|
105
|
+
| help | success |
|
106
|
+
| repo:list | success |
|
107
|
+
| key:list | success |
|
108
|
+
| key:add keyname | success |
|
109
|
+
| key:rm hal | success |
|
110
|
+
| admin:help | success |
|
111
|
+
| key:rm keyname | error |
|
112
|
+
| admin:user:add jose | error |
|
113
|
+
| admin:user:key:add igorbonadio marvin | error |
|
114
|
+
| admin:user:key:rm igorbonadio eva | error |
|
115
|
+
| admin:user:rm igorbonadio | error |
|
116
|
+
| admin:user:list | error |
|
117
|
+
| admin:user:key:list igorbonadio | error |
|
118
|
+
| admin:user:repo:list igorbonadio | error |
|
119
|
+
| admin:user:admin:add igorbonadio | error |
|
120
|
+
| admin:user:admin:rm igorbonadio | error |
|
121
|
+
| admin:repo:add tmp/p-lang.git | error |
|
122
|
+
| admin:repo:add tmp/p-lang.git igorbonadio | error |
|
123
|
+
| admin:repo:add tmp/p-lang.git igorbonadio jessicaeto | error |
|
124
|
+
| admin:repo:rm tmp/jeka.git | error |
|
125
|
+
| admin:repo:read:add tmp/gritano.git jessicaeto | error |
|
126
|
+
| admin:repo:write:add tmp/gritano.git jessicaeto | error |
|
127
|
+
| admin:repo:read:rm tmp/jeka.git igorbonadio | error |
|
128
|
+
| admin:repo:write:rm tmp/gritano.git igorbonadio | error |
|
129
|
+
| admin:repo:list | error |
|
130
|
+
| admin:repo:user:list tmp/jeka.git | error |
|
131
|
+
| admin:user:add igorbonadio | error |
|
132
|
+
| admin:user:rm jose | error |
|
133
|
+
| admin:user:key:add userrr marvino | error |
|
134
|
+
| admin:user:key:rm igorbonadio marvino | error |
|
135
|
+
| admin:user:key:list arybonadio | error |
|
136
|
+
| admin:user:repo:list arybonadio | error |
|
137
|
+
| admin:user:admin:add arybonadio | error |
|
138
|
+
| admin:user:admin:rm arybonadio | error |
|
139
|
+
| admin:repo:add tmp/jeka.git | error |
|
140
|
+
| admin:repo:rm tmp/p-lang.git | error |
|
141
|
+
| admin:repo:read:add tmp/gritano.git arybonadio | error |
|
142
|
+
| admin:repo:read:add tmp/p-lang.git jessicaeto | error |
|
143
|
+
| admin:repo:write:add tmp/gritano.git arybonadio | error |
|
144
|
+
| admin:repo:write:add tmp/p-lang.git jessicaeto | error |
|
145
|
+
| admin:repo:read:rm tmp/jeka.git aribonadio | error |
|
146
|
+
| admin:repo:read:rm tmp/p-lang.git igorbonadio | error |
|
147
|
+
| admin:repo:write:rm tmp/gritano.git arybonadio | error |
|
148
|
+
| admin:repo:write:rm tmp/p-lang.git igorbonadio | error |
|
149
|
+
| admin:repo:user:list tmp/ruby.git | error |
|
150
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
Given /^I start the CLI$/ do
|
2
|
+
@cli = Gritano::CLI
|
3
|
+
@home_dir = '.'
|
4
|
+
@repo_dir = 'tmp'
|
5
|
+
@stdin = double()
|
6
|
+
@stdin.stub(:read).and_return("Your SSHKEY here...")
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I send "(.*?)" to the CLI\.execute$/ do |cmd|
|
10
|
+
@output = @cli.execute(cmd.split(' '), @stdin, @home_dir, @repo_dir)
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I send "(.*?)" to the CLI\.check$/ do |cmd|
|
14
|
+
@output = @cli.check(cmd.split(' '), @login, @stdin, @home_dir, @repo_dir)
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
Then /^CLI should return the help$/ do
|
19
|
+
help = File.open("features/data/help.txt").readlines.join[0..-2]
|
20
|
+
@output.should be == help
|
21
|
+
end
|
22
|
+
|
23
|
+
Then /^CLI should return the help\-check$/ do
|
24
|
+
help = File.open("features/data/help-check.txt").readlines.join[0..-2]
|
25
|
+
@output.should be == help
|
26
|
+
end
|
27
|
+
|
28
|
+
Given /^I start the CLI but gritano is not installed$/ do
|
29
|
+
@cli = Gritano::CLI
|
30
|
+
@home_dir = 'tmp'
|
31
|
+
@repo_dir = 'tmp'
|
32
|
+
@stdin = double()
|
33
|
+
@stdin.stub(:read).and_return("Your SSHKEY here...")
|
34
|
+
end
|
35
|
+
|
36
|
+
Given /^I start the CLI with "(.*?)"$/ do |login|
|
37
|
+
@cli = Gritano::CLI
|
38
|
+
@home_dir = '.'
|
39
|
+
@repo_dir = 'tmp'
|
40
|
+
@stdin = double()
|
41
|
+
@stdin.stub(:read).and_return("Your SSHKEY here...")
|
42
|
+
@login = login
|
43
|
+
end
|
44
|
+
|
45
|
+
Then /^CLI should exit$/ do
|
46
|
+
lambda {@cli.execute(@cmd, @stdin, @home_dir, @repo_dir)}.should raise_error SystemExit
|
47
|
+
end
|
48
|
+
|
49
|
+
When /^I send a command to the CLI\.execute$/ do
|
50
|
+
@cmd = ["user:list"]
|
51
|
+
end
|
52
|
+
|
53
|
+
Then /^CLI should return "(.*?)"$/ do |msg|
|
54
|
+
@output.should be == msg
|
55
|
+
end
|
56
|
+
|
57
|
+
When /^I try to get tmp\/gritano\.git from CLI\.check$/ do
|
58
|
+
Kernel.should_receive(:exec)
|
59
|
+
@cli.check(['git-receive-pack', 'tmp/gritano.git'], @login, @stdin, @home_dir, @repo_dir)
|
60
|
+
end
|
61
|
+
|
62
|
+
When /^I try to send data to tmp\/gritano\.git from CLI\.check$/ do
|
63
|
+
Kernel.should_receive(:exec)
|
64
|
+
@cli.check(['git-upload-pack', 'tmp/gritano.git'], @login, @stdin, @home_dir, @repo_dir)
|
65
|
+
end
|
66
|
+
|
67
|
+
When /^I try to send an invalid command to CLI\.check$/ do
|
68
|
+
@output = @cli.check(['error:error'], @login, @stdin, @home_dir, @repo_dir)
|
69
|
+
end
|
70
|
+
|
71
|
+
|
@@ -1,8 +1,7 @@
|
|
1
1
|
Given /^I start the gritano console$/ do
|
2
2
|
stdin = double()
|
3
3
|
stdin.stub(:read).and_return("Your SSHKEY here...")
|
4
|
-
@console = Gritano::Console.new(stdin)
|
5
|
-
@console.ssh_path = 'tmp'
|
4
|
+
@console = Gritano::Console::Gritano.new(stdin, '.', 'tmp')
|
6
5
|
end
|
7
6
|
|
8
7
|
When /^I execute "(.*?)"$/ do |command|
|
@@ -13,4 +12,30 @@ Then /^I should see a (success|error) message$/ do |result|
|
|
13
12
|
expected_output = true if result == 'success'
|
14
13
|
expected_output = false if result == 'error'
|
15
14
|
@output[0].should be == expected_output
|
16
|
-
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see the help$/ do
|
18
|
+
help = File.open("features/data/help.txt").readlines.join[0..-2]
|
19
|
+
@output[1].should be == help
|
20
|
+
end
|
21
|
+
|
22
|
+
Given /^I start the gritano console but gritano is not installed$/ do
|
23
|
+
stdin = double()
|
24
|
+
stdin.stub(:read).and_return("Your SSHKEY here...")
|
25
|
+
FileUtils.rm_rf('tmp\.gritano')
|
26
|
+
@console = Gritano::Console::Gritano.new(stdin, 'tmp', 'tmp')
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I execute a command$/ do
|
30
|
+
@command = ['user:list']
|
31
|
+
end
|
32
|
+
|
33
|
+
Then /^I should see an error$/ do
|
34
|
+
lambda {@console.execute(@command)}.should raise_error SystemExit
|
35
|
+
end
|
36
|
+
|
37
|
+
When /^I install it$/ do
|
38
|
+
@console.execute(['setup:prepare'])
|
39
|
+
@output = @console.execute(['setup:install'])
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
When /^I set bin_name to test$/ do
|
2
|
+
Gritano::Console::Gritano.bin_name = "test "
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^gritano should show help\-test$/ do
|
6
|
+
help = File.open("features/data/help-test.txt").readlines.join[0..-2]
|
7
|
+
Gritano::Console::Gritano.help.should be == help
|
8
|
+
end
|
9
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Given /^I start the gritano\-check console with "(.*?)"$/ do |login|
|
2
|
+
stdin = double()
|
3
|
+
stdin.stub(:read).and_return("Your SSHKEY here...")
|
4
|
+
@console = Gritano::Console::Check.new(stdin, '.', 'tmp')
|
5
|
+
@login = login
|
6
|
+
end
|
7
|
+
|
8
|
+
When /^I execute "(.*?)" via ssh$/ do |command|
|
9
|
+
@output = @console.execute(command.split(' ') + [@login])
|
10
|
+
end
|
11
|
+
|
12
|
+
When /^I try to get tmp\/gritano\.git$/ do
|
13
|
+
Kernel.should_receive(:exec)
|
14
|
+
@console.execute(['git-receive-pack', 'tmp/gritano.git'] + [@login])
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should get it$/ do
|
18
|
+
end
|
19
|
+
|
20
|
+
When /^I try to send data to tmp\/gritano\.git$/ do
|
21
|
+
Kernel.should_receive(:exec)
|
22
|
+
@console.execute(['git-upload-pack', 'tmp/gritano.git'] + [@login])
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should send it$/ do
|
26
|
+
end
|
27
|
+
|
28
|
+
When /^I try to send an invalid command$/ do
|
29
|
+
@command = ['invalid:command']
|
30
|
+
end
|
31
|
+
|
32
|
+
Then /^I should see an exception$/ do
|
33
|
+
lambda {@console.execute(@command + [@login])}.should raise_error NoMethodError
|
34
|
+
end
|
35
|
+
|
data/features/support/env.rb
CHANGED
@@ -2,6 +2,7 @@ require 'simplecov'
|
|
2
2
|
SimpleCov.start do
|
3
3
|
add_filter "/features/"
|
4
4
|
add_filter "/spec/"
|
5
|
+
add_filter "/db/"
|
5
6
|
end
|
6
7
|
|
7
8
|
require 'bundler'
|
@@ -22,5 +23,6 @@ require 'cucumber/rspec/doubles'
|
|
22
23
|
require 'active_record'
|
23
24
|
|
24
25
|
Before do
|
25
|
-
ActiveRecord::Base.establish_connection(YAML::load(File.open('
|
26
|
-
|
26
|
+
ActiveRecord::Base.establish_connection(YAML::load(File.open('.gritano/database.yml')))
|
27
|
+
Gritano::Console.remote_console(false)
|
28
|
+
end
|
data/gritano.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gritano"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Igor Bonadio"]
|
12
|
-
s.date = "2012-12-
|
12
|
+
s.date = "2012-12-22"
|
13
13
|
s.description = "Gritano is the simplest way to configure your git server over ssh. You can create repositories and manage user access."
|
14
14
|
s.email = "igorbonadio@gmail.com"
|
15
15
|
s.executables = ["gritano", "gritano-check"]
|
@@ -20,7 +20,9 @@ Gem::Specification.new do |s|
|
|
20
20
|
]
|
21
21
|
s.files = [
|
22
22
|
".document",
|
23
|
+
".gritano/database.yml",
|
23
24
|
".rspec",
|
25
|
+
".ssh/.gitignore",
|
24
26
|
"Gemfile",
|
25
27
|
"Gemfile.lock",
|
26
28
|
"LICENSE.txt",
|
@@ -29,43 +31,54 @@ Gem::Specification.new do |s|
|
|
29
31
|
"VERSION",
|
30
32
|
"bin/gritano",
|
31
33
|
"bin/gritano-check",
|
32
|
-
"db/database.yml",
|
33
34
|
"db/migrate/001_create_users.rb",
|
34
35
|
"db/migrate/002_create_repositories.rb",
|
35
36
|
"db/migrate/003_create_permissions.rb",
|
36
37
|
"db/migrate/004_create_keys.rb",
|
37
38
|
"db/migrate/005_add_admin_to_users.rb",
|
38
|
-
"features/
|
39
|
+
"features/cli.feature",
|
39
40
|
"features/console.feature",
|
41
|
+
"features/data/help-check.txt",
|
42
|
+
"features/data/help-test.txt",
|
43
|
+
"features/data/help.txt",
|
40
44
|
"features/data/keys/full_authorized_keys",
|
41
45
|
"features/data/keys/igorbonadio.pub",
|
42
46
|
"features/data/keys/igorbonadio_authorized_keys",
|
43
47
|
"features/data/keys/jessicaeto.pub",
|
44
48
|
"features/data/keys/jessicaeto_authorized_keys",
|
49
|
+
"features/help.feature",
|
45
50
|
"features/keys.feature",
|
46
51
|
"features/polices.feature",
|
47
|
-
"features/
|
52
|
+
"features/ssh.feature",
|
53
|
+
"features/step_definitions/cli_steps.rb",
|
48
54
|
"features/step_definitions/console_step.rb",
|
55
|
+
"features/step_definitions/help.rb",
|
49
56
|
"features/step_definitions/keys_steps.rb",
|
50
57
|
"features/step_definitions/polices_steps.rb",
|
58
|
+
"features/step_definitions/ssh_steps.rb",
|
51
59
|
"features/support/database_cleaner.rb",
|
52
60
|
"features/support/env.rb",
|
53
61
|
"gritano.gemspec",
|
54
62
|
"lib/gritano.rb",
|
55
|
-
"lib/gritano/
|
63
|
+
"lib/gritano/cli.rb",
|
56
64
|
"lib/gritano/console.rb",
|
65
|
+
"lib/gritano/console/base.rb",
|
66
|
+
"lib/gritano/console/check.rb",
|
67
|
+
"lib/gritano/console/executor.rb",
|
68
|
+
"lib/gritano/console/gritano.rb",
|
69
|
+
"lib/gritano/console/installer.rb",
|
57
70
|
"lib/gritano/models.rb",
|
58
71
|
"lib/gritano/models/key.rb",
|
59
72
|
"lib/gritano/models/permission.rb",
|
60
73
|
"lib/gritano/models/repository.rb",
|
61
74
|
"lib/gritano/models/user.rb",
|
62
|
-
"spec/
|
63
|
-
"spec/
|
75
|
+
"spec/executor_spec.rb",
|
76
|
+
"spec/gritano_spec.rb",
|
77
|
+
"spec/installer_spec.rb",
|
64
78
|
"spec/model_key_spec.rb",
|
65
79
|
"spec/model_repository_spec.rb",
|
66
80
|
"spec/model_user_spec.rb",
|
67
|
-
"spec/spec_helper.rb"
|
68
|
-
"tmp/.gitignore"
|
81
|
+
"spec/spec_helper.rb"
|
69
82
|
]
|
70
83
|
s.homepage = "http://github.com/igorbonadio/gritano"
|
71
84
|
s.licenses = ["MIT"]
|