/usr/lib/ruby/1.8/augeas.rb is in libaugeas-ruby1.8 0.3.0-1.1ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | ##
# augeas.rb: Ruby wrapper for augeas
#
# Copyright (C) 2008 Red Hat Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author: Bryan Kearney <bkearney@redhat.com>
##
require "_augeas"
# Wrapper class for the augeas[http://augeas.net] library.
class Augeas
private_class_method :new
class Error < RuntimeError; end
# Create a new Augeas instance and return it.
#
# Use +root+ as the filesystem root. If +root+ is +nil+, use the value
# of the environment variable +AUGEAS_ROOT+. If that doesn't exist
# either, use "/".
#
# +loadpath+ is a colon-spearated list of directories that modules
# should be searched in. This is in addition to the standard load path
# and the directories in +AUGEAS_LENS_LIB+
#
# +flags+ is a bitmask (see <tt>enum aug_flags</tt>)
#
# When a block is given, the Augeas instance is passed as the only
# argument into the block and closed when the block exits. In that
# case, the return value of the block is the return value of
# +open+. With no block, the Augeas instance is returned.
def self.open(root = nil, loadpath = nil, flags = NONE, &block)
aug = open3(root, loadpath, flags)
if block_given?
begin
rv = yield aug
return rv
ensure
aug.close
end
else
return aug
end
end
# Clear the +path+, i.e. make its value +nil+
def clear(path)
set(path, nil)
end
# Clear all transforms under <tt>/augeas/load</tt>. If +load+
# is called right after this, there will be no files
# under +/files+
def clear_transforms
rm("/augeas/load/*")
end
# Add a transform under <tt>/augeas/load</tt>
#
# The HASH can contain the following entries
# * <tt>:lens</tt> - the name of the lens to use
# * <tt>:name</tt> - a unique name; use the module name of the LENS when omitted
# * <tt>:incl</tt> - a list of glob patterns for the files to transform
# * <tt>:excl</tt> - a list of the glob patterns to remove from the list that matches <tt>:INCL</tt>
def transform(hash)
lens = hash[:lens]
name = hash[:name]
incl = hash[:incl]
excl = hash[:excl] || ""
raise ArgumentError, "No lens specified" unless lens
raise ArgumentError, "No files to include" unless incl
name = lens.split(".")[0].sub("@", "") unless name
incl = [ incl ] unless incl.is_a?(Array)
excl = [ excl ] unless incl.is_a?(Array)
xfm = "/augeas/load/#{name}/"
set(xfm + "lens", lens)
incl.each { |inc| set(xfm + "incl[last()+1]", inc) }
excl.each { |exc| set(xfm + "excl[last()+1]", exc) }
end
# The same as +save+, but raises <tt>Augeas::Error</tt> if saving fails
def save!
raise Augeas::Error unless save
end
# The same as +load+, but raises <tt>Augeas::Error</tt> if loading fails
def load!
raise Augeas::Error unless load
end
# The same as +set+, but raises <tt>Augeas::Error</tt> if loading fails
def set!(path, value)
raise Augeas::Error unless set(path, value)
end
end
|