lyp 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da31da8efa75b8704dab5d48b0c44173cae0d9ff
4
- data.tar.gz: da5431609dfffd0e2a0f813231ced74b17a47878
3
+ metadata.gz: 44457899f8d309c43525243e8b0fcfaf0c856abf
4
+ data.tar.gz: 263b5f9891b99ee932bce722ef4a67a372ca77fb
5
5
  SHA512:
6
- metadata.gz: b6dc9a5578f26af2c369a76cb8c9e1798cfd563c8a9bdb620f55dc25b8d75f39aa8a4a93f377ebacc4c9ebfff7b8912765c2a8831c5f9e11cb80eb94a3ea6b54
7
- data.tar.gz: ba944bce979da2914064406b47ef8dcccd09e52069d32c12c637ba0c37e3415373b93695f3ef29b56fdca72624bbac0437456808314309856a8e746414d328f8
6
+ metadata.gz: 64e91346e7be7c10112d9e0552744a542fec4e2c69b8425a9eb4cb65977e65d3615b49417862bf26256d458f40baf6ad5a043df012b51c82ab3e2350cbce2486
7
+ data.tar.gz: d4e32d5e5f08762646da59bc519e5a1d716170013d428989a75fa12e0da2c9da8dae4198eca73d3a06d651559f4e253e5b47eedfce8bed3c6a3150eb7a6f05a5
@@ -12,19 +12,11 @@ unless lilypond_path && File.file?(lilypond_path)
12
12
  exit 1
13
13
  end
14
14
 
15
- if (ARGV == ['-v']) || (ARGV == ['--warranty'])
16
- # Show lilypond version and exit
15
+ case ARGV
16
+ when [], ['-v'], ['--warranty'], ['scheme-sandbox']
17
17
  exec("#{lilypond_path} #{ARGV.join(' ')}")
18
- end
19
-
20
- if ARGV.size == 0
21
- exec(lilypond_path)
22
18
  else
23
-
24
19
  begin
25
20
  Lyp::Lilypond.compile(ARGV)
26
- # rescue => e
27
- # STDERR.puts e.message
28
- # exit 1
29
21
  end
30
22
  end
@@ -6,7 +6,7 @@ module Lyp
6
6
  # before the version number.
7
7
  #
8
8
  # Accepted operators: >=, ~>
9
- PACKAGE_RE = /^([^@\>~]+)(?:@?((?:\>=|~\>)?.+))?/ #/^([^@]+)(?:@(.+))?$/
9
+ PACKAGE_RE = /^([^@\>~]+)(?:@?((?:\>=|~\>)?.+))?/
10
10
  LILYPOND_RE = /^lilypond(?:@?((?:\>=|~\>)?.+))?/
11
11
 
12
12
  LYP_DIRECTORY = File.expand_path('~/.lyp')
@@ -15,6 +15,13 @@ module Lyp
15
15
  DEFAULT_PACKAGE_DIRECTORY = File.join(LYP_DIRECTORY, 'packages')
16
16
  DEFAULT_LILYPONDS_DIRECTORY = File.join(LYP_DIRECTORY, 'lilyponds')
17
17
 
18
+ # Fonts are installed on lilypond >= 2.18.2
19
+ FONT_COPY_REQ = Gem::Requirement.new('>=2.18.2')
20
+ FONT_PATCH_REQ = Gem::Requirement.new('>=2.18.2', '<2.19.12')
21
+
22
+ # Font patch filename (required for 2.18.2 <= lilypond < 2.19.12)
23
+ FONT_PATCH_FILENAME = File.expand_path('etc/font.scm', File.dirname(__FILE__))
24
+
18
25
  SETTINGS_FILENAME = 'settings.yml'
19
26
 
20
27
  def self.packages_dir
@@ -95,11 +95,27 @@ class Lyp::CLI < Thor
95
95
  end
96
96
 
97
97
  desc "compile [<option>...] <FILE>", "Invokes lilypond with given file"
98
+ method_option :install, aliases: '-i', type: :boolean, desc: 'Install the requested version of lilypond if not present'
99
+ method_option :env, aliases: '-e', type: :boolean, desc: 'Use version set by LILYPOND_VERSION environment variable'
98
100
  def compile(*args)
99
101
  Lyp::System.test_installed_status!
