boxgrinder-core 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ v0.3.2
2
+
3
+ * [BGBUILD-210] In Fedora 14 parameters are not being expanded, and cause early string truncation.
4
+ * [BGBUILD-208] Kickstart files not working with 0.9.1
5
+ * [BGBUILD-218] Incorrect error messages since revision of parser/validator
6
+
1
7
  v0.3.1
2
8
 
3
9
  * [BGBUILD-164] Guestfs writes to /tmp/ by default, potentially filling the root filesystem
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{boxgrinder-core}
5
- s.version = "0.3.1"
5
+ s.version = "0.3.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Marek Goldmann"]
9
- s.date = %q{2011-04-27}
9
+ s.date = %q{2011-05-17}
10
10
  s.description = %q{Core library for BoxGrinder}
11
11
  s.email = %q{info@boxgrinder.org}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/appliance-parser.rb", "lib/boxgrinder-core/appliance-validator.rb", "lib/boxgrinder-core/errors.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/appliance-transformation-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml"]
13
- s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "boxgrinder-core.gemspec", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/appliance-parser.rb", "lib/boxgrinder-core/appliance-validator.rb", "lib/boxgrinder-core/errors.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/appliance-transformation-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml", "rubygem-boxgrinder-core.spec", "spec/appliance-parser-spec.rb", "spec/appliance-validator-spec.rb", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-definition-helper-spec.rb", "spec/helpers/appliance-transformation-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/models/config-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/src/appliances/0.8.x.appl", "spec/rspec/src/appliances/0.9.x-invalid.appl", "spec/rspec/src/appliances/0.9.x.appl", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/invalid-yaml.appl", "spec/rspec/src/appliances/legacy.appl", "spec/rspec/src/appliances/repo.appl", "spec/rspec/src/config/empty", "spec/rspec/src/config/valid"]
13
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "boxgrinder-core.gemspec", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/appliance-parser.rb", "lib/boxgrinder-core/appliance-validator.rb", "lib/boxgrinder-core/errors.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/appliance-transformation-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml", "rubygem-boxgrinder-core.spec", "spec/appliance-parser-spec.rb", "spec/appliance-validator-spec.rb", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-definition-helper-spec.rb", "spec/helpers/appliance-transformation-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/models/config-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/src/appliances/0.8.x.appl", "spec/rspec/src/appliances/0.9.x-invalid.appl", "spec/rspec/src/appliances/0.9.x.appl", "spec/rspec/src/appliances/comments.appl", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/invalid-yaml.appl", "spec/rspec/src/appliances/legacy.appl", "spec/rspec/src/appliances/repo.appl", "spec/rspec/src/config/empty", "spec/rspec/src/config/valid"]
14
14
  s.homepage = %q{http://boxgrinder.org}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-core", "--main", "README"]
16
16
  s.require_paths = ["lib"]
@@ -31,7 +31,9 @@ module BoxGrinder
31
31
 
32
32
  def load_schemas
33
33
  Dir.glob("#{File.dirname(__FILE__)}/schemas/{*.yaml,*.yml}").each do |f|
34
- schema = Kwalify::Yaml.load_file(f)
34
+ # DON'T use Kwalify::Yaml here!
35
+ # This will not threat '#' sign in schema files correctly
36
+ schema = YAML.load_file(f)
35
37
  @schemas[schema['version']] = schema
36
38
  end
37
39
  end
@@ -74,7 +76,7 @@ module BoxGrinder
74
76
  begin
75
77
  parsed = parser.parse(appliance_definition)
76
78
  rescue Kwalify::KwalifyError => e
77
- raise ApplianceValidationError, "The appliance definition couldn't be parsed. [line #{e.linenum}, col #{e.column}] [#{e.path}] Most probably you try to specify partition mount point starting with backslash (/), please quote it like this: \"/foo\"." if e.message =~ /document end expected \(maybe invalid tab char found\)/
79
+ raise ApplianceValidationError, "The appliance definition couldn't be parsed. [line #{e.linenum}, col #{e.column}] [#{e.path}] Make sure you use correct indentation (don't use tabs). If indentation is correct and you try to specify partition mount point, please quote it: \"/foo\" instead of /foo." if e.message =~ /document end expected \(maybe invalid tab char found\)/
78
80
  raise ApplianceValidationError, "The appliance definition couldn't be parsed. #{e}"
79
81
  end
80
82
 
@@ -52,7 +52,7 @@ module BoxGrinder
52
52
  end
53
53
  end
54
54
 
55
- raise 'Unsupported file format for appliance definition file.' if appliance_config.nil?
55
+ return if appliance_config.nil?
56
56
 
57
57
  @appliance_configs << appliance_config
58
58
  appliances = []
@@ -70,12 +70,12 @@ mapping:
70
70
  mapping:
71
71
  "name":
72
72
  type: str
73
- pattern: /^[\w\-+.\043]+$/
73
+ pattern: /^[\w\-+.#]+$/
74
74
  length: { min: 1 }
75
75
  required: yes
76
76
  "baseurl": &pkg-mirror
77
77
  type: str
78
- pattern: /(^((http|ftp):)(\/\/([^\/?\043]*))?([^?\043]*)(\?([^\043]*))?(\043(.*))?$|^file:\/\/.+$)/ #customised rfc3986 standard regexp for URIs
78
+ pattern: /(^((http|https|ftp):)(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$|^file:\/\/.+$)/ #customised rfc3986 standard regexp for URIs
79
79
  "mirrorlist": *pkg-mirror
80
80
  "ephemeral":
81
81
  type: bool
@@ -57,7 +57,7 @@ mapping:
57
57
  type: seq
58
58
  sequence:
59
59
  - type: str
60
- pattern: /^[\w\-+.@\043]+$/ #fedora packaging standard http://bit.ly/h0JN9u (plus a few more, disallow symbols/spaces)
60
+ pattern: /^[\w\-+.@#]+$/ #fedora packaging standard http://bit.ly/h0JN9u (plus a few more, disallow symbols/spaces)
61
61
  length: { min: 1 }
62
62
  "repos":
63
63
  type: seq
@@ -67,12 +67,12 @@ mapping:
67
67
  mapping:
68
68
  "name":
69
69
  type: str
70
- pattern: /^[\w\-+.\043]+$/
70
+ pattern: /^[\w\-+.#]+$/
71
71
  length: { min: 1 }
72
72
  required: yes
73
73
  "baseurl": &pkg-mirror
74
74
  type: str
75
- pattern: /(^((http|ftp):)(\/\/([^\/?\043]*))?([^?\043]*)(\?([^\043]*))?(\043(.*))?$|^file:\/\/.+$)/ #customised rfc3986 standard regexp for URIs
75
+ pattern: /(^((http|https|ftp):)(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$|^file:\/\/.+$)/ #customised rfc3986 standard regexp for URIs
76
76
  "mirrorlist": *pkg-mirror
77
77
  "ephemeral":
78
78
  type: bool
@@ -5,7 +5,7 @@
5
5
 
6
6
  Summary: Core library for BoxGrinder
7
7
  Name: rubygem-%{gemname}
8
- Version: 0.3.1
8
+ Version: 0.3.2
9
9
  Release: 1%{?dist}
10
10
  Group: Development/Languages
11
11
  License: LGPLv3+
@@ -76,7 +76,13 @@ popd
76
76
  %{gemdir}/doc/%{gemname}-%{version}
77
77
 
78
78
  %changelog
79
- * Thu Mar 17 2011 <mgoldman@redhat.com> - 0.3.1-1
79
+ * Tue May 10 2011 Marek Goldmann <mgoldman@redhat.com> - 0.3.2-1
80
+ - Upstream release: 0.3.2
81
+ - [BGBUILD-210] In Fedora 14 parameters are not being expanded, and cause early string truncation.
82
+ - [BGBUILD-208] Kickstart files not working with 0.9.1
83
+ - [BGBUILD-218] Incorrect error messages since revision of parser/validator
84
+
85
+ * Wed Apr 27 2011 Marek Goldmann <mgoldman@redhat.com> - 0.3.1-1
80
86
  - Upstream release: 0.3.1
81
87
  - [BGBUILD-164] Guestfs writes to /tmp/ by default, potentially filling the root filesystem
82
88
  - [BGBUILD-97] some filesystems dont get unmounted on BG interruption
@@ -86,19 +92,12 @@ popd
86
92
  - [BGBUILD-198] root password is not inherited
87
93
  - [BGBUILD-156] Validate appliance definition files early and return meaningful error messages
88
94
 
89
- * Sat Mar 05 2011 <mgoldman@redhat.com> - 0.3.0-1
95
+ * Sat Mar 05 2011 Marek Goldmann <mgoldman@redhat.com> - 0.3.0-1
90
96
  - Upstream release: 0.3.0
91
97
  - [BGBUILD-178] Remove sensitive data from logs
92
98
  - [BGBUILD-168] Support deprecated package inclusion format in appliance definitions
93
-
94
- * Tue Feb 16 2011 <mgoldman@redhat.com> - 0.2.1-1
95
- - Upstream release: 0.2.1
96
99
  - [BGBUILD-142] Backtraces make output unreadable - add option to enable them, and disable by default
97
100
  - [BGBUILD-150] Cyclical inclusion dependencies in appliance definition files are not detected/handled
98
-
99
- * Tue Jan 04 2011 <mgoldman@redhat.com> - 0.2.0-1
100
- - Upstream release: 0.2.0
101
- - Added BuildRoot tag to build for EPEL 5
102
101
  - [BGBUILD-79] Allow to use BoxGrinder Build as a library
103
102
  - [BGBUILD-127] Use appliance definition object instead of a file when using BG as a library
104
103
  - [BGBUILD-68] Global .boxgrinder/config or rc style file for config
@@ -107,38 +106,35 @@ popd
107
106
  - [BGBUILD-101] Don't use 'includes' subsection when specifying packages
108
107
  - [BGBUILD-60] Post section merging pattern for appliances depending on the same appliance
109
108
  - [BGBUILD-151] Overriding hardware partitions via inclusion in Appliance Definition File causes build failure
110
-
111
- * Tue Dec 21 2010 <mgoldman@redhat.com> - 0.1.6-1
112
- - Updated to upstream version: 0.1.6
113
109
  - [BGBUILD-100] Enable boxgrinder_build to create a Fedora image with encrypted partition(s)
114
110
 
115
- * Sun Dec 12 2010 <mgoldman@redhat.com> - 0.1.5-1
111
+ * Sun Dec 12 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.5-1
116
112
  - Updated to upstream version: 0.1.5
117
113
  - [BGBUILD-73] Add support for kickstart files
118
114
 
119
- * Thu Dec 02 2010 <mgoldman@redhat.com> - 0.1.4-1
115
+ * Thu Dec 02 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.4-1
120
116
  - Updated to new upstream release: 0.1.4
121
117
 
122
- * Wed Nov 17 2010 <mgoldman@redhat.com> - 0.1.3-3
118
+ * Wed Nov 17 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.3-3
123
119
  - Added: BuildRequires: rubygem(echoe)
124
120
  - Changed the way Gem is installed and tests are exeuted
125
121
 
126
- * Mon Nov 15 2010 <mgoldman@redhat.com> - 0.1.3-2
122
+ * Mon Nov 15 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.3-2
127
123
  - Removing unecessary Requires: rubygems
128
124
 
129
- * Mon Nov 15 2010 <mgoldman@redhat.com> - 0.1.3-1
125
+ * Mon Nov 15 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.3-1
130
126
  - Removed BuildRoot tag
131
127
  - Adjusted Requires and BuildRequires
132
128
  - Different approach for testing
133
129
  - [BGBUILD-98] Use hashery gem
134
130
 
135
- * Tue Nov 09 2010 <mgoldman@redhat.com> - 0.1.2-1
131
+ * Tue Nov 09 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.2-1
136
132
  - [BGBUILD-87] Set default filesystem to ext4 for Fedora 13+
137
133
  - [BGBUILD-65] Allow to specify own repos overriding default repos provided for selected OS
138
134
 
139
- * Tue Nov 09 2010 <mgoldman@redhat.com> - 0.1.1-2
135
+ * Tue Nov 09 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.1-2
140
136
  - [BGBUILD-85] Adjust BoxGrinder spec files for review
141
137
  - Added 'check' section that executes tests
142
138
 
143
- * Mon Oct 18 2010 <mgoldman@redhat.com> - 0.1.1-1
139
+ * Mon Oct 18 2010 Marek Goldmann <mgoldman@redhat.com> - 0.1.1-1
144
140
  - Initial package
@@ -29,8 +29,8 @@ module BoxGrinder
29
29
 
30
30
  describe ".load_schemas" do
31
31
  it "should load all available schemas" do
32
- Kwalify::Yaml.should_receive(:load_file).with('filea').and_return({'version' => '0.8.0'})
33
- Kwalify::Yaml.should_receive(:load_file).with('fileb').and_return({'version' => '0.9.0'})
32
+ YAML.should_receive(:load_file).with('filea').and_return({'version' => '0.8.0'})
33
+ YAML.should_receive(:load_file).with('fileb').and_return({'version' => '0.9.0'})
34
34
 
35
35
  Dir.should_receive(:glob).with(an_instance_of(String)).and_return(['filea', 'fileb'])
36
36
 
@@ -64,5 +64,17 @@ module BoxGrinder
64
64
  definition['packages'].size.should == 3
65
65
  end
66
66
  end
67
+
68
+ describe ".parse" do
69
+ it "should parse the doc" do
70
+ @parser.load_schemas
71
+ definition = File.read("#{File.dirname(__FILE__)}/rspec/src/appliances/repo.appl")
72
+ schemas = @parser.instance_variable_get(:@schemas)
73
+ schema = schemas[schemas.keys.first]
74
+ schema.delete('version')
75
+ parsed, errors = @parser.parse(schema, definition)
76
+ parsed['repos'].first['baseurl'].should == 'http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#'
77
+ end
78
+ end
67
79
  end
68
80
  end
@@ -32,6 +32,15 @@ module BoxGrinder
32
32
  end
33
33
 
34
34
  describe ".read_definitions" do
35
+ it "should pass all sample definitions that are not marked as invalid" do
36
+ prepare_helper
37
+
38
+ Dir.glob("#{File.dirname(__FILE__)}/../rspec/src/appliances/*.appl").each do |l|
39
+ next if l =~ /invalid/
40
+ @helper.read_definitions(l)
41
+ end
42
+ end
43
+
35
44
  it "should read definition from files with different extensions" do
36
45
  appliance_config = ApplianceConfig.new
37
46
  ['appl', 'yml', 'yaml'].each do |ext|
@@ -42,8 +51,6 @@ module BoxGrinder
42
51
  @helper.read_definitions("file.#{ext}")
43
52
  configs = @helper.appliance_configs
44
53
 
45
- puts configs.size
46
-
47
54
  configs.should == [appliance_config]
48
55
  end
49
56
  end
@@ -186,9 +193,9 @@ module BoxGrinder
186
193
  lambda { @helper.read_definitions("#{File.dirname(__FILE__)}/../rspec/src/appliances/invalid-yaml.appl") }.should raise_error(ApplianceValidationError, "The appliance definition was invalid according to schema 0.9.0. See log for details.")
187
194
  end
188
195
 
189
- it "should raise because of unsupported file format" do
196
+ it "should return nil of unsupported file format" do
190
197
  File.should_receive(:exists?).with("file.xmdfl").and_return(true)
191
- lambda { @helper.read_definitions("file.xmdfl") }.should raise_error(RuntimeError, "Unsupported file format for appliance definition file.")
198
+ @helper.read_definitions("file.xmdfl").should == nil
192
199
  end
193
200
 
194
201
  #Do more extensive tests in the parser/validator itself
@@ -13,8 +13,6 @@ hardware:
13
13
  "/":
14
14
  size: 4
15
15
  type: ext4
16
- appliances:
17
- - _include
18
16
  packages:
19
17
  includes:
20
18
  - @base
@@ -13,8 +13,6 @@ hardware:
13
13
  "/":
14
14
  size: 4
15
15
  type: ext4
16
- appliances:
17
- - _include
18
16
  packages:
19
17
  - squid
20
18
  - rubygem-boxgrinder-build
@@ -0,0 +1,20 @@
1
+ name: repo
2
+ summary: A dummy repo appliance
3
+ os:
4
+ name: fedora
5
+ version: 12
6
+ hardware:
7
+ memory: 256 # asdas asd as # asd
8
+ partitions:
9
+ "/":
10
+ size: 1 # abc
11
+ packages:
12
+ - gcc-c++
13
+ - wget
14
+ repos:
15
+ - name: "cirras"
16
+ baseurl: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
17
+ - name: "abc"
18
+ mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
19
+ - name: "boxgrinder-f12-testing-#ARCH#"
20
+ mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
@@ -17,7 +17,6 @@ repos:
17
17
  ephemeral: true
18
18
  - name: "abc"
19
19
  baseurl: "http://abc"
20
- mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
21
20
  ephemeral: true
22
21
  - name: "boxgrinder-f12-testing-#ARCH#"
23
22
  mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
@@ -17,7 +17,6 @@ repos:
17
17
  - name: "cirras"
18
18
  baseurl: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
19
19
  - name: "abc"
20
- baseurl: "http://abc"
21
20
  mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
22
21
  - name: "boxgrinder-f11-testing-#ARCH#"
23
22
  mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
@@ -15,7 +15,6 @@ repos:
15
15
  - name: "cirras"
16
16
  baseurl: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
17
17
  - name: "abc"
18
- baseurl: "http://abc"
19
18
  mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
20
19
  - name: "boxgrinder-f12-testing-#ARCH#"
21
20
  mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boxgrinder-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 1
10
- version: 0.3.1
9
+ - 2
10
+ version: 0.3.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marek Goldmann
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-27 00:00:00 +02:00
18
+ date: 2011-05-17 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -125,6 +125,7 @@ files:
125
125
  - spec/rspec/src/appliances/0.8.x.appl
126
126
  - spec/rspec/src/appliances/0.9.x-invalid.appl
127
127
  - spec/rspec/src/appliances/0.9.x.appl
128
+ - spec/rspec/src/appliances/comments.appl
128
129
  - spec/rspec/src/appliances/ephemeral-repo.appl
129
130
  - spec/rspec/src/appliances/full.appl
130
131
  - spec/rspec/src/appliances/invalid-yaml.appl