diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml new file mode 100644 index 0000000..47d56f2 --- /dev/null +++ b/.github/workflows/style.yml @@ -0,0 +1,27 @@ +name: Style + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + lint: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby 3.1 + uses: actions/setup-ruby@v1 + with: + ruby-version: 3.1.x + - name: Prepare + run: | + gem install bundler + gem install rubocop:1.31.2 + bundle install --jobs 4 --retry 3 + - name: Check ruby with rubocop + run: | + rubocop diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..197e2d5 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,47 @@ +AllCops: + TargetRubyVersion: 3.1.2 + NewCops: enable + +Metrics/BlockLength: + Enabled: false + +Metrics/PerceivedComplexity: + Enabled: false + +Metrics/MethodLength: + Enabled: false + +Metrics/CyclomaticComplexity: + Enabled: false + +Metrics/AbcSize: + Enabled: false + +Style/GlobalVars: + Enabled: false + +Naming/MethodParameterName: + Enabled: false + +Metrics/ClassLength: + Enabled: false + +Layout/LineContinuationLeadingSpace: + Enabled: false + +# TODO: enable +Metrics/ParameterLists: + Enabled: false + +Lint/DuplicateBranch: + Enabled: false + +Style/Documentation: + Enabled: false + +Naming/AccessorMethodName: + Enabled: false + +Style/ClassVars: + Enabled: false + diff --git a/lib/bytes.rb b/lib/bytes.rb index 13edf91..2386cb1 100644 --- a/lib/bytes.rb +++ b/lib/bytes.rb @@ -11,9 +11,9 @@ def str_bytes(str) end def bytes_to_str(data) - data.unpack('H*').join('') + data.unpack('H*').join end def get_byte(data, start = 0, num = 1) - data[start...(start + num)].unpack('H*').join('').upcase + data[start...(start + num)].unpack('H*').join.upcase end diff --git a/lib/chunk.rb b/lib/chunk.rb index dba6044..de22ba4 100644 --- a/lib/chunk.rb +++ b/lib/chunk.rb @@ -75,7 +75,7 @@ class NetChunk size_bits[6..] + seq_bits[2..] header_bits.chars.groups_of(8).map do |eigth_bits| - eigth_bits.join('').to_i(2) + eigth_bits.join.to_i(2) end end @@ -91,8 +91,8 @@ class NetChunk size_bytes = size.chars.groups_of(8) # trim first 2 bits of both bytes # Size: 2 bytes (..00 0000 ..00 0010) - size_bytes.map! { |b| b[2..].join('') } - @size = size_bytes.join('').to_i(2) + size_bytes.map! { |b| b[2..].join } + @size = size_bytes.join.to_i(2) # sequence number # in da third byte but who needs seq?! diff --git a/lib/net_base.rb b/lib/net_base.rb index c281bcb..362aa7f 100644 --- a/lib/net_base.rb +++ b/lib/net_base.rb @@ -13,7 +13,7 @@ class NetBase @port = nil @s = nil @ack = 0 - @server_token = [0xFF, 0xFF, 0xFF, 0xFF].map { |b| b.to_s(16) }.join('') + @server_token = [0xFF, 0xFF, 0xFF, 0xFF].map { |b| b.to_s(16) }.join end def connect(socket, ip, port) @@ -47,7 +47,7 @@ class NetBase header_bits = "00#{flags_bits}#{@ack.to_s(2).rjust(10, '0')}#{num_chunks.to_s(2).rjust(8, '0')}" header = header_bits.chars.groups_of(8).map do |eight_bits| - eight_bits.join('').to_i(2) + eight_bits.join.to_i(2) end header += str_bytes(@server_token) diff --git a/lib/packer.rb b/lib/packer.rb index 6631ce2..e1b96d2 100644 --- a/lib/packer.rb +++ b/lib/packer.rb @@ -53,7 +53,7 @@ class Packer bytes = [] num_bits.chars.groups_of(7).each do |seven_bits| # mark all as extended - bytes << "1#{seven_bits.join('').rjust(7, '0')}" + bytes << "1#{seven_bits.join.rjust(7, '0')}" end # least significant first bytes = bytes.reverse @@ -105,7 +105,6 @@ class Unpacker # because bigger ints are not sent anyways bytes = @data.map { |byte| byte.to_s(2).rjust(8, '0') } first = bytes[0] - other = bytes[1..] sign = first[1] == '1' ? -1 : 1 bits = [] @@ -127,7 +126,7 @@ class Unpacker bits = [first[2..]] @data = @data[1..] end - bits.join('').to_i(2) * sign + bits.join.to_i(2) * sign end end diff --git a/lib/packet.rb b/lib/packet.rb index 99bf566..0497617 100644 --- a/lib/packet.rb +++ b/lib/packet.rb @@ -61,10 +61,10 @@ class Packet flags_byte = @data[0].unpack('B*') @flags = PacketFlags.new(flags_byte.first[2..5]).hash @payload = @data[PACKET_HEADER_SIZE..] - if flags_compressed - @payload = @huffman.decompress(@payload.unpack('C*')) - @payload = @payload.pack('C*') - end + return unless flags_compressed + + @payload = @huffman.decompress(@payload.unpack('C*')) + @payload = @payload.pack('C*') end def annotate_first_row(bytes) @@ -81,7 +81,7 @@ class Packet def to_s puts "#{@prefix}Packet" puts @prefix + " flags: #{@flags}" - bytes = str_hex(@data).split(' ') + bytes = str_hex(@data).split # TODO: check terminal size? max_width = 14 rows = bytes.groups_of(max_width) diff --git a/lib/teeworlds-client.rb b/lib/teeworlds-client.rb index d35e3c4..a38bc46 100755 --- a/lib/teeworlds-client.rb +++ b/lib/teeworlds-client.rb @@ -97,7 +97,7 @@ class TeeworldsClient @game_client = GameClient.new(self) # me trying to write cool code @client_token = (1..4).to_a.map { |_| rand(0..255) } - @client_token = @client_token.map { |b| b.to_s(16) }.join('') + @client_token = @client_token.map { |b| b.to_s(16) }.join puts "client token #{@client_token}" @netbase = NetBase.new @netbase.client_token = @client_token