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

Instance Method Summary collapse

Class Method Details

.fullnameObject

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_methodObject



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