vines-services 0.1.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.
Files changed (69) hide show
  1. data/LICENSE +19 -0
  2. data/README +40 -0
  3. data/Rakefile +130 -0
  4. data/bin/vines-services +95 -0
  5. data/conf/config.rb +25 -0
  6. data/lib/vines/services/command/init.rb +209 -0
  7. data/lib/vines/services/command/restart.rb +14 -0
  8. data/lib/vines/services/command/start.rb +30 -0
  9. data/lib/vines/services/command/stop.rb +20 -0
  10. data/lib/vines/services/command/views.rb +26 -0
  11. data/lib/vines/services/component.rb +26 -0
  12. data/lib/vines/services/config.rb +105 -0
  13. data/lib/vines/services/connection.rb +120 -0
  14. data/lib/vines/services/controller/attributes_controller.rb +19 -0
  15. data/lib/vines/services/controller/base_controller.rb +99 -0
  16. data/lib/vines/services/controller/disco_info_controller.rb +61 -0
  17. data/lib/vines/services/controller/labels_controller.rb +17 -0
  18. data/lib/vines/services/controller/members_controller.rb +44 -0
  19. data/lib/vines/services/controller/messages_controller.rb +66 -0
  20. data/lib/vines/services/controller/probes_controller.rb +45 -0
  21. data/lib/vines/services/controller/services_controller.rb +81 -0
  22. data/lib/vines/services/controller/subscriptions_controller.rb +39 -0
  23. data/lib/vines/services/controller/systems_controller.rb +45 -0
  24. data/lib/vines/services/controller/transfers_controller.rb +58 -0
  25. data/lib/vines/services/controller/uploads_controller.rb +62 -0
  26. data/lib/vines/services/controller/users_controller.rb +127 -0
  27. data/lib/vines/services/core_ext/blather.rb +46 -0
  28. data/lib/vines/services/core_ext/couchrest.rb +33 -0
  29. data/lib/vines/services/indexer.rb +195 -0
  30. data/lib/vines/services/priority_queue.rb +94 -0
  31. data/lib/vines/services/roster.rb +70 -0
  32. data/lib/vines/services/storage/couchdb/fragment.rb +23 -0
  33. data/lib/vines/services/storage/couchdb/service.rb +170 -0
  34. data/lib/vines/services/storage/couchdb/system.rb +141 -0
  35. data/lib/vines/services/storage/couchdb/upload.rb +66 -0
  36. data/lib/vines/services/storage/couchdb/user.rb +137 -0
  37. data/lib/vines/services/storage/couchdb/vcard.rb +13 -0
  38. data/lib/vines/services/storage/couchdb.rb +157 -0
  39. data/lib/vines/services/storage.rb +33 -0
  40. data/lib/vines/services/throttle.rb +26 -0
  41. data/lib/vines/services/version.rb +7 -0
  42. data/lib/vines/services/vql/compiler.rb +94 -0
  43. data/lib/vines/services/vql/vql.citrus +115 -0
  44. data/lib/vines/services/vql/vql.rb +186 -0
  45. data/lib/vines/services.rb +71 -0
  46. data/test/config_test.rb +242 -0
  47. data/test/priority_queue_test.rb +23 -0
  48. data/test/storage/couchdb_test.rb +30 -0
  49. data/test/vql/compiler_test.rb +96 -0
  50. data/test/vql/vql_test.rb +233 -0
  51. data/web/coffeescripts/api.coffee +51 -0
  52. data/web/coffeescripts/commands.coffee +18 -0
  53. data/web/coffeescripts/files.coffee +315 -0
  54. data/web/coffeescripts/init.coffee +21 -0
  55. data/web/coffeescripts/services.coffee +356 -0
  56. data/web/coffeescripts/setup.coffee +503 -0
  57. data/web/coffeescripts/systems.coffee +371 -0
  58. data/web/images/default-service.png +0 -0
  59. data/web/images/linux.png +0 -0
  60. data/web/images/mac.png +0 -0
  61. data/web/images/run.png +0 -0
  62. data/web/images/windows.png +0 -0
  63. data/web/index.html +17 -0
  64. data/web/stylesheets/common.css +52 -0
  65. data/web/stylesheets/files.css +218 -0
  66. data/web/stylesheets/services.css +181 -0
  67. data/web/stylesheets/setup.css +117 -0
  68. data/web/stylesheets/systems.css +142 -0
  69. metadata +230 -0
