brandeins 0.1.2 → 0.1.3
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.
- data/brandeins.gemspec +1 -2
- data/lib/brandeins.rb +5 -17
- data/lib/brandeins/pdf-tools.rb +15 -13
- data/lib/brandeins/setup.rb +34 -16
- data/lib/brandeins/version.rb +1 -1
- data/test/brandeins_test.rb +27 -0
- data/test/helper.rb +19 -0
- metadata +8 -7
data/brandeins.gemspec
CHANGED
|
@@ -22,9 +22,8 @@ Gem::Specification.new do |s|
|
|
|
22
22
|
s.require_paths = ["lib"]
|
|
23
23
|
|
|
24
24
|
s.post_install_message =<<-EOT
|
|
25
|
-
BrandEins gem
|
|
25
|
+
BrandEins gem runs on windows and os x and depends on pdftk/ghostscript to merge downloaded pdfs.
|
|
26
26
|
Run `brandeins setup` to check if all requirements are met and for informations on how to meet them.
|
|
27
27
|
|
|
28
|
-
|
|
29
28
|
EOT
|
|
30
29
|
end
|
data/lib/brandeins.rb
CHANGED
|
@@ -50,25 +50,13 @@ module BrandEins
|
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
desc 'setup', 'Checks if all requirements for using brandeins gem are met'
|
|
53
|
+
method_option :help
|
|
53
54
|
def setup
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
desc 'test', 'test some stuff'
|
|
58
|
-
method_option :input, :type => :string
|
|
59
|
-
method_option :output, :type => :string
|
|
60
|
-
def test
|
|
61
|
-
gs = BrandEins::PdfTools::GhostscriptWin.new
|
|
62
|
-
if gs.available?
|
|
63
|
-
puts "GS is available"
|
|
64
|
-
if options.input.nil? || options.output.nil?
|
|
65
|
-
puts "need input/output to merge files"
|
|
66
|
-
else
|
|
67
|
-
puts "input: #{options.input}, output: #{options.output}"
|
|
68
|
-
BrandEins::PdfTools::GhostscriptWin.merge_pdf_files(options.input, options.output)
|
|
69
|
-
end
|
|
55
|
+
setup = BrandEins::Setup.new
|
|
56
|
+
if !options.help.nil?
|
|
57
|
+
setup.help
|
|
70
58
|
else
|
|
71
|
-
|
|
59
|
+
setup.run
|
|
72
60
|
end
|
|
73
61
|
end
|
|
74
62
|
end
|
data/lib/brandeins/pdf-tools.rb
CHANGED
|
@@ -2,18 +2,20 @@ module BrandEins
|
|
|
2
2
|
module PdfTools
|
|
3
3
|
attr_reader :pdf_tools, :pdf_tool
|
|
4
4
|
|
|
5
|
-
def self.get_pdf_tool
|
|
5
|
+
def self.get_pdf_tool(env = nil)
|
|
6
|
+
@env = Hash.new
|
|
7
|
+
env = Hash.new if env.nil?
|
|
8
|
+
@env[:os] = env[:os] || RUBY_PLATFORM
|
|
9
|
+
|
|
6
10
|
@pdf_tools ||= _init_pdf_tools
|
|
7
11
|
@pdf_tool ||= @pdf_tools.first.new if @pdf_tools.length > 0
|
|
8
|
-
return @pdf_tool
|
|
9
12
|
end
|
|
10
13
|
|
|
11
14
|
class Template
|
|
12
|
-
attr_accessor :cmd, :args, :
|
|
15
|
+
attr_accessor :cmd, :args, :noop
|
|
13
16
|
|
|
14
17
|
def available?
|
|
15
|
-
|
|
16
|
-
_cmd_available? @cmd
|
|
18
|
+
_cmd_available? @cmd, @noop
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def merge_pdf_files(pdf_files, target_pdf)
|
|
@@ -31,9 +33,9 @@ module BrandEins
|
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
private
|
|
34
|
-
def _cmd_available? (cmd)
|
|
36
|
+
def _cmd_available? (cmd, args)
|
|
35
37
|
begin
|
|
36
|
-
open("|#{cmd}").close
|
|
38
|
+
open("|#{cmd} #{args}").close
|
|
37
39
|
rescue Exception
|
|
38
40
|
return false
|
|
39
41
|
end
|
|
@@ -46,26 +48,26 @@ module BrandEins
|
|
|
46
48
|
|
|
47
49
|
class PdftkOSX < TemplateOSX
|
|
48
50
|
def initialize
|
|
49
|
-
@cmd = '
|
|
51
|
+
@cmd = 'pdftk'
|
|
50
52
|
@args = '__pdf_files__ output __target_pdf__'
|
|
51
|
-
@
|
|
53
|
+
@noop = ' --version'
|
|
52
54
|
end
|
|
53
55
|
end
|
|
54
56
|
|
|
55
57
|
class GhostscriptWin < TemplateWin
|
|
56
58
|
def initialize
|
|
57
|
-
@cmd = '
|
|
59
|
+
@cmd = 'gswin64c.exe'
|
|
58
60
|
@args = ' -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=__target_pdf__ __pdf_files__'
|
|
59
|
-
@
|
|
61
|
+
@noop = ' --version'
|
|
60
62
|
end
|
|
61
63
|
end
|
|
62
64
|
|
|
63
65
|
private
|
|
64
66
|
def self._init_pdf_tools
|
|
65
67
|
@pdf_tools = Array.new
|
|
66
|
-
if
|
|
68
|
+
if @env[:os].include? 'w32'
|
|
67
69
|
return _get_subclasses TemplateWin
|
|
68
|
-
elsif
|
|
70
|
+
elsif @env[:os].include? 'darwin'
|
|
69
71
|
return _get_subclasses TemplateOSX
|
|
70
72
|
else
|
|
71
73
|
return nil
|
data/lib/brandeins/setup.rb
CHANGED
|
@@ -1,22 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
attr_reader :pdf_tools
|
|
1
|
+
require File.expand_path '../pdf-tools', __FILE__
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
module BrandEins
|
|
4
|
+
class Setup
|
|
5
|
+
attr_reader :pdf_tool
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
else
|
|
13
|
-
puts 'It seems you dont have any pdf tools installed or brandeins was not able to locate them.'
|
|
14
|
-
puts pdf_tool_instructions
|
|
7
|
+
def initialize(env = nil)
|
|
8
|
+
env = Hash.new if env.nil?
|
|
9
|
+
@os = env[:os] || RUBY_PLATFORM
|
|
10
|
+
@pdf_tool = env[:pdf_tool] || BrandEins::PdfTools.get_pdf_tool(env)
|
|
15
11
|
end
|
|
16
|
-
end
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
def run
|
|
14
|
+
puts 'Checking requirements for your system'
|
|
15
|
+
if @pdf_tool.available?
|
|
16
|
+
puts "\nIt seems you have #{@pdf_tool.cmd} running on your system. You are ready to go!"
|
|
17
|
+
else
|
|
18
|
+
puts "\nIt seems you are missing a working pdf utility on your system. Use `brandeins setup --help` to get help."
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
21
|
|
|
22
|
+
def help
|
|
23
|
+
if @os.include? 'darwin'
|
|
24
|
+
puts 'In order to use brandeins gem on OS X you have to install pdftk.'
|
|
25
|
+
puts 'You can find the binaries for pdftk here: http://www.pdflabs.com/docs/install-pdftk/'
|
|
26
|
+
puts ''
|
|
27
|
+
puts 'After this, run `brandeins setup` again.'
|
|
28
|
+
elsif @os.include? 'w32'
|
|
29
|
+
puts 'In order to use brandeins gem on Windows you have to install ghostscript: http://www.ghostscript.com/download/'
|
|
30
|
+
puts 'After installing ghoscript you have to put the installation path of the bin folder containing "gswin64c.exe"'
|
|
31
|
+
puts 'into your PATH environment variable. Here a quick how-to for achieving this: http://www.computerhope.com/issues/ch000549.htm'
|
|
32
|
+
puts ''
|
|
33
|
+
puts 'After this, run `brandeins setup` again.'
|
|
34
|
+
else
|
|
35
|
+
puts 'Your operating system seems to be not supported. Contact the gem author for more information: me@grekko.de'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
22
40
|
end
|
data/lib/brandeins/version.rb
CHANGED
data/test/brandeins_test.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
require File.expand_path('../helper' , __FILE__)
|
|
1
2
|
require File.expand_path('../../lib/brandeins' , __FILE__)
|
|
3
|
+
require File.expand_path('../../lib/brandeins/setup' , __FILE__)
|
|
2
4
|
require 'minitest/autorun'
|
|
3
5
|
require 'fakefs/safe'
|
|
4
6
|
|
|
@@ -55,4 +57,29 @@ class TestBrandEinsDownload < MiniTest::Unit::TestCase
|
|
|
55
57
|
cover = archive_site.get_magazine_cover(2012, 4)
|
|
56
58
|
assert_equal cover, { :title => "SCHWERPUNKT Kapitalismus", :img_url => "#{@base_url}/typo3temp/pics/08ff826417.jpg" }
|
|
57
59
|
end
|
|
60
|
+
|
|
61
|
+
def test_brandeins_setup_output
|
|
62
|
+
pdf_tool = Object.new
|
|
63
|
+
pdf_tool.define_singleton_method :available? do true end
|
|
64
|
+
pdf_tool.define_singleton_method :cmd do 'magic' end
|
|
65
|
+
|
|
66
|
+
setup = BrandEins::Setup.new :os => 'x86_64-darwin12.2.0', :pdf_tool => pdf_tool
|
|
67
|
+
out = capture_stdout do
|
|
68
|
+
setup.run
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
assert_equal "Checking requirements for your system\n\nIt seems you have magic running on your system. You are ready to go!\n", out.string
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_brandeins_setup_missing_pdf_tool_path
|
|
75
|
+
pdf_tool = Object.new
|
|
76
|
+
pdf_tool.define_singleton_method :available? do false end
|
|
77
|
+
pdf_tool.define_singleton_method :cmd do 'magic' end
|
|
78
|
+
|
|
79
|
+
capture_stdout do
|
|
80
|
+
BrandEins::Setup.new :os => 'x86_64-darwin12.2.0', :pdf_tool => pdf_tool
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
assert_equal "Checking requirements for your system\n\nIt seems you have magic running on your system. You are ready to go!\n", out.string
|
|
84
|
+
end
|
|
58
85
|
end
|
data/test/helper.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'stringio'
|
|
2
|
+
|
|
3
|
+
module Kernel
|
|
4
|
+
def capture_stdout
|
|
5
|
+
out = StringIO.new
|
|
6
|
+
$stdout = out
|
|
7
|
+
yield
|
|
8
|
+
return out
|
|
9
|
+
ensure
|
|
10
|
+
$stdout = STDOUT
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Use capture_stdout like this:
|
|
15
|
+
# out = capture_stdout do
|
|
16
|
+
# execute_code_that_puts 'some string'
|
|
17
|
+
# end
|
|
18
|
+
# assert_equal "some string", out.string
|
|
19
|
+
# http://thinkingdigitally.com/archive/capturing-output-from-puts-in-ruby/
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: brandeins
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-11-
|
|
12
|
+
date: 2012-11-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake
|
|
@@ -97,16 +97,16 @@ files:
|
|
|
97
97
|
- lib/brandeins/setup.rb
|
|
98
98
|
- lib/brandeins/version.rb
|
|
99
99
|
- test/brandeins_test.rb
|
|
100
|
+
- test/helper.rb
|
|
100
101
|
homepage: http://www.grekko.de
|
|
101
102
|
licenses: []
|
|
102
|
-
post_install_message: ! 'BrandEins gem
|
|
103
|
-
|
|
103
|
+
post_install_message: ! 'BrandEins gem runs on windows and os x and depends on pdftk/ghostscript
|
|
104
|
+
to merge downloaded pdfs.
|
|
104
105
|
|
|
105
106
|
Run `brandeins setup` to check if all requirements are met and for informations
|
|
106
107
|
on how to meet them.
|
|
107
108
|
|
|
108
109
|
|
|
109
|
-
|
|
110
110
|
'
|
|
111
111
|
rdoc_options: []
|
|
112
112
|
require_paths:
|
|
@@ -119,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
119
119
|
version: '0'
|
|
120
120
|
segments:
|
|
121
121
|
- 0
|
|
122
|
-
hash:
|
|
122
|
+
hash: -590436749218099656
|
|
123
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
none: false
|
|
125
125
|
requirements:
|
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
128
128
|
version: '0'
|
|
129
129
|
segments:
|
|
130
130
|
- 0
|
|
131
|
-
hash:
|
|
131
|
+
hash: -590436749218099656
|
|
132
132
|
requirements: []
|
|
133
133
|
rubyforge_project:
|
|
134
134
|
rubygems_version: 1.8.24
|
|
@@ -137,3 +137,4 @@ specification_version: 3
|
|
|
137
137
|
summary: BrandEins gem allows you to download past volumes of the Brand Eins magazine
|
|
138
138
|
test_files:
|
|
139
139
|
- test/brandeins_test.rb
|
|
140
|
+
- test/helper.rb
|