lyp 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +44 -4
- data/bin/install_release.sh +54 -0
- data/bin/release_wrapper_lilypond.sh +13 -0
- data/bin/release_wrapper_lyp.sh +13 -0
- data/lib/lyp/base.rb +1 -0
- data/lib/lyp/git_based_rugged.rb +9 -3
- data/lib/lyp/lilypond.rb +1 -3
- data/lib/lyp/resolver.rb +4 -3
- data/lib/lyp/system.rb +26 -9
- data/lib/lyp/templates/deps_wrapper.rb +69 -14
- data/lib/lyp/version.rb +1 -1
- metadata +6 -4
- data/bin/get.sh +0 -886
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af573692d11d242223f7cacfd3c03aafd2013e75
|
4
|
+
data.tar.gz: ebd0f0f9b0f1da5c7561df7cbea69c41db9d4665
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e0839bada15ee142ce3b4d8d5a9f827cdedc235bc53cfa0760be0af3129963e2ce8c691bcef7bffb77b65965981cdddb9566fa5c420d7a36e452ba9b697f1f3
|
7
|
+
data.tar.gz: 3795e21469164bb52b2e10a96f2d96641ae2b28e678b50cfeccd38153d1a65506ae7ea9c1f42229d006caaad1d9d9a3d285baa5496d9c29676da6b9ce17302e6
|
data/README.md
CHANGED
@@ -20,24 +20,41 @@ __No hassle Lilypond installation__: With lyp you can also install any version o
|
|
20
20
|
- [Version specifiers](#version-specifiers)
|
21
21
|
- [Using packages](#using-packages)
|
22
22
|
- [Developing packages](#developing-packages)
|
23
|
+
- [Including files from within packages](#including-files-from-within-packages)
|
23
24
|
- [Installing and switching Lilypond versions](#installing-and-switching-lilypond-versions)
|
24
25
|
- [Contributing](#contributing)
|
25
26
|
|
26
27
|
## Installation
|
27
28
|
|
28
|
-
**Note**: lyp is tested to work on Linux and Mac OSX. Installing and using it on Windows
|
29
|
+
**Note**: lyp is tested to work on Linux and Mac OSX. Installing and using it on Windows would probably be problematic.
|
29
30
|
|
30
|
-
|
31
|
+
#### Installing lyp as a Ruby gem
|
32
|
+
|
33
|
+
If you have a recent (>=1.9.3) version of Ruby on your machine, you can install lyp as a gem:
|
31
34
|
|
32
35
|
```bash
|
33
36
|
gem install lyp
|
34
37
|
lyp install self
|
35
38
|
```
|
36
39
|
|
37
|
-
(For those without Ruby on their machines, a self-contained version of lyp will be released in the near future.)
|
38
|
-
|
39
40
|
The `lyp install self` command is needed in order to setup the `~/.lyp` working directory and add the lyp binaries directory to your `PATH` (see below), by adding a line of code to your shell profile file.
|
40
41
|
|
42
|
+
#### Installing lyp without Ruby
|
43
|
+
|
44
|
+
If you don't have Ruby on your machine you can install lyp as a stand alone package using the [install script](https://raw.githubusercontent.com/noteflakes/lyp/master/bin/install_release.sh):
|
45
|
+
|
46
|
+
```bash
|
47
|
+
curl -sSL https://git.io/getlyp | bash
|
48
|
+
```
|
49
|
+
|
50
|
+
or with Wget:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
wget -qO- https://git.io/getlyp | bash
|
54
|
+
```
|
55
|
+
|
56
|
+
**Note**: installing the standalone release of lyp requires a having git installed.
|
57
|
+
|
41
58
|
### How lyp works
|
42
59
|
|
43
60
|
Lyp sets up a working directory in `~/.lyp` where it keeps its binaries, installed packages, and installed versions of lilypond. Lyp provides a wrapper script for lilypond, which does the following:
|
@@ -186,6 +203,29 @@ This will create a `mypack@dev` package referencing your local files, which you
|
|
186
203
|
\require "mypack@dev"
|
187
204
|
```
|
188
205
|
|
206
|
+
### Including files from within packages
|
207
|
+
|
208
|
+
In order to facilitate writing complex packages, lyp defines a few lilypond commands and scheme variables and commands that allow using relative paths when including files from within packages.
|
209
|
+
|
210
|
+
The following variables are defined:
|
211
|
+
|
212
|
+
- `lyp-input-filename` - the absolute path for the user's file being compiled
|
213
|
+
- `lyp-input-dirname` - the absolute directory path for the user's file being compiled
|
214
|
+
- `lyp-cwd` - the current working directory
|
215
|
+
- `current-package-dir` - the absolute directory path for the current package
|
216
|
+
|
217
|
+
In addition, lyp provides the `\pinclude` command for including files residing in the current package using relative paths. The `\pinclude` commands loads a given file only once:
|
218
|
+
|
219
|
+
```lilypond
|
220
|
+
\pinclude "inc/init.ily"
|
221
|
+
```
|
222
|
+
|
223
|
+
And a `pload` scheme function for loading scheme files using relative paths without manipulating the `%load-path`:
|
224
|
+
|
225
|
+
```lilypond
|
226
|
+
#(if (not (defined? 'mypack:init))(pload "scm/init.scm"))
|
227
|
+
```
|
228
|
+
|
189
229
|
### Publishing packages
|
190
230
|
|
191
231
|
In order for your package to be available to all users, you'll need to first push your code to a publically accessible git repository (for example on github). Users will then be able to install your package by using the git URL of the public repository.
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
shopt -s extglob
|
4
|
+
set -o errtrace
|
5
|
+
set -o errexit
|
6
|
+
|
7
|
+
fail() { log "\nERROR: $*\n" ; exit 1 ; }
|
8
|
+
|
9
|
+
has() {
|
10
|
+
type "$1" > /dev/null 2>&1
|
11
|
+
}
|
12
|
+
|
13
|
+
download() {
|
14
|
+
if has "curl"; then
|
15
|
+
curl -L -o $*
|
16
|
+
elif has "wget"; then
|
17
|
+
wget -O $*
|
18
|
+
else
|
19
|
+
fail "Could not find curl or wget"
|
20
|
+
fi
|
21
|
+
}
|
22
|
+
|
23
|
+
WORKDIR="/tmp/lyp-release-installer"
|
24
|
+
LYP_VERSION="0.1.3"
|
25
|
+
URL_BASE="https://github.com/noteflakes/lyp/releases/download/v$LYP_VERSION"
|
26
|
+
|
27
|
+
PLATFORM=`uname -sp`
|
28
|
+
case $PLATFORM in
|
29
|
+
"Linux x86_64")
|
30
|
+
RELEASE_FILE="lyp-$LYP_VERSION-linux-x86_64"
|
31
|
+
;;
|
32
|
+
"Linux x86")
|
33
|
+
RELEASE_FILE="lyp-$LYP_VERSION-linux-x86"
|
34
|
+
;;
|
35
|
+
"Darwin i386")
|
36
|
+
RELEASE_FILE="lyp-$LYP_VERSION-osx"
|
37
|
+
;;
|
38
|
+
*)
|
39
|
+
fail "Unspported platform $PLATFORM"
|
40
|
+
esac
|
41
|
+
|
42
|
+
RELEASE_URL="$URL_BASE/$RELEASE_FILE.tar.gz"
|
43
|
+
RELEASE_PATH="$WORKDIR/$RELEASE_FILE"
|
44
|
+
|
45
|
+
rm -rf $WORKDIR
|
46
|
+
mkdir $WORKDIR
|
47
|
+
echo "Downloading $RELEASE_URL"
|
48
|
+
download "$WORKDIR/release.tar.gz" $RELEASE_URL
|
49
|
+
echo "Extracting $WORKDIR/release.tar.gz"
|
50
|
+
tar -xzf "$WORKDIR/release.tar.gz" -C $WORKDIR
|
51
|
+
|
52
|
+
$RELEASE_PATH/bin/lyp install self
|
53
|
+
|
54
|
+
rm -rf $WORKDIR
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
# Figure out where this script is located.
|
5
|
+
SELFDIR="`dirname \"$0\"`"
|
6
|
+
ROOTDIR="`cd \"$SELFDIR/..\" && pwd`"
|
7
|
+
|
8
|
+
# Tell Bundler where the Gemfile and gems are.
|
9
|
+
export BUNDLE_GEMFILE="$ROOTDIR/lib/vendor/Gemfile"
|
10
|
+
unset BUNDLE_IGNORE_CONFIG
|
11
|
+
|
12
|
+
# Run the actual app using the bundled Ruby interpreter, with Bundler activated.
|
13
|
+
exec "$ROOTDIR/lib/ruby/bin/ruby" -rbundler/setup -rreadline -I$ROOTDIR/lib/app/lib "$ROOTDIR/lib/app/bin/lilypond" "$@"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
# Figure out where this script is located.
|
5
|
+
SELFDIR="`dirname \"$0\"`"
|
6
|
+
ROOTDIR="`cd \"$SELFDIR/..\" && pwd`"
|
7
|
+
|
8
|
+
# Tell Bundler where the Gemfile and gems are.
|
9
|
+
export BUNDLE_GEMFILE="$ROOTDIR/lib/vendor/Gemfile"
|
10
|
+
unset BUNDLE_IGNORE_CONFIG
|
11
|
+
|
12
|
+
# Run the actual app using the bundled Ruby interpreter, with Bundler activated.
|
13
|
+
exec "$ROOTDIR/lib/ruby/bin/ruby" -rbundler/setup -rreadline -I$ROOTDIR/lib/app/lib "$ROOTDIR/lib/app/bin/lyp" "$@"
|
data/lib/lyp/base.rb
CHANGED
@@ -11,6 +11,7 @@ module Lyp
|
|
11
11
|
|
12
12
|
LYP_DIRECTORY = File.expand_path('~/.lyp')
|
13
13
|
LYP_BIN_DIRECTORY = File.join(LYP_DIRECTORY, 'bin')
|
14
|
+
LYP_LIB_DIRECTORY = File.join(LYP_DIRECTORY, 'lib')
|
14
15
|
DEFAULT_PACKAGE_DIRECTORY = File.join(LYP_DIRECTORY, 'packages')
|
15
16
|
DEFAULT_LILYPONDS_DIRECTORY = File.join(LYP_DIRECTORY, 'lilyponds')
|
16
17
|
|
data/lib/lyp/git_based_rugged.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
# A quick-n-dirty rugged swap-in
|
2
|
-
|
3
|
-
|
1
|
+
# A quick-n-dirty rugged swap-in. Since the rugged gem includes a native
|
2
|
+
# extension (libgit2), and since traveling-ruby does not yet include an updated
|
3
|
+
# version of it (the latest is 0.22.0b5 and we need >=0.23.0), we make a
|
4
|
+
# compromise, and make a traveling-ruby-based standalone release without
|
5
|
+
# rugged, but using plain git in order to install packages. So, users will have
|
6
|
+
# to have git installed on their machines.
|
7
|
+
#
|
8
|
+
# So here's an absolutely minimal replacement for rugged (just for the
|
9
|
+
# functionality we need) wrapping the git command.
|
4
10
|
|
5
11
|
module Rugged
|
6
12
|
class Repository
|
data/lib/lyp/lilypond.rb
CHANGED
@@ -154,7 +154,7 @@ module Lyp::Lilypond
|
|
154
154
|
list = `which -a lilypond`
|
155
155
|
list = list.lines.map {|f| f.chomp}.reject do |l|
|
156
156
|
dir = File.dirname(l)
|
157
|
-
(dir == Lyp::LYP_BIN_DIRECTORY) || (dir == self_bin_dir)
|
157
|
+
(dir == Gem.bindir) || (dir == Lyp::LYP_BIN_DIRECTORY) || (dir == self_bin_dir)
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
@@ -432,8 +432,6 @@ module Lyp::Lilypond
|
|
432
432
|
raise "Error executing cmd #{cmd}: #{$_err.read}"
|
433
433
|
end
|
434
434
|
end
|
435
|
-
|
436
|
-
# raise unless system(cmd)
|
437
435
|
end
|
438
436
|
end
|
439
437
|
end
|
data/lib/lyp/resolver.rb
CHANGED
@@ -24,8 +24,9 @@ class Lyp::Resolver
|
|
24
24
|
}
|
25
25
|
end
|
26
26
|
|
27
|
-
DEP_RE = /\\(require|include) "([^"]+)"/.freeze
|
27
|
+
DEP_RE = /\\(require|include|pinclude) "([^"]+)"/.freeze
|
28
28
|
INCLUDE = "include".freeze
|
29
|
+
PINCLUDE = "pinclude".freeze
|
29
30
|
REQUIRE = "require".freeze
|
30
31
|
|
31
32
|
# Each "leaf" on the dependency tree is a hash of the following structure:
|
@@ -64,7 +65,7 @@ class Lyp::Resolver
|
|
64
65
|
tree
|
65
66
|
end
|
66
67
|
|
67
|
-
# Scans a lilypond file for \require and \include statements. An included
|
68
|
+
# Scans a lilypond file for \require and \(p)include statements. An included
|
68
69
|
# file is queued for processing. For required packages, search for suitable
|
69
70
|
# versions of the package and add them to the tree.
|
70
71
|
#
|
@@ -80,7 +81,7 @@ class Lyp::Resolver
|
|
80
81
|
# Parse lilypond file for \include and \require
|
81
82
|
ly_content.scan(DEP_RE) do |type, path|
|
82
83
|
case type
|
83
|
-
when INCLUDE
|
84
|
+
when INCLUDE, PINCLUDE
|
84
85
|
qualified_path = File.expand_path(path, dir)
|
85
86
|
queue_file_for_processing(qualified_path, tree, leaf)
|
86
87
|
when REQUIRE
|
data/lib/lyp/system.rb
CHANGED
@@ -34,7 +34,7 @@ EOF
|
|
34
34
|
puts "\nInstalling lyp...\n\nAdding ~/.lyp/bin to $PATH..."
|
35
35
|
profile_fn = setup_bin_path
|
36
36
|
puts "Setting up binary scripts..."
|
37
|
-
|
37
|
+
setup_files
|
38
38
|
|
39
39
|
if installed?(no_path_check: true)
|
40
40
|
puts "\nTo finish installation, open a new shell or run 'source ~/#{File.basename(profile_fn)}'.\n\n"
|
@@ -64,31 +64,48 @@ EOF
|
|
64
64
|
fn
|
65
65
|
end
|
66
66
|
|
67
|
-
def
|
67
|
+
def setup_files
|
68
68
|
bin_dir = File.expand_path(File.dirname($0))
|
69
69
|
|
70
70
|
if is_gem?(bin_dir)
|
71
|
-
|
71
|
+
setup_gem_files(bin_dir)
|
72
72
|
else
|
73
|
-
|
73
|
+
setup_release_files(bin_dir)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
RELEASE_BIN_PATH = "lib/app/bin
|
77
|
+
RELEASE_BIN_PATH = "lib/app/bin"
|
78
78
|
|
79
79
|
def is_gem?(bin_dir)
|
80
|
-
bin_dir !~ /#{RELEASE_BIN_PATH}
|
80
|
+
bin_dir !~ /#{RELEASE_BIN_PATH}$/
|
81
81
|
end
|
82
82
|
|
83
|
-
def
|
83
|
+
def setup_gem_files(bin_dir)
|
84
|
+
|
85
|
+
FileUtils.rm_rf(Lyp::LYP_BIN_DIRECTORY)
|
84
86
|
FileUtils.mkdir_p(Lyp::LYP_BIN_DIRECTORY)
|
87
|
+
|
85
88
|
%w{lyp lilypond}.each do |fn|
|
86
89
|
FileUtils.ln_sf("#{bin_dir}/#{fn}", "#{Lyp::LYP_BIN_DIRECTORY}/#{fn}")
|
87
90
|
end
|
88
91
|
end
|
89
92
|
|
90
|
-
def
|
91
|
-
|
93
|
+
def setup_release_files(bin_dir)
|
94
|
+
FileUtils.rm_rf(Lyp::LYP_BIN_DIRECTORY)
|
95
|
+
FileUtils.mkdir_p(Lyp::LYP_BIN_DIRECTORY)
|
96
|
+
|
97
|
+
release_dir = File.expand_path(File.join(bin_dir, '../../../'))
|
98
|
+
|
99
|
+
puts "Copying Ruby runtime & gems..."
|
100
|
+
lib_dir = File.join(release_dir, 'lib')
|
101
|
+
FileUtils.rm_rf(Lyp::LYP_LIB_DIRECTORY)
|
102
|
+
FileUtils.cp_r(lib_dir, Lyp::LYP_LIB_DIRECTORY)
|
103
|
+
|
104
|
+
puts "Copying binary scripts..."
|
105
|
+
wrapper_bin_dir = File.join(release_dir, 'bin')
|
106
|
+
%w{lyp lilypond}.each do |f|
|
107
|
+
FileUtils.cp("#{wrapper_bin_dir}/#{f}", "#{Lyp::LYP_BIN_DIRECTORY}/#{f}")
|
108
|
+
end
|
92
109
|
end
|
93
110
|
|
94
111
|
def uninstall!
|
@@ -7,51 +7,106 @@
|
|
7
7
|
# }
|
8
8
|
# }
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
user_filename = File.expand_path(_[:user_file])
|
13
|
+
user_dirname = File.dirname(user_filename)
|
14
|
+
|
15
|
+
# The wrapper defines a few global variables:
|
16
|
+
#
|
17
|
+
# lyp-input-filename - the absolute path to the input file name
|
18
|
+
# lyp-input-dirname - the absolute path to the input file directory name
|
19
|
+
# lyp-cwd - the current working directory
|
20
|
+
# lyp-current-package-dir - the directory for the package currently being loaded
|
21
|
+
# lyp-package-refs - a hash table mapping package refs to package entry
|
22
|
+
# point absolute paths
|
23
|
+
# lyp-package-loaded - a hash table for keeping track of loaded packages
|
24
|
+
# lyp-file-included - a hash table for keeping track of include files
|
13
25
|
|
14
26
|
`
|
15
27
|
#(begin
|
16
|
-
(define
|
28
|
+
(define lyp-input-filename "{{user_filename}}")
|
29
|
+
(define lyp-input-dirname "{{user_dirname}}")
|
30
|
+
(define lyp-cwd "{{FileUtils.pwd}}")
|
31
|
+
(define lyp-current-package-dir "")
|
32
|
+
(define lyp-package-refs (make-hash-table))`
|
17
33
|
|
18
34
|
_[:package_paths].each do |spec, path|
|
19
35
|
`
|
20
|
-
(hash-set! package-refs "{{spec}}" "{{path}}")`
|
36
|
+
(hash-set! lyp-package-refs "{{spec}}" "{{path}}")`
|
21
37
|
end
|
22
38
|
|
23
39
|
# package-loaded is hash table used for tracking loaded packages, so each
|
24
40
|
# package is loaded only once.
|
41
|
+
|
42
|
+
# package-loaded is hash table used for tracking loaded packages, so each
|
43
|
+
# package is loaded only once.
|
44
|
+
|
25
45
|
`
|
26
|
-
(define package-loaded (make-hash-table))
|
46
|
+
(define lyp-package-loaded (make-hash-table))
|
47
|
+
(define lyp-file-included (make-hash-table))
|
27
48
|
)
|
28
49
|
`
|
29
50
|
|
30
|
-
# define the \require command
|
51
|
+
# define the \require command for loading packages
|
31
52
|
`
|
32
53
|
require = #(define-void-function (parser location package)(string?)
|
33
54
|
(let*
|
34
55
|
(
|
35
|
-
(path (hash-ref package-refs package))
|
36
|
-
(loaded? (hash-ref package-loaded path))
|
56
|
+
(path (hash-ref lyp-package-refs package))
|
57
|
+
(loaded? (hash-ref lyp-package-loaded path))
|
37
58
|
(package-dir (dirname path))
|
59
|
+
(prev-package-dir lyp-current-package-dir)
|
38
60
|
)
|
39
61
|
(if (and path (not loaded?)) (begin
|
40
62
|
(if (not (file-exists? path)) (
|
41
63
|
(ly:error "Failed to load package ~a (file not found ~a)" package path)
|
42
64
|
))
|
43
|
-
(ly:debug "
|
44
|
-
(
|
65
|
+
(ly:debug "Loading package ~a at ~a" package package-dir)
|
66
|
+
(set! lyp-current-package-dir package-dir)
|
67
|
+
(hash-set! lyp-package-loaded path #t)
|
45
68
|
#{ \include #path #}
|
69
|
+
(set! lyp-current-package-dir prev-package-dir)
|
46
70
|
))
|
47
71
|
)
|
48
72
|
)
|
49
73
|
`
|
50
74
|
|
51
|
-
#
|
75
|
+
# define the \pinclude command for including files inside the current package
|
76
|
+
|
77
|
+
`
|
78
|
+
pinclude = #(define-void-function (parser location path)(string?)
|
79
|
+
(let*
|
80
|
+
(
|
81
|
+
(full-path (format "~a/~a" lyp-current-package-dir path))
|
82
|
+
(loaded? (hash-ref lyp-file-included full-path))
|
83
|
+
)
|
84
|
+
(if (and full-path (not loaded?)) (begin
|
85
|
+
(if (not (file-exists? full-path)) (
|
86
|
+
(ly:error "File not found ~a" full-path)
|
87
|
+
))
|
88
|
+
(hash-set! lyp-file-included full-path #t)
|
89
|
+
#{ \include #full-path #}
|
90
|
+
))
|
91
|
+
)
|
92
|
+
)
|
93
|
+
`
|
52
94
|
|
95
|
+
# define the \pload scheme function, for loading scheme files inside the current
|
96
|
+
# package
|
97
|
+
`
|
98
|
+
#(define (pload path)
|
99
|
+
(let*
|
100
|
+
(
|
101
|
+
(full-path (format "~a/~a" lyp-current-package-dir path))
|
102
|
+
)
|
103
|
+
(load full-path)
|
104
|
+
)
|
105
|
+
)
|
106
|
+
`
|
107
|
+
|
108
|
+
# load the user's file
|
53
109
|
`
|
54
110
|
#(ly:debug "package loader is ready")
|
55
|
-
|
56
|
-
\include "{{File.expand_path(_[:user_file])}}"
|
111
|
+
\include "{{user_filename}}"
|
57
112
|
`
|
data/lib/lyp/version.rb
CHANGED
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
|
+
version: 0.1.3
|
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-
|
11
|
+
date: 2016-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -128,9 +128,11 @@ extra_rdoc_files: []
|
|
128
128
|
files:
|
129
129
|
- LICENSE
|
130
130
|
- README.md
|
131
|
-
- bin/
|
131
|
+
- bin/install_release.sh
|
132
132
|
- bin/lilypond
|
133
133
|
- bin/lyp
|
134
|
+
- bin/release_wrapper_lilypond.sh
|
135
|
+
- bin/release_wrapper_lyp.sh
|
134
136
|
- lib/lyp.rb
|
135
137
|
- lib/lyp/base.rb
|
136
138
|
- lib/lyp/cli.rb
|
@@ -164,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
166
|
version: '0'
|
165
167
|
requirements: []
|
166
168
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.
|
169
|
+
rubygems_version: 2.5.1
|
168
170
|
signing_key:
|
169
171
|
specification_version: 4
|
170
172
|
summary: Lyp is a package manager for lilypond
|
data/bin/get.sh
DELETED
@@ -1,886 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
shopt -s extglob
|
4
|
-
set -o errtrace
|
5
|
-
set -o errexit
|
6
|
-
|
7
|
-
rvm_install_initialize()
|
8
|
-
{
|
9
|
-
DEFAULT_SOURCES=(github.com/rvm/rvm bitbucket.org/mpapis/rvm)
|
10
|
-
|
11
|
-
BASH_MIN_VERSION="3.2.25"
|
12
|
-
if
|
13
|
-
[[ -n "${BASH_VERSION:-}" &&
|
14
|
-
"$(\printf "%b" "${BASH_VERSION:-}\n${BASH_MIN_VERSION}\n" | LC_ALL=C \sort -t"." -k1,1n -k2,2n -k3,3n | \head -n1)" != "${BASH_MIN_VERSION}"
|
15
|
-
]]
|
16
|
-
then
|
17
|
-
echo "BASH ${BASH_MIN_VERSION} required (you have $BASH_VERSION)"
|
18
|
-
exit 1
|
19
|
-
fi
|
20
|
-
|
21
|
-
export HOME PS4
|
22
|
-
export rvm_trace_flag rvm_debug_flag rvm_user_install_flag rvm_ignore_rvmrc rvm_prefix rvm_path
|
23
|
-
|
24
|
-
PS4="+ \${BASH_SOURCE##\${rvm_path:-}} : \${FUNCNAME[0]:+\${FUNCNAME[0]}()} \${LINENO} > "
|
25
|
-
}
|
26
|
-
|
27
|
-
log() { printf "%b\n" "$*"; }
|
28
|
-
debug(){ [[ ${rvm_debug_flag:-0} -eq 0 ]] || printf "%b\n" "Running($#): $*"; }
|
29
|
-
fail() { log "\nERROR: $*\n" ; exit 1 ; }
|
30
|
-
|
31
|
-
rvm_install_commands_setup()
|
32
|
-
{
|
33
|
-
\which which >/dev/null 2>&1 || fail "Could not find 'which' command, make sure it's available first before continuing installation."
|
34
|
-
if
|
35
|
-
[[ -z "${rvm_tar_command:-}" ]] && builtin command -v gtar >/dev/null
|
36
|
-
then
|
37
|
-
rvm_tar_command=gtar
|
38
|
-
elif
|
39
|
-
${rvm_tar_command:-tar} --help 2>&1 | GREP_OPTIONS="" \grep -- --strip-components >/dev/null
|
40
|
-
then
|
41
|
-
rvm_tar_command="${rvm_tar_command:-tar}"
|
42
|
-
else
|
43
|
-
case "$(uname)" in
|
44
|
-
(OpenBSD)
|
45
|
-
log "Trying to install GNU version of tar, might require sudo password"
|
46
|
-
if (( UID ))
|
47
|
-
then sudo pkg_add -z gtar-1
|
48
|
-
else pkg_add -z gtar-1
|
49
|
-
fi
|
50
|
-
rvm_tar_command=gtar
|
51
|
-
;;
|
52
|
-
(Darwin|FreeBSD|DragonFly) # it's not possible to autodetect on OSX, the help/man does not mention all flags
|
53
|
-
rvm_tar_command=tar
|
54
|
-
;;
|
55
|
-
(SunOS)
|
56
|
-
case "$(uname -r)" in
|
57
|
-
(5.10)
|
58
|
-
log "Trying to install GNU version of tar, might require sudo password"
|
59
|
-
if (( UID ))
|
60
|
-
then
|
61
|
-
if \which sudo >/dev/null 2>&1
|
62
|
-
then sudo_10=sudo
|
63
|
-
elif \which /opt/csw/bin/sudo >/dev/null 2>&1
|
64
|
-
then sudo_10=/opt/csw/bin/sudo
|
65
|
-
else fail "sudo is required but not found. You may install sudo from OpenCSW repository (http://opencsw.org/about)"
|
66
|
-
fi
|
67
|
-
pkginfo -q CSWpkgutil || $sudo_10 pkgadd -a $rvm_path/config/solaris/noask -d http://get.opencsw.org/now CSWpkgutil
|
68
|
-
sudo /opt/csw/bin/pkgutil -iy CSWgtar -t http://mirror.opencsw.org/opencsw/unstable
|
69
|
-
else
|
70
|
-
pkginfo -q CSWpkgutil || pkgadd -a $rvm_path/config/solaris/noask -d http://get.opencsw.org/now CSWpkgutil
|
71
|
-
/opt/csw/bin/pkgutil -iy CSWgtar -t http://mirror.opencsw.org/opencsw/unstable
|
72
|
-
fi
|
73
|
-
rvm_tar_command=/opt/csw/bin/gtar
|
74
|
-
;;
|
75
|
-
(*)
|
76
|
-
rvm_tar_command=tar
|
77
|
-
;;
|
78
|
-
esac
|
79
|
-
esac
|
80
|
-
builtin command -v ${rvm_tar_command:-gtar} >/dev/null ||
|
81
|
-
fail "Could not find GNU compatible version of 'tar' command, make sure it's available first before continuing installation."
|
82
|
-
fi
|
83
|
-
if
|
84
|
-
[[ " ${rvm_tar_options:-} " != *" --no-same-owner "* ]] &&
|
85
|
-
$rvm_tar_command --help 2>&1 | GREP_OPTIONS="" \grep -- --no-same-owner >/dev/null
|
86
|
-
then
|
87
|
-
rvm_tar_options="${rvm_tar_options:-}${rvm_tar_options:+ }--no-same-owner"
|
88
|
-
fi
|
89
|
-
}
|
90
|
-
|
91
|
-
usage()
|
92
|
-
{
|
93
|
-
printf "%b" "
|
94
|
-
|
95
|
-
Usage
|
96
|
-
|
97
|
-
rvm-installer [options] [action]
|
98
|
-
|
99
|
-
Options
|
100
|
-
|
101
|
-
[[--]version] <version>
|
102
|
-
|
103
|
-
The version or tag to install. Valid values are:
|
104
|
-
|
105
|
-
latest - The latest tagged version.
|
106
|
-
latest-minor - The latest minor version of the current major version.
|
107
|
-
latest-<x> - The latest minor version of version x.
|
108
|
-
latest-<x>.<y> - The latest patch version of version x.y.
|
109
|
-
<x>.<y>.<z> - Major version x, minor version y and patch z.
|
110
|
-
|
111
|
-
[--]branch <branch>
|
112
|
-
|
113
|
-
The name of the branch from which RVM is installed. This option can be used
|
114
|
-
with the following formats for <branch>:
|
115
|
-
|
116
|
-
<account>/
|
117
|
-
|
118
|
-
If account is wayneeseguin or mpapis, installs from one of the following:
|
119
|
-
|
120
|
-
https://github.com/rvm/rvm/archive/master.tar.gz
|
121
|
-
https://bitbucket.org/mpapis/rvm/get/master.tar.gz
|
122
|
-
|
123
|
-
Otherwise, installs from:
|
124
|
-
|
125
|
-
https://github.com/<account>/rvm/archive/master.tar.gz
|
126
|
-
|
127
|
-
<account>/<branch>
|
128
|
-
|
129
|
-
If account is wayneeseguin or mpapis, installs from one of the following:
|
130
|
-
|
131
|
-
https://github.com/rvm/rvm/archive/<branch>.tar.gz
|
132
|
-
https://bitbucket.org/mpapis/rvm/get/<branch>.tar.gz
|
133
|
-
|
134
|
-
Otherwise, installs from:
|
135
|
-
|
136
|
-
https://github.com/<account>/rvm/archive/<branch>.tar.gz
|
137
|
-
|
138
|
-
[/]<branch>
|
139
|
-
|
140
|
-
Installs the branch from one of the following:
|
141
|
-
|
142
|
-
https://github.com/rvm/rvm/archive/<branch>.tar.gz
|
143
|
-
https://bitbucket.org/mpapis/rvm/get/<branch>.tar.gz
|
144
|
-
|
145
|
-
[--]source <source>
|
146
|
-
|
147
|
-
Defines the repository from which RVM is retrieved and installed in the format:
|
148
|
-
|
149
|
-
<domain>/<account>/<repo>
|
150
|
-
|
151
|
-
Where:
|
152
|
-
|
153
|
-
<domain> - Is bitbucket.org, github.com or a github enterprise site serving
|
154
|
-
an RVM repository.
|
155
|
-
<account> - Is the user account in which the RVM repository resides.
|
156
|
-
<repo> - Is the name of the RVM repository.
|
157
|
-
|
158
|
-
Note that when using the [--]source option, one should only use the [/]branch format
|
159
|
-
with the [--]branch option. Failure to do so will result in undefined behavior.
|
160
|
-
|
161
|
-
--trace
|
162
|
-
|
163
|
-
Provides debug logging for the installation script.
|
164
|
-
Actions
|
165
|
-
|
166
|
-
master - Installs RVM from the master branch at rvm/rvm on github or mpapis/rvm
|
167
|
-
on bitbucket.org.
|
168
|
-
stable - Installs RVM from the stable branch a rvm/rvm on github or mpapis/rvm
|
169
|
-
on bitbucket.org.
|
170
|
-
help - Displays this output.
|
171
|
-
|
172
|
-
"
|
173
|
-
}
|
174
|
-
|
175
|
-
## duplication marker 32fosjfjsznkjneuera48jae
|
176
|
-
__rvm_curl_output_control()
|
177
|
-
{
|
178
|
-
if
|
179
|
-
(( ${rvm_quiet_curl_flag:-0} == 1 ))
|
180
|
-
then
|
181
|
-
__flags+=( "--silent" "--show-error" )
|
182
|
-
elif
|
183
|
-
[[ " $*" == *" -s"* || " $*" == *" --silent"* ]]
|
184
|
-
then
|
185
|
-
# make sure --show-error is used with --silent
|
186
|
-
[[ " $*" == *" -S"* || " $*" == *" -sS"* || " $*" == *" --show-error"* ]] ||
|
187
|
-
{
|
188
|
-
__flags+=( "--show-error" )
|
189
|
-
}
|
190
|
-
fi
|
191
|
-
}
|
192
|
-
|
193
|
-
## duplication marker 32fosjfjsznkjneuera48jae
|
194
|
-
# -S is automatically added to -s
|
195
|
-
__rvm_curl()
|
196
|
-
(
|
197
|
-
__rvm_which curl >/dev/null ||
|
198
|
-
{
|
199
|
-
rvm_error "RVM requires 'curl'. Install 'curl' first and try again."
|
200
|
-
return 200
|
201
|
-
}
|
202
|
-
|
203
|
-
typeset -a __flags
|
204
|
-
__flags=( --fail --location --max-redirs 10 )
|
205
|
-
|
206
|
-
[[ "$*" == *"--max-time"* ]] ||
|
207
|
-
[[ "$*" == *"--connect-timeout"* ]] ||
|
208
|
-
__flags+=( --connect-timeout 30 --retry-delay 2 --retry 3 )
|
209
|
-
|
210
|
-
if [[ -n "${rvm_proxy:-}" ]]
|
211
|
-
then __flags+=( --proxy "${rvm_proxy:-}" )
|
212
|
-
fi
|
213
|
-
|
214
|
-
__rvm_curl_output_control
|
215
|
-
|
216
|
-
unset curl
|
217
|
-
__rvm_debug_command \curl "${__flags[@]}" "$@" || return $?
|
218
|
-
)
|
219
|
-
|
220
|
-
rvm_error() { printf "ERROR: %b\n" "$*"; }
|
221
|
-
__rvm_which(){ which "$@" || return $?; true; }
|
222
|
-
__rvm_debug_command()
|
223
|
-
{
|
224
|
-
debug "Running($#): $*"
|
225
|
-
"$@" || return $?
|
226
|
-
true
|
227
|
-
}
|
228
|
-
rvm_is_a_shell_function()
|
229
|
-
{
|
230
|
-
[[ -t 0 && -t 1 ]] || return $?
|
231
|
-
return ${rvm_is_not_a_shell_function:-0}
|
232
|
-
}
|
233
|
-
|
234
|
-
# Searches the tags for the highest available version matching a given pattern.
|
235
|
-
# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) 1.10. -> 1.10.3
|
236
|
-
# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) 1.10. -> 1.10.3
|
237
|
-
# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) 1. -> 1.11.0
|
238
|
-
# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) "" -> 2.0.1
|
239
|
-
fetch_version()
|
240
|
-
{
|
241
|
-
typeset _account _domain _pattern _repo _sources _values _version
|
242
|
-
_sources=(${!1})
|
243
|
-
_pattern=$2
|
244
|
-
for _source in "${_sources[@]}"
|
245
|
-
do
|
246
|
-
IFS='/' read -r _domain _account _repo <<< "${_source}"
|
247
|
-
_version="$(
|
248
|
-
fetch_versions ${_domain} ${_account} ${_repo} |
|
249
|
-
GREP_OPTIONS="" \grep "^${_pattern:-}" | tail -n 1
|
250
|
-
)"
|
251
|
-
if
|
252
|
-
[[ -n ${_version} ]]
|
253
|
-
then
|
254
|
-
echo "${_version}"
|
255
|
-
return 0
|
256
|
-
fi
|
257
|
-
done
|
258
|
-
}
|
259
|
-
|
260
|
-
# Returns a sorted list of all version tags from a repository
|
261
|
-
fetch_versions()
|
262
|
-
{
|
263
|
-
typeset _account _domain _repo _url
|
264
|
-
_domain=$1
|
265
|
-
_account=$2
|
266
|
-
_repo=$3
|
267
|
-
case ${_domain} in
|
268
|
-
(bitbucket.org)
|
269
|
-
_url=https://${_domain}/api/1.0/repositories/${_account}/${_repo}/branches-tags
|
270
|
-
;;
|
271
|
-
(github.com)
|
272
|
-
_url=https://api.${_domain}/repos/${_account}/${_repo}/tags
|
273
|
-
;;
|
274
|
-
|
275
|
-
(*)
|
276
|
-
_url=https://${_domain}/api/v3/repos/${_account}/${_repo}/tags
|
277
|
-
;;
|
278
|
-
esac
|
279
|
-
__rvm_curl -s ${_url} |
|
280
|
-
\awk -v RS=',' -v FS='"' '$2=="name"{print $4}' |
|
281
|
-
sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n
|
282
|
-
}
|
283
|
-
|
284
|
-
install_release()
|
285
|
-
{
|
286
|
-
typeset _source _sources _url _version _verify_pgp
|
287
|
-
_sources=(${!1})
|
288
|
-
_version=$2
|
289
|
-
debug "Downloading RVM version ${_version}"
|
290
|
-
for _source in "${_sources[@]}"
|
291
|
-
do
|
292
|
-
case ${_source} in
|
293
|
-
(bitbucket.org*)
|
294
|
-
_url="https://${_source}/get/${_version}.tar.gz"
|
295
|
-
_verify_pgp="https://${_source}/downloads/${_version}.tar.gz.asc"
|
296
|
-
;;
|
297
|
-
(*)
|
298
|
-
_url="https://${_source}/archive/${_version}.tar.gz"
|
299
|
-
_verify_pgp="https://${_source}/releases/download/${_version}/${_version}.tar.gz.asc"
|
300
|
-
;;
|
301
|
-
esac
|
302
|
-
get_and_unpack "${_url}" "rvm-${_version}.tgz" "$_verify_pgp" && return
|
303
|
-
done
|
304
|
-
return $?
|
305
|
-
}
|
306
|
-
|
307
|
-
install_head()
|
308
|
-
{
|
309
|
-
typeset _branch _source _sources _url
|
310
|
-
_sources=(${!1})
|
311
|
-
_branch=$2
|
312
|
-
debug "Selected RVM branch ${_branch}"
|
313
|
-
for _source in "${_sources[@]}"
|
314
|
-
do
|
315
|
-
case ${_source} in
|
316
|
-
(bitbucket.org*)
|
317
|
-
_url=https://${_source}/get/${_branch}.tar.gz
|
318
|
-
;;
|
319
|
-
(*)
|
320
|
-
_url=https://${_source}/archive/${_branch}.tar.gz
|
321
|
-
;;
|
322
|
-
esac
|
323
|
-
get_and_unpack "${_url}" "rvm-${_branch//\//_}.tgz" && return
|
324
|
-
done
|
325
|
-
return $?
|
326
|
-
}
|
327
|
-
|
328
|
-
# duplication marker dfkjdjngdfjngjcszncv
|
329
|
-
# Drop in cd which _doesn't_ respect cdpath
|
330
|
-
__rvm_cd()
|
331
|
-
{
|
332
|
-
typeset old_cdpath ret
|
333
|
-
ret=0
|
334
|
-
old_cdpath="${CDPATH}"
|
335
|
-
CDPATH="."
|
336
|
-
chpwd_functions="" builtin cd "$@" || ret=$?
|
337
|
-
CDPATH="${old_cdpath}"
|
338
|
-
return $ret
|
339
|
-
}
|
340
|
-
|
341
|
-
get_package()
|
342
|
-
{
|
343
|
-
typeset _url _file
|
344
|
-
_url="$1"
|
345
|
-
_file="$2"
|
346
|
-
log "Downloading ${_url}"
|
347
|
-
__rvm_curl -sS ${_url} -o ${rvm_archives_path}/${_file} ||
|
348
|
-
{
|
349
|
-
_return=$?
|
350
|
-
case $_return in
|
351
|
-
# duplication marker lfdgzkngdkjvnfjknkjvcnbjkncvjxbn
|
352
|
-
(60)
|
353
|
-
log "
|
354
|
-
Could not download '${_url}', you can read more about it here:
|
355
|
-
https://rvm.io/support/fixing-broken-ssl-certificates/
|
356
|
-
To continue in insecure mode run 'echo insecure >> ~/.curlrc'.
|
357
|
-
"
|
358
|
-
;;
|
359
|
-
# duplication marker lfdgzkngdkjvnfjknkjvcnbjkncvjxbn
|
360
|
-
(77)
|
361
|
-
log "
|
362
|
-
It looks like you have old certificates, you can read more about it here:
|
363
|
-
https://rvm.io/support/fixing-broken-ssl-certificates/
|
364
|
-
"
|
365
|
-
;;
|
366
|
-
# duplication marker lfdgzkngdkjvnfjknkjvcnbjkncvjxbn
|
367
|
-
(141)
|
368
|
-
log "
|
369
|
-
Curl returned 141 - it is result of a segfault which means it's Curls fault.
|
370
|
-
Try again and if it crashes more than a couple of times you either need to
|
371
|
-
reinstall Curl or consult with your distribution manual and contact support.
|
372
|
-
"
|
373
|
-
;;
|
374
|
-
(*)
|
375
|
-
log "
|
376
|
-
Could not download '${_url}'.
|
377
|
-
curl returned status '$_return'.
|
378
|
-
"
|
379
|
-
;;
|
380
|
-
esac
|
381
|
-
return $_return
|
382
|
-
}
|
383
|
-
}
|
384
|
-
|
385
|
-
# duplication marker flnglfdjkngjndkfjhsbdjgfghdsgfklgg
|
386
|
-
rvm_install_gpg_setup()
|
387
|
-
{
|
388
|
-
export rvm_gpg_command
|
389
|
-
{
|
390
|
-
rvm_gpg_command="$( \which gpg2 2>/dev/null )" &&
|
391
|
-
[[ ${rvm_gpg_command} != "/cygdrive/"* ]]
|
392
|
-
} ||
|
393
|
-
rvm_gpg_command="$( \which gpg 2>/dev/null )" ||
|
394
|
-
rvm_gpg_command=""
|
395
|
-
debug "Detected GPG program: '$rvm_gpg_command'"
|
396
|
-
[[ -n "$rvm_gpg_command" ]] || return $?
|
397
|
-
}
|
398
|
-
|
399
|
-
# duplication marker rdjgndfnghdfnhgfdhbghdbfhgbfdhbn
|
400
|
-
verify_package_pgp()
|
401
|
-
{
|
402
|
-
if
|
403
|
-
"${rvm_gpg_command}" --verify "$2" "$1"
|
404
|
-
then
|
405
|
-
log "GPG verified '$1'"
|
406
|
-
else
|
407
|
-
typeset _ret=$?
|
408
|
-
log "\
|
409
|
-
Warning, RVM 1.26.0 introduces signed releases and \
|
410
|
-
automated check of signatures when GPG software found.
|
411
|
-
Assuming you trust Michal Papis import the mpapis public \
|
412
|
-
key (downloading the signatures).
|
413
|
-
|
414
|
-
GPG signature verification failed for '$1' - '$3'!
|
415
|
-
try downloading the signatures:
|
416
|
-
|
417
|
-
${SUDO_USER:+sudo }${rvm_gpg_command##*/} --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
|
418
|
-
|
419
|
-
or if it fails:
|
420
|
-
|
421
|
-
command curl -sSL https://rvm.io/mpapis.asc | ${SUDO_USER:+sudo }${rvm_gpg_command##*/} --import -
|
422
|
-
|
423
|
-
the key can be compared with:
|
424
|
-
|
425
|
-
https://rvm.io/mpapis.asc
|
426
|
-
https://keybase.io/mpapis
|
427
|
-
"
|
428
|
-
exit $_ret
|
429
|
-
fi
|
430
|
-
}
|
431
|
-
|
432
|
-
verify_pgp()
|
433
|
-
{
|
434
|
-
[[ -n "${1:-}" ]] ||
|
435
|
-
{
|
436
|
-
debug "No PGP url given, skipping."
|
437
|
-
return 0
|
438
|
-
}
|
439
|
-
|
440
|
-
get_package "$1" "$2.asc" ||
|
441
|
-
{
|
442
|
-
debug "PGP url given but does not exist: '$1'"
|
443
|
-
return 0
|
444
|
-
}
|
445
|
-
|
446
|
-
rvm_install_gpg_setup ||
|
447
|
-
{
|
448
|
-
log "Found PGP signature at: '$1',
|
449
|
-
but no GPG software exists to validate it, skipping."
|
450
|
-
return 0
|
451
|
-
}
|
452
|
-
|
453
|
-
verify_package_pgp "${rvm_archives_path}/$2" "${rvm_archives_path}/$2.asc" "$1"
|
454
|
-
}
|
455
|
-
|
456
|
-
get_and_unpack()
|
457
|
-
{
|
458
|
-
typeset _url _file _patern _return _verify_pgp
|
459
|
-
_url="$1"
|
460
|
-
_file="$2"
|
461
|
-
_verify_pgp="$3"
|
462
|
-
|
463
|
-
get_package "$_url" "$_file" || return $?
|
464
|
-
verify_pgp "$_verify_pgp" "$_file" || return $?
|
465
|
-
|
466
|
-
[[ -d "${rvm_src_path}/rvm" ]] || \mkdir -p "${rvm_src_path}/rvm"
|
467
|
-
__rvm_cd "${rvm_src_path}/rvm" ||
|
468
|
-
{
|
469
|
-
_return=$?
|
470
|
-
log "Could not change directory '${rvm_src_path}/rvm'."
|
471
|
-
return $_return
|
472
|
-
}
|
473
|
-
|
474
|
-
rm -rf ${rvm_src_path}/rvm/*
|
475
|
-
__rvm_debug_command $rvm_tar_command xzf ${rvm_archives_path}/${_file} ${rvm_tar_options:-} --strip-components 1 ||
|
476
|
-
{
|
477
|
-
_return=$?
|
478
|
-
log "Could not extract RVM sources."
|
479
|
-
return $_return
|
480
|
-
}
|
481
|
-
}
|
482
|
-
|
483
|
-
rvm_install_default_settings()
|
484
|
-
{
|
485
|
-
# Tracing, if asked for.
|
486
|
-
if
|
487
|
-
[[ "$*" == *--trace* ]] || (( ${rvm_trace_flag:-0} > 0 ))
|
488
|
-
then
|
489
|
-
set -o xtrace
|
490
|
-
rvm_trace_flag=1
|
491
|
-
fi
|
492
|
-
|
493
|
-
# Variable initialization, remove trailing slashes if they exist on HOME
|
494
|
-
true \
|
495
|
-
${rvm_trace_flag:=0} ${rvm_debug_flag:=0}\
|
496
|
-
${rvm_ignore_rvmrc:=0} HOME="${HOME%%+(\/)}"
|
497
|
-
|
498
|
-
if
|
499
|
-
(( rvm_ignore_rvmrc == 0 ))
|
500
|
-
then
|
501
|
-
for rvmrc in /etc/rvmrc "$HOME/.rvmrc"
|
502
|
-
do
|
503
|
-
if
|
504
|
-
[[ -s "$rvmrc" ]]
|
505
|
-
then
|
506
|
-
if
|
507
|
-
GREP_OPTIONS="" \grep '^\s*rvm .*$' "$rvmrc" >/dev/null 2>&1
|
508
|
-
then
|
509
|
-
printf "%b" "
|
510
|
-
Error: $rvmrc is for rvm settings only.
|
511
|
-
rvm CLI may NOT be called from within $rvmrc.
|
512
|
-
Skipping the loading of $rvmrc
|
513
|
-
"
|
514
|
-
exit 1
|
515
|
-
else
|
516
|
-
source "$rvmrc"
|
517
|
-
fi
|
518
|
-
fi
|
519
|
-
done
|
520
|
-
fi
|
521
|
-
|
522
|
-
if
|
523
|
-
[[ -z "${rvm_path:-}" ]]
|
524
|
-
then
|
525
|
-
if
|
526
|
-
(( UID == 0 ))
|
527
|
-
then
|
528
|
-
rvm_user_install_flag=0
|
529
|
-
rvm_prefix="/usr/local"
|
530
|
-
rvm_path="${rvm_prefix}/rvm"
|
531
|
-
else
|
532
|
-
rvm_user_install_flag=1
|
533
|
-
rvm_prefix="$HOME"
|
534
|
-
rvm_path="${rvm_prefix}/.rvm"
|
535
|
-
fi
|
536
|
-
fi
|
537
|
-
if [[ -z "${rvm_prefix}" ]]
|
538
|
-
then rvm_prefix=$( dirname $rvm_path )
|
539
|
-
fi
|
540
|
-
|
541
|
-
# duplication marker kkdfkgnjfndgjkndfjkgnkfjdgn
|
542
|
-
[[ -n "${rvm_user_install_flag:-}" ]] ||
|
543
|
-
case "$rvm_path" in
|
544
|
-
(/usr/local/rvm) rvm_user_install_flag=0 ;;
|
545
|
-
($HOME/*|/${USER// /_}*) rvm_user_install_flag=1 ;;
|
546
|
-
(*) rvm_user_install_flag=0 ;;
|
547
|
-
esac
|
548
|
-
}
|
549
|
-
|
550
|
-
rvm_install_parse_params()
|
551
|
-
{
|
552
|
-
install_rubies=()
|
553
|
-
install_gems=()
|
554
|
-
flags=( ./scripts/install )
|
555
|
-
forwarded_flags=()
|
556
|
-
while
|
557
|
-
(( $# > 0 ))
|
558
|
-
do
|
559
|
-
token="$1"
|
560
|
-
shift
|
561
|
-
case "$token" in
|
562
|
-
|
563
|
-
(--trace)
|
564
|
-
set -o xtrace
|
565
|
-
rvm_trace_flag=1
|
566
|
-
flags=( -x "${flags[@]}" "$token" )
|
567
|
-
forwarded_flags+=( "$token" )
|
568
|
-
;;
|
569
|
-
|
570
|
-
(--debug|--quiet-curl)
|
571
|
-
flags+=( "$token" )
|
572
|
-
forwarded_flags+=( "$token" )
|
573
|
-
token=${token#--}
|
574
|
-
token=${token//-/_}
|
575
|
-
export "rvm_${token}_flag"=1
|
576
|
-
printf "%b" "Turning on ${token/_/ } mode.\n"
|
577
|
-
;;
|
578
|
-
|
579
|
-
(--path)
|
580
|
-
if [[ -n "${1:-}" ]]
|
581
|
-
then
|
582
|
-
rvm_path="$1"
|
583
|
-
shift
|
584
|
-
else
|
585
|
-
fail "--path must be followed by a path."
|
586
|
-
fi
|
587
|
-
;;
|
588
|
-
|
589
|
-
(--branch|branch) # Install RVM from a given branch
|
590
|
-
if [[ -n "${1:-}" ]]
|
591
|
-
then
|
592
|
-
case "$1" in
|
593
|
-
(/*)
|
594
|
-
branch=${1#/}
|
595
|
-
;;
|
596
|
-
(*/)
|
597
|
-
branch=master
|
598
|
-
if [[ "${1%/}" -ne wayneeseguin ]] && [[ "${1%/}" -ne mpapis ]]
|
599
|
-
then sources=(github.com/${1%/}/rvm)
|
600
|
-
fi
|
601
|
-
;;
|
602
|
-
(*/*)
|
603
|
-
branch=${1#*/}
|
604
|
-
if [[ "${1%%/*}" -ne wayneeseguin ]] && [[ "${1%%/*}" -ne mpapis ]]
|
605
|
-
then sources=(github.com/${1%%/*}/rvm)
|
606
|
-
fi
|
607
|
-
;;
|
608
|
-
(*)
|
609
|
-
branch="$1"
|
610
|
-
;;
|
611
|
-
esac
|
612
|
-
shift
|
613
|
-
else
|
614
|
-
fail "--branch must be followed by a branchname."
|
615
|
-
fi
|
616
|
-
;;
|
617
|
-
|
618
|
-
(--source|source)
|
619
|
-
if [[ -n "${1:-}" ]]
|
620
|
-
then
|
621
|
-
if [[ "$1" = */*/* ]]
|
622
|
-
then
|
623
|
-
sources=($1)
|
624
|
-
shift
|
625
|
-
else
|
626
|
-
fail "--source must be in the format <domain>/<account>/<repo>."
|
627
|
-
fi
|
628
|
-
else
|
629
|
-
fail "--source must be followed by a source."
|
630
|
-
fi
|
631
|
-
;;
|
632
|
-
|
633
|
-
(--user-install|--ignore-dotfiles)
|
634
|
-
token=${token#--}
|
635
|
-
token=${token//-/_}
|
636
|
-
export "rvm_${token}_flag"=1
|
637
|
-
printf "%b" "Turning on ${token/_/ } mode.\n"
|
638
|
-
;;
|
639
|
-
|
640
|
-
(--auto-dotfiles)
|
641
|
-
flags+=( "$token" )
|
642
|
-
export "rvm_auto_dotfiles_flag"=1
|
643
|
-
printf "%b" "Turning on auto dotfiles mode.\n"
|
644
|
-
;;
|
645
|
-
|
646
|
-
(--auto)
|
647
|
-
export "rvm_auto_dotfiles_flag"=1
|
648
|
-
printf "%b" "Warning, --auto is deprecated in favor of --auto-dotfiles.\n"
|
649
|
-
;;
|
650
|
-
|
651
|
-
(--verify-downloads)
|
652
|
-
if [[ -n "${1:-}" ]]
|
653
|
-
then
|
654
|
-
export rvm_verify_downloads_flag="$1"
|
655
|
-
forwarded_flags+=( "$token" "$1" )
|
656
|
-
shift
|
657
|
-
else
|
658
|
-
fail "--verify-downloads must be followed by level(0|1|2)."
|
659
|
-
fi
|
660
|
-
;;
|
661
|
-
|
662
|
-
(--autolibs=*)
|
663
|
-
flags+=( "$token" )
|
664
|
-
export rvm_autolibs_flag="${token#--autolibs=}"
|
665
|
-
forwarded_flags+=( "$token" )
|
666
|
-
;;
|
667
|
-
|
668
|
-
(--without-gems=*|--with-gems=*|--with-default-gems=*)
|
669
|
-
flags+=( "$token" )
|
670
|
-
value="${token#*=}"
|
671
|
-
token="${token%%=*}"
|
672
|
-
token="${token#--}"
|
673
|
-
token="${token//-/_}"
|
674
|
-
export "rvm_${token}"="${value}"
|
675
|
-
printf "%b" "Installing RVM ${token/_/ }: ${value}.\n"
|
676
|
-
;;
|
677
|
-
|
678
|
-
(--version|version)
|
679
|
-
version="$1"
|
680
|
-
shift
|
681
|
-
;;
|
682
|
-
|
683
|
-
(head|master)
|
684
|
-
version="head"
|
685
|
-
branch="master"
|
686
|
-
;;
|
687
|
-
|
688
|
-
(stable)
|
689
|
-
version="latest"
|
690
|
-
;;
|
691
|
-
|
692
|
-
(latest|latest-*|+([[:digit:]]).+([[:digit:]]).+([[:digit:]]))
|
693
|
-
version="$token"
|
694
|
-
;;
|
695
|
-
|
696
|
-
(--ruby)
|
697
|
-
install_rubies+=( ruby )
|
698
|
-
;;
|
699
|
-
|
700
|
-
(--ruby=*)
|
701
|
-
token=${token#--ruby=}
|
702
|
-
install_rubies+=( ${token//,/ } )
|
703
|
-
;;
|
704
|
-
|
705
|
-
(--rails)
|
706
|
-
install_gems+=( rails )
|
707
|
-
;;
|
708
|
-
|
709
|
-
(--gems=*)
|
710
|
-
token=${token#--gems=}
|
711
|
-
install_gems+=( ${token//,/ } )
|
712
|
-
;;
|
713
|
-
|
714
|
-
(--add-to-rvm-group)
|
715
|
-
export rvm_add_users_to_rvm_group="$1"
|
716
|
-
shift
|
717
|
-
;;
|
718
|
-
|
719
|
-
(help|usage)
|
720
|
-
usage
|
721
|
-
exit 0
|
722
|
-
;;
|
723
|
-
|
724
|
-
(*)
|
725
|
-
usage
|
726
|
-
exit 1
|
727
|
-
;;
|
728
|
-
|
729
|
-
esac
|
730
|
-
done
|
731
|
-
|
732
|
-
if (( ${#install_gems[@]} > 0 && ${#install_rubies[@]} == 0 ))
|
733
|
-
then install_rubies=( ruby )
|
734
|
-
fi
|
735
|
-
|
736
|
-
true "${version:=head}"
|
737
|
-
true "${branch:=master}"
|
738
|
-
|
739
|
-
if [[ -z "${sources[@]}" ]]
|
740
|
-
then sources=("${DEFAULT_SOURCES[@]}")
|
741
|
-
fi
|
742
|
-
|
743
|
-
rvm_src_path="$rvm_path/src"
|
744
|
-
rvm_archives_path="$rvm_path/archives"
|
745
|
-
rvm_releases_url="https://rvm.io/releases"
|
746
|
-
}
|
747
|
-
|
748
|
-
rvm_install_validate_rvm_path()
|
749
|
-
{
|
750
|
-
case "$rvm_path" in
|
751
|
-
(*[[:space:]]*)
|
752
|
-
printf "%b" "
|
753
|
-
It looks you are one of the happy *space* users(in home dir name),
|
754
|
-
RVM is not yet fully ready for it, use this trick to fix it:
|
755
|
-
|
756
|
-
sudo mkdir -p /${USER// /_}.rvm
|
757
|
-
sudo chown -R \"$USER:\" /${USER// /_}.rvm
|
758
|
-
echo \"export rvm_path=/${USER// /_}.rvm\" >> \"$HOME/.rvmrc\"
|
759
|
-
|
760
|
-
and start installing again.
|
761
|
-
|
762
|
-
"
|
763
|
-
exit 2
|
764
|
-
;;
|
765
|
-
(/usr/share/ruby-rvm)
|
766
|
-
printf "%b" "
|
767
|
-
It looks you are one of the happy Ubuntu users,
|
768
|
-
RVM packaged by Ubuntu is old and broken,
|
769
|
-
follow this link for details how to fix:
|
770
|
-
|
771
|
-
http://stackoverflow.com/a/9056395/497756
|
772
|
-
|
773
|
-
"
|
774
|
-
[[ "${rvm_uses_broken_ubuntu_path:-no}" == "yes" ]] || exit 3
|
775
|
-
;;
|
776
|
-
esac
|
777
|
-
|
778
|
-
if [[ "$rvm_path" != "/"* ]]
|
779
|
-
then fail "The rvm install path must be fully qualified. Tried $rvm_path"
|
780
|
-
fi
|
781
|
-
}
|
782
|
-
|
783
|
-
rvm_install_select_and_get_version()
|
784
|
-
{
|
785
|
-
typeset _version_release
|
786
|
-
|
787
|
-
for dir in "$rvm_src_path" "$rvm_archives_path"
|
788
|
-
do
|
789
|
-
[[ -d "$dir" ]] || mkdir -p "$dir"
|
790
|
-
done
|
791
|
-
|
792
|
-
_version_release="${version}"
|
793
|
-
case "${version}" in
|
794
|
-
(head)
|
795
|
-
_version_release="${branch}"
|
796
|
-
install_head sources[@] ${branch:-master} || exit $?
|
797
|
-
;;
|
798
|
-
|
799
|
-
(latest)
|
800
|
-
install_release sources[@] $(fetch_version sources[@]) || exit $?
|
801
|
-
;;
|
802
|
-
|
803
|
-
(latest-minor)
|
804
|
-
version="$(\cat "$rvm_path/VERSION")"
|
805
|
-
install_release sources[@] $(fetch_version sources[@] ${version%.*}) || exit $?
|
806
|
-
;;
|
807
|
-
|
808
|
-
(latest-*)
|
809
|
-
install_release sources[@] $(fetch_version sources[@] ${version#latest-}) || exit $?
|
810
|
-
;;
|
811
|
-
|
812
|
-
(+([[:digit:]]).+([[:digit:]]).+([[:digit:]])) # x.y.z
|
813
|
-
install_release sources[@] ${version} || exit $?
|
814
|
-
;;
|
815
|
-
|
816
|
-
(*)
|
817
|
-
fail "Something went wrong, unrecognized version '$version'"
|
818
|
-
;;
|
819
|
-
esac
|
820
|
-
echo "${_version_release}" > "$rvm_path/RELEASE"
|
821
|
-
}
|
822
|
-
|
823
|
-
rvm_install_main()
|
824
|
-
{
|
825
|
-
[[ -f ./scripts/install ]] ||
|
826
|
-
{
|
827
|
-
log "'./scripts/install' can not be found for installation, something went wrong, it usally means your 'tar' is broken, please report it here: https://github.com/rvm/rvm/issues"
|
828
|
-
return 127
|
829
|
-
}
|
830
|
-
|
831
|
-
# required flag - path to install
|
832
|
-
flags+=( --path "$rvm_path" )
|
833
|
-
\command bash "${flags[@]}"
|
834
|
-
}
|
835
|
-
|
836
|
-
rvm_install_ruby_and_gems()
|
837
|
-
(
|
838
|
-
if
|
839
|
-
(( ${#install_rubies[@]} > 0 ))
|
840
|
-
then
|
841
|
-
source ${rvm_scripts_path:-${rvm_path}/scripts}/rvm
|
842
|
-
source ${rvm_scripts_path:-${rvm_path}/scripts}/version
|
843
|
-
__rvm_version
|
844
|
-
|
845
|
-
for _ruby in ${install_rubies[@]}
|
846
|
-
do command rvm "${forwarded_flags[@]}" install ${_ruby} -j 2
|
847
|
-
done
|
848
|
-
# set the first one as default, skip rest
|
849
|
-
for _ruby in ${install_rubies[@]}
|
850
|
-
do
|
851
|
-
rvm "${forwarded_flags[@]}" alias create default ${_ruby}
|
852
|
-
break
|
853
|
-
done
|
854
|
-
|
855
|
-
for _gem in ${install_gems[@]}
|
856
|
-
do rvm "${forwarded_flags[@]}" all do gem install ${_gem}
|
857
|
-
done
|
858
|
-
|
859
|
-
printf "%b" "
|
860
|
-
* To start using RVM you need to run \`source $rvm_path/scripts/rvm\`
|
861
|
-
in all your open shell windows, in rare cases you need to reopen all shell windows.
|
862
|
-
"
|
863
|
-
|
864
|
-
if
|
865
|
-
[[ "${install_gems[*]}" == *"rails"* ]]
|
866
|
-
then
|
867
|
-
printf "%b" "
|
868
|
-
* To start using rails you need to run \`rails new <project_dir>\`.
|
869
|
-
"
|
870
|
-
fi
|
871
|
-
fi
|
872
|
-
)
|
873
|
-
|
874
|
-
rvm_install()
|
875
|
-
{
|
876
|
-
rvm_install_initialize
|
877
|
-
rvm_install_commands_setup
|
878
|
-
rvm_install_default_settings
|
879
|
-
rvm_install_parse_params "$@"
|
880
|
-
rvm_install_validate_rvm_path
|
881
|
-
rvm_install_select_and_get_version
|
882
|
-
rvm_install_main
|
883
|
-
rvm_install_ruby_and_gems
|
884
|
-
}
|
885
|
-
|
886
|
-
rvm_install "$@"
|