@@ -0,0 +1,181 @@
1
+ #services-page #container {
2
+ height: 100%;
3
+ }
4
+ #services-page #beta {
5
+ background: #fff;
6
+ }
7
+ #services-page #services {
8
+ height: 100%;
9
+ list-style: none;
10
+ text-shadow: 0 1px 1px #fff;
11
+ width: 260px;
12
+ }
13
+ #services-page #services li {
14
+ cursor: pointer;
15
+ border-bottom: 1px solid #ddd;
16
+ font-weight: bold;
17
+ min-height: 42px;
18
+ padding: 0 10px;
19
+ position: relative;
20
+ -moz-transition: background 0.3s;
21
+ -o-transition: background 0.3s;
22
+ -webkit-transition: background 0.3s;
23
+ transition: background 0.3s;
24
+ }
25
+ #services-page #services li #status{
26
+ margin-left:100px;
27
+ }
28
+ #services-page #services li:hover:not(.selected) {
29
+ background: rgba(255, 255, 255, 1.0);
30
+ }
31
+ #services-page #services li.selected .count {
32
+ color: rgba(255, 255, 255, 0.85);
33
+ }
34
+ #services-page #operators {
35
+ margin-bottom: 10px;
36
+ }
37
+ #services-page #operators li {
38
+ cursor: pointer;
39
+ position: relative;
40
+ -moz-transition: background 0.3s;
41
+ -o-transition: background 0.3s;
42
+ -webkit-transition: background 0.3s;
43
+ transition: background 0.3s;
44
+ display: inline-block;
45
+ border: 1px solid #DDD;
46
+ border-radius: 30px;
47
+ width: 60px;
48
+ height: 15px;
49
+ line-height: 15px;
50
+ text-align: center;
51
+ font-size: 8pt;
52
+ margin-left: 10px;
53
+ }
54
+ #services-page #operators li:hover:not(.selected) {
55
+ color: rgba(23, 51, 88, 1.0);
56
+ background: rgba(255, 255, 255, 1.0);
57
+ }
58
+ #services-page #attributes li {
59
+ cursor: pointer;
60
+ border-bottom: 1px solid #ddd;
61
+ padding: 0 10px;
62
+ position: relative;
63
+ color: rgba(23, 51, 88, 0.85);
64
+ -moz-transition: background 0.3s;
65
+ -o-transition: background 0.3s;
66
+ -webkit-transition: background 0.3s;
67
+ transition: background 0.3s;
68
+ }
69
+ #services-page #attributes li:hover:not(.selected) {
70
+ color: rgba(23, 51, 88, 1.0);
71
+ background: rgba(255, 255, 255, 1.0);
72
+ }
73
+ #services-page #services .count {
74
+ display: block;
75
+ font-size: 11px;
76
+ font-weight: normal;
77
+ line-height: 11px;
78
+ }
79
+ #services-page #charlie-controls {
80
+ text-align: right;
81
+ }
82
+ #services-page #search-services-form {
83
+ background: #f8f8f8;
84
+ }
85
+ #services-page #syntax {
86
+ height: 45px;
87
+ }
88
+ #services-page #syntax-status {
89
+ font-size: 8pt;
90
+ height: 12px;
91
+ line-height: 1;
92
+ margin: -5px 0 10px 0;
93
+ width: 93%;
94
+ }
95
+ #services-page #service-preview {
96
+ margin-top: -15px;
97
+ }
98
+ #services-page #members {
99
+ height: 200px;
100
+ margin-bottom: 20px;
101
+ }
102
+ #services-page #members li {
103
+ display: inline-block;
104
+ background-color: #fff;
105
+ font-size: 8pt;
106
+ width: 150px;
107
+ max-width: 150px;
108
+ height: 25px;
109
+ max-height: 25px;
110
+ text-overflow: ellipsis;
111
+ overflow: hidden;
112
+ white-space:nowrap;
113
+ float: left;
114
+ margin-bottom: 10px;
115
+ margin-right: 10px;
116
+ -webkit-border-radius: 3px;
117
+ -moz-border-radius: 3px;
118
+ border-radius: 3px;
119
+ border: 1px solid #ccc;
120
+ }
121
+ #services-page #members li span.text {
122
+ margin-left: 5px;
123
+ }
124
+ #services-page #members li span.icon {
125
+ width: 15px;
126
+ height: 15px;
127
+ display: inline-block;
128
+ position: relative;
129
+ top: 2px;
130
+ left: 3px;
131
+ }
132
+ #services-page #members li span.icon svg {
133
+ width: 15px;
134
+ height: 15px;
135
+ }
136
+ #services-page #members li span.server-name {
137
+ max-width:65px;display:inline-block; vertical-align:middle;text-overflow: ellipsis;
138
+ overflow: hidden;
139
+ white-space:nowrap;
140
+ }
141
+ #services-page #members li:hover:not(.selected) {
142
+ background-color: #ededed;
143
+ background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#e0e0e0));
144
+ background: -moz-linear-gradient(#ededed, #e0e0e0);
145
+ cursor: pointer;
146
+ }
147
+ #services-page #members li.selected {
148
+ background: #4693FF;
149
+ background: -moz-linear-gradient(#4693FF, #015de6);
150
+ background: -o-linear-gradient(#4693FF, #015de6);
151
+ background: -webkit-gradient(linear, left top, left bottom, from(#4693FF), to(#015de6));
152
+ border-bottom: 1px solid #fff;
153
+ color: #fff;
154
+ text-shadow: 0 -1px 1px #1b3a65;
155
+ }
156
+ #services-page #users {
157
+ max-height: 140px;
158
+ list-style: none;
159
+ }
160
+ #services-page #users label {
161
+ color: inherit;
162
+ display: inline;
163
+ font-size: inherit;
164
+ font-weight: normal;
165
+ margin-left: 2px;
166
+ }
167
+ #services-page #blank-slate {
168
+ margin-top: -65px;
169
+ margin-left: -225px;
170
+ text-align: center;
171
+ width: 450px;
172
+ position: absolute;
173
+ top: 50%;
174
+ left: 50%;
175
+ }
176
+ #services-page #blank-slate p {
177
+ color: rgba(0,0,0,0.4);
178
+ font-size: 12pt;
179
+ font-weight: bold;
180
+ margin-bottom: 20px;
181
+ }
@@ -0,0 +1,117 @@
1
+ #setup-page #container {
2
+ height: 100%;
3
+ }
4
+ #setup-page #alpha {
5
+ width: 200px;
6
+ }
7
+ #setup-page #beta {
8
+ background: #fff;
9
+ border-left: 1px solid #ddd;
10
+ left: 200px;
11
+ }
12
+ #setup-page #charlie {
13
+ background: #fff;
14
+ }
15
+ #setup-page #setup-title {
16
+ background: #f8f8f8;
17
+ }
18
+ #services-page #search-users-form {
19
+ background: #f8f8f8;
20
+ }
21
+ #setup-page #setup {
22
+ height: 100%;
23
+ list-style: none;
24
+ text-shadow: 0 1px 1px #fff;
25
+ width: 200px;
26
+ }
27
+ #setup-page #setup li {
28
+ cursor: pointer;
29
+ font-weight: bold;
30
+ min-height: 22px;
31
+ padding: 0 10px;
32
+ position: relative;
33
+ }
34
+ #setup-page #users {
35
+ height: 100%;
36
+ list-style: none;
37
+ text-shadow: 0 1px 1px #fff;
38
+ width: 260px;
39
+ }
40
+ #setup-page #users li {
41
+ cursor: pointer;
42
+ border-bottom: 1px solid #ddd;
43
+ font-weight: bold;
44
+ min-height: 42px;
45
+ padding: 0 10px;
46
+ position: relative;
47
+ -moz-transition: background 0.3s;
48
+ -o-transition: background 0.3s;
49
+ -webkit-transition: background 0.3s;
50
+ transition: background 0.3s;
51
+ }
52
+ #setup-page #users li:hover:not(.selected) {
53
+ background: rgba(255, 255, 255, 1.0);
54
+ }
55
+ #setup-page #users li.selected .jid {
56
+ color: rgba(255, 255, 255, 0.85);
57
+ }
58
+ #setup-page #users .jid {
59
+ display: block;
60
+ font-size: 11px;
61
+ font-weight: normal;
62
+ line-height: 11px;
63
+ }
64
+ #setup-page #search-users-form {
65
+ background: #f8f8f8;
66
+ }
67
+ #setup-page #blank-slate {
68
+ margin-top: -65px;
69
+ margin-left: -225px;
70
+ text-align: center;
71
+ width: 450px;
72
+ position: absolute;
73
+ top: 50%;
74
+ left: 50%;
75
+ }
76
+ #setup-page #blank-slate p {
77
+ color: rgba(0,0,0,0.4);
78
+ font-size: 12pt;
79
+ font-weight: bold;
80
+ margin-bottom: 20px;
81
+ }
82
+ #setup-page #permissions {
83
+ list-style: none;
84
+ }
85
+ #setup-page #services {
86
+ max-height: 140px;
87
+ list-style: none;
88
+ }
89
+ #setup-page #services label,
90
+ #setup-page #permissions label {
91
+ color: inherit;
92
+ display: inline;
93
+ font-size: inherit;
94
+ font-weight: normal;
95
+ margin-left: 2px;
96
+ }
97
+ #setup-page #token-container {
98
+ position: relative;
99
+ width: 92%;
100
+ }
101
+ #setup-page #token-container #password1 {
102
+ width: inherit;
103
+ }
104
+ #setup-page #new-token {
105
+ display: inline;
106
+ height: 27px;
107
+ margin: 0;
108
+ padding: 0 10px;
109
+ position: absolute;
110
+ right: 0;
111
+ top: 0;
112
+ border-top-left-radius: 0;
113
+ border-bottom-left-radius: 0;
114
+ }
115
+ #setup-page #info p {
116
+ line-height: 1;
117
+ }
@@ -0,0 +1,142 @@
1
+ #servers-page #container {
2
+ height: 100%;
3
+ }
4
+ #servers-page #chat-title {
5
+ background: #f8f8f8;
6
+ }
7
+ #servers-page #messages {
8
+ background: #fff;
9
+ height: 100%;
10
+ list-style: none;
11
+ text-shadow: 0 1px 1px #ddd;
12
+ width: 100%;
13
+ }
14
+ #servers-page #messages li {
15
+ border-bottom: 1px solid #f0f0f0;
16
+ min-height: 40px;
17
+ padding: 10px;
18
+ position: relative;
19
+ }
20
+ #servers-page #messages li:hover > span .time {
21
+ opacity: 0.3;
22
+ }
23
+ #servers-page #messages li img {
24
+ border: 3px solid #fff;
25
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
26
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
27
+ position: absolute;
28
+ top: 7px;
29
+ right: 7px;
30
+ height: 40px;
31
+ width: 40px;
32
+ }
33
+ #servers-page #messages li p {
34
+ line-height: 1.5;
35
+ width: 90%;
36
+ }
37
+ #servers-page #messages li footer {
38
+ font-size: 9pt;
39
+ padding-right: 50px;
40
+ text-align: right;
41
+ }
42
+ #servers-page #messages li footer span {
43
+ color: #d8d8d8;
44
+ margin-right: 0.5em;
45
+ text-shadow: none;
46
+ }
47
+ #servers-page #messages li footer .author::before {
48
+ content: '\2014 ';
49
+ }
50
+ #servers-page #message-form {
51
+ background: #f8f8f8;
52
+ border-top: 1px solid #dfdfdf;
53
+ height: 50px;
54
+ position: absolute;
55
+ bottom: 0;
56
+ width: 100%;
57
+ }
58
+ #servers-page #message {
59
+ display: block;
60
+ position: relative;
61
+ left: 10px;
62
+ top: 10px;
63
+ width: 428px;
64
+ }
65
+ #servers-page #roster,
66
+ #servers-page #notifications {
67
+ height: 100%;
68
+ list-style: none;
69
+ text-shadow: 0 1px 1px #fff;
70
+ width: 260px;
71
+ }
72
+ #servers-page #roster li,
73
+ #servers-page #notifications li {
74
+ cursor: pointer;
75
+ border-bottom: 1px solid #ddd;
76
+ font-weight: bold;
77
+ min-height: 42px;
78
+ padding: 0 10px;
79
+ position: relative;
80
+ -moz-transition: background 0.3s;
81
+ -o-transition: background 0.3s;
82
+ -webkit-transition: background 0.3s;
83
+ transition: background 0.3s;
84
+ }
85
+ #servers-page #notifications li {
86
+ font-weight: normal;
87
+ padding: 10px 0 0 0;
88
+ }
89
+ #servers-page #roster li:hover:not(.selected),
90
+ #servers-page #notifications li:hover {
91
+ background: rgba(255, 255, 255, 1.0);
92
+ }
93
+ #servers-page #roster li.offline > * {
94
+ opacity: 0.4;
95
+ }
96
+ #servers-page #roster li.selected > * {
97
+ opacity: 1.0;
98
+ }
99
+ #servers-page #roster li.selected .status-msg {
100
+ color: rgba(255, 255, 255, 0.85);
101
+ }
102
+ #servers-page #roster .status-msg {
103
+ display: block;
104
+ font-size: 11px;
105
+ font-weight: normal;
106
+ line-height: 11px;
107
+ }
108
+ #servers-page #roster .unread {
109
+ background: #4693FF;
110
+ background: -moz-linear-gradient(#4693FF, #015de6);
111
+ background: -o-linear-gradient(#4693FF, #015de6);
112
+ background: -webkit-gradient(linear, left top, left bottom, from(#4693FF), to(#015de6));
113
+ border-radius: 30px;
114
+ color: #fff;
115
+ display: inline-block;
116
+ font-size: 11px;
117
+ font-weight: normal;
118
+ line-height: 15px;
119
+ padding: 0px 6px;
120
+ position: absolute;
121
+ right: 50px;
122
+ top: 14px;
123
+ text-shadow: none;
124
+ }
125
+ #servers-page #roster .vcard-img {
126
+ background: #fff;
127
+ border: 1px solid #fff;
128
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
129
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
130
+ height: 32px;
131
+ width: 32px;
132
+ position: absolute;
133
+ top: 4px;
134
+ right: 10px;
135
+ }
136
+ #servers-page #charlie-controls {
137
+ text-align: right;
138
+ }
139
+ #servers-page #edit-contact-jid {
140
+ color: #444;
141
+ margin-top: -5px;
142
+ }
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vines-services
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - David Graham
9
+ - Chris Johnson
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-09-28 00:00:00 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: bcrypt-ruby
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 3.0.0
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: blather
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 0.5.4
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: citrus
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 2.4.0
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: couchrest_model
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ version: 1.1.2
58
+ type: :runtime
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: em-http-request
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.3.0
69
+ type: :runtime
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: sqlite3
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: 1.3.4
80
+ type: :runtime
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: vines
84
+ prerelease: false
85
+ requirement: &id007 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: "0.3"
91
+ type: :runtime
92
+ version_requirements: *id007
93
+ - !ruby/object:Gem::Dependency
94
+ name: minitest
95
+ prerelease: false
96
+ requirement: &id008 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: "0"
102
+ type: :development
103
+ version_requirements: *id008
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ prerelease: false
107
+ requirement: &id009 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: "0"
113
+ type: :development
114
+ version_requirements: *id009
115
+ description: |-
116
+ Vines Services are dynamically updated groups of systems based
117
+ on criteria like hostname, installed software, operating system, etc. Send a
118
+ command to the service and it runs on every system in the group. Services, files
119
+ and permissions are managed via the bundled web application.
120
+ email:
121
+ - david@negativecode.com
122
+ - chris@negativecode.com
123
+ executables:
124
+ - vines-services
125
+ extensions: []
126
+
127
+ extra_rdoc_files: []
128
+
129
+ files:
130
+ - LICENSE
131
+ - Rakefile
132
+ - README
133
+ - bin/vines-services
134
+ - lib/vines/services/command/init.rb
135
+ - lib/vines/services/command/restart.rb
136
+ - lib/vines/services/command/start.rb
137
+ - lib/vines/services/command/stop.rb
138
+ - lib/vines/services/command/views.rb
139
+ - lib/vines/services/component.rb
140
+ - lib/vines/services/config.rb
141
+ - lib/vines/services/connection.rb
142
+ - lib/vines/services/controller/attributes_controller.rb
143
+ - lib/vines/services/controller/base_controller.rb
144
+ - lib/vines/services/controller/disco_info_controller.rb
145
+ - lib/vines/services/controller/labels_controller.rb
146
+ - lib/vines/services/controller/members_controller.rb
147
+ - lib/vines/services/controller/messages_controller.rb
148
+ - lib/vines/services/controller/probes_controller.rb
149
+ - lib/vines/services/controller/services_controller.rb
150
+ - lib/vines/services/controller/subscriptions_controller.rb
151
+ - lib/vines/services/controller/systems_controller.rb
152
+ - lib/vines/services/controller/transfers_controller.rb
153
+ - lib/vines/services/controller/uploads_controller.rb
154
+ - lib/vines/services/controller/users_controller.rb
155
+ - lib/vines/services/core_ext/blather.rb
156
+ - lib/vines/services/core_ext/couchrest.rb
157
+ - lib/vines/services/indexer.rb
158
+ - lib/vines/services/priority_queue.rb
159
+ - lib/vines/services/roster.rb
160
+ - lib/vines/services/storage/couchdb/fragment.rb
161
+ - lib/vines/services/storage/couchdb/service.rb
162
+ - lib/vines/services/storage/couchdb/system.rb
163
+ - lib/vines/services/storage/couchdb/upload.rb
164
+ - lib/vines/services/storage/couchdb/user.rb
165
+ - lib/vines/services/storage/couchdb/vcard.rb
166
+ - lib/vines/services/storage/couchdb.rb
167
+ - lib/vines/services/storage.rb
168
+ - lib/vines/services/throttle.rb
169
+ - lib/vines/services/version.rb
170
+ - lib/vines/services/vql/compiler.rb
171
+ - lib/vines/services/vql/vql.citrus
172
+ - lib/vines/services/vql/vql.rb
173
+ - lib/vines/services.rb
174
+ - conf/config.rb
175
+ - web/coffeescripts/api.coffee
176
+ - web/coffeescripts/commands.coffee
177
+ - web/coffeescripts/files.coffee
178
+ - web/coffeescripts/init.coffee
179
+ - web/coffeescripts/services.coffee
180
+ - web/coffeescripts/setup.coffee
181
+ - web/coffeescripts/systems.coffee
182
+ - web/images/default-service.png
183
+ - web/images/linux.png
184
+ - web/images/mac.png
185
+ - web/images/run.png
186
+ - web/images/windows.png
187
+ - web/index.html
188
+ - web/stylesheets/common.css
189
+ - web/stylesheets/files.css
190
+ - web/stylesheets/services.css
191
+ - web/stylesheets/setup.css
192
+ - web/stylesheets/systems.css
193
+ - test/config_test.rb
194
+ - test/priority_queue_test.rb
195
+ - test/storage/couchdb_test.rb
196
+ - test/vql/compiler_test.rb
197
+ - test/vql/vql_test.rb
198
+ homepage: http://www.getvines.com
199
+ licenses: []
200
+
201
+ post_install_message:
202
+ rdoc_options: []
203
+
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ none: false
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: 1.9.2
212
+ required_rubygems_version: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: "0"
218
+ requirements: []
219
+
220
+ rubyforge_project:
221
+ rubygems_version: 1.8.10
222
+ signing_key:
223
+ specification_version: 3
224
+ summary: An XMPP component that broadcasts shell commands to many agents.
225
+ test_files:
226
+ - test/config_test.rb
227
+ - test/priority_queue_test.rb
228
+ - test/storage/couchdb_test.rb
229
+ - test/vql/compiler_test.rb
230
+ - test/vql/vql_test.rb