magikku 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document CHANGED
@@ -1,5 +1,7 @@
1
1
  README.rdoc
2
+ History.txt
2
3
  lib/**/*.rb
3
4
  bin/*
5
+ ext/**/*.c
4
6
  features/**/*.feature
5
7
  LICENSE
data/History.txt ADDED
@@ -0,0 +1,2 @@
1
+ == 1.0.0 02/22/2011
2
+ * Initial release version
data/README.rdoc CHANGED
@@ -1,17 +1,87 @@
1
- = ruby-magic
1
+ = magikku
2
2
 
3
3
  Ruby bindings for libmagic(3)
4
4
 
5
- Includes FFI bindings as well as native ruby bindings (the latter is coming soon)..
5
+ There are other variations of this binding. This one was written to ensure all features
6
+ of the library were bound correctly (including compiling and checking magic databases)
7
+ as well as to ensure compatability on different ruby environments.
8
+
9
+ Magikku includes FFI bindings as well as native ruby bindings.
6
10
 
7
11
  == Synopsis
8
12
 
9
- (coming soon)
13
+ Here's a basic example identifying file contents.
14
+
15
+ #!/usr/bin/env ruby
16
+
17
+ require 'rubygems'
18
+ require 'magikku'
19
+
20
+ puts "This file is: " << Magikku.file(__FILE__)
21
+ puts "Mime Type: " << Magikku.file(__FILE__, :flags => Magikku::Flags::MIME)
22
+
23
+
24
+ ... or string contents...
25
+
26
+ #!/usr/bin/env ruby
27
+
28
+ require 'rubygems'
29
+ require 'magikku'
30
+
31
+ dat = STDIN.read
32
+ puts "Data is: " << Magikku.string(dat)
33
+ puts "Mime Type: " << Magikku.string(dat, :flags => Magikku::Flags::MIME)
34
+
35
+ Sometimes it's better to initialize a single object to reuse for lots of files:
36
+
37
+ #!/usr/bin/env ruby
38
+
39
+ require 'rubygems'
40
+ require 'magikku'
41
+
42
+ def ident(magik, f)
43
+ magik.flags = Magikku::Flags::NONE
44
+ print "#{f} (#{magik.file(f)}) "
45
+ magik.flags = Magikku::Flags::MIME
46
+ puts magik.file(f)
47
+
48
+ if File.directory?(f)
49
+ Dir[File.join(f, "*")].each {|f2| ident(magik, f2) }
50
+ end
51
+ end
52
+
53
+ magik = Magikku.new
54
+ Dir["*"].each do |f|
55
+ ident(magik,f)
56
+ end
57
+ magik.close
58
+
59
+
60
+ == Requirements
61
+
62
+ * libmagic - The dynamic library is generally installed when buliding from
63
+ source, but your system may have a package available.
64
+ http://www.darwinsys.com/file/
65
+
66
+ Optional:
67
+
68
+ * ruby-ffi - If you do not wish to compile the C bindings, or if you want to
69
+ develop magikku, you will need to have ruby-FFI available. But, this is not
70
+ needed for basic use under MRI (Matz Ruby Interpreter). http://github.com/ffi/ffi
10
71
 
11
72
  == Installation
12
73
 
13
- (sudo)? gem install ruby-magic
74
+ As a gem:
75
+
76
+ (sudo)? gem install magikku
77
+
78
+ From github:
79
+ # !first ensure you have libmagic installed.
14
80
 
81
+ git clone http://github.com/emonti/magikku.git
82
+ cd magikku
83
+ rake compile
84
+ rake spec # to make sure everything works
15
85
 
16
86
  == Copyright
17
87
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 1.0.0
@@ -21,10 +21,10 @@ require 'rbconfig'
21
21
 
22
22
  extension_name = "magikku_native"
23
23
 
24
- dir_config(extension_name)
24
+ dir_config(extension_name, '/usr/local/include', '/usr/local/lib')
25
25
 
26
26
  unless have_library("magic") and
27
- find_header("magic.h", "/usr/local/include")
27
+ find_header("magic.h")
28
28
  raise "You must install the libmagic library"
29
29
  end
30
30
 
data/lib/magikku.rb CHANGED
@@ -1,12 +1,12 @@
1
1
 
2
2
  require 'magikku/convenience'
3
3
 
4
- #begin
4
+ begin
5
5
  require 'magikku_native'
6
6
  Magikku.class_eval{ extend(MagikkuHelpers) }
7
- #rescue LoadError
8
- # require 'magikku_ffi'
9
- # Magikku = MagikkuFFI
10
- #end
7
+ rescue LoadError
8
+ require 'magikku_ffi'
9
+ Magikku = MagikkuFFI
10
+ end
11
11
 
12
12
 
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $: << File.expand_path(File.join(File.dirname(__FILE__), "..","lib"))
4
+
5
+ require 'rubygems'
6
+ require 'magikku'
7
+ include Magikku::Flags
8
+
9
+ def ident_file(fname)
10
+ puts "#{fname} (#{Magikku.file(fname)}): "+
11
+ "#{Magikku.file(fname, :flags => MIME)}"
12
+ if File.directory?(fname)
13
+ Dir[File.join(fname, "*")].each {|f| ident_file(f)}
14
+ end
15
+ end
16
+
17
+ files = (ARGV.empty?)? [__FILE__] : ARGV
18
+
19
+ files.each {|file|
20
+ ident_file(file)
21
+ }
22
+
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path(File.join(File.dirname(__FILE__), "..","lib"))
3
+
4
+ require 'rubygems'
5
+ require 'magikku'
6
+
7
+ def ident(magik, f)
8
+ magik.flags = Magikku::Flags::NONE
9
+ print "#{f} (#{magik.file(f)}) "
10
+ magik.flags = Magikku::Flags::MIME
11
+ puts magik.file(f)
12
+
13
+ if File.directory?(f)
14
+ Dir[File.join(f, "*")].each {|f2| ident(magik, f2) }
15
+ end
16
+ end
17
+
18
+ magik = Magikku.new
19
+ Dir["*"].each do |f|
20
+ ident(magik,f)
21
+ end
22
+ magik.close
metadata CHANGED
@@ -3,10 +3,10 @@ name: magikku
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 0
7
6
  - 1
8
7
  - 0
9
- version: 0.1.0
8
+ - 0
9
+ version: 1.0.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Eric Monti
@@ -56,6 +56,7 @@ extra_rdoc_files:
56
56
  - README.rdoc
57
57
  files:
58
58
  - .document
59
+ - History.txt
59
60
  - LICENSE
60
61
  - README.rdoc
61
62
  - Rakefile
@@ -66,6 +67,8 @@ files:
66
67
  - lib/magikku.rb
67
68
  - lib/magikku/convenience.rb
68
69
  - lib/magikku_ffi.rb
70
+ - samples/mimetype.rb
71
+ - samples/mimetype2.rb
69
72
  - spec/magikku_behaviors.rb
70
73
  - spec/magikku_ffi_spec.rb
71
74
  - spec/magikku_spec.rb