pdfmd 2.3.5 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -1
- data/bin/pdfmd +20 -29
- data/lib/pdfmd/long_desc.pdfmdinit.txt +30 -0
- data/lib/pdfmd/pdfmd.bash +194 -0
- data/lib/pdfmd/pdfmdinit.rb +8 -0
- data/lib/pdfmd/pdfmdmethods.rb +45 -0
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 014584f51b2c90eed42cb65024504d2d9ebf1b81
|
4
|
+
data.tar.gz: 0618a7ea2c6e87cf750440979e306db7b99f07ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25308020f8ccaa6401d75ee8baae3c7c6acb0eb81ecd431d6ab917228db2993fc8cee1e070ae611c4796ab27484676ab0747458fc1934881537e4f8f7c396d96
|
7
|
+
data.tar.gz: 3a5168b63cea744d419e514f5d48296cbd2e7436fe2325ba7d888db572140a9d6ac98046ee8c27472971984f08fc117b19a14420dda92b3c8932e890c319ef78
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# pdfmd
|
2
|
-
Pdf
|
2
|
+
Pdf metadata managing script.
|
3
3
|
|
4
4
|
I use the script `pdfmd.rb`/pdfmetadata (with a slightly different name) to manage my PDF documents and keep the naming in line.
|
5
5
|
Hidden deep in the directory structure of my disks I can quickly find the
|
@@ -128,6 +128,13 @@ __HINT__: Before you start using the script, make sure you have a backup of your
|
|
128
128
|
_pdfmd_ recognises if a pdf file is password protected and will ask for the password.
|
129
129
|
A password string can be defined in hiera that will be used per default.
|
130
130
|
|
131
|
+
# Bash completion
|
132
|
+
|
133
|
+
Pdfmd comes with bash completion. To setup bash completion run the command
|
134
|
+
|
135
|
+
$ pdfmd init bash_completion
|
136
|
+
|
137
|
+
This will install a bash completion file. A restart of/new console might be necessary to enable it.
|
131
138
|
|
132
139
|
# Hiera
|
133
140
|
|
data/bin/pdfmd
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'pdfmd'
|
3
3
|
require 'pdfmd/pdfmdstat'
|
4
|
+
require 'pdfmd/pdfmdinit'
|
4
5
|
require "thor"
|
5
6
|
require "highline/import"
|
6
7
|
require "fileutils"
|
7
8
|
require "i18n"
|
8
9
|
require 'pathname'
|
9
10
|
|
10
|
-
VERSION = '2.
|
11
|
+
VERSION = '2.4.0'
|
11
12
|
NAME = 'pdfmd'
|
12
13
|
|
13
|
-
#
|
14
14
|
# Read the content of the long description from an external file
|
15
15
|
#
|
16
16
|
def readLongDesc(filename)
|
@@ -99,6 +99,24 @@ class DOC < Thor
|
|
99
99
|
end
|
100
100
|
|
101
101
|
|
102
|
+
# Initialise something
|
103
|
+
#
|
104
|
+
#
|
105
|
+
desc 'init [COMMAND]', 'Initialise additonal functions'
|
106
|
+
long_desc readLongDesc 'pdfmd/long_desc.pdfmdinit.txt'
|
107
|
+
method_option :remove, :type => :boolean, :aliases => '-r', :required => false, :lazydefault => 'true'
|
108
|
+
def init(subcommand = '')
|
109
|
+
|
110
|
+
if subcommand == 'bash_completion'
|
111
|
+
init_bashcompletion(NAME,VERSION,options[:remove])
|
112
|
+
else
|
113
|
+
puts 'No command provided. Abort.'
|
114
|
+
puts 'Run `$ pdfmd help init` for details.'
|
115
|
+
exit 1
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
102
120
|
# Show current settings
|
103
121
|
#
|
104
122
|
desc 'config', 'Show config defaults'
|
@@ -298,30 +316,3 @@ end
|
|
298
316
|
|
299
317
|
DOC.start
|
300
318
|
|
301
|
-
# #
|
302
|
-
# # Explain fields and Metatags
|
303
|
-
# # Show information about how they are used.
|
304
|
-
# #
|
305
|
-
# desc 'explain','Show more information about usuable Meta-Tags'
|
306
|
-
# long_desc <<-LONGDESC
|
307
|
-
# == General
|
308
|
-
#
|
309
|
-
# Explain some terms used with the script.
|
310
|
-
#
|
311
|
-
# == Example
|
312
|
-
#
|
313
|
-
# # Show the available subjects
|
314
|
-
# \x5>CLI explain
|
315
|
-
#
|
316
|
-
# # Show information about the subject 'author'
|
317
|
-
# \x5>CLI explain author
|
318
|
-
#
|
319
|
-
# LONGDESC
|
320
|
-
# def explain(term='')
|
321
|
-
#
|
322
|
-
# ENV['PDFMD_EXPLAIN'] = term
|
323
|
-
# ENV['PDFMD'] = File.basename(__FILE__)
|
324
|
-
# require_relative('./pdfmd/explain.rb')
|
325
|
-
#
|
326
|
-
# end
|
327
|
-
#
|
@@ -0,0 +1,30 @@
|
|
1
|
+
== General
|
2
|
+
|
3
|
+
Command will setup the environment for pdfmd if executed.
|
4
|
+
At this moment only the installation of bash completion file is integrated.
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
== Command
|
9
|
+
|
10
|
+
bash_completion
|
11
|
+
|
12
|
+
Installs or removes the bash completion file for pdfmd. Existing files will be
|
13
|
+
overwritten after a file with the extension '.backup' has been created in the
|
14
|
+
same directory.
|
15
|
+
|
16
|
+
== Parameter
|
17
|
+
|
18
|
+
--remove, -r
|
19
|
+
|
20
|
+
Removes the bash completion file. Does not remove any existing backup file.
|
21
|
+
|
22
|
+
== General example
|
23
|
+
|
24
|
+
# Install the bash completion file
|
25
|
+
|
26
|
+
$ pdfmd init bash_completion
|
27
|
+
|
28
|
+
# Remove the bash completion file
|
29
|
+
|
30
|
+
$ pdfmd init -r bash_completion
|
@@ -0,0 +1,194 @@
|
|
1
|
+
# Bash completion file for pdfmd
|
2
|
+
# copy to /etc/bash_completion.d to use it
|
3
|
+
_pdfmd()
|
4
|
+
{
|
5
|
+
local cur prev opts tags chapter
|
6
|
+
COMPREPLY=()
|
7
|
+
cur="${COMP_WORDS[COMP_CWORD]}"
|
8
|
+
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
9
|
+
chapter="${COMP_WORDS[1]}"
|
10
|
+
tags='all author keywords title subject createdate'
|
11
|
+
|
12
|
+
# The basic options
|
13
|
+
opts="edit clean config init rename show sort stat --version --revision"
|
14
|
+
|
15
|
+
#
|
16
|
+
# complete the arguments to some of the basic commands
|
17
|
+
#
|
18
|
+
case "${chapter}" in
|
19
|
+
init)
|
20
|
+
case "${prev}" in
|
21
|
+
-r|--remove) # Remove
|
22
|
+
local parameter='bash_completion'
|
23
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
24
|
+
return 0
|
25
|
+
;;
|
26
|
+
*)
|
27
|
+
local parameter='--remove bash_completion'
|
28
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
29
|
+
return 0
|
30
|
+
;;
|
31
|
+
esac
|
32
|
+
;;
|
33
|
+
edit)
|
34
|
+
case "${prev}" in
|
35
|
+
-t|--tags) # Define the tags
|
36
|
+
local tags='all author keywords title subject createdate'
|
37
|
+
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
38
|
+
return 0
|
39
|
+
;;
|
40
|
+
-r|--rename) # Rename files
|
41
|
+
local files=$(ls *.pdf)
|
42
|
+
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
|
43
|
+
return 0
|
44
|
+
;;
|
45
|
+
-o|--opendoc) # Open the document
|
46
|
+
local files=$(ls *.pdf)
|
47
|
+
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
|
48
|
+
return 0
|
49
|
+
;;
|
50
|
+
'all') # all tags
|
51
|
+
local files="$(find . -maxdepth 1 -type f -iname '*.pdf')"
|
52
|
+
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
|
53
|
+
return 0
|
54
|
+
;;
|
55
|
+
*)
|
56
|
+
local tags="--tags --rename --opendoc $(find . -maxdepth 1 -type f -iname '*.pdf')"
|
57
|
+
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
58
|
+
return 0
|
59
|
+
;;
|
60
|
+
esac
|
61
|
+
|
62
|
+
;;
|
63
|
+
clean) # Clean some stuff
|
64
|
+
case "${prev}" in
|
65
|
+
-t|--tags)
|
66
|
+
local tags='all author keywords title subject createdate'
|
67
|
+
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
68
|
+
return 0
|
69
|
+
;;
|
70
|
+
all|author|keywords|title|subject|createdate)
|
71
|
+
local parameter="$(ls *.pdf)"
|
72
|
+
COMPREPLY=( $(compgen -W "${parameter}") )
|
73
|
+
return 0
|
74
|
+
;;
|
75
|
+
|
76
|
+
*)
|
77
|
+
local parameter="--tags $(find . -maxdepth 1 -type f -iname '*.pdf')"
|
78
|
+
COMPREPLY=( $(compgen -W "${parameter}") )
|
79
|
+
return 0
|
80
|
+
;;
|
81
|
+
esac
|
82
|
+
;;
|
83
|
+
config) # Config pdfmd
|
84
|
+
case "${prev}" in
|
85
|
+
edit|clean|rename|sort|stat)
|
86
|
+
local parameter=''
|
87
|
+
COMPREPLY=( $(compgen -W "${parameter}") )
|
88
|
+
return 0
|
89
|
+
;;
|
90
|
+
*)
|
91
|
+
local parameter="clean edit rename sort stat"
|
92
|
+
COMPREPLY=( $(compgen -W "${parameter}") )
|
93
|
+
return 0
|
94
|
+
;;
|
95
|
+
esac
|
96
|
+
;;
|
97
|
+
rename) # Rename files
|
98
|
+
case "${prev}" in
|
99
|
+
-k|--nrkeywords)
|
100
|
+
local parameter="3"
|
101
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
102
|
+
return 0
|
103
|
+
;;
|
104
|
+
-o|--outputdir)
|
105
|
+
return 0
|
106
|
+
;;
|
107
|
+
*)
|
108
|
+
local parameter="--dryrun --allkeywords --nrkeywords --outputdir --copy $(ls *.pdf)"
|
109
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
110
|
+
return 0
|
111
|
+
;;
|
112
|
+
esac
|
113
|
+
;;
|
114
|
+
show) # Show status of files
|
115
|
+
|
116
|
+
case "${prev}" in
|
117
|
+
-t|--tags)
|
118
|
+
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
119
|
+
return 0
|
120
|
+
;;
|
121
|
+
-i|--includepdf)
|
122
|
+
local files=$(find . -maxdepth 1 -type f -iname '*.pdf')
|
123
|
+
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
|
124
|
+
return 0
|
125
|
+
;;
|
126
|
+
-f|--format)
|
127
|
+
local format='hash json yaml csv'
|
128
|
+
COMPREPLY=( $(compgen -W "${format}" -- ${cur}) )
|
129
|
+
return 0
|
130
|
+
;;
|
131
|
+
all|author|keywords|title|subject|createdate)
|
132
|
+
local files=$(ls *.pdf)
|
133
|
+
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
|
134
|
+
return 0
|
135
|
+
;;
|
136
|
+
*)
|
137
|
+
local parameter="--tags --format $(find . -maxdepth 1 -type f -iname '*.pdf')"
|
138
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
139
|
+
return 0
|
140
|
+
;;
|
141
|
+
esac
|
142
|
+
;;
|
143
|
+
sort) # Sorting files
|
144
|
+
case "$prev" in
|
145
|
+
-d|--destination)
|
146
|
+
local directories="$(find . -maxdepth 1 -type d)"
|
147
|
+
COMPREPLY=( $(compgen -W "${directories}" -- ${cur} ) )
|
148
|
+
return 0
|
149
|
+
;;
|
150
|
+
*)
|
151
|
+
local parameter="--destination --copy --overwrite --dryrun --interactive --typo $(find . -maxdepth 1 -type f -iname '*.pdf')"
|
152
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
153
|
+
return 0
|
154
|
+
;;
|
155
|
+
esac
|
156
|
+
|
157
|
+
# Default output
|
158
|
+
local parameter="--destination --copy --overwrite --dryrun --typo $(find . -maxdepth 1 -type f -iname '*.pdf')"
|
159
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
160
|
+
return 0
|
161
|
+
|
162
|
+
;;
|
163
|
+
stat)
|
164
|
+
|
165
|
+
case "${prev}" in
|
166
|
+
-r|--recursive)
|
167
|
+
local parameter="$(find . -maxdepth 1 -type d)"
|
168
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
169
|
+
return 0
|
170
|
+
;;
|
171
|
+
-t|--tags)
|
172
|
+
local tags='all author keywords title subject createdate'
|
173
|
+
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
174
|
+
return 0
|
175
|
+
;;
|
176
|
+
*)
|
177
|
+
local parameter="--recursive --tags $(find . -maxdepth 1 -type d)"
|
178
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
179
|
+
return 0
|
180
|
+
;;
|
181
|
+
esac
|
182
|
+
|
183
|
+
# Default output
|
184
|
+
local parameter="-t -ri $(find . -maxdepth 1 -type d)"
|
185
|
+
COMPREPLY=( $(compgen -W "${parameter}" -- ${cur}) )
|
186
|
+
return 0
|
187
|
+
;;
|
188
|
+
*)
|
189
|
+
;;
|
190
|
+
esac
|
191
|
+
|
192
|
+
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
193
|
+
}
|
194
|
+
complete -o default -F _pdfmd pdfmd
|
data/lib/pdfmd/pdfmdmethods.rb
CHANGED
@@ -127,3 +127,48 @@ module Pdfmdmethods
|
|
127
127
|
end # End of queryHiera
|
128
128
|
|
129
129
|
end
|
130
|
+
|
131
|
+
#
|
132
|
+
# Initializing or removing the bash_completion file
|
133
|
+
def init_bashcompletion(name, version, remove = false)
|
134
|
+
|
135
|
+
# Find the current local path where the original bash completion file might be hiding.
|
136
|
+
paths = [
|
137
|
+
"#{File.dirname(File.expand_path($0))}../lib",
|
138
|
+
"#{Gem.dir}/gems/#{name}-#{version}/lib",
|
139
|
+
]
|
140
|
+
bash_completion_destination = '/etc/bash_completion.d/pdfmd.bash'
|
141
|
+
bash_completion_destination_backup = bash_completion_destination + '.backup'
|
142
|
+
|
143
|
+
paths.each do |value|
|
144
|
+
bash_completion_source = value + '/' + name + '/pdfmd.bash'
|
145
|
+
if File.exists?(bash_completion_source)
|
146
|
+
|
147
|
+
if !remove
|
148
|
+
|
149
|
+
# Create a backup file when a file is found
|
150
|
+
if File.exists?(bash_completion_destination)
|
151
|
+
puts 'Existing file found.Taking backup.'
|
152
|
+
`sudo cp #{bash_completion_destination} #{bash_completion_destination_backup}`
|
153
|
+
end
|
154
|
+
puts 'Installing ' + bash_completion_destination
|
155
|
+
`sudo cp #{bash_completion_source} #{bash_completion_destination}`
|
156
|
+
else
|
157
|
+
|
158
|
+
if File.exists?(bash_completion_destination)
|
159
|
+
puts 'Removing ' + bash_completion_destination
|
160
|
+
`sudo rm #{bash_completion_destination}`
|
161
|
+
if $?.exitstatus == 0
|
162
|
+
puts 'File successfully removed.'
|
163
|
+
end
|
164
|
+
else
|
165
|
+
puts bash_completion_destination + ' not found.'
|
166
|
+
end
|
167
|
+
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdfmd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Roos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -147,14 +147,17 @@ files:
|
|
147
147
|
- lib/pdfmd/long_desc.pdfmdconfig.txt
|
148
148
|
- lib/pdfmd/long_desc.pdfmdedit.txt
|
149
149
|
- lib/pdfmd/long_desc.pdfmdexplain.txt
|
150
|
+
- lib/pdfmd/long_desc.pdfmdinit.txt
|
150
151
|
- lib/pdfmd/long_desc.pdfmdrename.txt
|
151
152
|
- lib/pdfmd/long_desc.pdfmdshow.txt
|
152
153
|
- lib/pdfmd/long_desc.pdfmdsort.txt
|
153
154
|
- lib/pdfmd/long_desc.pdfmdstat.txt
|
154
155
|
- lib/pdfmd/methods.rb
|
156
|
+
- lib/pdfmd/pdfmd.bash
|
155
157
|
- lib/pdfmd/pdfmdclean.rb
|
156
158
|
- lib/pdfmd/pdfmdconfig.rb
|
157
159
|
- lib/pdfmd/pdfmdedit.rb
|
160
|
+
- lib/pdfmd/pdfmdinit.rb
|
158
161
|
- lib/pdfmd/pdfmdmethods.rb
|
159
162
|
- lib/pdfmd/pdfmdrename.rb
|
160
163
|
- lib/pdfmd/pdfmdshow.rb
|
@@ -171,8 +174,8 @@ homepage: https://github.com/Micronarrativ/ruby-pmd
|
|
171
174
|
licenses:
|
172
175
|
- MIT
|
173
176
|
metadata:
|
174
|
-
created: '2016-
|
175
|
-
revision: '
|
177
|
+
created: '2016-08-20 18:26:13'
|
178
|
+
revision: '20160820182613'
|
176
179
|
post_install_message: ". Run `pdfmd` to see the command help."
|
177
180
|
rdoc_options: []
|
178
181
|
require_paths:
|
@@ -190,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
193
|
requirements:
|
191
194
|
- "[exiftools](http://www.sno.phy.queensu.ca/~phil/exiftool/)"
|
192
195
|
rubyforge_project:
|
193
|
-
rubygems_version: 2.4.
|
196
|
+
rubygems_version: 2.4.8
|
194
197
|
signing_key:
|
195
198
|
specification_version: 4
|
196
199
|
summary: pdfmd - pdf-meta-data management
|