packager-dsl 0.1.2 → 0.1.3
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/Changes +3 -0
- data/README.md +9 -0
- data/lib/packager/dsl.rb +2 -1
- data/lib/packager/executor.rb +19 -7
- data/lib/packager/struct.rb +1 -1
- data/lib/packager/version.rb +1 -1
- data/spec/dsl/files_spec.rb +20 -0
- data/spec/executor/context.rb +3 -1
- data/spec/executor/files_spec.rb +35 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 858af8b908494438e9fca696b3c2fcb6ed537bb1
|
4
|
+
data.tar.gz: 3bead42fccf5cb4b3c3d2b886a6582e4a49fdc90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e567683893133ea032c47a24eafbe4965aeb5b05816be09eb35a64736fffe51da6d160ea142385c4dcaa56ed7f0cc1d9c364dea34acbb10d855d0e2d7f41bd76
|
7
|
+
data.tar.gz: a6f8a4664fd0e7ccad28a6cb3c71efa263aa6f15e3272a1072561598a6dbd919b5219586d41d55f2cb689587a5969f8bfbda0237eab325bc154fc09c109318a9
|
data/Changes
CHANGED
data/README.md
CHANGED
@@ -69,6 +69,15 @@ Consider providing helpers for the following:
|
|
69
69
|
* `file` / `files`
|
70
70
|
* `source` String
|
71
71
|
* `dest` String
|
72
|
+
* `link` / `links`
|
73
|
+
* `source` String
|
74
|
+
* `dest` String
|
75
|
+
* `link` Boolean
|
72
76
|
* `requires` Array[String]
|
73
77
|
* `provides` Array[String]
|
74
78
|
* `before_install` Array[String]
|
79
|
+
|
80
|
+
### Link
|
81
|
+
|
82
|
+
If `link` is true in your file, then a symbolic link will be created instead of
|
83
|
+
a file being copied.
|
data/lib/packager/dsl.rb
CHANGED
@@ -34,8 +34,9 @@ class Packager::DSL < DSL::Maker
|
|
34
34
|
copy_file_dsl = generate_dsl({
|
35
35
|
:source => String,
|
36
36
|
:dest => String,
|
37
|
+
:link => Boolean,
|
37
38
|
}) do
|
38
|
-
Packager::Struct::File.new(source, dest)
|
39
|
+
Packager::Struct::File.new(source, dest, link)
|
39
40
|
end
|
40
41
|
|
41
42
|
add_entrypoint(:package, {
|
data/lib/packager/executor.rb
CHANGED
@@ -4,21 +4,29 @@ require 'tmpdir'
|
|
4
4
|
|
5
5
|
class Packager
|
6
6
|
class Executor
|
7
|
-
attr_accessor :commands, :dryrun
|
7
|
+
attr_accessor :commands, :dryrun, :workdir
|
8
8
|
|
9
9
|
def initialize(opts={})
|
10
10
|
self.dryrun = !!opts[:dryrun]
|
11
11
|
self.commands = []
|
12
12
|
end
|
13
13
|
|
14
|
+
def with_workdir(&block)
|
15
|
+
if workdir
|
16
|
+
Dir.chdir(workdir, &block)
|
17
|
+
else
|
18
|
+
Dir.mktmpdir do |dir|
|
19
|
+
Dir.chdir(dir, &block)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
14
24
|
def execute_on(items)
|
15
25
|
curdir = Dir.pwd
|
16
26
|
items.collect do |item|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
FileUtils.mv(path, curdir) if path
|
21
|
-
end
|
27
|
+
with_workdir do
|
28
|
+
path = create_package_for(item)
|
29
|
+
FileUtils.mv(path, curdir) if path
|
22
30
|
end
|
23
31
|
end
|
24
32
|
end
|
@@ -28,7 +36,11 @@ class Packager
|
|
28
36
|
item.files.each do |file|
|
29
37
|
dest = (file.dest || '').gsub /^\//, ''
|
30
38
|
FileUtils.mkdir_p File.dirname(dest)
|
31
|
-
|
39
|
+
if file.link
|
40
|
+
FileUtils.ln_s(file.source, dest)
|
41
|
+
else
|
42
|
+
FileUtils.cp_r(file.source, dest)
|
43
|
+
end
|
32
44
|
end
|
33
45
|
end
|
34
46
|
|
data/lib/packager/struct.rb
CHANGED
data/lib/packager/version.rb
CHANGED
data/spec/dsl/files_spec.rb
CHANGED
@@ -18,6 +18,7 @@ describe Packager::DSL do
|
|
18
18
|
expect(items[0].files).to be_instance_of(Array)
|
19
19
|
expect(items[0].files[0].source).to eq('foo')
|
20
20
|
expect(items[0].files[0].dest).to eq('bar')
|
21
|
+
expect(items[0].files[0].link).to be_falsey
|
21
22
|
end
|
22
23
|
|
23
24
|
it "handles two files" do
|
@@ -42,5 +43,24 @@ describe Packager::DSL do
|
|
42
43
|
expect(items[0].files[1].source).to eq('foo2')
|
43
44
|
expect(items[0].files[1].dest).to eq('bar2')
|
44
45
|
end
|
46
|
+
|
47
|
+
it "handles a link" do
|
48
|
+
items = parse_dsl {
|
49
|
+
package {
|
50
|
+
name 'foo'
|
51
|
+
version '0.0.1'
|
52
|
+
type 'test'
|
53
|
+
file {
|
54
|
+
source 'foo'
|
55
|
+
dest 'bar'
|
56
|
+
link true
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
expect(items[0].files).to be_instance_of(Array)
|
61
|
+
expect(items[0].files[0].source).to eq('foo')
|
62
|
+
expect(items[0].files[0].dest).to eq('bar')
|
63
|
+
expect(items[0].files[0].link).to be_truthy
|
64
|
+
end
|
45
65
|
end
|
46
66
|
end
|
data/spec/executor/context.rb
CHANGED
data/spec/executor/files_spec.rb
CHANGED
@@ -4,6 +4,10 @@ describe Packager::Executor do
|
|
4
4
|
include_context :executor
|
5
5
|
include_context :workdir
|
6
6
|
|
7
|
+
before(:each) {
|
8
|
+
executor.workdir = workdir
|
9
|
+
}
|
10
|
+
|
7
11
|
it "creates a package with one file" do
|
8
12
|
FileUtils.chdir(sourcedir) do
|
9
13
|
FileUtils.touch('file1')
|
@@ -17,6 +21,34 @@ describe Packager::Executor do
|
|
17
21
|
Packager::Struct::File.new(File.join(sourcedir, 'file1'), '/bar/file2'),
|
18
22
|
]
|
19
23
|
)
|
24
|
+
|
25
|
+
executor.execute_on([item])
|
26
|
+
|
27
|
+
expect(executor.commands[0]).to eq(
|
28
|
+
Packager::Struct::Command.new({
|
29
|
+
:name => 'foo',
|
30
|
+
:version => '0.0.1',
|
31
|
+
:source => 'dir',
|
32
|
+
:target => 'test',
|
33
|
+
:directories => { 'bar' => true },
|
34
|
+
})
|
35
|
+
)
|
36
|
+
expect(File.exists?(File.join('bar', 'file2'))).to be_truthy
|
37
|
+
end
|
38
|
+
|
39
|
+
it "creates a package with one link" do
|
40
|
+
FileUtils.chdir(sourcedir) do
|
41
|
+
FileUtils.touch('file1')
|
42
|
+
end
|
43
|
+
|
44
|
+
item = Packager::Struct::Package.new(
|
45
|
+
:name => 'foo',
|
46
|
+
:version => '0.0.1',
|
47
|
+
:type => 'test',
|
48
|
+
:files => [
|
49
|
+
Packager::Struct::File.new(File.join(sourcedir, 'file1'), '/bar/file2', true),
|
50
|
+
]
|
51
|
+
)
|
20
52
|
FileUtils.chdir(workdir) do
|
21
53
|
executor.execute_on([item])
|
22
54
|
end
|
@@ -29,5 +61,8 @@ describe Packager::Executor do
|
|
29
61
|
:directories => { 'bar' => true },
|
30
62
|
})
|
31
63
|
)
|
64
|
+
|
65
|
+
# Verify that /bar/file2 points to file1 as a symlink
|
66
|
+
expect(File.symlink?(File.join(workdir, 'bar', 'file2'))).to be_truthy
|
32
67
|
end
|
33
68
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packager-dsl
|
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
|
- Rob Kinyon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dsl_maker
|