cookbook 'line', '= 2.0.1'
line
(86) Versions
2.0.1
-
-
4.5.21
-
4.5.19
-
4.5.18
-
4.5.17
-
4.5.16
-
4.5.15
-
4.5.14
-
4.5.13
-
4.5.12
-
4.5.11
-
4.5.10
-
4.5.9
-
4.5.8
-
4.5.7
-
4.5.6
-
4.5.5
-
4.5.4
-
4.5.3
-
4.5.2
-
4.5.1
-
4.5.0
-
4.4.4
-
4.4.3
-
4.4.2
-
4.4.1
-
4.4.0
-
4.3.0
-
4.2.0
-
4.1.1
-
4.1.0
-
4.0.1
-
4.0.0
-
2.9.3
-
2.9.2
-
2.9.1
-
2.9.0
-
2.8.1
-
2.8.0
-
2.7.0
-
2.6.0
-
2.5.0
-
2.4.1
-
2.3.3
-
2.3.2
-
2.3.1
-
2.3.0
-
2.2.0
-
2.1.1
-
2.0.2
-
2.0.1
-
2.0.0
-
1.2.1
-
1.2.0
-
1.1.1
-
1.1.0
-
1.0.6
-
1.0.5
-
1.0.4
-
1.0.3
-
1.0.2
-
1.0.1
-
1.0.0
-
0.6.3
-
0.6.2
-
0.6.1
-
0.6.0
-
0.5.1
-
0.5.0
-
0.4.4
-
0.4.2
-
0.4.1
-
0.4.0
-
0.3.1
-
0.3.0
-
0.2.10
-
0.2.9
-
0.2.8
-
0.2.7
-
0.2.6
-
0.2.5
-
0.2.4
-
0.2.3
-
0.1.2
-
0.1.1
-
0.1.0
-
0.0.1
Follow52
- 4.5.21
- 4.5.19
- 4.5.18
- 4.5.17
- 4.5.16
- 4.5.15
- 4.5.14
- 4.5.13
- 4.5.12
- 4.5.11
- 4.5.10
- 4.5.9
- 4.5.8
- 4.5.7
- 4.5.6
- 4.5.5
- 4.5.4
- 4.5.3
- 4.5.2
- 4.5.1
- 4.5.0
- 4.4.4
- 4.4.3
- 4.4.2
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.0
- 4.1.1
- 4.1.0
- 4.0.1
- 4.0.0
- 2.9.3
- 2.9.2
- 2.9.1
- 2.9.0
- 2.8.1
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.1
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.1
- 2.0.2
- 2.0.1
- 2.0.0
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.1
- 0.5.0
- 0.4.4
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.1
- 0.3.0
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.1
Provides line editing resources for use by recipes
cookbook 'line', '= 2.0.1', :supermarket
knife supermarket install line
knife supermarket download line
line cookbook
Motivation
Quite often, the need arises to do line editing instead of managing an entire file with a template resource. This cookbook supplies various resources that will help you do this.
Limitations
- The line resources processes the entire target file in memory. Trying to edit large files may fail.
- The end of line processing was only tested using
\n
and\r\n
. Using other line endings very well may not work. - The end of line string used needs to match the actual end of line used in the file
\n
and\r\n
are used as the defaults but if they don't match the actual end of line used in the file the results will be weird. - Adding a line implies there is a separator on the previous line. Adding a line differs from appending characters.
-
Missing file processing is the way it is by intention
-
add_to_list
do nothing, list not found so there is nothing to add to. -
append_if_no_line
create file, add the line. -
delete_from_list
do nothing, the list was not found which implies there is nothing to delete -
delete_lines
do nothing, the line isn't there which implies there is nothing to delete -
replace_or_add
create file, add the line
-
Chef client version 13 or greater is expected. Some limited testing on Chef client 12 has been done and the cookbook seems to work. PRs for chef 12 support will be considered.
Usage
Add "depends 'line'" to your cookbook's metadata.rb to gain access to the resoures.
append_if_no_line "make sure a line is in some file" do path "/some/file" line "HI THERE I AM STRING" end replace_or_add "why hello" do path "/some/file" pattern "Why hello there.*" line "Why hello there, you beautiful person, you." end delete_lines "remove hash-comments from /some/file" do path "/some/file" pattern "^#.*" end delete_lines "remove hash-comments from /some/file with a regexp" do path "/some/file" pattern /^#.*/ end replace_or_add "change the love, don't add more" do path "/some/file" pattern "Why hello there.*" line "Why hello there, you beautiful person, you." replace_only true end add_to_list "add entry to a list" do path "/some/file" pattern "People to call: " delim [","] entry "Bobby" end delete_from_list "delete entry from a list" do path "/some/file" pattern "People to call: " delim [","] entry "Bobby" end delete_lines 'remove from nonexisting' do path '/tmp/doesnotexist' pattern /^#/ ignore_missing true end
Resource Notes
So far, the only resources implemented are
append_if_no_line replace_or_add delete_lines add_to_list delete_from_list
Resource: append_if_no_line
Actions
Action | Description |
---|---|
edit | Append a line if it is missing. |
Properties
Properties | Description | Type | Values and Default |
---|---|---|---|
path | File to update | String | Required, no default |
line | Line contents | String | Required, no default |
ignore_missing | Don't fail if the file is missing | true or false | Default is true |
eol | Alternate line end characters | String | default \n on unix, \r\n on windows |
backup | Backup before changing | Boolean | default false |
Notes
This resource is intended to match the whole line exactly. That means if the file contains this is my line
(trailing whitespace) and you've specified line "this is my line"
, another line will be added. You may want to use replace_or_add
instead, depending on your use case.
Resource: replace_or_add
Actions
Action | Description |
---|---|
edit | Replace lines that match the pattern. Append the line unless a source line matches the pattern. |
Properties
Properties | Description | Type | Values and Default |
---|---|---|---|
path | File to update | String | Required, no default |
pattern | Regular expression to select lines | Regular expression or String | Required, no default |
line | Line contents | String | Required, no default |
replace_only | Don't append only replace matching lines | true or false | Required, no default |
ignore_missing | Don't fail if the file is missing | true or false | Default is true |
eol | Alternate line end characters | String | default \n on unix, \r\n on windows |
backup | Backup before changing | Boolean | default false |
Resource: delete_lines
Actions
Action | Description |
---|---|
edit | Delete lines that match the pattern. |
Properties
Properties | Description | Type | Values and Default |
---|---|---|---|
path | File to update | String | Required, no default |
pattern | Regular expression to select lines | Regular expression or String | Required, no default |
ignore_missing | Don't fail if the file is missing | true or false | Default is true |
eol | Alternate line end characters | String | default \n on unix, \r\n on windows |
backup | Backup before changing | Boolean | default false |
Notes
Removes lines based on a string or regex.
Resource: add_to_list
Actions
Action | Description |
---|---|
edit | Add an item to a list |
Properties
Properties | Description | Type | Values and Default |
---|---|---|---|
path | File to update | String | Required, no default |
pattern | Regular expression to select lines | Regular expression or String | Required, no default |
delim | Delimiter entries | Array | Array of 1, 2 or 3 multi-character elements |
entry | Value to add | String | Required, No default |
ends_with | List ending | String | No default |
ignore_missing | Don't fail if the file is missing | true or false | Default is true |
eol | Alternate line end characters | String | default \n on unix, \r\n on windows |
backup | Backup before changing | Boolean | default false |
Notes
If one delimiter is given, it is assumed that either the delimiter or the given search pattern will proceed each entry and each entry will be followed by either the delimiter or a new line character: People to call: Joe, Bobby delim [","] entry 'Karen' People to call: Joe, Bobby, Karen
If two delimiters are given, the first is used as the list element delimiter and the second as entry delimiters: my @net1918 = ("10.0.0.0/8", "172.16.0.0/12"); delim [", ", "\""] entry "192.168.0.0/16" my @net1918 = ("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16");
if three delimiters are given, the first is used as the list element delimiter, the second as the leading entry delimiter and the third as the trailing delimiter: multi = ([310], [818]) delim [", ", "[", "]"] entry "425" multi = ([310], [818], [425])
end_with is an optional property. If specified a list is expected to end with the given string.
Resource: delete_from_list
Actions
Action | Description |
---|---|
edit | Delete an item from a list |
Properties
Properties | Description | Type | Values and Default |
---|---|---|---|
path | File to update | String | Required, no default |
pattern | Regular expression to select lines | Regular expression or String | Required, no default |
delim | Delimiter entries | Array | Array of 1, 2 or 3 multi-character elements |
entry | Value to delete | String | Required, No default |
ends_with | List ending | String | No default |
ignore_missing | Don't fail if the file is missing | true or false | Default is true |
eol | Alternate line end characters | String | default \n on unix, \r\n on windows |
backup | Backup before changing | Boolean | default false |
Notes
Delimiters works exactly the same way as add_to_list
, see above.
Author
- Contributor: Mark Gibbons
- Contributor: Dan Webb
- Contributor: Sean OMeara
- Contributor: Antek S. Baranski
Dependent cookbooks
This cookbook has no specified dependencies.
Contingent cookbooks
line Cookbook CHANGELOG
v2.0.1 (2018-06-01)
- Tested on chef 12.13.37. Fix error caused by using the sensitive attribute. Sensitive true will always be used for chef 12.
v2.0.0 (2018-05-19)
- Breaking change - Files are processed in memory instead of line by line. It's possible that large files that were previously updated by the line cookbook will not be able to be processed.
- Breaking change - Drop Chef 12 support
- Use template files instead of
cookbook_file
so that we get platform sensitive line endings written for testing. - Add windows support to
add_to_list
,append_if_no_line
,delete_from_list
,delete_lines
,replace_or_add
. - Make the processing of missing target files consistent. Add the
ignore_missing
property to the resources to allow a missing file to raise an error. - Clean up the order of some boiler plate code.
- Create helper methods for some common resource functions.
- Drop the OS helpers in favour os using
platform_family?
.
v1.2.0 (2018-04-18)
- Add the ignore_missing option to the
delete_lines
anddelete_from_list
. Don't raise an error if the target file is missing.
v1.1.1 (2018-04-16)
- Allow appending to an empty file.
v1.1.0 (2018-03-26)
- Rework
delete_lines
to use file provider sub-resource. - Support matching with regexps in addition to strings with
delete_lines
. - Rework
append_if_no_line
to use file provider sub-resource. - Fix edge conditions around
files-with-no-trailing-CR
being fed toappend_if_no_line
. - Remove library helpers.
- Remove the
escape_regexp
and escape_string methods in favour of nativeRegexp.escape
v1.0.6 (2018-03-23)
- Add question mark to regular expression escape characters
v1.0.5 (2018-02-20)
- Minor Testing updates
- Remove custom matchers for ChefSpec. ChefDK 1 versions of ChefSpec will no longer work when unit testing against this cookbook.
v1.0.4 (2018-01-10)
- Handle deleting items from a list using spaces as the delimeter
v1.0.3 (2017-08-22)
- Add edge case tests for
add_to_list
- Handle the
delete_lines
,add_to_list
, anddelete_from_list
resources when a missing file is specified.
v1.0.2 (2017-07-07)
- Fix #58 Add resource locator matchers
- Fix #59 Add resource matcher tests
- Make cookstyle 2.0.0 fixes
- Delete the unused minitest files
- Clean up the
file_ext
inspec resource
v1.0.1 (2017-07-05)
- Fix #53
append_if_no_line
appends line always appends
v1.0.0 (2017-06-13)
- Move cookbook to Sous-Chefs org
- Move to using custom resources
v0.6.3 (2015-10-27)
- Fixing Ruby and Chef deprecation warnings
- Cleaning up tests a bit
- Adding support for
source_url
andissues_url
-
delete_from_list
resource
v0.6.2 (2015-07-15)
- Catch lines missed by strict patterns
- Add rspec tests for the
replace_or_add
provider. The existing chefspec tests don't step into the provider code and so don't check the provider functionality. - Change the Gemfile to reflect the need for berkshelf 3, chefspec v4.2, rspec 3 for the tests.
- Update
provider_replace_or_add
to handle cases where the pattern does not match the replacement line. - Fix notification problem where
updated_by_last_action
was set when nothing changed.
v0.6.1 (2015-02-24)
- Adding CHANGELOG
- Adding ChefSpec matchers
Collaborator Number Metric
2.0.1 passed this metric
Contributing File Metric
2.0.1 passed this metric
Foodcritic Metric
2.0.1 passed this metric
No Binaries Metric
2.0.1 passed this metric
Testing File Metric
2.0.1 passed this metric
Version Tag Metric
2.0.1 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
2.0.1 passed this metric
2.0.1 passed this metric
Foodcritic Metric
2.0.1 passed this metric
No Binaries Metric
2.0.1 passed this metric
Testing File Metric
2.0.1 passed this metric
Version Tag Metric
2.0.1 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
2.0.1 passed this metric
2.0.1 passed this metric
Testing File Metric
2.0.1 passed this metric
Version Tag Metric
2.0.1 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
2.0.1 passed this metric
2.0.1 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number