cobhan 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 108229c3a18ee44bac6a9d1e532b07c9614dc9c6481157eec0235641d898f9e6
4
- data.tar.gz: c1079db44a669a798268cb3a495a62fd9d68b224117f317034e058e80d2d30f4
3
+ metadata.gz: c98cafc350be8e54fd87618b50e2ff6d4bbf42d54a5e9d033ab0b225d4907413
4
+ data.tar.gz: 66b3e6a1e10c8d82f032acce54245aaadf4f0e390d59a7ee186d2b47cda4dc68
5
5
  SHA512:
6
- metadata.gz: 3af86ba501a6cb6f1a04e6283a451f099a526ba8be4df1ec8b810bbeee6f82462ee677eaa7cf4744bf784e47d637d1967b2cfd87cbb767c4cad72759983705f8
7
- data.tar.gz: 5e8260a84192f7ca305e2ee05aafdd7f8dbaf76d5d8ad9a200d0846bb13c030c0295315d9cbbaf628a9bde91ad338d5d209fdf470e2f0397c625c98a6d888a53
6
+ metadata.gz: 17321ea1ec00175b4a76230b722a48c5e26667a19f84319c11a02f1d66decafee037c31167966fb4fe80248b84fe6243a2559ce8ae6f33542bcea8508b19a5f4
7
+ data.tar.gz: '07913aa5ff7330905a26355817672f22c3aed4c099d51b155c6c8e3384ea8004fd9fa8c50a06dde011cb42a862bb5c259922a2cdeff4a9293cfd900f6c502221'
data/.rubocop.yml CHANGED
@@ -1,13 +1,31 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.5
3
-
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
7
-
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
3
+ NewCops: enable
4
+ SuggestExtensions: false
5
+ Exclude:
6
+ - 'Vagrantfile'
7
+ - 'vendor/**/*' # Github Actions
11
8
 
12
9
  Layout/LineLength:
13
10
  Max: 120
11
+
12
+ Metrics/BlockLength:
13
+ Enabled: false
14
+
15
+ Metrics/MethodLength:
16
+ Enabled: false
17
+
18
+ Style/WordArray:
19
+ Enabled: false
20
+
21
+ Style/SymbolArray:
22
+ Enabled: false
23
+
24
+ Style/MultilineBlockChain:
25
+ Enabled: false
26
+
27
+ Style/BlockDelimiters:
28
+ Enabled: false
29
+
30
+ Style/HashAsLastArrayItem:
31
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.2] - 2022-03-07
4
+
5
+ - Configure RuboCop
6
+ - Add `int_to_buffer` and `buffer_to_int`
7
+
3
8
  ## [0.1.1] - 2022-03-01
4
9
 
5
10
  - Fix gemspec description
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in cobhan.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
8
+ gem 'rake', '~> 13.0'
9
9
 
10
- gem "rspec", "~> 3.0"
10
+ gem 'rspec', '~> 3.0'
11
11
 
12
- gem "rubocop", "~> 1.21"
12
+ gem 'rubocop', '~> 1.21'
data/Rakefile CHANGED
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- require "rubocop/rake_task"
8
+ require 'rubocop/rake_task'
9
9
 
10
10
  RuboCop::RakeTask.new
11
11
 
data/Vagrantfile CHANGED
@@ -1,12 +1,12 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
3
 
4
- $script = <<-SCRIPT
4
+ SCRIPT = <<~SCRIPT
5
5
  set -e
6
6
 
7
7
  echo "Install RVM"
8
- gpg --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
9
- # If key add does not work, see https://rvm.io/rvm/security for alternatives.
8
+ curl -sSL https://rvm.io/mpapis.asc | gpg --import -
9
+ curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
10
10
  curl -sSL https://get.rvm.io | bash -s stable
11
11
  source /home/vagrant/.rvm/scripts/rvm
12
12
 
@@ -22,10 +22,11 @@ sudo yum install -y yum-utils
22
22
  sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
23
23
  sudo yum install docker-ce -y
24
24
  sudo usermod -aG docker $USER
25
- sudo systemctl restart docker.service
25
+ sudo systemctl start docker.service
26
+ sudo systemctl enable docker.service
26
27
  SCRIPT
27
28
 
28
- Vagrant.configure("2") do |config|
29
- config.vm.box = "centos/7"
30
- config.vm.provision "shell", inline: $script, privileged: false
29
+ Vagrant.configure('2') do |config|
30
+ config.vm.box = 'centos/7'
31
+ config.vm.provision 'shell', inline: SCRIPT, privileged: false
31
32
  end
data/cobhan.gemspec CHANGED
@@ -1,23 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/cobhan/version"
3
+ require_relative 'lib/cobhan/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "cobhan"
6
+ spec.name = 'cobhan'
7
7
  spec.version = Cobhan::VERSION
8
- spec.authors = ["GoDaddy"]
9
- spec.email = ["oss@godaddy.com"]
8
+ spec.authors = ['GoDaddy']
9
+ spec.email = ['oss@godaddy.com']
10
10
 