100
- Lyp::Lilypond.check_lilypond!
101
102
 
102
- Lyp::Lilypond.compile(*args)
103
+ if options[:env]
104
+ Lyp::Lilypond.force_env_version!
105
+ if options[:install] && !Lyp::Lilypond.forced_lilypond
106
+ Lyp::Lilypond.install(Lyp::Lilypond.forced_version)
107
+ end
108
+ else
109
+ # check lilypond default / current settings
110
+ Lyp::Lilypond.check_lilypond!
111
+ end
112
+
113
+ begin
114
+ Lyp::Lilypond.compile(args)
115
+ rescue => e
116
+ puts e.message
117
+ puts e.backtrace.join("\n")
118
+ end
103
119
  end
104
120
 
105
121
  desc "install <PACKAGE|lilypond|self>...", "Install a package or a version of lilypond. When 'install self' is invoked, lyp installs itself in ~/.lyp."
@@ -0,0 +1,296 @@
1
+ ;;;; This file is part of LilyPond, the GNU music typesetter.
2
+ ;;;;
3
+ ;;;; Copyright (C) 2004--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
4
+ ;;;;
5
+ ;;;; LilyPond is free software: you can redistribute it and/or modify
6
+ ;;;; it under the terms of the GNU General Public License as published by
7
+ ;;;; the Free Software Foundation, either version 3 of the License, or
8
+ ;;;; (at your option) any later version.
9
+ ;;;;
10
+ ;;;; LilyPond is distributed in the hope that it will be useful,
11
+ ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ ;;;; GNU General Public License for more details.
14
+ ;;;;
15
+ ;;;; You should have received a copy of the GNU General Public License
16
+ ;;;; along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ ;; This file supplied by Abraham Leigh and used by lyp to patch lilypond
19
+ ;; versions from 2.18.2 to 2.19.11 in order to support custom music fonts.
20
+
21
+ ;; TODO:
22
+ ;;
23
+ ;; lookup-font should be written in C.
24
+ ;;
25
+
26
+ ;; We have a tree, where each level of the tree is a qualifier
27
+ ;; (eg. encoding, family, shape, series etc.) this defines the levels
28
+ ;; in the tree. The first one is encoding, so we can directly select
29
+ ;; between text or music in the first step of the selection.
30
+ (define default-qualifier-order
31
+ '(font-encoding font-family font-shape font-series))
32
+
33
+ (define-class <Font-tree-element>
34
+ ())
35
+
36
+ (define-class <Font-tree-leaf> (<Font-tree-element>)
37
+ (default-size #:init-keyword #:default-size)
38
+ (size-vector #:init-keyword #:size-vector))
39
+
40
+ (define-class <Font-tree-node> (<Font-tree-element>)
41
+ (qualifier #:init-keyword #:qualifier #:accessor font-qualifier)
42
+ (default #:init-keyword #:default #:accessor font-default)
43
+ (children #:init-keyword #:children #:accessor font-children))
44
+
45
+ (define (make-font-tree-leaf size size-font-vector)
46
+ (make <Font-tree-leaf> #:default-size size #:size-vector size-font-vector))
47
+
48
+ (define (make-font-tree-node
49
+ qualifier default)
50
+ (make <Font-tree-node>
51
+ #:qualifier qualifier
52
+ #:default default
53
+ #:children (make-hash-table 11)))
54
+
55
+ (define-method (display (leaf <Font-tree-leaf>) port)
56
+ (for-each (lambda (x) (display x port))
57
+ (list
58
+ "#<Font-size-family:\n"
59
+ (slot-ref leaf 'default-size)
60
+ (slot-ref leaf 'size-vector)
61
+ "#>"
62
+ )))
63
+
64
+ (define-method (display (node <Font-tree-node>) port)
65
+ (for-each
66
+ (lambda (x)
67
+ (display x port))
68
+ (list
69
+ "Font_node {\nqual: "
70
+ (font-qualifier node)
71
+ "(def: "
72
+ (font-default node)
73
+ ") {\n"))
74
+ (for-each
75
+ (lambda (x)
76
+ (display "\n")
77
+ (display (car x) port)
78
+ (display "=" port)
79
+ (display (cdr x) port))
80
+ (hash-table->alist (font-children node)))
81
+ (display "} }\n"))
82
+
83
+
84
+ (define-method (add-font (node <Font-tree-node>) fprops size-family)
85
+ (define (assoc-delete key alist)
86
+ (assoc-remove! (list-copy alist) key))
87
+
88
+ (define (make-node fprops size-family)
89
+ (if (null? fprops)
90
+ (make-font-tree-leaf (car size-family) (cdr size-family))
91
+ (let* ((qual (next-qualifier default-qualifier-order fprops)))
92
+ (make-font-tree-node qual
93
+ (assoc-get qual fprops)))))
94
+
95
+ (define (next-qualifier order props)
96
+ (cond
97
+ ((and (null? props) (null? order))
98
+ #f)
99
+ ((null? props) (car order))
100
+ ((null? order) (caar props))
101
+ (else
102
+ (if (assoc-get (car order) props)
103
+ (car order)
104
+ (next-qualifier (cdr order) props)))))
105
+
106
+ (let* ((q (font-qualifier node))
107
+ (d (font-default node))
108
+ (v (assoc-get q fprops d))
109
+ (new-fprops (assoc-delete q fprops))
110
+ (child (hashq-ref (slot-ref node 'children)
111
+ v #f)))
112
+ (if (not child)
113
+ (begin
114
+ (set! child (make-node new-fprops size-family))
115
+ (hashq-set! (slot-ref node 'children) v child)))
116
+ (if (pair? new-fprops)
117
+ (add-font child new-fprops size-family))))
118
+
119
+ (define-method (add-font (node <Font-tree-leaf>) fprops size-family)
120
+ (throw "must add to node, not leaf"))
121
+
122
+ (define-method (g-lookup-font (node <Font-tree-node>) alist-chain)
123
+ (let* ((qual (font-qualifier node))
124
+ (def (font-default node))
125
+ (val (chain-assoc-get qual alist-chain def))
126
+ (desired-child (hashq-ref (font-children node) val)))
127
+
128
+ (if desired-child
129
+ (g-lookup-font desired-child alist-chain)
130
+ (g-lookup-font (hashq-ref (font-children node) def) alist-chain))))
131
+
132
+ (define-method (g-lookup-font (node <Font-tree-leaf>) alist-chain)
133
+ node)
134
+
135
+ ;; two step call is handy for debugging.
136
+ (define (lookup-font node alist-chain)
137
+ (g-lookup-font node alist-chain))
138
+
139
+ ;; TODO - we could actually construct this by loading all OTFs and
140
+ ;; inspecting their design size fields.
141
+ (define-public feta-design-size-mapping
142
+ '((11 . 11.22)
143
+ (13 . 12.60)
144
+ (14 . 14.14)
145
+ (16 . 15.87)
146
+ (18 . 17.82)
147
+ (20 . 20)
148
+ (23 . 22.45)
149
+ (26 . 25.20)))
150
+
151
+ ;; Each size family is a vector of fonts, loaded with a delay. The
152
+ ;; vector should be sorted according to ascending design size.
153
+ (define-public (add-music-fonts node family name brace design-size-alist factor)
154
+ "Set up music fonts.
155
+
156
+ Arguments:
157
+ @itemize
158
+ @item
159
+ @var{node} is the font tree to modify.
160
+
161
+ @item
162
+ @var{family} is the family name of the music font.
163
+
164
+ @item
165
+ @var{name} is the basename for the music font.
166
+ @file{@var{name}-<designsize>.otf} should be the music font,
167
+
168
+ @item
169
+ @var{brace} is the basename for the brace font.
170
+ @file{@var{brace}-brace.otf} should have piano braces.
171
+
172
+ @item
173
+ @var{design-size-alist} is a list of @code{(rounded . designsize)}.
174
+ @code{rounded} is a suffix for font filenames, while @code{designsize}
175
+ should be the actual design size. The latter is used for text fonts
176
+ loaded through pango/@/fontconfig.
177
+
178
+ @item
179
+ @var{factor} is a size factor relative to the default size that is being
180
+ used. This is used to select the proper design size for the text fonts.
181
+ @end itemize"
182
+ (for-each
183
+ (lambda (x)
184
+ (add-font node
185
+ (list (cons 'font-encoding (car x))
186
+ (cons 'font-family family))
187
+ (cons (* factor (cadr x))
188
+ (caddr x))))
189
+
190
+ `((fetaText ,(ly:pt 20.0)
191
+ ,(list->vector
192
+ (map (lambda (tup)
193
+ (cons (ly:pt (cdr tup))
194
+ (format #f "~a-~a ~a"
195
+ name
196
+ (car tup)
197
+ (ly:pt (cdr tup)))))
198
+ design-size-alist)))
199
+ (fetaMusic ,(ly:pt 20.0)
200
+ ,(list->vector
201
+ (map (lambda (size-tup)
202
+ (delay (ly:system-font-load
203
+ (format #f "~a-~a" name (car size-tup)))))
204
+ design-size-alist
205
+ )))
206
+ (fetaBraces ,(ly:pt 20.0)
207
+ #(,(delay (ly:system-font-load
208
+ (format #f "~a-brace" brace)))))
209
+ )))
210
+
211
+ (define-public (add-pango-fonts node lily-family family factor)
212
+ ;; Synchronized with the `text-font-size' variable in
213
+ ;; layout-set-absolute-staff-size-in-module (see paper.scm).
214
+ (define text-font-size (ly:pt (* factor 11.0)))
215
+
216
+ (define (add-node shape series)
217
+ (add-font node
218
+ `((font-family . ,lily-family)
219
+ (font-shape . ,shape)
220
+ (font-series . ,series)
221
+ (font-encoding . latin1) ;; ugh.
222
+ )
223
+ `(,text-font-size
224
+ . #(,(cons
225
+ (ly:pt 12)
226
+ (ly:make-pango-description-string
227
+ `(((font-family . ,family)
228
+ (font-series . ,series)
229
+ (font-shape . ,shape)))
230
+ (ly:pt 12)))))))
231
+
232
+ (add-node 'upright 'normal)
233
+ (add-node 'caps 'normal)
234
+ (add-node 'upright 'bold)
235
+ (add-node 'italic 'normal)
236
+ (add-node 'italic 'bold))
237
+
238
+ ; This function allows the user to change the specific fonts, leaving others
239
+ ; to the default values. This way, "make-pango-font-tree"'s syntax doesn't
240
+ ; have to change from the user's perspective.
241
+ ;
242
+ ; Usage:
243
+ ; \paper {
244
+ ; #(define fonts
245
+ ; (set-global-fonts
246
+ ; #:music "gonville" ; (the main notation font)
247
+ ; #:roman "FreeSerif" ; (the main/serif text font)
248
+ ; ))
249
+ ; }
250
+ ;
251
+ ; Leaving out "#:brace", "#:sans", and "#:typewriter" leave them at
252
+ ; "emmentaler", "sans-serif", and "monospace", respectively. All fonts are
253
+ ; still accesible through the usual scheme symbols: 'feta, 'roman, 'sans, and
254
+ ; 'typewriter.
255
+ (define*-public (set-global-fonts #:key
256
+ (music "emmentaler")
257
+ (brace "emmentaler")
258
+ (roman "Century Schoolbook L")
259
+ (sans "sans-serif")
260
+ (typewriter "monospace")
261
+ (factor 1))
262
+ (let ((n (make-font-tree-node 'font-encoding 'fetaMusic)))
263
+ (add-music-fonts n 'feta music brace feta-design-size-mapping factor)
264
+ (add-pango-fonts n 'roman roman factor)
265
+ (add-pango-fonts n 'sans sans factor)
266
+ (add-pango-fonts n 'typewriter typewriter factor)
267
+ n))
268
+
269
+ (define-public (make-pango-font-tree roman-str sans-str typewrite-str factor)
270
+ (let ((n (make-font-tree-node 'font-encoding 'fetaMusic)))
271
+ (add-music-fonts n 'feta "emmentaler" "emmentaler" feta-design-size-mapping factor)
272
+ (add-pango-fonts n 'roman roman-str factor)
273
+ (add-pango-fonts n 'sans sans-str factor)
274
+ (add-pango-fonts n 'typewriter typewrite-str factor)
275
+ n))
276
+
277
+ (define-public (make-century-schoolbook-tree factor)
278
+ (make-pango-font-tree
279
+ "Century Schoolbook L"
280
+ "sans-serif"
281
+ "monospace"
282
+ factor))
283
+
284
+ (define-public all-text-font-encodings
285
+ '(latin1))
286
+
287
+ (define-public all-music-font-encodings
288
+ '(fetaBraces
289
+ fetaMusic
290
+ fetaText))
291
+
292
+ (define-public (magstep s)
293
+ (exp (* (/ s 6) (log 2))))
294
+
295
+ (define-public (magnification->font-size m)
296
+ (* 6 (/ (log m) (log 2))))
@@ -32,6 +32,8 @@ module Lyp::Lilypond
32
32
  # The current lilypond path is stored in a temporary file named by the
33
33
  # session id. Thus we can persist the version selected by the user
34
34
  def current_lilypond
35
+ return forced_lilypond if @forced_version
36
+
35
37
  settings = get_session_settings
36
38
 
37
39
  if !settings[:current]
@@ -48,6 +50,23 @@ module Lyp::Lilypond
48
50
  set_session_settings(settings)
49
51
  end
50
52
 
53
+ def forced_lilypond
54
+ lilypond = lyp_lilyponds.find do |l|
55
+ l[:version] == @forced_version
56
+ end
57
+
58
+ lilypond && lilypond[:path]
59
+ end
60
+
61
+ def force_env_version!
62
+ @forced_version = ENV['LILYPOND_VERSION']
63
+ unless @forced_version
64
+ raise "LILYPOND_VERSION not set"
65
+ end
66
+ end
67
+
68
+ attr_reader :forced_version
69
+
51
70
  def check_lilypond!
52
71
  # check default
53
72
  select_default_lilypond! unless valid_lilypond?(default_lilypond)
@@ -116,9 +135,11 @@ module Lyp::Lilypond
116
135
  Dir["#{Lyp.lilyponds_dir}/*"].each do |path|
117
136
  next unless File.directory?(path) && File.basename(path) =~ /^[\d\.]+$/
118
137
 
138
+ root_path = path
119
139
  version = File.basename(path)
120
140
  path = File.join(path, "bin/lilypond")
121
141
  list << {
142
+ root_path: root_path,
122
143
  path: path,
123
144
  version: version
124
145
  }
@@ -136,6 +157,7 @@ module Lyp::Lilypond
136
157
  resp = `#{path} -v`
137
158
  if resp.lines.first =~ /LilyPond ([0-9\.]+)/i
138
159
  m << {
160
+ root_path: File.expand_path(File.join(File.dirname(path), '..')),
139
161
  path: path,
140
162
  version: $1,
141
163
  system: true
@@ -265,6 +287,9 @@ module Lyp::Lilypond
265
287
 
266
288
  download_lilypond(url, fn, opts) unless File.file?(fn)
267
289
  install_lilypond_files(fn, platform, version, opts)
290
+
291
+ patch_font_scm(version)
292
+ copy_fonts_from_all_packages(version, opts)
268
293
  end
269
294
 
270
295
  def lilypond_install_url(platform, version, opts)
@@ -368,6 +393,37 @@ module Lyp::Lilypond
368
393
  puts e.message
369
394
  end
370
395
 
396
+ def patch_font_scm(version)
397
+ return unless Lyp::FONT_PATCH_REQ =~ Gem::Version.new(version)
398
+
399
+ target_fn = File.join(Lyp.lilyponds_dir, version, 'share/lilypond/current/scm/font.scm')
400
+ FileUtils.cp(Lyp::FONT_PATCH_FILENAME, target_fn)
401
+ end
402
+
403
+ def copy_fonts_from_all_packages(version, opts)
404
+ return unless Lyp::FONT_COPY_REQ =~ Gem::Version.new(version)
405
+
406
+ ly_fonts_dir = File.join(Lyp.lilyponds_dir, version, 'share/lilypond/current/fonts')
407
+
408
+ Dir["#{Lyp.packages_dir}/**/fonts"].each do |package_fonts_dir|
409
+
410
+ Dir["#{package_fonts_dir}/*.otf"].each do |fn|
411
+ target_fn = File.join(ly_fonts_dir, 'otf', File.basename(fn))
412
+ FileUtils.cp(fn, target_fn)
413
+ end
414
+
415
+ Dir["#{package_fonts_dir}/*.svg"].each do |fn|
416
+ target_fn = File.join(ly_fonts_dir, 'svg', File.basename(fn))
417
+ FileUtils.cp(fn, target_fn)
418
+ end
419
+
420
+ Dir["#{package_fonts_dir}/*.woff"].each do |fn|
421
+ target_fn = File.join(ly_fonts_dir, 'svg', File.basename(fn))
422
+ FileUtils.cp(fn, target_fn)
423
+ end
424
+ end
425
+ end
426
+
371
427
  def use(version, opts)
372
428
  lilypond_list = list.reverse
373
429
 
@@ -67,6 +67,11 @@ module Lyp::Package
67
67
 
68
68
  install_package_dependencies(info[:path], opts)
69
69
 
70
+ if File.directory?(File.join(info[:path], 'fonts'))
71
+ puts "Installing package fonts..." unless opts[:silent]
72
+ install_package_fonts(info[:path], opts)
73
+ end
74
+
70
75
  puts "\nInstalled #{package}@#{info[:version]}\n\n" unless opts[:silent]
71
76
 
72
77
  # important: return the installed version
@@ -105,6 +110,12 @@ module Lyp::Package
105
110
  f << LOCAL_PACKAGE_WRAPPER % [entry_point_dirname, entry_point_path]
106
111
  end
107
112
 
113
+ # create fonts directory symlink if needed
114
+ fonts_path = File.join(local_path, 'fonts')
115
+ if File.directory?(fonts_path)
116
+ FileUtils.ln_sf(fonts_path, File.join(package_path, 'fonts'))
117
+ end
118
+
108
119
  {version: version, path: package_path}
109
120
  end
110
121
 
@@ -202,6 +213,32 @@ module Lyp::Package
202
213
  sub_deps.each {|d| install(d, opts)}
203
214
  end
204
215
 
216
+ def install_package_fonts(package_path, opts = {})
217
+ req = Lyp::FONT_COPY_REQ
218
+
219
+ Lyp::Lilypond.list.each do |lilypond|
220
+ next unless req =~ Gem::Version.new(lilypond[:version])
221
+
222
+ ly_fonts_dir = File.join(lilypond[:root_path], 'share/lilypond/current/fonts')
223
+ package_fonts_dir = File.join(package_path, 'fonts')
224
+
225
+ Dir["#{package_fonts_dir}/*.otf"].each do |fn|
226
+ target_fn = File.join(ly_fonts_dir, 'otf', File.basename(fn))
227
+ FileUtils.cp(fn, target_fn)
228
+ end
229
+
230
+ Dir["#{package_fonts_dir}/*.svg"].each do |fn|
231
+ target_fn = File.join(ly_fonts_dir, 'svg', File.basename(fn))
232
+ FileUtils.cp(fn, target_fn)
233
+ end
234
+
235
+ Dir["#{package_fonts_dir}/*.woff"].each do |fn|
236
+ target_fn = File.join(ly_fonts_dir, 'svg', File.basename(fn))
237
+ FileUtils.cp(fn, target_fn)
238
+ end
239
+ end
240
+ end
241
+
205
242
  def package_git_url(package, search_index = true)
206
243
  case package
207
244
  when /^(?:(?:[^\:]+)|http|https)\:/
@@ -124,7 +124,9 @@ EOF
124
124
 
125
125
  puts "Removing binary scripts..."
126
126
  # Delete bin scripts
127
- FileUtils.rm("#{Lyp::LYP_BIN_DIRECTORY}/*") rescue nil
127
+ Dir["#{Lyp::LYP_BIN_DIRECTORY}/*"].each do |fn|
128
+ FileUtils.rm_f(fn) rescue nil
129
+ end
128
130
 
129
131
  puts "\nTo completely remove installed packages and lilyponds run 'rm -rf ~/.lyp'.\n\n"
130
132
  end
@@ -1,3 +1,3 @@
1
1
  module Lyp
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lyp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-24 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -136,6 +136,7 @@ files:
136
136
  - lib/lyp.rb
137
137
  - lib/lyp/base.rb
138
138
  - lib/lyp/cli.rb
139
+ - lib/lyp/etc/font.scm
139
140
  - lib/lyp/git_based_rugged.rb
140
141
  - lib/lyp/lilypond.rb
141
142
  - lib/lyp/package.rb