songbookize 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e5804912b54b4f7e9eb0e75b4ed611e7a7d94aa4
4
- data.tar.gz: 4472d45c0fa525c07e2b88a7aecf15da0b8d77a1
3
+ metadata.gz: 17bb2cdb82cadab3871c628e9a5e2b5f27df93da
4
+ data.tar.gz: 2f2f873b506e890dd6eacbe4f1dd4501cfcb0720
5
5
  SHA512:
6
- metadata.gz: 3be94c1a03624d912a90f56bbd2d6639b249e227c03732fda99a0407d9932716410a897a4084dacd32a2fc2e2ae7a7bffb19f1e9dd0a0b887ce0003521f172eb
7
- data.tar.gz: 6df99920eaf27c4c96bcdff1717ecd0fff62d1131532d96d536a64394327283ba67906bb3dc25fcc8d7667f0bc750fa5aeec761ca0433f3b0033814cf16e4243
6
+ metadata.gz: da3d29f7e87ba694d2173692d67aecacf745473c65107fa65afd396d73614e77d53565a9d4c4487f5bff735f072eee6173c52287bc1d2ee069783f83c4b63389
7
+ data.tar.gz: 7217631176f13d507bb3ebe8be51775593e7121ebea536352cff66fdd55a5060092b4f78fd914fff27625dcaf0ee5f1f1e6aa0af96d89afb73ded70cb55fd8f9
data/Creator/capo.rb CHANGED
@@ -2,17 +2,17 @@ class Song
2
2
  def capo!(fret)
3
3
  capo_melody!(fret) unless melody.nil? or melody.empty?
4
4
  verses.each{|v| v.capo!(fret)}
5
- %[key K].each{|k| info[k] = Song.capo(info[k], fret) if info.include?(k)}
5
+ %w[key K].each{|k| info[k] = Song.capo(info[k], fret) if info.include?(k)}
6
6
  return self
7
7
  end
8
8
 
9
9
  OCTAVE ||= %w[A Bb B C Db D Eb E F Gb G Ab]
10
10
  def self.capo(chord, fret)
11
- idx = OCTAVE.index(chord[0])
12
- range = 0
11
+ idx = OCTAVE.index(chord[0..1])
12
+ range = 0..1
13
13
  if idx.nil? then
14
- idx = OCTAVE.index(chord[0..1])
15
- range = 0..1
14
+ idx = OCTAVE.index(chord[0])
15
+ range = 0
16
16
  end
17
17
  raise StandardError.new("Unknown Chords #{chord}!") if idx.nil?
18
18
 
@@ -4,6 +4,7 @@ require 'date'
4
4
  require 'slim'
5
5
  require 'ostruct'
6
6
  require 'kramdown'
7
+ require 'coffee-script'
7
8
  require_relative 'song'
8
9
 
9
10
  class Song
@@ -70,6 +71,10 @@ class SongBook
70
71
  File.write("#{dir}/#{song.slug}.html", Slim::Template.new(File.join(File.dirname(__FILE__),'song.slim')).render(scope))
71
72
  File.write("#{dir}/#{song.slug}_slideable.html", Slim::Template.new(File.join(File.dirname(__FILE__),'slideable_song.slim')).render(scope))
72
73
  end
74
+ Dir["#{File.dirname(__FILE__)}/*.coffee"].each do |c|
75
+ log.debug "Compiling #{c}"
76
+ File.write("#{dir}/#{File.basename(c, ".coffee")}.js", CoffeeScript.compile(File.read(c)))
77
+ end
73
78
  FileUtils.cp Dir["#{File.dirname(__FILE__)}/resources/*"], "#{dir}/"
74
79
  end
75
80
  end
@@ -10,7 +10,7 @@ class Song
10
10
  res = lyrics.dup
11
11
  chords.each do |chord, pos|