11
- spec.summary = "Ruby wrapper library for the Cobhan FFI system"
12
- spec.description = "Cobhan FFI is a proof of concept system for enabling shared code to be written in Rust or Go and consumed from all major languages/platforms in a safe and effective way, using easy helper functions to manage any unsafe data marshaling."
11
+ spec.summary = 'Ruby wrapper library for the Cobhan FFI system'
12
+ spec.description = <<~DESCRIPTION
13
+ Cobhan FFI is a proof of concept system for enabling shared code to be written
14
+ in Rust or Go and consumed from all major languages/platforms in a safe and effective way,
15
+ using easy helper functions to manage any unsafe data marshaling.
16
+ DESCRIPTION
13
17
 
14
- spec.homepage = "https://github.com/godaddy/cobhan-ruby"
15
- spec.license = "MIT"
16
- spec.required_ruby_version = ">= 2.5.0"
18
+ spec.homepage = 'https://github.com/godaddy/cobhan-ruby'
19
+ spec.license = 'MIT'
20
+ spec.required_ruby_version = '>= 2.5.0'
17
21
 
18
- spec.metadata["homepage_uri"] = spec.homepage
19
- spec.metadata["source_code_uri"] = "https://github.com/godaddy/cobhan-ruby"
20
- spec.metadata["changelog_uri"] = "https://github.com/godaddy/cobhan-ruby/blob/main/CHANGELOG.md"
22
+ spec.metadata['homepage_uri'] = spec.homepage
23
+ spec.metadata['source_code_uri'] = 'https://github.com/godaddy/cobhan-ruby'
24
+ spec.metadata['changelog_uri'] = 'https://github.com/godaddy/cobhan-ruby/blob/main/CHANGELOG.md'
25
+ spec.metadata['rubygems_mfa_required'] = 'true'
21
26
 
22
27
  # Specify which files should be added to the gem when it is released.
23
28
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -26,9 +31,9 @@ Gem::Specification.new do |spec|
26
31
  (f == __FILE__) || f.match(%r{\A(?:(?:bin|demo|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
27
32
  end
28
33
  end
29
- spec.bindir = "exe"
34
+ spec.bindir = 'exe'
30
35
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
36
+ spec.require_paths = ['lib']
32
37
 
33
38
  spec.add_dependency 'ffi', '~> 1.15.4'
34
39
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cobhan
4
- VERSION = "0.1.1"
4
+ VERSION = '0.1.2'
5
5
  end
data/lib/cobhan.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "cobhan/version"
3
+ require_relative 'cobhan/version'
4
4
 
5
5
  require 'ffi'
6
6
 
7
+ # Cobhan module includes helper functions to manage unsafe data marshaling.
7
8
  module Cobhan
8
9
  UnsupportedPlatformError = Class.new(StandardError)
9
10
 
@@ -58,7 +59,7 @@ module Cobhan
58
59
  length = 0 - length
59
60
  filename = buffer.get_bytes(BUFFER_HEADER_SIZE, length)
60
61
  # Read file with name in payload, and replace payload
61
- bytes = IO.binread(filename)
62
+ bytes = File.binread(filename)
62
63
  File.delete(filename)
63
64
  bytes
64
65
  end
@@ -70,4 +71,14 @@ module Cobhan
70
71
  buffer_ptr.put_int32(SIZEOF_INT32, 0) # Reserved - must be zero
71
72
  buffer_ptr
72
73
  end
74
+
75
+ def int_to_buffer(number)
76
+ buffer_ptr = FFI::MemoryPointer.new(1, SIZEOF_INT32 * 2, false)
77
+ buffer_ptr.put_int64(0, number)
78
+ buffer_ptr
79
+ end
80
+
81
+ def buffer_to_int(buffer_ptr)
82
+ buffer_ptr.get_int64(0)
83
+ end
73
84
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cobhan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GoDaddy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-01 00:00:00.000000000 Z
11
+ date: 2022-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -52,9 +52,10 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.7'
55
- description: Cobhan FFI is a proof of concept system for enabling shared code to be
56
- written in Rust or Go and consumed from all major languages/platforms in a safe
57
- and effective way, using easy helper functions to manage any unsafe data marshaling.
55
+ description: |
56
+ Cobhan FFI is a proof of concept system for enabling shared code to be written
57
+ in Rust or Go and consumed from all major languages/platforms in a safe and effective way,
58
+ using easy helper functions to manage any unsafe data marshaling.
58
59
  email:
59
60
  - oss@godaddy.com
60
61
  executables: []
@@ -83,6 +84,7 @@ metadata:
83
84
  homepage_uri: https://github.com/godaddy/cobhan-ruby
84
85
  source_code_uri: https://github.com/godaddy/cobhan-ruby
85
86
  changelog_uri: https://github.com/godaddy/cobhan-ruby/blob/main/CHANGELOG.md
87
+ rubygems_mfa_required: 'true'
86
88
  post_install_message:
87
89
  rdoc_options: []
88
90
  require_paths: