imsg-grep 0.1.5-darwin → 0.1.6.pre-darwin

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: 57ddef6878c4ff5a7359f79d3482c5b0e9c391ed5170623bb06c7c4e5ddebb83
4
- data.tar.gz: b2b548bf55ba13909a0e006b3dbfb27cdb633e575028e64bb358b525cdd35ae9
3
+ metadata.gz: 40b1912c5695bdf6be658c8d149f5ff994b779116d3005e8e8efa53e8eb4f299
4
+ data.tar.gz: d01d37b5ec34c20eaaaaa013a3175ffd4eff37313379fdcda2b39944ca74f827
5
5
  SHA512:
6
- metadata.gz: 5d6ea1f60dd4b4b132375c662156df78ab3de53e2def55d56763bba30a1c88bf7abec7246be24fe5cecab5c39b11bae098114dd28509d5ea4972aba5de27522b
7
- data.tar.gz: 397b91312c94deb494289c14a038ddbb199707a6a65c4c652b5790697090816bcb17029eb3b76be037bf1c03ac30dc1fbf784162cb06e8b992a7688158f947f9
6
+ metadata.gz: ba85f02f8e8b742387049b381a042caa136da0cea1f78b622ee1fa5916e81c6be0a6755173e880276a692fd8b1c8ab17975759067b16c713090baf120c9b9ea9
7
+ data.tar.gz: 23df2fbe2ea59d443f7346faeb66dc805724ef65aacf29a79c86d8612bba84d590f7b00af4d32ed51f0bfefd98f926f07014b1986ebb824eeab1abfa89045fb5
data/bin/imsg-grep CHANGED
@@ -2,7 +2,6 @@
2
2
  # frozen_string_literal: true
3
3
  # Search and filter iMessage database entries with regex patterns, date ranges, and participant filters
4
4
 
5
- require "bundler/setup"
6
5
 
7
6
  require "date"
8
7
  require "json"
data/bin/msg-info CHANGED
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Display detailed information about a specific message by ID from the iMessage database
3
3
 
4
- require "bundler/setup"
5
-
6
4
  require_relative '../lib/imsg-grep/dev/print_query'
7
5
  require_relative '../lib/imsg-grep/messages'
8
6
 
data/bin/sql-shell CHANGED
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Interactive SQL shell for querying the iMessage database with readline history
3
3
 
4
- require "bundler/setup"
5
-
6
4
  require_relative '../lib/imsg-grep/messages'
7
5
  require_relative '../lib/imsg-grep/dev/print_query'
8
6
  require 'readline'
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.1.6.pre
@@ -1,20 +1,22 @@
1
- require "ffi"
1
+ require "fiddle"
2
+ require "fiddle/import"
2
3
 
3
4
  module Img2png
4
- extend FFI::Library
5
- ffi_lib "#{__dir__}/img2png.dylib"
5
+ extend Fiddle::Importer
6
6
 
7
- attach_function :img2png_load_path, [:string, :pointer, :pointer], :pointer, blocking: true
8
- attach_function :img2png_load, [:pointer, :int, :pointer, :pointer], :pointer, blocking: true
9
- attach_function :img2png_convert, [:pointer, :int, :int, :int, :int, :pointer, :pointer], :bool, blocking: true
10
- attach_function :img2png_release, [:pointer], :void
11
- attach_function :img2png_free, [:pointer], :void
7
+ dlload "#{__dir__}/img2png.dylib"
8
+
9
+ extern "void* img2png_load_path(char*, int*, int*)"
10
+ extern "void* img2png_load(void*, int, int*, int*)"
11
+ extern "int img2png_convert(void*, int, int, int, int, void**, int*)"
12
+ extern "void img2png_release(void*)"
13
+ extern "void img2png_free(void*)"
12
14
 
13
15
  class Image
14
- def initialize(path:nil, data:nil)
16
+ def initialize(path: nil, data: nil)
15
17
  [path, data].compact.size == 1 or raise ArgumentError, "One of path: or data: must be specified"
16
- out_w = FFI::MemoryPointer.new(:int)
17
- out_h = FFI::MemoryPointer.new(:int)
18
+ out_w = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT)
19
+ out_h = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT)
18
20
 
19
21
  @handle = case
20
22
  when data then Img2png.img2png_load(data, data.bytesize, out_w, out_h)
@@ -22,15 +24,15 @@ module Img2png
22
24
  end
23
25
  raise "Failed to load image" if @handle.null?
24
26
 
25
- @width = out_w.read_int
26
- @height = out_h.read_int
27
+ @width = out_w[0, Fiddle::SIZEOF_INT].unpack1("i")
28
+ @height = out_h[0, Fiddle::SIZEOF_INT].unpack1("i")
27
29
  end
28
30
 
29
31
  def dimensions = [@width, @height]
30
32
 
31
33
  def convert(fit_w: nil, fit_h: nil, box_w: nil, box_h: nil)
32
- out_data = FFI::MemoryPointer.new(:pointer)
33
- out_len = FFI::MemoryPointer.new(:int)
34
+ out_data = Fiddle::Pointer.malloc(Fiddle::SIZEOF_VOIDP)
35
+ out_len = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT)
34
36
 
35
37
  success = Img2png.img2png_convert(
36
38
  @handle,
@@ -39,18 +41,18 @@ module Img2png
39
41
  out_data, out_len
40
42
  )
41
43
 
42
- return nil unless success
44
+ return nil if success == 0
43
45
 
44
- ptr = out_data.read_pointer
45
- len = out_len.read_int
46
- result = ptr.read_bytes(len)
46
+ ptr = Fiddle::Pointer.new(out_data[0, Fiddle::SIZEOF_VOIDP].unpack1("J"))
47
+ len = out_len[0, Fiddle::SIZEOF_INT].unpack1("i")
48
+ result = ptr[0, len]
47
49
  Img2png.img2png_free(ptr)
48
50
  result
49
51
  end
50
52
 
51
53
  def release
52
54
  Img2png.img2png_release(@handle) unless @handle.null?
53
- @handle = FFI::Pointer::NULL
55
+ @handle = Fiddle::NULL
54
56
  end
55
57
 
56
58
  def self.finalize(handle)
@@ -63,7 +65,7 @@ end
63
65
  # input = File.binread("x.heic")
64
66
 
65
67
  # # Load once, use multiple times
66
- # img = Img2png::Image.new(input)
68
+ # img = Img2png::Image.new(data: input)
67
69
 
68
70
  # # Get dimensions
69
71
  # p img.dimensions # => [4032, 3024]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imsg-grep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6.pre
5
5
  platform: darwin
6
6
  authors:
7
7
  - Caio Chassot
@@ -10,19 +10,61 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: ffi
13
+ name: base64
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '1.17'
18
+ version: '0.3'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '1.17'
25
+ version: '0.3'
26
+ - !ruby/object:Gem::Dependency
27
+ name: fiddle
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.1.8
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.1.8
40
+ - !ruby/object:Gem::Dependency
41
+ name: io-console
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.8'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.8'
54
+ - !ruby/object:Gem::Dependency
55
+ name: json
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.17'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.17'
26
68
  - !ruby/object:Gem::Dependency
27
69
  name: sqlite3
28
70
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +121,20 @@ dependencies:
79
121
  - - "~>"
80
122
  - !ruby/object:Gem::Version
81
123
  version: '1.3'
124
+ - !ruby/object:Gem::Dependency
125
+ name: debug
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.11'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.11'
82
138
  - !ruby/object:Gem::Dependency
83
139
  name: minitest
84
140
  requirement: !ruby/object:Gem::Requirement