12
12
  cmd = %|\\ch{#{chord}}|
13
- res = res.ljust(pos + offset + 1).insert(pos + offset, cmd)
13
+ res = res.ljust(pos + offset + 1, " ").insert(pos + offset, cmd) # Note, this is a unicode emspace
14
14
  offset += cmd.length
15
15
  end
16
16
 
@@ -40,7 +40,7 @@ class Song
40
40
  end
41
41
  parts << "\\section{#{title}}"
42
42
  parts << "\\songdesc{#{desc}}\n\n" if desc
43
- parts << "\\#{(melody.nil? or melody.empty?) ? "nm" : ""}songinfo{#{"Key of #{key}"}}{#{author}}"
43
+ parts << "\\#{(melody.nil? or melody.empty?) ? "nm" : ""}songinfo{#{key.empty? ? "No Key Specified" : "Key of #{key}"}}{#{author}}"
44
44
  parts << "\\melody{#{slug}001.eps}" unless melody.nil? or melody.empty?
45
45
  # parts << "\\begin{abc}[name=#{title.downcase.gsub(/[^\w]/, "")}]\n#{melody}\\end{abc}" unless melody.nil? or melody.empty?
46
46
  # parts << "\\begin{lilypond}[quoted,staffsize=26]\n#{lilypond}\\end{lilypond}" unless melody.nil? or melody.empty?
@@ -10,6 +10,7 @@ html
10
10
  javascript:
11
11
  window.ABCJS.plugin.auto_render_threshold = 100;
12
12
  window.ABCJS.plugin.hide_abc = true;
13
+ script src="songbook.js"
13
14
  sass:
14
15
  body
15
16
  max-width: 1000px
@@ -131,4 +132,8 @@ coffee:
131
132
  verse_index++ if verse_index < verses.length - 1
132
133
  when "Backspace"
133
134
  window.history.back()
135
+ when "ArrowUp"
136
+ window.transposeUp()
137
+ when "ArrowDown"
138
+ window.transposeDown()
134
139
  updateVerses()
data/Creator/song.slim CHANGED
@@ -5,68 +5,71 @@ html
5
5
  / style type="text/css"==open(URI.encode("https://fonts.googleapis.com/css?family=Bitter:400,700|Muli:300,400,i|Montserrat:400,700|Fira+Mono|Junge")).read
6
6
  script src="abcjs_basic_2.3-min.js"
7
7
  script src="abcjs_plugin_2.3-min.js"
8
+ script src="https://d3js.org/d3.v4.min.js"
8
9
  javascript:
9
10
  window.ABCJS.plugin.auto_render_threshold = 100;
10
11
  window.ABCJS.plugin.hide_abc = true;
11
- sass:
12
- body
13
- max-width: 1000px
14
- margin: auto
15
- padding-top: 50px
16
- font-family: 'Junge'
17
- .lyrics
18
- line-height: 140%
19
- font-size: 140%
20
- overflow-y: hidden
21
- transform-origin: top
22
- clear: both
23
- font-family: 'Junge'
24
- margin: auto
25
- width: fit-content
26
- padding-top: 1em
12
+ script src="songbook.js"
27
13
 
28
- .chordlyrics
29
- font-family: 'Fira Mono', monospace
30
- .abcrendered
31
- margin: auto
32
- h2
33
- text-align: center
34
- .order
35
- position: relative
36
- top: 10
37
- left: 0
38
- float: right
39
- font-size: 26px
40
- font-family: 'Fira Mono', sans
41
- .chords
42
- font-family: 'Fira Mono', monospace
43
- font-weight: bold
44
- color: #08c
45
- .chorusindicator
46
- color: #0a5
47
- font-weight: bold
48
- text-align: center
49
- .chorus
50
- color: #083
51
- .author, .key
52
- font-family: 'Lora', serif
53
- font-size: 140%
54
- text-align: center
55
- font-style: italic
14
+ sass:
15
+ body
16
+ max-width: 1000px
17
+ margin: auto
18
+ padding-top: 50px
19
+ font-family: 'Junge'
20
+ .lyrics
21
+ line-height: 140%
22
+ font-size: 140%
23
+ overflow-y: hidden
24
+ transform-origin: top
25
+ clear: both
26
+ font-family: 'Junge'
27
+ margin: auto
28
+ width: fit-content
29
+ padding-top: 1em
56
30
 
57
- .author
58
- float: right
59
- margin-right: 120px
60
- .key
61
- float: left
62
- margin-left: 120px
63
- .desc
64
- clear: both
65
- margin-bottom: 2em
66
- .melody
67
- background: none
68
- border: none
69
- clear: both
31
+ .chordlyrics
32
+ font-family: 'Fira Mono', monospace
33
+ .abcrendered
34
+ margin: auto
35
+ h2
36
+ text-align: center
37
+ .order
38
+ position: relative
39
+ top: 10
40
+ left: 0
41
+ float: right
42
+ font-size: 26px
43
+ font-family: 'Fira Mono', sans
44
+ .chords
45
+ font-family: 'Fira Mono', monospace
46
+ font-weight: bold
47
+ color: #08c
48
+ .chorusindicator
49
+ color: #0a5
50
+ font-weight: bold
51
+ text-align: center
52
+ .chorus
53
+ color: #083
54
+ .author, .key
55
+ font-family: 'Lora', serif
56
+ font-size: 140%
57
+ text-align: center
58
+ font-style: italic
59
+
60
+ .author
61
+ float: right
62
+ margin-right: 120px
63
+ .key
64
+ float: left
65
+ margin-left: 120px
66
+ .desc
67
+ clear: both
68
+ margin-bottom: 2em
69
+ .melody
70
+ background: none
71
+ border: none
72
+ clear: both
70
73
  body
71
74
  .order=song.order
72
75
  a name=song.slug
@@ -0,0 +1,22 @@
1
+ OCTAVE = "A Bb B C Db D Eb E F Gb G Ab".split(" ")
2
+ window.capo = (chord, fret) ->
3
+ idx = OCTAVE.indexOf(chord[0..1])
4
+ start = 2
5
+ if idx < 0
6
+ idx = OCTAVE.indexOf(chord[0])
7
+ start = 1
8
+ throw new Exception("Unknown chord #{chord}") if idx < 0
9
+ return "#{OCTAVE[(idx + fret) % OCTAVE.length]}#{chord[start..-1]}"
10
+
11
+ window.transpose = (steps) ->
12
+ d3.selectAll(".chords").each (c) ->
13
+ $(this).text $(this).text().replace(/[^\s]+/g, (t) -> capo(t, steps))
14
+
15
+ window.currentTranspose = 0
16
+ window.transposeUp = ->
17
+ window.currentTranspose += 1
18
+ window.transpose 1
19
+
20
+ window.transposeDown = ->
21
+ window.currentTranspose -= 1
22
+ window.transpose -1
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  require_relative 'Creator/parser.rb'
3
+ require_relative 'Creator/capo.rb'
3
4
  require_relative 'Creator/latex_formatter.rb'
4
5
  require_relative 'Creator/html_formatter.rb'
5
6
  require_relative 'Creator/midi_formatter.rb'
@@ -7,6 +8,7 @@ require_relative 'Creator/midi_formatter.rb'
7
8
  def book
8
9
  unless $book
9
10
  $book = SongBook.parse("Songs")
11
+ # $book.songs.each{|s| s.capo!(2) }
10
12
  $book.preface = `tail -n+3 Readme.md | pandoc -t latex`
11
13
  end
12
14
  $book
@@ -37,35 +39,47 @@ task :preview => [:parse, :eps, :reorder] do
37
39
  end
38
40
  end
39
41
 
40
- task :build => [:parse, :eps, :reorder] do
42
+ desc "Builds PDF out of songbook."
43
+ task :pdf => [:parse, :eps, :reorder] do
41
44
  Dir.chdir("latex") do
42
45
  book.build(filename:book_name)
43
46
  end
44
47
  end
45
48
 
49
+ desc "Builds a booklet PDF out of songbook."
46
50
  task :booklet => [:parse, :eps, :reorder] do
47
51
  Dir.chdir("latex") do
48
52
  book.build(booklet:true, filename:"#{book_name}let")
49
53
  end
50
54
  end
51
55
 
56
+ desc "Converts songbook into HTML"
52
57
  task :html => [:parse, :reorder] do
53
58
  book.to_html("html")
54
59
  end
55
60
 
61
+ desc "Creates midi files for all songs with .abc tunes"
56
62
  task :midi => [:parse, :reorder] do
57
63
  book.to_midi("html/midi")
58
64
  end
59
65
 
66
+ desc "Creates javascript / JSON descriptions of the songbook"
60
67
  task :info => [:parse] do
61
68
  File.write("html/#{book_name}.json", book.json_info)
62
69
  File.write("html/#{book_name}.js", book.jsonp_info)
63
70
  File.write("html/songbook.json", book.json_info)
64
71
  end
65
72
 
66
- task :default => [:midi, :html, :info, :build, :booklet] do
73
+ desc "Creates a portable single file archive of the songbook"
74
+ task :yaml => [:parse] do
75
+ File.write("html/#{book_name}.yml", book.to_yaml)
67
76
  end
68
77
 
78
+ desc "Attempts full build of all output types"
79
+ task :default => [:midi, :html, :info, :pdf, :booklet] do
80
+ end
81
+
82
+ desc "Creates a tex file for each individual song"
69
83
  task :songtex do
70
84
  b = SongBook.parse("Songs")
71
85
  Dir.chdir("latex") do
@@ -91,5 +105,5 @@ end
91
105
  task :publish => [:preview, :booklet, :info] do
92
106
  raise StandardError.new("Uncommited changes") unless `git status -s`.empty?
93
107
  system("git push")
94
- system("scp -r latex/#{book_name}.pdf latex/#{book_name}let.pdf latex/#{book_name}.json zachcapalbo.com:/var/www/files/")
108
+ system("scp -r latex/#{book_name}.pdf latex/#{book_name}let.pdf latex/#{book_name}.json #{book.info["remote_location"]}")
95
109
  end
data/Songbookize.md ADDED
@@ -0,0 +1,154 @@
1
+ # Songbookize
2
+
3
+ ## Overview
4
+
5
+ `songbookize` is a ruby gem and command for generating songbooks in the same
6
+ style as [Zach's Songbook](http://zachcapalbo.com/projects/songbook.html). You
7
+ can refer to the [source code for Zach's Songbook](https://gitlab.com/zach-geek/songbook)
8
+ for reference.
9
+
10
+ ## Installation
11
+
12
+ ### Songbookize Gem
13
+
14
+ Installing the `songbookize` command is as simple as
15
+
16
+ ```
17
+ gem install songbookize
18
+ ```
19
+
20
+ This is enough to compile songbooks into HTML or YAML.
21
+
22
+ ### Latex Dependencies
23
+
24
+ In order to generate the nice pdf songbooks and songbooklets, you'll need to
25
+ have LaTeX and a number of packages installed. If you're on Linux, the best
26
+ way to install everything is to install everything in the [Dockerfile](https://hub.docker.com/r/zachgeek/songbook-builder/~/dockerfile/).
27
+
28
+ On Windows, you can make it work with a LaTeX package like [MiKTeX](https://miktex.org/),
29
+ but it's tricky. Good luck.
30
+
31
+ ### Docker Image
32
+
33
+ If installing all of the dependencies is too much work, there's a handy
34
+ [Docker Image](https://hub.docker.com/r/zachgeek/songbook-builder/) you can use
35
+ instead.
36
+
37
+ To use it, run something like:
38
+
39
+ ```
40
+ docker run --rm -ti -v /path/to/your/songbook:/songbook zachgeek/songbook-builder
41
+ ```
42
+
43
+ ## Songbook Layout
44
+
45
+ Your songbook should be contained in its own folder, with all of the `.chords`
46
+ and `.abc` files living in the `Songs` subdirectory.
47
+
48
+ ### Chords Format
49
+
50
+ The `.chords` format for songs is intended to be an easy, human readable way for
51
+ encoding song lyrics and chords.
52
+
53
+ #### Header
54
+
55
+ `.chords` files begin with a small yaml header:
56
+
57
+ ```
58
+ ---
59
+ title: A Song
60
+ key: A
61
+ desc: This is an example song
62
+ ---
63
+ ```
64
+
65
+ None of the header items are required, but some common ones are
66
+
67
+ - **title**: The song's title
68
+ - **key**: The musical key that the song is played in
69
+ - **desc**: A description of the song
70
+
71
+ #### Chords and Lyrics
72
+
73
+ After the header, chords are written with the chords on the line directly above
74
+ the lyrics that they correspond to. This is a format that has been commonplace
75
+ on the internet for decades. E.g.:
76
+
77
+ ```
78
+ C F G
79
+ This is a song about nothing
80
+ C F G Am
81
+ It doesn't mean anything at all
82
+ ```
83
+
84
+ Lyrics don't have to have chords corresponding to them. Simply omit the chord
85
+ lines, and the verses will be picked up as being without chords. E.g.:
86
+
87
+ ```
88
+ This is the second verse
89
+ But you know the chords from the first
90
+ ```
91
+
92
+ You can denote that the a chorus by putting `[Chorus:]` before it. Then, to
93
+ refer to the chorus, you can just use `[Chorus]`
94
+
95
+ #### Example
96
+
97
+ So, our whole demo song from before might come out looking like:
98
+
99
+ ```
100
+ ---
101
+ title: A Song
102
+ key: A
103
+ desc: This is an example song
104
+ ---
105
+
106
+ C F G
107
+ This is a song about nothing
108
+ C F G Am
109
+ It doesn't mean anything at all
110
+
111
+ [Chorus:]
112
+ F G
113
+ This is the chorus
114
+ D C
115
+ It has different chords
116
+
117
+ This is the second verse
118
+ But you know the chords from the first
119
+
120
+ [Chorus]
121
+
122
+ And here's one more verse
123
+ Just for good measure, for good measure!
124
+ ```
125
+
126
+ ### ABC Format
127
+
128
+ [ABC Notation](http://abcnotation.com/) is a popular text format for inscribing
129
+ melodies. Songbookize will use standard tools to parse it, so you should refer
130
+ to [online references](http://abcnotation.com/) for more information on writing
131
+ ABC notation.
132
+
133
+ A song can have a `.abc` file, a `.chords`, file, or both. If both files are
134
+ specified for a given song, both the melody and the chords will be displayed.
135
+
136
+ ### songbook.yml
137
+
138
+ `songbook.yml` describes the songbook. There are a few important keys:
139
+
140
+ - **title**: Sets the title of the song book
141
+ - **include**: Specifies a table of paths with a list of songs to copy.
142
+
143
+ For instance, you might have:
144
+
145
+ ```
146
+ ---
147
+ title: An Example Songbook
148
+ include:
149
+ "/path/to/other/songbook/Songs":
150
+ - a_song
151
+ - a_nother_song
152
+ "/path/to/other/otherSongbook/Songs":
153
+ - a_nother_nother_song
154
+ ```
data/bin/songbookize ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rake'
3
+ require 'pry'
4
+
5
+ Rake::TaskManager.record_task_metadata = true
6
+ load "#{File.dirname(__FILE__)}/../Rakefile"
7
+
8
+ if ARGV.include?('-h') or ARGV.include?('--help') then
9
+ puts "songbookize compiles a song book into html and pdf files."
10
+ puts "usage: songbookize [task]"
11
+ puts "task may be:"
12
+ puts
13
+ Rake.application.tasks.reject {|t| t.comment.nil?}.each do |t|
14
+ puts " #{t.name.ljust(20)} #{t.comment}"
15
+ end
16
+ puts
17
+ puts "default is used if no task is specified."
18
+ exit
19
+ end
20
+
21
+ yml_file = ARGV.find{|a| a.downcase.end_with?(".yml") and File.exist?(a) }
22
+
23
+ unless yml_file.nil? then
24
+ $book = YAML.load(File.read(yml_file))
25
+ ARGV.delete(yml_file)
26
+ end
27
+
28
+ Rake.application[ARGV[0] || 'default'].invoke
data/template.tex CHANGED
@@ -9,6 +9,7 @@
9
9
  \setlength{\columnsep}{0.1cm}
10
10
 
11
11
  \newunicodechar{☺}{{\fontspec{DejaVu Sans}☺}}
12
+ \newunicodechar{ }{{\fontspec{DejaVu Sans} }}
12
13
 
13
14
  \setlength{\oddsidemargin}{2.0cm}
14
15
  \setlength{\evensidemargin}{2.5cm}
@@ -20,6 +21,8 @@
20
21
  \setdvipstargetpages
21
22
  \fi
22
23
 
24
+ \setpdftargetpages
25
+
23
26
  \ifprintoption % tweak dvi output only for final printing
24
27
  \special{!TeXDict begin /landplus90{true}store end}
25
28
  \special{!TeXDict begin <</Tumble true>> setpagedevice end}
metadata CHANGED
@@ -1,19 +1,103 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: songbookize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Capalbo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-29 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2018-02-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: slim
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sass
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.8'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: kramdown
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coffee-script
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
13
97
  description: Generate your own PDF/HTML songbook.
14
98
  email: zach.geek@gmail.com
15
99
  executables:
16
- - bookize
100
+ - songbookize
17
101
  extensions: []
18
102
  extra_rdoc_files: []
19
103
  files:
@@ -25,14 +109,16 @@ files:
25
109
  - Creator/slideable_song.slim
26
110
  - Creator/song.rb
27
111
  - Creator/song.slim
112
+ - Creator/songbook.coffee
28
113
  - Creator/songbook.slim
29
114
  - Creator/tv.slim
30
115
  - LICENSE
31
116
  - Rakefile
32
117
  - Readme.md
33
- - bin/bookize
118
+ - Songbookize.md
119
+ - bin/songbookize
34
120
  - template.tex
35
- homepage: https://github.com/zach-capalbo/zachs-songbook
121
+ homepage: https://gitlab.com/zach-geek/songbook
36
122
  licenses:
37
123
  - MIT
38
124
  metadata: {}
data/bin/bookize DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'rake'
3
- require 'pry'
4
- load "#{File.dirname(__FILE__)}/../Rakefile"
5
-
6
- Rake.application[ARGV[0] || 'default'].invoke