lyp 0.0.3 → 0.0.4

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: 237b06c5018520e73c24a410d350343e806dd4c5
4
- data.tar.gz: 67060615bc34efded14ca9ff3b1e8b9134c2f414
3
+ metadata.gz: be14f9ec309c846d05866736f78ba82458ba4f5b
4
+ data.tar.gz: b5ffae67c9ef47ec416ec61d763913cdc89b9459
5
5
  SHA512:
6
- metadata.gz: 4b9325b66427152575d3b7340c7bfea283cad9816d4a330defe75ab88ee6e2d9610b888e1a57b3010dd839455f794b344f7df18e2d3c96b81156edef5701db4b
7
- data.tar.gz: cfa5bf20c687e24c95a2b7c225b0fb2afe00ffe34e8e06c19b12df583d42458173f3b0adfb9929f84357a80b9d2818174e5e3e588d2f32145a2c1a38b3f5a977
6
+ metadata.gz: d5899a965576c65a6d07bd07ff716889e85042044d2efdbf8d16d47adfe09e57965479b75873a0ef0b5ae1c0b293529268fbe28472e97c7a360695df5b5b3e04
7
+ data.tar.gz: a075ab18c0270b3c057db6ae9c3f365f9c8b4c26c7cf1df4c89fd79c6e896f495cfcc5356cf8c301c93aaa8833df16e5a40bf795112899fd88b344ea7b87bf10
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/ciconia/lyp.svg?branch=master)](https://travis-ci.org/ciconia/lyp)
1
+ [![Build Status](https://travis-ci.org/noteflakes/lyp.svg?branch=master)](https://travis-ci.org/noteflakes/lyp)
2
2
 
3
3
  # lyp - a package manager for lilypond
4
4
 
data/bin/lilypond CHANGED
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'lyp/version'
4
- require 'lyp/directories'
5
- require 'lyp/settings'
6
- require 'lyp/lilypond'
4
+ require 'lyp'
7
5
 
8
6
  STDERR.puts "Lyp version #{Lyp::VERSION}"
9
7
 
@@ -24,8 +22,8 @@ else
24
22
 
25
23
  begin
26
24
  Lyp::Lilypond.compile(ARGV)
27
- rescue => e
28
- STDERR.puts e.message
29
- exit 1
25
+ # rescue => e
26
+ # STDERR.puts e.message
27
+ # exit 1
30
28
  end
31
29
  end
@@ -45,7 +45,7 @@ command :list do |c|
45
45
  Lyp::System.test_installed_status!
46
46
 
47
47
  pattern = args.first
48
- if pattern.nil? || pattern == 'lilypond'
48
+ if pattern == 'lilypond'
49
49
  STDOUT.puts LILYPOND_PREAMBLE
50
50
  Lyp::Lilypond.list.each {|info| puts format_lilypond_entry(info)}
51
51
  STDOUT.puts LILYPOND_LEGEND
@@ -64,9 +64,6 @@ command :compile do |c|
64
64
  begin
65
65
  raise "File not specified" if args.empty?
66
66
  Lyp::Lilypond.compile(ARGV[1..-1])
67
- rescue => e
68
- STDERR.puts e.message
69
- exit 1
70
67
  end
71
68
  end
72
69
  end
@@ -78,13 +75,35 @@ command :search do |c|
78
75
  Lyp::System.test_installed_status!
79
76
 
80
77
  pattern = args.first
81
- if pattern == 'lilypond'
78
+ pattern =~ Lyp::PACKAGE_RE
79
+ package, version = $1, $2
80
+ req = (version && Gem::Requirement.new(version)) rescue nil
81
+
82
+ if package == 'lilypond'
82
83
  begin
83
- versions = Lyp::Lilypond.search
84
- versions.each {|v| puts v}
85
- rescue => e
86
- STDERR.puts e.message
87
- exit 1
84
+ versions = Lyp::Lilypond.search(version)
85
+
86
+ if versions.empty?
87
+ puts "\nNo versions of lilypond are available for download\n\n"
88
+ else
89
+ puts "\nAvailable versions of lilypond:\n\n"
90
+ versions.each do |v|
91
+ prefix = v[:installed] ? " * " : " "
92
+ puts "#{prefix}#{v[:version]}"
93
+ end
94
+ puts "\n * Currently installed\n\n"
95
+ end
96
+ end
97
+ else
98
+ packages = Lyp::Package.list_lyp_index(pattern)
99
+ if packages.empty?
100
+ puts "\nNo matching package found in lyp-index\n\n"
101
+ else
102
+ puts "\nAvailable packages:\n\n"
103
+ packages.each do |p|
104
+ puts " #{p[:name]}"
105
+ end
106
+ puts "\n\n"
88
107
  end
89
108
  end
90
109
  end
@@ -106,11 +125,11 @@ command :install do |c|
106
125
  when /^lilypond(?:@(.+))?$/
107
126
  Lyp::System.test_installed_status!
108
127
  Lyp::Lilypond.install($1, opts.__hash__)
128
+ else
129
+ Lyp::System.test_installed_status!
130
+ Lyp::Package.install(package)
109
131
  end
110
132
  end
111
- # rescue => e
112
- # STDERR.puts e.message
113
- # exit 1
114
133
  end
115
134
  end
116
135
  end
@@ -131,9 +150,6 @@ command :use do |c|
131
150
 
132
151
  lilypond = Lyp::Lilypond.use(version, opts.__hash__)
133
152
  puts "Using version #{lilypond[:version]}"
134
- rescue => e
135
- STDERR.puts e.message
136
- exit 1
137
153
  end
138
154
  end
139
155
  end
@@ -157,9 +173,6 @@ command :uninstall do |c|
157
173
  Lyp::Lilypond.uninstall($1)
158
174
  end
159
175
  end
160
- rescue => e
161
- STDERR.puts e.message
162
- exit 1
163
176
  end
164
177
  end
165
178
  end
data/lib/lyp/lilypond.rb CHANGED
@@ -8,7 +8,6 @@ module Lyp::Lilypond
8
8
  argv << fn
9
9
 
10
10
  invoke(argv)
11
- exec("#{current_lilypond} #{argv.join(' ')}")
12
11
  end
13
12
 
14
13
  def invoke(argv)
@@ -142,7 +141,7 @@ module Lyp::Lilypond
142
141
  BASE_URL = "http://download.linuxaudio.org/lilypond/binaries"
143
142
 
144
143
  # Returns a list of versions of lilyponds available for download
145
- def search
144
+ def search(version_specifier = nil)
146
145
  require 'open-uri'
147
146
  require 'nokogiri'
148
147
 
@@ -156,19 +155,39 @@ module Lyp::Lilypond
156
155
  versions << $1
157
156
  end
158
157
  end
159
- versions
158
+
159
+ installed_versions = list.map {|l| l[:version]}
160
+ versions.select {|v| version_match(v, version_specifier, versions)}.map do |v|
161
+ {
162
+ version: v,
163
+ installed: installed_versions.include?(v)
164
+ }
165
+ end
166
+ end
167
+
168
+ def version_match(version, specifier, all_versions)
169
+ case specifier
170
+ when 'latest'
171
+ version == all_versions.last
172
+ when 'stable'
173
+ Gem::Version.new(version).segments[1].even?
174
+ when 'unstable'
175
+ Gem::Version.new(version).segments[1].odd?
176
+ else
177
+ Gem::Requirement.new(specifier) =~ Gem::Version.new(version)
178
+ end
160
179
  end
161
180
 
162
181
  def latest_stable_version
163
- search.reverse.find {|l| Gem::Version.new(l).segments[1] % 2 == 0}
182
+ search.reverse.find {|l| Gem::Version.new(l[:version]).segments[1].even?}[:version]
164
183
  end
165
184
 
166
185
  def latest_unstable_version
167
- search.reverse.find {|l| Gem::Version.new(l).segments[1] % 2 != 0}
186
+ search.reverse.find {|l| Gem::Version.new(l[:version]).segments[1].odd?}[:version]
168
187
  end
169
188
 
170
189
  def latest_version
171
- search.last
190
+ search.last[:version]
172
191
  end
173
192
 
174
193
  def install(version_specifier, opts = {})
@@ -195,10 +214,13 @@ module Lyp::Lilypond
195
214
  latest_version
196
215
  else
197
216
  req = Gem::Requirement.new(version_specifier)
198
- search.reverse.find {|v| req =~ Gem::Version.new(v)}
217
+ lilypond = search.reverse.find {|l| req =~ Gem::Version.new(l[:version])}
218
+ if lilypond
219
+ lilypond[:version]
220
+ else
221
+ raise "Could not find version matching #{version_specifier}"
222
+ end
199
223
  end
200
- rescue => e
201
- raise "Invalid version specified: #{version_specifier}"
202
224
  end
203
225
 
204
226
  def detect_lilypond_platform
@@ -339,11 +361,11 @@ module Lyp::Lilypond
339
361
  lilypond = lilypond_list.first
340
362
  when 'stable'
341
363
  lilypond = lilypond_list.find do |v|
342
- Gem::Version.new(v[:version]).segments[1] % 2 == 0
364
+ Gem::Version.new(v[:version]).segments[1].even?
343
365
  end
344
366
  when 'unstable'
345
367
  lilypond = lilypond_list.find do |v|
346
- Gem::Version.new(v[:version]).segments[1] % 2 != 0
368
+ Gem::Version.new(v[:version]).segments[1].odd?
347
369
  end
348
370
  else
349
371
  version = "~>#{version}.0" if version =~ /^\d+\.\d+$/
@@ -382,7 +404,14 @@ module Lyp::Lilypond
382
404
  end
383
405
 
384
406
  def exec(cmd)
385
- raise unless system(cmd)
407
+ Open3.popen3(cmd) do |_in, _out, _err, wait_thr|
408
+ exit_value = wait_thr.value
409
+ if exit_value != 0
410
+ raise "Error executing cmd #{cmd}: #{_err.read}"
411
+ end
412
+ end
413
+
414
+ # raise unless system(cmd)
386
415
  end
387
416
  end
388
417
  end
data/lib/lyp/package.rb CHANGED
@@ -1,3 +1,8 @@
1
+ require 'fileutils'
2
+ require 'rugged'
3
+ require 'open-uri'
4
+ require 'yaml'
5
+
1
6
  module Lyp::Package
2
7
  class << self
3
8
 
@@ -14,15 +19,198 @@ module Lyp::Package
14
19
  x =~ Lyp::PACKAGE_RE; x_package, x_version = $1, $2
15
20
  y =~ Lyp::PACKAGE_RE; y_package, y_version = $1, $2
16
21
 
17
- x_version = x_version && Gem::Version.new(x_version)
18
- y_version = y_version && Gem::Version.new(y_version)
22
+ x_version = (x_version && Gem::Version.new(x_version) rescue x)
23
+ y_version = (y_version && Gem::Version.new(y_version) rescue y)
19
24
 
20
- if x_package == y_package
25
+ if (x_package == y_package) && (x_version.class == y_version.class)
21
26
  x_version <=> y_version
22
27
  else
23
- x_package <=> y_package
28
+ x <=> y
24
29
  end
25
30
  end
26
31
  end
32
+
33
+ def install(package_specifier, opts = {})
34
+ unless package_specifier =~ Lyp::PACKAGE_RE
35
+ raise "Invalid package specifier #{package_specifier}"
36
+ end
37
+ package, version = $1, $2
38
+
39
+ url = package_git_url(package)
40
+ tmp_path = git_url_to_temp_path(url)
41
+
42
+ repo = package_repository(url, tmp_path, opts)
43
+ version = checkout_package_version(repo, version, opts)
44
+
45
+ # Copy files
46
+ package_path = git_url_to_package_path(
47
+ package !~ /\// ? package : url, version
48
+ )
49
+
50
+ FileUtils.mkdir_p(File.dirname(package_path))
51
+ FileUtils.rm_rf(package_path)
52
+ FileUtils.cp_r(tmp_path, package_path)
53
+
54
+ install_package_dependencies(package_path, opts)
55
+
56
+ puts "\nInstalled #{package}@#{version}\n\n" unless opts[:silent]
57
+
58
+ # return the installed version
59
+ version
60
+ end
61
+
62
+ def package_repository(url, tmp_path, opts = {})
63
+ # Create repository
64
+ if File.directory?(tmp_path)
65
+ repo = Rugged::Repository.new(tmp_path)
66
+ repo.fetch('origin', [repo.head.name])
67
+ else
68
+ FileUtils.mkdir_p(File.dirname(tmp_path))
69
+ puts "Cloning #{url}..." unless opts[:silent]
70
+ repo = Rugged::Repository.clone_at(url, tmp_path)
71
+ end
72
+ repo
73
+ end
74
+
75
+ def checkout_package_version(repo, version, opts = {})
76
+ # Select commit to checkout
77
+ if version.nil? || (version == '')
78
+ puts "Checkout master branch..." unless opts[:silent]
79
+ repo.checkout('master', strategy: :force)
80
+ version = 'head'
81
+ else
82
+ tag = select_git_tag(repo, version)
83
+ unless tag
84
+ raise "Could not find tag matching #{version_specifier}"
85
+ end
86
+ puts "Checkout #{tag.name} tag" unless opts[:silent]
87
+ repo.checkout(tag.name, strategy: :force)
88
+ version = tag_version(tag)
89
+ end
90
+ version
91
+ end
92
+
93
+ def install_package_dependencies(package_path, opts = {})
94
+ # Install any missing sub-dependencies
95
+ sub_deps = []
96
+
97
+ resolver = Lyp::Resolver.new("#{package_path}/package.ly")
98
+ deps_tree = resolver.get_dependency_tree(ignore_missing: true)
99
+ deps_tree[:dependencies].each do |package_name, leaf|
100
+ sub_deps << leaf[:clause] if leaf[:versions].empty?
101
+ end
102
+ sub_deps.each {|d| install(d, opts)}
103
+ end
104
+
105
+ def package_git_url(package, search_index = true)
106
+ case package
107
+ when /^(?:(?:[^\:]+)|http|https)\:/
108
+ package
109
+ when /^([^\.]+\..+)\/[^\/]+\/.+(?<!\.git)$/ # .git missing from end of URL
110
+ "https://#{package}.git"
111
+ when /^([^\.]+\..+)\/.+/
112
+ "https://#{package}"
113
+ when /^[^\/]+\/[^\/]+$/
114
+ "https://github.com/#{package}.git"
115
+ else
116
+ if search_index && (url = search_lyp_index(package))
117
+ package_git_url(url, false) # make sure url is qualified
118
+ else
119
+ raise "Invalid package specified"
120
+ end
121
+ end
122
+ end
123
+
124
+ LYP_INDEX_URL = "https://raw.githubusercontent.com/noteflakes/lyp-index/master/index.yaml"
125
+
126
+ def search_lyp_index(package)
127
+ entry = lyp_index['packages'][package]
128
+ entry && entry['url']
129
+ end
130
+
131
+ def list_lyp_index(pattern = nil)
132
+ list = lyp_index['packages'].inject([]) do |m, kv|
133
+ m << kv[1].merge(name: kv[0])
134
+ end
135
+
136
+ if pattern
137
+ list.select! {|p| p[:name] =~ /#{pattern}/}
138
+ end
139
+
140
+ list.sort_by {|p| p[:name]}
141
+ end
142
+
143
+ def lyp_index
144
+ @lyp_index ||= YAML.load(open(LYP_INDEX_URL))
145
+ end
146
+
147
+ TEMP_REPO_ROOT_PATH = "/tmp/lyp/repos"
148
+
149
+ def git_url_to_temp_path(url)
150
+ case url
151
+ when /^(?:http|https)\:(?:\/\/)?(.+)$/
152
+ path = $1.gsub(/\.git$/, '')
153
+ "#{TEMP_REPO_ROOT_PATH}/#{path}"
154
+ when /^(?:.+@)([^\:]+)\:(?:\/\/)?(.+)$/
155
+ domain, path = $1, $2.gsub(/\.git$/, '')
156
+ "#{TEMP_REPO_ROOT_PATH}/#{domain}/#{path}"
157
+ else
158
+ raise "Invalid URL #{url}"
159
+ end
160
+ end
161
+
162
+ def git_url_to_package_path(url, version)
163
+ version = 'head' if version.nil? || (version == '')
164
+
165
+ case url
166
+ when /^(?:http|https)\:(?:\/\/)?(.+)$/
167
+ path = $1.gsub(/\.git$/, '')
168
+ "#{Lyp::packages_dir}/#{path}@#{version}"
169
+ when /^(?:.+@)([^\:]+)\:(?:\/\/)?(.+)$/
170
+ domain, path = $1, $2.gsub(/\.git$/, '')
171
+ "#{Lyp::packages_dir}/#{domain}/#{path}@#{version}"
172
+ else
173
+ if url !~ /\//
174
+ "#{Lyp::packages_dir}/#{url}@#{version}"
175
+ else
176
+ raise "Invalid URL #{url}"
177
+ end
178
+ end
179
+ end
180
+
181
+ TAG_VERSION_RE = /^v?(\d.*)$/
182
+
183
+ def select_git_tag(repo, version_specifier)
184
+ return if version_specifier.nil? || (version_specifier == '')
185
+
186
+ req = Gem::Requirement.new(version_specifier) rescue nil
187
+
188
+ repo_tags(repo).reverse.find do |t|
189
+ if req && (v = tag_version(t))
190
+ req =~ Gem::Version.new(v)
191
+ else
192
+ t.name == version_specifier
193
+ end
194
+ end
195
+ end
196
+
197
+ # Returns a list of tags sorted by version
198
+ def repo_tags(repo)
199
+ tags = []
200
+ repo.tags.each {|t| tags << t}
201
+
202
+ tags.sort do |x, y|
203
+ x_version, y_version = tag_version(x), tag_version(y)
204
+ if x_version && y_version
205
+ Gem::Version.new(x_version) <=> Gem::Version.new(y_version)
206
+ else
207
+ x.name <=> y.name
208
+ end
209
+ end
210
+ end
211
+
212
+ def tag_version(tag)
213
+ (tag.name =~ TAG_VERSION_RE) ? $1 : nil
214
+ end
27
215
  end
28
216
  end
data/lib/lyp/resolver.rb CHANGED
@@ -43,7 +43,7 @@ class Lyp::Resolver
43
43
  #
44
44
  # Since files to be processed are added to a queue, this method loops through
45
45
  # the queue until it's empty.
46
- def get_dependency_tree
46
+ def get_dependency_tree(opts = {})
47
47
  tree = {
48
48
  dependencies: {},
49
49
  queue: [],
@@ -53,11 +53,13 @@ class Lyp::Resolver
53
53
  queue_file_for_processing(@user_file, tree, tree)
54
54
 
55
55
  while job = pull_file_from_queue(tree)
56
- process_lilypond_file(job[:path], tree, job[:leaf])
56
+ process_lilypond_file(job[:path], tree, job[:leaf], opts)
57
57
  end
58
58
 
59
- squash_old_versions(tree)
60
- remove_unfulfilled_dependencies(tree)
59
+ unless opts[:ignore_missing]
60
+ squash_old_versions(tree)
61
+ remove_unfulfilled_dependencies(tree)
62
+ end
61
63
 
62
64
  tree
63
65
  end
@@ -68,7 +70,7 @@ class Lyp::Resolver
68
70
  #
69
71
  # The leaf argument is a pointer to the current leaf on the tree on which to
70
72
  # add dependencies. This is how transitive dependencies are represented.
71
- def process_lilypond_file(path, tree, leaf)
73
+ def process_lilypond_file(path, tree, leaf, opts)
72
74
  # path is expected to be absolute
73
75
  return if tree[:processed_files][path]
74
76
 
@@ -82,7 +84,7 @@ class Lyp::Resolver
82
84
  qualified_path = File.expand_path(path, dir)
83
85
  queue_file_for_processing(qualified_path, tree, leaf)
84
86
  when REQUIRE
85
- find_package_versions(path, tree, leaf)
87
+ find_package_versions(path, tree, leaf, opts)
86
88
  end
87
89
  end
88
90
 
@@ -101,7 +103,7 @@ class Lyp::Resolver
101
103
 
102
104
  # Find available packaging matching the package specifier, and queue them for
103
105
  # processing any include files or transitive dependencies.
104
- def find_package_versions(ref, tree, leaf)
106
+ def find_package_versions(ref, tree, leaf, opts)
105
107
  return {} unless ref =~ Lyp::PACKAGE_RE
106
108
  ref_package = $1
107
109
  version_clause = $2
@@ -109,7 +111,7 @@ class Lyp::Resolver
109
111
  matches = find_matching_packages(ref, tree)
110
112
 
111
113
  # Raise if no match found and we're at top of the tree
112
- if matches.empty? && (tree == leaf)
114
+ if matches.empty? && (tree == leaf) && !opts[:ignore_missing]
113
115
  raise "No package found for requirement #{ref}"
114
116
  end
115
117
 
@@ -137,9 +139,13 @@ class Lyp::Resolver
137
139
  req = Gem::Requirement.new(req_version || '>=0')
138
140
 
139
141
  available_packages(tree).select do |package, sub_tree|
140
- if package =~ Lyp::PACKAGE_RE
141
- version = Gem::Version.new($2 || '0')
142
- (req_package == $1) && (req =~ version)
142
+ if (package =~ Lyp::PACKAGE_RE) && (req_package == $1)
143
+ version = Gem::Version.new($2 || '0') rescue nil
144
+ if version.nil?
145
+ req_version.nil? || (req_version == $2)
146
+ else
147
+ req =~ version
148
+ end
143
149
  else
144
150
  nil
145
151
  end
@@ -11,8 +11,7 @@
11
11
  # package-refs is a hash table with an entry for each package reference made
12
12
  # using \require, either in user files or in package files (for transitive dependencies).
13
13
 
14
- `\version "2.19.31"
15
-
14
+ `
16
15
  #(begin
17
16
  (define package-refs (make-hash-table))`
18
17
 
@@ -54,5 +53,5 @@ require = #(define-void-function (parser location package)(string?)
54
53
  `
55
54
  #(ly:debug "package loader is ready")
56
55
  #(ly:set-option 'relative-includes #t)
57
- \include "{{_[:user_file]}}"
56
+ \include "{{File.expand_path(_[:user_file])}}"
58
57
  `
data/lib/lyp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lyp
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/lyp/wrapper.rb CHANGED
@@ -1,14 +1,19 @@
1
1
  require 'tempfile'
2
2
 
3
3
  module Lyp
4
+ WRAPPER_TEMPLATE = Lyp::Template.new(IO.read(
5
+ File.expand_path('templates/deps_wrapper.rb', File.dirname(__FILE__))
6
+ ))
7
+
4
8
  def self.wrap(fn)
5
9
  r = Lyp::Resolver.new(fn).resolve_package_dependencies
6
10
 
7
11
  unless r[:package_paths].empty?
8
- fn = Tempfile.new('lyp-deps-wrapper.ly').path
12
+ FileUtils.mkdir_p('/tmp/lyp/wrappers')
13
+ fn = "/tmp/lyp/wrappers/#{File.basename(fn)}"
14
+ #Tempfile.new('lyp-deps-wrapper.ly').path
9
15
 
10
- t = Lyp::Template.new(IO.read(File.expand_path('templates/deps_wrapper.rb', File.dirname(__FILE__))))
11
- File.open(fn, 'w+') {|f| f << t.render(r)}
16
+ File.open(fn, 'w+') {|f| f << WRAPPER_TEMPLATE.render(r)}
12
17
  end
13
18
  fn
14
19
  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.0.3
4
+ version: 0.0.4
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-08 00:00:00.000000000 Z
11
+ date: 2016-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -110,6 +110,26 @@ dependencies:
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: 2.7.1
113
+ - !ruby/object:Gem::Dependency
114
+ name: rugged
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.23'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 0.23.3
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '0.23'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.23.3
113
133
  description: Lyp is a tool for managing lilypond versions and lilypond packages
114
134
  email: ciconia@gmail.com
115
135
  executables:
@@ -135,7 +155,7 @@ files:
135
155
  - lib/lyp/templates/deps_wrapper.rb
136
156
  - lib/lyp/version.rb
137
157
  - lib/lyp/wrapper.rb
138
- homepage: http://github.com/ciconia/lyp
158
+ homepage: http://github.com/noteflakes/lyp
139
159
  licenses:
140
160
  - MIT
141
161
  metadata: {}