cobhan 0.1.1 → 0.1.2

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.
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: