Module: Qrpm
- Defined in:
- lib/qrpm/fragment.rb,
lib/qrpm.rb,
lib/qrpm/rpm.rb,
lib/qrpm/node.rb,
lib/qrpm/qrpm.rb,
lib/qrpm/lexer.rb,
lib/qrpm/utils.rb,
lib/qrpm/render.rb,
lib/qrpm/version.rb,
lib/qrpm/compiler.rb
Overview
TODO: Create (and use) a Fragment.parse method
Defined Under Namespace
Modules: Fragment Classes: AbstractMethodError, ArrayNode, CompileError, Compiler, ContainerNode, DirectoryNode, Error, FileNode, HashNode, Lexer, Node, Qrpm, RootNode, Rpm, RpmBuilder, StandardDirNode, ValueNode
Constant Summary collapse
- QRPM_CONFIG_FILE =
"qrpm.yml"
- QRPM_SHARE_DIR =
"#{::File.dirname(__FILE__)}/../lib/qrpm"
- QRPM_CONFIG_FILE_TEMPLATE =
"#{QRPM_SHARE_DIR}/template.yml"
- QRPM_ERB_FILE =
"#{QRPM_SHARE_DIR}/template.erb"
- MANDATORY_FIELDS =
Should be defined and non-empty
Rpm::MANDATORY_FIELDS
- FIELDS =
Maps from field name to array of allowed types for that field
Rpm::FIELDS.map { |k,ts| nts = ts.map { |t| if t == String ValueNode elsif t == Array ArrayNode else raise ArgumentError, "Illegal type: #{t.inspect}" end } [k, nts] }.to_h
- STANDARD_DIRS =
%w( etcdir bindir sbindir libdir libexecdir sharedir docdir vardir spooldir rundir lockdir cachedir logdir tmpdir )
- ROOT_DIRS =
{ rootdir: "/", rootconfdir: "$rootdir/etc", rootexecdir: "$rootdir/usr", rootlibdir: "$rootdir/usr", rootconstdir: "$rootdir/usr/share", rootdocdir: "$rootconstdir", rootdatadir: "$rootdir/var" }
- SYSTEM_DIRS =
{ sysetcdir: "$rootconfdir", sysbindir: "$rootexecdir/bin", syssbindir: "$rootexecdir/sbin", syslibdir: "$rootlibdir/lib64", syslibexecdir: "$rootexecdir/libexec", syssharedir: "$rootconstdir", sysdocdir: "$syssharedir/doc", sysvardir: "$rootdatadir/lib", sysspooldir: "$rootdatadir/spool", sysrundir: "$rootdatadir/run", syslockdir: "$rootdatadir/lock", syscachedir: "$rootdatadir/cache", syslogdir: "$rootdatadir/log", systmpdir: "/tmp" # Always /tmp because of security }
- PACKAGE_DIRS =
{ pcketcdir: "$sysetcdir/$pckdir", pckbindir: "$sysbindir", # No package-specific directory pcksbindir: "$syssbindir", # No package-specific directory pcklibdir: "$syslibdir/$pckdir", pcklibexecdir: "$syslibexecdir/$pckdir", pcksharedir: "$syssharedir/$pckdir", pckdocdir: "$sysdocdir/$pckdir", pckvardir: "$sysvardir/$pckdir", pckspooldir: "$sysspooldir/$pckdir", pckrundir: "$sysrundir/$pckdir", pcklockdir: "$syslockdir/$pckdir", pckcachedir: "$syscachedir/$pckdir", pcklogdir: "$syslogdir/$pckdir", pcktmpdir: "$systmpdir/$pckdir" }
- INSTALL_DIRS =
ROOT_DIRS.merge SYSTEM_DIRS.merge PACKAGE_DIRS
- DEFAULTS =
{ "name" => "$(basename $PWD)", "summary" => "The $name RPM package", "version" => "$(cd ${{srcdir}} >/dev/null && git tag -l 2>/dev/null | sort -V | tail -1 | tr -dc '.0-9' || echo 0.0.0)", "description" => "$summary", "release" => "1", "license" => "GPL", "packager" => ::Qrpm.fullname, "currdir" => ".", # The directory from where the qrpm was run. Initialized by the client program "qrpmdir" => ".", # The directory containing the qrpm file. Initialized by the client program "srcdir" => ".", "pckdir" => "$name", "make" => nil }
- IDENT_RE =
/(?:[\w_][\w\d_]*)/
- PATH_RE =
/(?:[\w_][\w\d_.]*)/
- FILE_KEYS =
%w(name file symlink reflink perm)
- VERSION =
"0.6.0"
Class Method Summary collapse
-
.fullname ⇒ Object
Get full name of user, defaults to username ‘@’ hostname.
Instance Method Summary collapse
Class Method Details
.fullname ⇒ Object
Get full name of user, defaults to username ‘@’ hostname
3 4 5 6 7 8 9 |
# File 'lib/qrpm/utils.rb', line 3 def self.fullname s = Etc.getpwnam(ENV['USER'])&.gecos if s.nil? || s == "" s = "#{ENV['USER']}@#{ENV['HOSTNAME']}" end s end |
Instance Method Details
#abstract_method ⇒ Object
25 |
# File 'lib/qrpm.rb', line 25 def abstract_method = raise AbstractMethodError.new "Abstract method called" |
#render(dict, files) ⇒ Object
22 23 24 |
# File 'lib/qrpm/render.rb', line 22 def render(dict, files) end |