envandle 0.2.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +27 -1
- data/exe/install-envandle +50 -0
- data/lib/envandle/as_reference.rb +1 -5
- data/lib/envandle/binding.rb +0 -2
- data/lib/envandle/{elements/element.rb → element.rb} +0 -0
- data/lib/envandle/elements/gem_block.rb +7 -0
- data/lib/envandle/elements/gemfile.rb +7 -0
- data/lib/envandle/elements/gemspec_block.rb +7 -0
- data/lib/envandle/elements/git_source.rb +7 -0
- data/lib/envandle/elements/group.rb +7 -0
- data/lib/envandle/elements/source_block.rb +7 -0
- data/lib/envandle/elements.rb +17 -10
- data/lib/envandle/gemspec_cache.rb +1 -1
- data/lib/envandle/git_branch_reference.rb +6 -6
- data/lib/envandle/git_util.rb +53 -0
- data/lib/envandle/helper.rb +11 -0
- data/lib/envandle/path_reference.rb +2 -2
- data/lib/envandle/reference_cache.rb +23 -19
- data/lib/envandle/version.rb +1 -1
- data/lib/envandle.rb +24 -0
- metadata +12 -8
- data/lib/envandle/elements/illegals_and_unsupporteds.rb +0 -31
- data/lib/envandle/git.rb +0 -51
- data/lib/envandle/lib.rb +0 -21
- data/lib/envandle/shell.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac9db50e7977e1c07ba3f2a2f882d2dd00fa41e7
|
4
|
+
data.tar.gz: b570ef35b12e02cb3a47993a8676710563c32ef9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 802b941c80adf4b48a74c5ede5fb4e41f2f5da36c364518df007a0b286f3ae49ff95f87aa91e71cdcef6931c5ed0bf5644035e18f5d5b8ae7ded5e67efbd0600
|
7
|
+
data.tar.gz: 5c2185eecac33db45da7fefa71399ca0866372b810c50024a0ae63213d63d4bbcf836c55095bad39d086a7af118753464eef067f23c2e77b84a37ed99fd16a2e
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ require "envandle"
|
|
20
20
|
binding.envandle do
|
21
21
|
source "https://rubygems.org"
|
22
22
|
|
23
|
-
|
23
|
+
gem "mygem", "~> 1.0"
|
24
24
|
end
|
25
25
|
```
|
26
26
|
|
@@ -163,3 +163,29 @@ is evaluated as:
|
|
163
163
|
gem "a", path: "/path/to/a"
|
164
164
|
gem "b", path: "/path/to/b"
|
165
165
|
```
|
166
|
+
|
167
|
+
## install-envandle
|
168
|
+
|
169
|
+
The install-envandle command just installs Envandle itself with the `bundle install` command. It's useful for successfully loading Envandle in your Gemfile with the Bundler's --path option.
|
170
|
+
|
171
|
+
```
|
172
|
+
$ install-envandle -h
|
173
|
+
install-envandle [OPTIONS]
|
174
|
+
|
175
|
+
Installs Envandle using Bundler.
|
176
|
+
|
177
|
+
Options:
|
178
|
+
--envandle-source gem source (default: https://rubygems.org)
|
179
|
+
--envandle-bundle-bin command path (default: bundle)
|
180
|
+
|
181
|
+
Additionally, you can specify all of the bundle-install's options.
|
182
|
+
```
|
183
|
+
|
184
|
+
### Usage Example
|
185
|
+
|
186
|
+
```sh
|
187
|
+
$ gem install bundler
|
188
|
+
$ gem install envandle
|
189
|
+
$ install-envandle --path vendor/bundle
|
190
|
+
$ bundle install
|
191
|
+
```
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.expand_path("../../lib", __FILE__)
|
4
|
+
require "envandle"
|
5
|
+
require "tempfile"
|
6
|
+
|
7
|
+
gem_source = "https://rubygems.org"
|
8
|
+
bundle_bin = "bundle"
|
9
|
+
|
10
|
+
args = []
|
11
|
+
argv = ARGV.dup
|
12
|
+
while arg = argv.shift
|
13
|
+
if arg.start_with?("--gemfile")
|
14
|
+
abort "--gemfile option not allowed."
|
15
|
+
end
|
16
|
+
case arg
|
17
|
+
when "--envandle-source"
|
18
|
+
gem_source = argv.shift
|
19
|
+
when "--envandle-bundle-bin"
|
20
|
+
bundle_bin = argv.shift
|
21
|
+
when "-h", "--help"
|
22
|
+
print <<-EOS
|
23
|
+
install-envandle [OPTIONS]
|
24
|
+
|
25
|
+
Installs Envandle using Bundler.
|
26
|
+
|
27
|
+
Options:
|
28
|
+
--envandle-source gem source (default: https://rubygems.org)
|
29
|
+
--envandle-bundle-bin command path (default: bundle)
|
30
|
+
|
31
|
+
Additionally, you can specify all of the bundle-install's options.
|
32
|
+
EOS
|
33
|
+
exit
|
34
|
+
else
|
35
|
+
args << arg
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
abort "Invalid option: --envandle-source" unless gem_source
|
40
|
+
abort "Invalid option: --bundle-bin" unless bundle_bin
|
41
|
+
|
42
|
+
gemfile = Tempfile.new("install_envandle-Gemfile-", Dir.pwd)
|
43
|
+
gemfile << <<-EOS
|
44
|
+
source #{gem_source.inspect}
|
45
|
+
gem "envandle", "#{Envandle::VERSION}"
|
46
|
+
EOS
|
47
|
+
gemfile.close
|
48
|
+
code = system(bundle_bin, "install", "--gemfile", gemfile.path, *args) ? 0 : 1
|
49
|
+
File.delete "#{gemfile.path}.lock"
|
50
|
+
exit code
|
data/lib/envandle/binding.rb
CHANGED
File without changes
|
@@ -33,6 +33,9 @@ module Envandle
|
|
33
33
|
children.each do |child|
|
34
34
|
child.exec receiver
|
35
35
|
end
|
36
|
+
references.left.each do |k, v|
|
37
|
+
v.to_executable_argset(Argset.new(nil)).send_to receiver
|
38
|
+
end
|
36
39
|
end
|
37
40
|
|
38
41
|
def dir
|
@@ -51,6 +54,10 @@ module Envandle
|
|
51
54
|
@references ||= ReferenceCache.new(self)
|
52
55
|
end
|
53
56
|
|
57
|
+
def gem_keys
|
58
|
+
@gem_keys ||= {}
|
59
|
+
end
|
60
|
+
|
54
61
|
def gemspecs
|
55
62
|
@gemspecs ||= GemspecCache.new(File.join(config_dir, "cache", "gemspecs"))
|
56
63
|
end
|
data/lib/envandle/elements.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
module Envandle
|
2
|
+
module Elements
|
3
|
+
autoload :GemBlock, "envandle/elements/gem_block"
|
4
|
+
autoload :Gem, "envandle/elements/gem"
|
5
|
+
autoload :Gemfile, "envandle/elements/gemfile"
|
6
|
+
autoload :GemspecBlock, "envandle/elements/gemspec_block"
|
7
|
+
autoload :Gemspec, "envandle/elements/gemspec"
|
8
|
+
autoload :GitSourceBlock, "envandle/elements/git_source_block"
|
9
|
+
autoload :GitSource, "envandle/elements/git_source"
|
10
|
+
autoload :GroupBlock, "envandle/elements/group_block"
|
11
|
+
autoload :Group, "envandle/elements/group"
|
12
|
+
autoload :IllegalElement, "envandle/elements/illegal_element"
|
13
|
+
autoload :SourceBlock, "envandle/elements/source_block"
|
14
|
+
autoload :Source, "envandle/elements/source"
|
15
|
+
autoload :UnsupportedElement, "envandle/elements/unsupported_element"
|
16
|
+
end
|
17
|
+
end
|
@@ -2,9 +2,8 @@ module Envandle
|
|
2
2
|
class GitBranchReference
|
3
3
|
extend AsGitReference
|
4
4
|
|
5
|
-
def initialize(context,
|
5
|
+
def initialize(context, name, url, ref)
|
6
6
|
@context = context
|
7
|
-
@group = group
|
8
7
|
@name = name
|
9
8
|
@url = url
|
10
9
|
@ref = ref
|
@@ -13,16 +12,16 @@ module Envandle
|
|
13
12
|
def spec
|
14
13
|
@spec ||= begin
|
15
14
|
cache = @context.gemfile.gemspecs
|
16
|
-
shas = Envandle.
|
17
|
-
Envandle.
|
15
|
+
shas = Envandle::GitUtil.init(nil, @url) do |dir|
|
16
|
+
Envandle::GitUtil.ls_remote_sha(dir, "refs/heads/#{@ref}")
|
18
17
|
end
|
19
18
|
sha = shas[0]
|
20
19
|
cache_url = "#{@url}##{sha}"
|
21
20
|
raise "Can't get a git commit. (url: #{@url}, branch: #{@ref})" unless sha
|
22
21
|
dir = cache.find(cache_url) || begin
|
23
22
|
reserve = cache.reserve
|
24
|
-
Envandle.
|
25
|
-
sha = Envandle.
|
23
|
+
Envandle::GitUtil.init reserve.path, @url
|
24
|
+
sha = Envandle::GitUtil.pull(reserve.path, @ref, "master")
|
26
25
|
reserve.url = cache_url
|
27
26
|
reserve.save
|
28
27
|
reserve.path
|
@@ -34,6 +33,7 @@ module Envandle
|
|
34
33
|
def to_executable_argset(base)
|
35
34
|
args = base.dup
|
36
35
|
args.clear_reference
|
36
|
+
args.args[0] = @name
|
37
37
|
args.options[:git] = @url
|
38
38
|
args.options[:branch] = @ref
|
39
39
|
Argset.new(:gem, *args.args_and_options)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Envandle
|
2
|
+
module GitUtil
|
3
|
+
BIN = `which git`.chomp
|
4
|
+
|
5
|
+
def self.raise_if_no_git_installed
|
6
|
+
raise "No git installed." if BIN.empty?
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.init(dir, url, &block)
|
10
|
+
unless dir
|
11
|
+
Envandle.tmpdir do |tmpdir|
|
12
|
+
init tmpdir, url, &block
|
13
|
+
end
|
14
|
+
else
|
15
|
+
raise_if_no_git_installed
|
16
|
+
Dir.chdir(dir) do
|
17
|
+
Envandle.sh "#{BIN} init"
|
18
|
+
Envandle.sh "#{BIN} remote add origin #{url}"
|
19
|
+
yield dir if block_given?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.ls_remote_sha(dir, q)
|
25
|
+
Dir.chdir(dir) do
|
26
|
+
data = Envandle.sh("#{BIN} ls-remote origin #{q}").chomp
|
27
|
+
data = if data.empty?
|
28
|
+
[]
|
29
|
+
else
|
30
|
+
data.split("\n").map{|i| i.split(/\s+/)[0] }
|
31
|
+
end
|
32
|
+
if block_given?
|
33
|
+
yield data
|
34
|
+
else
|
35
|
+
data
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.pull(dir, ref, branch)
|
41
|
+
Dir.chdir(dir) do
|
42
|
+
Envandle.sh "#{BIN} checkout -b #{branch}"
|
43
|
+
Envandle.sh "#{BIN} pull origin #{ref}:#{branch}"
|
44
|
+
sha = Envandle.sh("#{BIN} rev-parse HEAD").chomp
|
45
|
+
if block_given?
|
46
|
+
yield sha
|
47
|
+
else
|
48
|
+
sha
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/envandle/helper.rb
CHANGED
@@ -19,4 +19,15 @@ module Envandle
|
|
19
19
|
name
|
20
20
|
end
|
21
21
|
end
|
22
|
+
|
23
|
+
def self.sh(cmd)
|
24
|
+
output, error, status = Open3.capture3(cmd)
|
25
|
+
raise "Command error: #{cmd}" unless status.success?
|
26
|
+
output
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.tmpdir(*args, &block)
|
30
|
+
require "tmpdir"
|
31
|
+
Dir.mktmpdir *args, &block
|
32
|
+
end
|
22
33
|
end
|
@@ -2,9 +2,8 @@ module Envandle
|
|
2
2
|
class PathReference
|
3
3
|
extend AsReference
|
4
4
|
|
5
|
-
def initialize(context,
|
5
|
+
def initialize(context, name, path)
|
6
6
|
@context = context
|
7
|
-
@group = group
|
8
7
|
@name = name
|
9
8
|
@path = path
|
10
9
|
end
|
@@ -16,6 +15,7 @@ module Envandle
|
|
16
15
|
def to_executable_argset(base)
|
17
16
|
args = base.dup
|
18
17
|
args.clear_reference
|
18
|
+
args.args[0] = @name
|
19
19
|
args.options[:path] = @path
|
20
20
|
Argset.new(:gem, *args.args_and_options)
|
21
21
|
end
|
@@ -4,12 +4,11 @@ module Envandle
|
|
4
4
|
@context = context
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
git_branches[name]
|
7
|
+
def use(name)
|
8
|
+
if ref = all[name]
|
9
|
+
left.delete name
|
10
|
+
ref
|
11
|
+
end
|
13
12
|
end
|
14
13
|
|
15
14
|
def paths
|
@@ -20,23 +19,28 @@ module Envandle
|
|
20
19
|
@git_branches ||= parse(:git, GitBranchReference, "ENVANDLE_GEM_GIT_BRANCH")
|
21
20
|
end
|
22
21
|
|
22
|
+
def all
|
23
|
+
@all ||= git_branches.merge(paths)
|
24
|
+
end
|
25
|
+
|
26
|
+
def left
|
27
|
+
@left ||= all.dup
|
28
|
+
end
|
29
|
+
|
23
30
|
def parse(key, klass, env)
|
24
31
|
{}.tap do |h|
|
25
32
|
(ENV[env].to_s).split(";").each do |i|
|
26
33
|
if v = __send__("parse_#{key}", klass, env, i)
|
27
|
-
h[v.
|
34
|
+
h[v.name] = v if v
|
28
35
|
end
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
32
39
|
|
33
|
-
def
|
34
|
-
|
35
|
-
name
|
36
|
-
|
37
|
-
raise "No gem name (#{env}): #{ENV[env]}" if name.empty?
|
38
|
-
raise "No group name (#{env}): #{ENV[env]}" if group && group.empty?
|
39
|
-
[group, name]
|
40
|
+
def parse_name(env, v)
|
41
|
+
v = v.to_s.strip
|
42
|
+
raise "No gem name (#{env}): #{ENV[env]}" if v.empty?
|
43
|
+
v
|
40
44
|
end
|
41
45
|
|
42
46
|
def parse_path(klass, env, v)
|
@@ -46,30 +50,30 @@ module Envandle
|
|
46
50
|
name = a[0].to_s.strip
|
47
51
|
path = a[1..-1].join(":").to_s.strip
|
48
52
|
raise "No gem path (#{env}): #{ENV[env]}" if path.empty?
|
49
|
-
klass.new(@context,
|
53
|
+
klass.new(@context, parse_name(env, name), path)
|
50
54
|
end
|
51
55
|
|
52
56
|
def parse_git(klass, env, v)
|
53
57
|
v = v.to_s.strip
|
54
58
|
return if v.empty?
|
55
59
|
a = v.split(":")
|
56
|
-
name = a[0]
|
60
|
+
name = a[0]
|
57
61
|
path = a[1..-1].join(":").to_s.strip
|
58
62
|
url_and_ref = path.split('#')
|
59
63
|
url = url_and_ref[0].to_s.strip
|
60
64
|
ref = url_and_ref[1].to_s.strip
|
61
65
|
raise "No gem git url (#{env}): #{ENV[env]}" if url.empty?
|
62
66
|
raise "No gem git ref/branch/tag (#{env}): #{ENV[env]}" if ref.empty?
|
63
|
-
klass.new(@context,
|
67
|
+
klass.new(@context, parse_name(env, name), url, ref)
|
64
68
|
end
|
65
69
|
|
66
70
|
def extract_executable_argsets(base, group, name, argsets, found = {})
|
67
71
|
key = Envandle.reference_key(group, name)
|
68
72
|
return true if found.key?(key)
|
69
73
|
found[key] = true
|
70
|
-
if ref =
|
74
|
+
if ref = use(name)
|
71
75
|
ref.spec.runtime_dependencies.each do |i|
|
72
|
-
if ref2 =
|
76
|
+
if ref2 = use(i.name)
|
73
77
|
extract_executable_argsets base, nil, i.name, argsets, found
|
74
78
|
end
|
75
79
|
end
|
data/lib/envandle/version.rb
CHANGED
data/lib/envandle.rb
CHANGED
@@ -1 +1,25 @@
|
|
1
|
+
autoload :FileUtils, "fileutils" unless Object::const_defined?(:FileUtils) && !Object::autoload?(:FileUtils)
|
2
|
+
autoload :Mutex, "thread" unless Object::const_defined?(:Mutex) && !Object::autoload?(:Mutex)
|
3
|
+
autoload :Open3, "open3" unless Object::const_defined?(:Open3) && !Object::autoload?(:Open3)
|
4
|
+
autoload :YAML, "yaml" unless Object::const_defined?(:YAML) && !Object::autoload?(:YAML)
|
5
|
+
require "envandle/version"
|
6
|
+
require "envandle/exceptions"
|
7
|
+
require "envandle/helper"
|
1
8
|
require "envandle/binding"
|
9
|
+
|
10
|
+
module Envandle
|
11
|
+
autoload :Argset, "envandle/argset"
|
12
|
+
autoload :AsContext, "envandle/as_context"
|
13
|
+
autoload :AsDsl, "envandle/as_dsl"
|
14
|
+
autoload :AsGitReference, "envandle/as_git_reference"
|
15
|
+
autoload :AsReference, "envandle/as_reference"
|
16
|
+
autoload :Element, "envandle/element"
|
17
|
+
autoload :Elements, "envandle/elements"
|
18
|
+
autoload :GemspecCache, "envandle/gemspec_cache"
|
19
|
+
autoload :Gemspec, "envandle/gemspec"
|
20
|
+
autoload :GitBranchReference, "envandle/git_branch_reference"
|
21
|
+
autoload :GitUtil, "envandle/git_util"
|
22
|
+
autoload :Location, "envandle/location"
|
23
|
+
autoload :PathReference, "envandle/path_reference"
|
24
|
+
autoload :ReferenceCache, "envandle/reference_cache"
|
25
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envandle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mosop
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -54,7 +54,8 @@ dependencies:
|
|
54
54
|
version: '3.5'
|
55
55
|
description:
|
56
56
|
email:
|
57
|
-
executables:
|
57
|
+
executables:
|
58
|
+
- install-envandle
|
58
59
|
extensions: []
|
59
60
|
extra_rdoc_files: []
|
60
61
|
files:
|
@@ -67,6 +68,7 @@ files:
|
|
67
68
|
- bin/console
|
68
69
|
- bin/setup
|
69
70
|
- envandle.gemspec
|
71
|
+
- exe/install-envandle
|
70
72
|
- lib/envandle.rb
|
71
73
|
- lib/envandle/argset.rb
|
72
74
|
- lib/envandle/as_context.rb
|
@@ -74,28 +76,30 @@ files:
|
|
74
76
|
- lib/envandle/as_git_reference.rb
|
75
77
|
- lib/envandle/as_reference.rb
|
76
78
|
- lib/envandle/binding.rb
|
79
|
+
- lib/envandle/element.rb
|
77
80
|
- lib/envandle/elements.rb
|
78
|
-
- lib/envandle/elements/element.rb
|
79
81
|
- lib/envandle/elements/gem.rb
|
82
|
+
- lib/envandle/elements/gem_block.rb
|
80
83
|
- lib/envandle/elements/gemfile.rb
|
81
84
|
- lib/envandle/elements/gemspec.rb
|
85
|
+
- lib/envandle/elements/gemspec_block.rb
|
86
|
+
- lib/envandle/elements/git_source.rb
|
82
87
|
- lib/envandle/elements/git_source_block.rb
|
88
|
+
- lib/envandle/elements/group.rb
|
83
89
|
- lib/envandle/elements/group_block.rb
|
84
90
|
- lib/envandle/elements/illegal_element.rb
|
85
|
-
- lib/envandle/elements/illegals_and_unsupporteds.rb
|
86
91
|
- lib/envandle/elements/source.rb
|
92
|
+
- lib/envandle/elements/source_block.rb
|
87
93
|
- lib/envandle/elements/unsupported_element.rb
|
88
94
|
- lib/envandle/exceptions.rb
|
89
95
|
- lib/envandle/gemspec.rb
|
90
96
|
- lib/envandle/gemspec_cache.rb
|
91
|
-
- lib/envandle/git.rb
|
92
97
|
- lib/envandle/git_branch_reference.rb
|
98
|
+
- lib/envandle/git_util.rb
|
93
99
|
- lib/envandle/helper.rb
|
94
|
-
- lib/envandle/lib.rb
|
95
100
|
- lib/envandle/location.rb
|
96
101
|
- lib/envandle/path_reference.rb
|
97
102
|
- lib/envandle/reference_cache.rb
|
98
|
-
- lib/envandle/shell.rb
|
99
103
|
- lib/envandle/version.rb
|
100
104
|
homepage: https://github.com/mosop/envandle
|
101
105
|
licenses: []
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Envandle
|
2
|
-
class GemBlock < IllegalElement
|
3
|
-
def type
|
4
|
-
"gem with block"
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
class GemspecBlock < IllegalElement
|
9
|
-
def type
|
10
|
-
"gemspec with block"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class GitSource < IllegalElement
|
15
|
-
def type
|
16
|
-
"git_source without block"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class Group < IllegalElement
|
21
|
-
def type
|
22
|
-
"group without block"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class SourceBlock < UnsupportedElement
|
27
|
-
def type
|
28
|
-
"source with block"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/envandle/git.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
module Envandle
|
2
|
-
GIT_BIN = `which git`.chomp
|
3
|
-
|
4
|
-
def self.raise_if_no_git_installed
|
5
|
-
raise "No git installed." if GIT_BIN.empty?
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.git_init(dir, url, &block)
|
9
|
-
unless dir
|
10
|
-
Dir.mktmpdir do |tmpdir|
|
11
|
-
git_init tmpdir, url, &block
|
12
|
-
end
|
13
|
-
else
|
14
|
-
raise_if_no_git_installed
|
15
|
-
Dir.chdir(dir) do
|
16
|
-
sh "#{GIT_BIN} init"
|
17
|
-
sh "#{GIT_BIN} remote add origin #{url}"
|
18
|
-
yield dir if block_given?
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.git_ls_remote_sha(dir, q)
|
24
|
-
Dir.chdir(dir) do
|
25
|
-
data = sh("#{GIT_BIN} ls-remote origin #{q}").chomp
|
26
|
-
data = if data.empty?
|
27
|
-
[]
|
28
|
-
else
|
29
|
-
data.split("\n").map{|i| i.split(/\s+/)[0] }
|
30
|
-
end
|
31
|
-
if block_given?
|
32
|
-
yield data
|
33
|
-
else
|
34
|
-
data
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.git_pull(dir, ref, branch)
|
40
|
-
Dir.chdir(dir) do
|
41
|
-
sh "#{GIT_BIN} checkout -b #{branch}"
|
42
|
-
sh "#{GIT_BIN} pull origin #{ref}:#{branch}"
|
43
|
-
sha = sh("#{GIT_BIN} rev-parse HEAD").chomp
|
44
|
-
if block_given?
|
45
|
-
yield sha
|
46
|
-
else
|
47
|
-
sha
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/lib/envandle/lib.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require "open3"
|
2
|
-
require "thread"
|
3
|
-
require "tmpdir"
|
4
|
-
require "yaml"
|
5
|
-
require "envandle/version"
|
6
|
-
require "envandle/helper"
|
7
|
-
require "envandle/exceptions"
|
8
|
-
require "envandle/as_context"
|
9
|
-
require "envandle/as_dsl"
|
10
|
-
require "envandle/as_git_reference"
|
11
|
-
require "envandle/as_reference"
|
12
|
-
require "envandle/argset"
|
13
|
-
require "envandle/elements"
|
14
|
-
require "envandle/location"
|
15
|
-
require "envandle/gemspec"
|
16
|
-
require "envandle/gemspec_cache"
|
17
|
-
require "envandle/git"
|
18
|
-
require "envandle/git_branch_reference"
|
19
|
-
require "envandle/path_reference"
|
20
|
-
require "envandle/shell"
|
21
|
-
require "envandle/reference_cache"
|