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 +4 -4
- data/.rubocop.yml +26 -8
- data/CHANGELOG.md +5 -0
- data/Gemfile +4 -4
- data/Rakefile +3 -3
- data/Vagrantfile +8 -7
- data/cobhan.gemspec +19 -14
- data/lib/cobhan/version.rb +1 -1
- data/lib/cobhan.rb +13 -2
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c98cafc350be8e54fd87618b50e2ff6d4bbf42d54a5e9d033ab0b225d4907413
|
4
|
+
data.tar.gz: 66b3e6a1e10c8d82f032acce54245aaadf4f0e390d59a7ee186d2b47cda4dc68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
5
|
-
|
6
|
-
|
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
data/Gemfile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
source
|
3
|
+
source 'https://rubygems.org'
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in cobhan.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
gem
|
8
|
+
gem 'rake', '~> 13.0'
|
9
9
|
|
10
|
-
gem
|
10
|
+
gem 'rspec', '~> 3.0'
|
11
11
|
|
12
|
-
gem
|
12
|
+
gem 'rubocop', '~> 1.21'
|
data/Rakefile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rspec/core/rake_task'
|
5
5
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
|
-
require
|
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
|
-
|
4
|
+
SCRIPT = <<~SCRIPT
|
5
5
|
set -e
|
6
6
|
|
7
7
|
echo "Install RVM"
|
8
|
-
|
9
|
-
|
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
|
25
|
+
sudo systemctl start docker.service
|
26
|
+
sudo systemctl enable docker.service
|
26
27
|
SCRIPT
|
27
28
|
|
28
|
-
Vagrant.configure(
|
29
|
-
config.vm.box =
|
30
|
-
config.vm.provision
|
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
|
3
|
+
require_relative 'lib/cobhan/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
6
|
+
spec.name = 'cobhan'
|
7
7
|
spec.version = Cobhan::VERSION
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
8
|
+
spec.authors = ['GoDaddy']
|
9
|
+
spec.email = ['oss@godaddy.com']
|
10
10
|
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
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 =
|
15
|
-
spec.license =
|
16
|
-
spec.required_ruby_version =
|
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[
|
19
|
-
spec.metadata[
|
20
|
-
spec.metadata[
|
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 =
|
34
|
+
spec.bindir = 'exe'
|
30
35
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
|
-
spec.require_paths = [
|
36
|
+
spec.require_paths = ['lib']
|
32
37
|
|
33
38
|
spec.add_dependency 'ffi', '~> 1.15.4'
|
34
39
|
|
data/lib/cobhan/version.rb
CHANGED
data/lib/cobhan.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
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 =
|
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.
|
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-
|
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:
|
56
|
-
|
57
|
-
and
|
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:
|