publication 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/publication +16 -0
- data/lib/publication.rb +4 -0
- data/lib/publication/cli.rb +16 -0
- data/lib/publication/dependencies.rb +60 -0
- data/lib/publication/publish.rb +21 -0
- data/lib/publication/rake_tasks.rb +14 -0
- data/lib/publication/version.rb +1 -1
- data/lib/tasks/publication.rake +9 -0
- metadata +35 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32ba88788a3092b7c375fccd9317e164b8b88033
|
4
|
+
data.tar.gz: 3d62228be86e7a4082a1e881905bf2050391054e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10cc69eda68bf5648e31871109619cf8153f4f4c7674ea1db4e2a42c91520c9c831782ff87bdfe9abca3dd50c827328dbe0aa68cfeaea64ef5f9a265e1ed8128
|
7
|
+
data.tar.gz: 65085a76d4efb748a4a7844a9f1d49c3a15f17c6d4b6179efde7673cc9c34bf088adc5a02006e5067c5db16a5be349287b6544fd72f20ce352588278f79ef057
|
data/bin/publication
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
3
|
+
require 'publication/cli'
|
4
|
+
require 'benchmark'
|
5
|
+
|
6
|
+
begin
|
7
|
+
ENV['THOR_DEBUG'] = '1'
|
8
|
+
etime = Benchmark.realtime { Publication::CLI.start(ARGV) }
|
9
|
+
$stderr.puts "Completed in #{etime}s"
|
10
|
+
rescue Thor::UndefinedCommandError, Thor::UnknownArgumentError, Thor::AmbiguousCommandError, Thor::InvocationError => e
|
11
|
+
$stderr.puts(e.message)
|
12
|
+
exit(64)
|
13
|
+
rescue Thor::Error => e
|
14
|
+
$stderr.puts(e.message)
|
15
|
+
exit(1)
|
16
|
+
end
|
data/lib/publication.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'publication'
|
3
|
+
|
4
|
+
class Publication::CLI < Thor
|
5
|
+
|
6
|
+
desc 'publish', 'Create a new publication of the desired format'
|
7
|
+
method_option :output, type: :string, required: false, banner: 'OUTPUT', desc: 'Name of the output file', aliases: '-o', default: 'output'
|
8
|
+
method_option :paths, type: :string, required: false, banner: 'DIR', desc: 'Glob of source directory tree, parsed lexically and recursively', aliases: '-p', default: 'doc/**/*'
|
9
|
+
method_option :formats, type: :array, required: false, banner: 'FORMATS', desc: 'Formats to output, space separated', aliases: '-f', default: ['epub', 'epub3', 'pdf', 'html']
|
10
|
+
method_option :type, type: :string, required: false, banner: 'FORMAT', desc: 'Type (format) of input files', aliases: '-t', default: 'markdown'
|
11
|
+
#method_option :extraopts, type: :string, required: false, banner: 'EXTRA', desc: 'Extra options to pass to pandoc (advanced)', aliases: '-e' # not yet used
|
12
|
+
def publish
|
13
|
+
opts = options.deep_symbolize_keys
|
14
|
+
Publication::Publisher.new(**opts).publish
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
require 'tmpdir'
|
3
|
+
|
4
|
+
PANDOC_MIN_VERSION = '1.6' # min version with epub
|
5
|
+
PANDOC_URL = 'https://github.com/jgm/pandoc/releases/download/1.17.0.2/pandoc-1.17.0.2-1-amd64.deb' # FIXME
|
6
|
+
|
7
|
+
module MakeMakefile::Logging
|
8
|
+
@logfile = File::NULL
|
9
|
+
end
|
10
|
+
|
11
|
+
module Publication
|
12
|
+
module Dependencies
|
13
|
+
extend self
|
14
|
+
|
15
|
+
def satisfied?
|
16
|
+
has_pandoc
|
17
|
+
has_latex
|
18
|
+
end
|
19
|
+
|
20
|
+
def satisfy
|
21
|
+
get_pandoc
|
22
|
+
get_latex
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def has_pandoc
|
28
|
+
pandoc = find_executable 'pandoc'
|
29
|
+
unless pandoc
|
30
|
+
puts 'Pandoc is not installed'
|
31
|
+
return false
|
32
|
+
end
|
33
|
+
version = `#{pandoc} -v`.lines.first.split(/\s+/).last
|
34
|
+
unless Gem::Version.new(version) > Gem::Version.new(PANDOC_MIN_VERSION)
|
35
|
+
puts "Pandoc version #{version} too old (require #{PANDOC_MIN_VERSION})"
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
41
|
+
def has_latex
|
42
|
+
find_executable 'pdflatex'
|
43
|
+
end
|
44
|
+
|
45
|
+
# FIXME make this conditional to different types of platforms
|
46
|
+
def get_pandoc
|
47
|
+
return if has_pandoc
|
48
|
+
Dir.mktmpdir do |dir|
|
49
|
+
Dir.chdir(dir) do
|
50
|
+
system("wget #{PANDOC_URL} -O pandoc.deb")
|
51
|
+
system("dpkg -i pandoc.deb")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def get_latex
|
57
|
+
system('apt-get install -y --force-yes texlive-full')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'pandoc-ruby'
|
2
|
+
|
3
|
+
module Publication
|
4
|
+
class Publisher
|
5
|
+
|
6
|
+
def initialize(paths: nil, type: nil, output: nil, formats: [])
|
7
|
+
@paths = Dir["#{Dir.pwd}/#{paths}"]
|
8
|
+
@type = type
|
9
|
+
@output = output
|
10
|
+
@formats = formats
|
11
|
+
fail "No input files found at #{paths}" if @paths.empty?
|
12
|
+
fail "No output format specified" if @formats.empty?
|
13
|
+
end
|
14
|
+
|
15
|
+
def publish
|
16
|
+
@formats.each do |format|
|
17
|
+
PandocRuby.new(@paths, from: @type, output: "#{@output}.#{format}").convert
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
module Publisher
|
4
|
+
# Loads all rake tasks when terraform_dsl is included by a rake script
|
5
|
+
module Tasks
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def load_all
|
9
|
+
Dir.glob("#{File.expand_path('../../tasks', __FILE__)}/*.rake").each { |r| load r }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
Publisher::Tasks.load_all
|
data/lib/publication/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: publication
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dale Hamel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pandoc-ruby
|
@@ -39,47 +39,61 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.19.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
47
|
+
version: 10.4.2
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 10.4.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: activesupport
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 4.2.5
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 4.2.5
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.10.3
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - '='
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 0.10.3
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: pry-byebug
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - '='
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: 3.3.0
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - '='
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: 3.3.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: simplecov
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,11 +124,19 @@ dependencies:
|
|
110
124
|
version: 3.2.0
|
111
125
|
description: Use pandoc to easily publish in different formats
|
112
126
|
email: dale.hamel@srvthe.net
|
113
|
-
executables:
|
127
|
+
executables:
|
128
|
+
- publication
|
114
129
|
extensions: []
|
115
130
|
extra_rdoc_files: []
|
116
131
|
files:
|
132
|
+
- bin/publication
|
133
|
+
- lib/publication.rb
|
134
|
+
- lib/publication/cli.rb
|
135
|
+
- lib/publication/dependencies.rb
|
136
|
+
- lib/publication/publish.rb
|
137
|
+
- lib/publication/rake_tasks.rb
|
117
138
|
- lib/publication/version.rb
|
139
|
+
- lib/tasks/publication.rake
|
118
140
|
homepage: https://github.com/dalehamel/publication
|
119
141
|
licenses:
|
120
142
|
- MIT
|