rubycon 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b79ff99d0d798079fc09ca6f650abea6fa1d729d
4
+ data.tar.gz: 3cdee1d9c3a2df990d6e5046df515f77d7e3f3fa
5
+ SHA512:
6
+ metadata.gz: db7797079d16c6af84770728f13efec337bebc7ccd67db88541d3057388e2296d6914a267b92a6867fadb498684067e514c643bf593421cff6b6eeddb1a960a6
7
+ data.tar.gz: 9a9dc4cebdf8a54722f90047698a4c730a69494ef9e0df6d3fa968fda8e756e5d36c79352a1f34522140e9483d8be5978e77be48ddee2fd2f1e744d09fd60357
@@ -0,0 +1 @@
1
+ 2.0.0-p247
@@ -0,0 +1,20 @@
1
+ language: ruby
2
+ rvm:
3
+ - ruby-head
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - 1.9.2
7
+ - jruby-head
8
+ - jruby-19mode
9
+ - rbx-19mode
10
+
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: ruby-head
14
+ - rvm: jruby-head
15
+
16
+ script: bundle exec rake test
17
+
18
+ before_install:
19
+ - sudo apt-get update -qq
20
+ - sudo apt-get install libreadline-dev
@@ -0,0 +1,11 @@
1
+ # 0.3
2
+ * added Ruby 2.0 support
3
+ * `rubycon rm` supports deletion of multiple servers now
4
+ * `rubycon execute` better seperator for output
5
+ * `rubycon console` now shows which server you are connected to
6
+ * `rubycon add` won't let you add identical servers anymore
7
+ * dropped bzip dependency
8
+
9
+ # 0.2
10
+
11
+ * Inital release
data/README.md CHANGED
@@ -1,21 +1,25 @@
1
+ # About
2
+
1
3
  Rubycon is a CLI for managing Source dedicated game servers (TF2, CS:S...). Think of it as a [HSLW](http://www.hlsw.org) clone, but terminal-based.
2
4
 
3
- ![Screenshot](http://i.imgur.com/cto9CnT.png)
5
+ ![Screenshot](http://i.imgur.com/k8q3zXO.png)
4
6
 
5
7
  Features:
6
8
 
7
- * RCON session with auto completion
9
+ * RCON session with auto completion :exclamation:
8
10
  * Overview of all your servers
9
- * Bulk execution of rcon commands
11
+ * Bulk execution of rcon commands :boom:
10
12
  * Start game client and join servers from the command line
11
13
 
14
+ Follow this gem on [Twitter](https://twitter.com/rubycon_cli).
15
+
12
16
  # Installation
13
17
 
14
- Rubycon was written in Ruby, Version 1.9.3 is minimum to run rubycon. (`ruby -v`).
18
+ Rubycon was written in Ruby, Version 1.9.2 is minimum to run rubycon. (`ruby -v`).
15
19
  Make sure to have the following libraries installed:
16
20
 
17
- * RHEL based: `yum install readline-devel bzip2-devel`
18
- * Debian based: `apt-get install libreadline-dev libbz2-dev`
21
+ * RHEL based: `yum install readline-devel`
22
+ * Debian based: `apt-get install libreadline-dev`
19
23
 
20
24
  Install rubycon with the following command:
21
25
 
@@ -71,8 +75,8 @@ CPU In (KB/s) Out (KB/s) Uptime Map changes FPS Players Connects
71
75
 
72
76
  Need further help?
73
77
  `$ rubycon help`
74
- `$ rubycon execute help`
75
- `$ rubycon rm help`
78
+ `$ rubycon help execute`
79
+ `$ rubycon help rm`
76
80
  ...
77
81
 
78
82
  # Contributing
@@ -81,4 +85,15 @@ Need further help?
81
85
  * Create your feature branch (`git checkout -b my-new-feature`)
82
86
  * Commit your changes (`git commit -am 'Add some feature'`)
83
87
  * Push to the branch (`git push origin my-new-feature`)
84
- * Create new Pull Request
88
+ * Create new Pull Request
89
+
90
+ # Code Status
91
+
92
+ * [![Gem Version](https://badge.fury.io/rb/rubycon.png)](http://badge.fury.io/rb/rubycon)
93
+ * [![Build Status](https://travis-ci.org/nTraum/rubycon.png?branch=master)](https://travis-ci.org/nTraum/rubycon)
94
+ * [![Dependency Status](https://gemnasium.com/nTraum/rubycon.png)](https://gemnasium.com/nTraum/rubycon)
95
+ * [![Code Climate](https://codeclimate.com/github/nTraum/rubycon.png)](https://codeclimate.com/github/nTraum/rubycon)
96
+
97
+ # License
98
+
99
+ rubycon is released under the [MIT](http://opensource.org/licenses/MIT) License.
data/Rakefile CHANGED
@@ -1,44 +1,6 @@
1
- require 'rake/clean'
2
- require 'rubygems'
3
- require 'rubygems/package_task'
4
- require 'rdoc/task'
5
- require 'cucumber'
6
- require 'cucumber/rake/task'
7
- Rake::RDocTask.new do |rd|
8
- rd.main = "README.rdoc"
9
- rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
10
- rd.title = 'Your application title'
11
- end
12
-
13
- spec = eval(File.read('rubycon.gemspec'))
14
-
15
- Gem::PackageTask.new(spec) do |pkg|
16
- end
17
- CUKE_RESULTS = 'results.html'
18
- CLEAN << CUKE_RESULTS
19
- desc 'Run features'
20
- Cucumber::Rake::Task.new(:features) do |t|
21
- opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
22
- opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
23
- t.cucumber_opts = opts
24
- t.fork = false
25
- end
26
-
27
- desc 'Run features tagged as work-in-progress (@wip)'
28
- Cucumber::Rake::Task.new('features:wip') do |t|
29
- tag_opts = ' --tags ~@pending'
30
- tag_opts = ' --tags @wip'
31
- t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
32
- t.fork = false
33
- end
34
-
35
- task :cucumber => :features
36
- task 'cucumber:wip' => 'features:wip'
37
- task :wip => 'features:wip'
38
1
  require 'rake/testtask'
39
- Rake::TestTask.new do |t|
40
- t.libs << "test"
41
- t.test_files = FileList['test/*_test.rb']
42
- end
43
2
 
44
- task :default => [:test,:features]
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ t.pattern = "test/**/*_test.rb"
6
+ end
@@ -9,7 +9,7 @@ rescue LoadError => e
9
9
  end
10
10
  include GLI::App
11
11
 
12
- program_desc 'CLI to manage your Source dedicated game servers.'
12
+ program_desc 'CLI to manage your Source dedicated game servers'
13
13
  version Rubycon::VERSION
14
14
 
15
15
  flag [:c, :config], :default_value => File.join(ENV['HOME'], '.config', 'rubycon', 'rubycon.yml'),
@@ -18,7 +18,7 @@ flag [:c, :config], :default_value => File.join(ENV['HOME'], '.config', 'rubycon
18
18
  desc 'adds a new server'
19
19
  arg_name 'ALIAS'
20
20
  command :add do |c|
21
- c.flag [:a, :address], :arg_name => 'HOSTNAME',
21
+ c.flag [:a, :address], :arg_name => 'HOSTNAME',
22
22
  :desc => 'hostname or IP'
23
23
 
24
24
  c.flag [:p, :port], :default_value => 27015,
@@ -30,27 +30,36 @@ command :add do |c|
30
30
  :desc => 'Rcon password'
31
31
 
32
32
  c.action do |g, o, args|
33
- exit_now!('ALIAS is required') if args.empty?
34
- exit_now!('HOSTNAME is required') unless o[:address]
35
- exit_now!('RCON is required') unless o[:rcon]
36
- exit_now!("ALIAS #{args.first}` already used") if $config.find_by_name args.first
37
- s = Rubycon::Server.new(args.first, o[:a], o[:p], o[:r])
38
- $config.add_server s
33
+ begin
34
+ s = Rubycon::Server.new(args.first, o[:a], o[:p], o[:r])
35
+ $config.add_server s
36
+ exit_now!("ALIAS #{args.first}` already used") if $config.find_by_name args.first
37
+ exit_now!("Server #{o[:a]}:#{o[:p]} already added") if $config.find_by_host_and_port o[:a], o[:p]
38
+
39
+ rescue Rubycon::ServerError, Rubycon::ConfigError => e
40
+ puts e.message
41
+ end
39
42
  end
40
43
  end
41
44
 
42
- desc 'deletes the specified server'
43
- arg_name 'ALIAS'
45
+ desc 'deletes specified server(s)'
46
+ arg_name 'ALIAS[ ALIAS]*'
44
47
  command :rm do |c|
45
48
  c. switch [:a, :all], :negatable => false,
46
49
  :desc => 'Deletes all servers'
47
50
 
48
51
  c.action do |g, o, args|
49
52
  if o[:a]
50
- $config.delete_all_servers
53
+ $config.delete_all_servers
51
54
  else
52
55
  exit_now!('ALIAS is required') if args.empty?
53
- exit_now!("Unknown server alias: #{args.first}") unless $config.delete_server args.first
56
+ servers = []
57
+ args.each do |arg|
58
+ server = $config.find_by_name arg
59
+ exit_now!("Unknown server alias: #{arg}") unless server
60
+ servers << server
61
+ end
62
+ servers.each{|server| $config.delete_server server.name}
54
63
  end
55
64
  end
56
65
  end
@@ -58,10 +67,10 @@ end
58
67
  desc 'lists all servers'
59
68
  command :list do |c|
60
69
  c.flag [:s, :spacing], :default_value => 8,
61
- :desc => 'Amount of whitespace between the columns',
62
- :type => Integer
70
+ :desc => 'Amount of whitespace between the columns',
71
+ :type => Integer
63
72
  c.action do |g, o, args|
64
- exit_now!('No servers added yet. Use `rubycon add` to add a new server.') if $config.servers.empty?
73
+ exit_now!('No servers added yet. Use `rubycon add` to add a new server') if $config.servers.empty?
65
74
 
66
75
  server_infos = Parallel.map($config.servers, :in_threads => $config.servers.size) do |s|
67
76
  Rubycon::ServerInfo.new s
@@ -70,7 +79,7 @@ command :list do |c|
70
79
  name_max_width = ($config.servers.map {|s| s.name.length}).max
71
80
  map_max_width = (server_infos.map{|i| i.map.length}).max
72
81
  players_max_width = (server_infos.map{|i| "#{i.players_count}/#{i.players_max}".length}).max
73
- ping_max_width = (server_infos.map{|i| i.ping.to_s.length}).max
82
+ ping_max_width = (server_infos.map{|i| i.ping.to_s.length}).max
74
83
 
75
84
  puts "Server".ljust(name_max_width).bold + "Map".rjust(map_max_width + o[:s]).bold +
76
85
  "Players".rjust(players_max_width + o[:s]).bold +
@@ -85,7 +94,7 @@ command :list do |c|
85
94
  puts s.name.ljust(name_max_width) + i.map.rjust(map_max_width + o[:s]) +
86
95
  "#{i.players_count}/#{i.players_max}".rjust(players_max_width + o[:s]) +
87
96
  i.ping.to_s.rjust(ping_max_width + o[:s])
88
- end
97
+ end
89
98
  end
90
99
  end
91
100
  end
@@ -97,7 +106,7 @@ command :console do |c|
97
106
  exit_now!('ALIAS is required') if args.empty?
98
107
  server = $config.find_by_name args.first
99
108
  exit_now!("Unknown server alias: #{args.first}") if server.nil?
100
- puts 'Use CTRL+D to exit.'
109
+ puts 'Use CTRL+D to exit'
101
110
  Rubycon::RconSession.new server
102
111
  end
103
112
  end
@@ -114,8 +123,8 @@ command :execute do |c|
114
123
  if o[:a]
115
124
  servers = $config.servers
116
125
  else
117
- servers = []
118
126
  exit_now!('ALIAS is required') if args.empty?
127
+ servers = []
119
128
  args.each do |arg|
120
129
  server = $config.find_by_name arg
121
130
  exit_now!("Unknown server alias: #{arg}") unless server
@@ -129,10 +138,12 @@ command :execute do |c|
129
138
  responses[server.name] = executor.response
130
139
  end
131
140
 
141
+ max_width = responses.each_value.map{|response|response.split(/\r?\n/).map{|line| line.length}.max}.max
132
142
  responses.each_pair do |name, response|
133
143
  puts "#{name.bold}:"
134
144
  puts response
135
- puts "---------------------------------"
145
+ puts
146
+ puts "-" * max_width
136
147
  end
137
148
  end
138
149
  end
@@ -155,7 +166,7 @@ command :connect do |c|
155
166
  when /linux|bsd/
156
167
  system "xdg-open #{uri}"
157
168
  else
158
- exit_now! 'Cannot connect to server. Couldn\'t identify your OS.'
169
+ exit_now! 'Cannot connect to server. Couldn\'t identify your OS'
159
170
  end
160
171
  end
161
172
  end
@@ -2,11 +2,9 @@ require 'colored'
2
2
  require 'fileutils'
3
3
  require 'parallel'
4
4
  require 'readline'
5
- require 'rubycon/config.rb'
6
- require 'rubycon/rcon_executor.rb'
7
- require 'rubycon/rcon_session.rb'
8
- require 'rubycon/server.rb'
9
- require 'rubycon/server_info.rb'
10
- require 'rubycon/version.rb'
11
5
  require 'steam-condenser'
12
- require 'yaml'
6
+ require 'yaml'
7
+
8
+ Dir[File.join(File.dirname(__FILE__), 'rubycon', '**', '*.rb')].each {|file| require file }
9
+
10
+ include Rubycon
@@ -1,7 +1,6 @@
1
1
  module Rubycon
2
2
  class Config
3
- attr_reader :path, :servers
4
- attr_accessor
3
+ attr_reader :path, :servers
5
4
 
6
5
  def initialize(path)
7
6
  @servers = []
@@ -29,6 +28,7 @@ module Rubycon
29
28
  end
30
29
 
31
30
  def add_server(server)
31
+ raise ConfigError, "ALIAS #{server.name} already used." if find_by_name server.name
32
32
  @servers << server
33
33
  save
34
34
  end
@@ -47,5 +47,9 @@ module Rubycon
47
47
  def find_by_name(name)
48
48
  @servers.find {|server| name.downcase == server.name.downcase}
49
49
  end
50
+
51
+ def find_by_host_and_port(address, port)
52
+ @servers.find {|server| port == server.port and server.address.downcase == address.downcase}
53
+ end
50
54
  end
51
55
  end
@@ -0,0 +1,4 @@
1
+ module Rubycon
2
+ class ConfigError < StandardError
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Rubycon
2
+ class ServerError < StandardError
3
+ end
4
+ end
@@ -54,7 +54,7 @@ module Rubycon
54
54
  puts 'Connection refused. Wrong host?'
55
55
  exit
56
56
  rescue SteamCondenser::TimeoutError
57
- puts '---Connection timed out while sending command!'
57
+ puts 'Connection timed out while sending command, reconnecting...'
58
58
  reconnect
59
59
  end
60
60
  end
@@ -77,7 +77,7 @@ module Rubycon
77
77
  end
78
78
 
79
79
  def readline_with_history
80
- line = Readline.readline("> ", true)
80
+ line = Readline.readline("#{@server_info.name}> ", true)
81
81
  return nil if line.nil?
82
82
  if line =~ /^\s*$/ or Readline::HISTORY.to_a[-2] == line
83
83
  Readline::HISTORY.pop
@@ -7,10 +7,11 @@ module Rubycon
7
7
  @address = address
8
8
  @port = port
9
9
  @rcon = rcon
10
- end
11
10
 
12
- def self.from_hash(hash)
13
- Server.new(hash['name'], hash['address'], hash['port'], hash['rcon'])
11
+ raise ServerError, 'ALIAS is required.' unless @name && !@name.empty?
12
+ raise ServerError, 'HOSTNAME is required.' unless @address && !@address.empty?
13
+ raise ServerError, 'PORT is required.' unless @port
14
+ raise ServerError, 'RCON is required' unless @rcon
14
15
  end
15
16
  end
16
17
  end
@@ -1,3 +1,3 @@
1
1
  module Rubycon
2
- VERSION = '0.2'
2
+ VERSION = '0.3'
3
3
  end
@@ -2,24 +2,29 @@
2
2
  require File.join([File.dirname(__FILE__),'lib','rubycon','version.rb'])
3
3
  spec = Gem::Specification.new do |s|
4
4
  s.name = 'rubycon'
5
+ s.license = 'MIT'
5
6
  s.version = Rubycon::VERSION
6
7
  s.author = 'Philipp Preß'
7
8
  s.email = 'philipp.press@googlemail.com'
8
9
  s.homepage = 'https://github.com/nTraum/rubycon'
9
10
  s.platform = Gem::Platform::RUBY
10
11
  s.summary = 'CLI to manage your Source dedicated game servers.'
11
- s.description = File.read 'README.md'
12
+ s.description = s.summary
12
13
  s.files = `git ls-files`.split($/)
14
+ s.test_files = Dir.glob("{spec,test}/**/*.rb")
13
15
 
16
+ s.required_ruby_version = '>= 1.9.2'
14
17
  s.require_paths << 'lib'
15
18
  s.bindir = 'bin'
16
19
  s.executables << 'rubycon'
17
- s.add_development_dependency('aruba')
18
- s.add_development_dependency('rake')
19
- s.add_development_dependency('rdoc')
20
- s.add_runtime_dependency('gli','2.5.6')
21
- s.add_runtime_dependency('highline', '1.6.19')
22
- s.add_runtime_dependency('steam-condenser', '1.3.5')
23
- s.add_runtime_dependency('colored', '1.2')
24
- s.add_runtime_dependency('parallel', '0.7.0')
20
+ s.requirements << 'libreadline-dev'
21
+ s.add_dependency 'colored', '~> 1.2'
22
+ s.add_dependency 'gli', '~> 2.5'
23
+ s.add_dependency 'highline', '~> 1.6'
24
+ s.add_dependency 'parallel', '~> 0.7'
25
+ s.add_dependency 'steam-condenser', '~> 1.3'
26
+ s.add_development_dependency 'minitest'
27
+ s.add_development_dependency 'coveralls'
28
+ s.add_development_dependency 'minitest-reporters'
29
+ s.add_development_dependency 'rake'
25
30
  end
@@ -0,0 +1,34 @@
1
+ require_relative File.join(['..','test_helper'])
2
+
3
+ describe Server do
4
+ describe 'when providing no name' do
5
+ it 'must raise an error' do
6
+ proc {Rubycon::Server.new(nil, 'foo', 27015, 'bar')}.must_raise ServerError
7
+ end
8
+ end
9
+ describe 'when providing an empty name' do
10
+ it 'must raise an error' do
11
+ proc {Rubycon::Server.new('', 'foo', 27015, 'bar')}.must_raise ServerError
12
+ end
13
+ end
14
+ describe 'when providing no address' do
15
+ it 'must raise an error' do
16
+ proc {Rubycon::Server.new('foo', nil, 27015, 'bar')}.must_raise ServerError
17
+ end
18
+ end
19
+ describe 'when providing an empty address' do
20
+ it 'must raise an error' do
21
+ proc {Rubycon::Server.new('foo', '', 27015, 'bar')}.must_raise ServerError
22
+ end
23
+ end
24
+ describe 'when providing no rcon password' do
25
+ it 'must raise an error' do
26
+ proc {Rubycon::Server.new('foo', 'bar', 27015, nil)}.must_raise ServerError
27
+ end
28
+ end
29
+ describe 'when providing an empty rcon password' do
30
+ it 'must accept that security issue' do
31
+ Rubycon::Server.new('foo', 'bar', 27015, '')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,11 @@
1
+ require_relative File.join(['..','test_helper'])
2
+
3
+ describe Rubycon do
4
+ it 'must be defined' do
5
+ VERSION.wont_be_nil
6
+ end
7
+
8
+ it 'must have the right version' do
9
+ VERSION.must_equal '0.3'
10
+ end
11
+ end
@@ -1,9 +1,10 @@
1
- require 'test/unit'
1
+ require 'coveralls'
2
+ require 'minitest/autorun'
3
+ require 'minitest/reporters'
4
+ require 'minitest/spec'
2
5
 
3
- # Add test libraries you want to use here, e.g. mocha
6
+ MiniTest::Reporters.use! MiniTest::Reporters::SpecReporter.new
4
7
 
5
- class Test::Unit::TestCase
8
+ Coveralls.wear!
6
9
 
7
- # Add global extensions to the test case class here
8
-
9
- end
10
+ require File.join([File.dirname(__FILE__),'..','lib','rubycon.rb'])
metadata CHANGED
@@ -1,169 +1,142 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubycon
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
5
- prerelease:
4
+ version: '0.3'
6
5
  platform: ruby
7
6
  authors:
8
7
  - Philipp Preß
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-17 00:00:00.000000000 Z
11
+ date: 2013-08-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: aruba
14
+ name: colored
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
19
+ version: '1.2'
20
+ type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: '1.2'
30
27
  - !ruby/object:Gem::Dependency
31
- name: rake
28
+ name: gli
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
33
+ version: '2.5'
34
+ type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: '0'
40
+ version: '2.5'
46
41
  - !ruby/object:Gem::Dependency
47
- name: rdoc
42
+ name: highline
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ~>
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
47
+ version: '1.6'
48
+ type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ~>
60
53
  - !ruby/object:Gem::Version
61
- version: '0'
54
+ version: '1.6'
62
55
  - !ruby/object:Gem::Dependency
63
- name: gli
56
+ name: parallel
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - '='
59
+ - - ~>
68
60
  - !ruby/object:Gem::Version
69
- version: 2.5.6
61
+ version: '0.7'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - '='
66
+ - - ~>
76
67
  - !ruby/object:Gem::Version
77
- version: 2.5.6
68
+ version: '0.7'
78
69
  - !ruby/object:Gem::Dependency
79
- name: highline
70
+ name: steam-condenser
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - '='
73
+ - - ~>
84
74
  - !ruby/object:Gem::Version
85
- version: 1.6.19
75
+ version: '1.3'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - '='
80
+ - - ~>
92
81
  - !ruby/object:Gem::Version
93
- version: 1.6.19
82
+ version: '1.3'
94
83
  - !ruby/object:Gem::Dependency
95
- name: steam-condenser
84
+ name: minitest
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - '='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
- version: 1.3.5
102
- type: :runtime
89
+ version: '0'
90
+ type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - '='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
- version: 1.3.5
96
+ version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
- name: colored
98
+ name: coveralls
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - '='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
- version: '1.2'
118
- type: :runtime
103
+ version: '0'
104
+ type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - '='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
- version: '1.2'
110
+ version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
- name: parallel
112
+ name: minitest-reporters
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - '='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
- version: 0.7.0
134
- type: :runtime
117
+ version: '0'
118
+ type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - '='
140
- - !ruby/object:Gem::Version
141
- version: 0.7.0
142
- description: ! "Rubycon is a CLI for managing Source dedicated game servers (TF2,
143
- CS:S...). Think of it as a [HSLW](http://www.hlsw.org) clone, but terminal-based.\n\n![Screenshot](http://i.imgur.com/cto9CnT.png)\n\nFeatures:\n\n*
144
- RCON session with auto completion\n* Overview of all your servers\n* Bulk execution
145
- of rcon commands\n* Start game client and join servers from the command line\n\n#
146
- Installation\n\nRubycon was written in Ruby, Version 1.9.3 is minimum to run rubycon.
147
- (`ruby -v`).\nMake sure to have the following libraries installed:\n\n* RHEL based:
148
- \ `yum install readline-devel bzip2-devel`\n* Debian based: `apt-get install libreadline-dev
149
- libbz2-dev`\n\nInstall rubycon with the following command:\n\n`$ gem install rubycon`\n\n#
150
- Usage\n\nFirst of all, add a game server to rubycon:\n\n```\n$ rubycon add my_server
151
- \\\n --address=192.168.0.1 \\\n --rcon=foobar\n```\n\nTime to check out how
152
- your server is doing:\n\n```\n$ rubycon list\nServer Map Players
153
- \ Ping\nmy_server ctf_2fort 4/25 42\n```\n\nHop into
154
- a rcon session:\n\n```\n$ rubycon console my_server\nUse CTRL+D to exit.\n> sta\nstar_memory
155
- \ startdemos startmovie startupmenu stats status\n> status\nhostname:
156
- MyServer\nversion : 1797820/24 5331 secure\nudp/ip : 192.168.0.1:27015 (public
157
- ip: 192.168.0.1)\naccount : not logged in (No account specified)\nmap : ctf_2fort
158
- at: 0 x, 0 y, 0 z\nsourcetv: port 27020, delay 90.0s\nplayers : 0 (25 max)\n\n#
159
- userid name uniqueid connected ping loss state adr\n>\n```\n\nNeed
160
- stats from all your servers? Yes sir:\n\n```\n$ rubycon execute --command=stats
161
- --all\nmy_server:\nCPU In (KB/s) Out (KB/s) Uptime Map changes FPS Players
162
- \ Connects\n0.00 0.00 0.00 5093 7 62.44 0 1\n---------------------------------\n```\n\nNeed
163
- further help?\n`$ rubycon help`\n`$ rubycon execute help`\n`$ rubycon rm help`\n...\n\n#
164
- Contributing\n\n* Fork it\n* Create your feature branch (`git checkout -b my-new-feature`)\n*
165
- Commit your changes (`git commit -am 'Add some feature'`)\n* Push to the branch
166
- (`git push origin my-new-feature`)\n* Create new Pull Request"
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: CLI to manage your Source dedicated game servers.
167
140
  email: philipp.press@googlemail.com
168
141
  executables:
169
142
  - rubycon
@@ -171,47 +144,53 @@ extensions: []
171
144
  extra_rdoc_files: []
172
145
  files:
173
146
  - .gitignore
147
+ - .ruby-version
148
+ - .travis.yml
149
+ - CHANGELOG.md
174
150
  - Gemfile
175
151
  - README.md
176
152
  - Rakefile
177
153
  - bin/rubycon
178
- - features/rubycon.feature
179
- - features/step_definitions/rubycon_steps.rb
180
- - features/support/env.rb
181
154
  - lib/rubycon.rb
182
155
  - lib/rubycon/config.rb
156
+ - lib/rubycon/errors/config_error.rb
157
+ - lib/rubycon/errors/server_error.rb
183
158
  - lib/rubycon/rcon_executor.rb
184
159
  - lib/rubycon/rcon_session.rb
185
160
  - lib/rubycon/server.rb
186
161
  - lib/rubycon/server_info.rb
187
162
  - lib/rubycon/version.rb
188
163
  - rubycon.gemspec
189
- - rubycon.rdoc
190
- - test/default_test.rb
164
+ - test/rubycon/server_test.rb
165
+ - test/rubycon/version_test.rb
191
166
  - test/test_helper.rb
192
167
  homepage: https://github.com/nTraum/rubycon
193
- licenses: []
168
+ licenses:
169
+ - MIT
170
+ metadata: {}
194
171
  post_install_message:
195
172
  rdoc_options: []
196
173
  require_paths:
197
174
  - lib
198
175
  - lib
199
176
  required_ruby_version: !ruby/object:Gem::Requirement
200
- none: false
201
177
  requirements:
202
- - - ! '>='
178
+ - - '>='
203
179
  - !ruby/object:Gem::Version
204
- version: '0'
180
+ version: 1.9.2
205
181
  required_rubygems_version: !ruby/object:Gem::Requirement
206
- none: false
207
182
  requirements:
208
- - - ! '>='
183
+ - - '>='
209
184
  - !ruby/object:Gem::Version
210
185
  version: '0'
211
- requirements: []
186
+ requirements:
187
+ - libreadline-dev
212
188
  rubyforge_project:
213
- rubygems_version: 1.8.23
189
+ rubygems_version: 2.0.3
214
190
  signing_key:
215
- specification_version: 3
191
+ specification_version: 4
216
192
  summary: CLI to manage your Source dedicated game servers.
217
- test_files: []
193
+ test_files:
194
+ - test/rubycon/server_test.rb
195
+ - test/rubycon/version_test.rb
196
+ - test/test_helper.rb
@@ -1,8 +0,0 @@
1
- Feature: My bootstrapped app kinda works
2
- In order to get going on coding my awesome app
3
- I want to have aruba and cucumber setup
4
- So I don't have to do it myself
5
-
6
- Scenario: App just runs
7
- When I get help for "rubycon"
8
- Then the exit status should be 0
@@ -1,6 +0,0 @@
1
- When /^I get help for "([^"]*)"$/ do |app_name|
2
- @app_name = app_name
3
- step %(I run `#{app_name} help`)
4
- end
5
-
6
- # Add more step definitions here
@@ -1,15 +0,0 @@
1
- require 'aruba/cucumber'
2
-
3
- ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
4
- LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
5
-
6
- Before do
7
- # Using "announce" causes massive warnings on 1.9.2
8
- @puts = true
9
- @original_rubylib = ENV['RUBYLIB']
10
- ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
11
- end
12
-
13
- After do
14
- ENV['RUBYLIB'] = @original_rubylib
15
- end
@@ -1,5 +0,0 @@
1
- = rubycon
2
-
3
- Generate this with
4
- rubycon rdoc
5
- After you have described your command line interface
@@ -1,14 +0,0 @@
1
- require 'test_helper'
2
-
3
- class DefaultTest < Test::Unit::TestCase
4
-
5
- def setup
6
- end
7
-
8
- def teardown
9
- end
10
-
11
- def test_the_truth
12
- assert true
13
- end
14
- end