qrpm 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84aec760efd4d34c3de41e77edeeb5cc925ee195bea84243dad283c2ec50005e
4
- data.tar.gz: 99a8f384f3913952ce99ad80f0be8718d3cb4a91d882a5eb82675a5cc63b41b3
3
+ metadata.gz: 884bb9257c9679db9a55e792de02fe716fc777e8903b1ed003fed768bba51129
4
+ data.tar.gz: eebed25d75b50ae9f738afebadec366ae22307245be691449cce0ca48f3bab6f
5
5
  SHA512:
6
- metadata.gz: 7416eba4e7747d1fb5603d62a985671e2b8ba40c90d95636c737dbd1c998a3431d2ffeba919e5cff1575efe8dd88b3f43173bddf48e22a3de7cae2e5c30ed868
7
- data.tar.gz: 17108a42af16ffe022c72dda457d4d868e16e98a807e1e61296df1a9f2da02cf7a0ef3322334d04b30b85e782723587bad7b6bb15b537fc4d339fba1c14bc6ae
6
+ metadata.gz: a12688142eb50b64dbf59324d299f192421675279af2574be1fee9d6df5aba3b0272f9a4196d05dee64165be6ffc19f2769c7954a363e6c705b6b17849be5d93
7
+ data.tar.gz: bad940c0c5af97d5fa5ec5c809266765b0d3ecd5925a50c726544ea2cc15d7ba434926ba6c6e1b00918c002cfbcf2dd26f1409e93fa01b7bbfb7ffbfe0cac321
data/example.yml ADDED
@@ -0,0 +1,30 @@
1
+ # QRPM configuration file. See https://github.com/clrgit/qrpm
2
+
3
+ name: $pg_name-url_encode
4
+ summary: Adds the url_encode extension to postgres
5
+ description: RPM wrapper for the postgres url_encode extension (https://github.com/okbob/url_encode)
6
+ version: $(cd url_encode; git tag | tail -1 | sed 's/^v//')
7
+
8
+ requires:
9
+ - $pg_name-server
10
+ - $pg_name-libs
11
+
12
+ pg_name: $(rpm -q -qf '%{NAME}\n' -f $(readlink -f $(which pg_config)))
13
+ pg_version: $(pg_config --version | sed 's/^[^0-9]* \([0-9]\+\).*$/\1/')
14
+ pg_libdir: $(pg_config --libdir)
15
+ pg_extdir: $(pg_config --share)/extension
16
+
17
+ init:
18
+ - git submodule init
19
+ - git submodule update
20
+
21
+ make:
22
+ - cd url_encode; make
23
+
24
+ $pg_libdir:
25
+ - url_encode/src/url_encode.so
26
+
27
+ $pg_extdir:
28
+ - url_encode/url_encode.control
29
+ - url_encode/sql/url_encode--1.2.sql
30
+
data/exe/qrpm CHANGED
@@ -45,14 +45,16 @@ begin
45
45
  files
46
46
 
47
47
  -C,directory=EDIR
48
- Change to directory before doing anything else
48
+ Change to directory before doing anything else. Output files are still
49
+ created in the current directory, though
49
50
 
50
51
  -d,dump
51
- Dump internal data and exit
52
+ Dump internal data and exit. For debug
52
53
  )
53
54
 
54
- opts, args = ShellOpts.process(SPEC, ARGV)
55
+ opts, args = ShellOpts.process(SPEC, ARGV, verbose: true)
55
56
 
57
+ currdir = Dir.getwd
56
58
  Dir.chdir(opts.directory) if opts.directory?
57
59
 
58
60
  if opts.template?
@@ -61,7 +63,8 @@ begin
61
63
  exit
62
64
  end
63
65
 
64
- # Collect var=val settings in the dict hash and sets the configuration file
66
+ # Collect var=val settings into the dict hash and sets the configuration file
67
+ # if present
65
68
  dict = {}
66
69
  while arg = args.extract(0..1)
67
70
  if arg =~ /^(.*?)=(.*)$/
@@ -92,7 +95,7 @@ begin
92
95
  opts.force? || `git status --porcelain 2>/dev/null` == "" or raise "Repository is dirty"
93
96
 
94
97
  target = (opts.spec? ? :spec : (opts.source? ? :srpm : :rpm))
95
- rpm.build(target: target, file: opts.spec)
98
+ rpm.build(target: target, file: opts.spec, verbose: opts.verbose?, destdir: currdir)
96
99
 
97
100
  rescue RuntimeError => ex
98
101
  ShellOpts.error ex.message
data/lib/qrpm/parser.rb CHANGED
@@ -116,6 +116,25 @@ module Qrpm
116
116
  "logdir" => "/var/log"
117
117
  }
118
118
 
119
+ # TODO TODO TODO
120
+
121
+ # Expand shell expansions ($(shell command))
122
+ #
123
+ def expand_shell_commands(object)
124
+ case object
125
+ when Array; object.map { |e| expand_shell_commands(e) }
126
+ when Hash; object.map { |k,v| [k, expand_shell_commands(v)] }.to_h
127
+ when String;
128
+ puts object.scan(/\$\(([^\)]+)\)/)
129
+ object.scan(/\$\(([^\)]+)\)/)
130
+
131
+ when Integer, Float, true, false, nil; object
132
+ else
133
+ raise "Illegal object: #{object}"
134
+ end
135
+ end
136
+
137
+
119
138
  # Returns array of variables in the object. Variables can be either '$name' or
120
139
  # '${name}'. The variables are returned in left-to-right order
121
140
  #
data/lib/qrpm/rpm.rb CHANGED
@@ -43,15 +43,20 @@ module Qrpm
43
43
  def files() @files ||= nodes.select(&:file?) end
44
44
  def links() @lines ||= nodes.select(&:link?) end
45
45
 
46
- def has_configure?() ::File.exist? "configure" end
47
- def has_make?() ::File.exist? "make" end
46
+ def verbose?() @verbose end
48
47
 
49
- def initialize(fields, nodes, template: TEMPLATE)
48
+ def initialize(fields, nodes, template: TEMPLATE, verbose: false)
50
49
  @fields, @nodes = fields, nodes
51
50
  @template = template
51
+ @verbose = verbose
52
+ @verb = verbose ? "" : "&>/dev/null"
52
53
  end
53
54
 
54
- def build(target: :rpm, file: nil)
55
+ def has_configure?() ::File.exist? "configure" end
56
+ def has_make?() ::File.exist? "make" end
57
+
58
+ def build(target: :rpm, file: nil, verbose: false, destdir: ".")
59
+ verb = verbose ? "" : "&>/dev/null"
55
60
  Dir.mktmpdir { |rootdir|
56
61
  FileUtils.rm_rf(rootdir)
57
62
  FileUtils.mkdir_p(rootdir)
@@ -73,7 +78,7 @@ module Qrpm
73
78
  FileUtils.cp_r(".", tarroot, preserve: true)
74
79
 
75
80
  # Roll tarball and put it in the SOURCES directory
76
- system "tar zcf #{tar_path} -C #{rootdir}/tmp #{name}" or raise "Can't roll tarball"
81
+ system "tar zcf #{tar_path} -C #{rootdir}/tmp #{name} #{verb}" or raise "Can't roll tarball"
77
82
 
78
83
  # Remove temporary tar dir
79
84
  FileUtils.rm_rf tarroot
@@ -84,15 +89,15 @@ module Qrpm
84
89
 
85
90
  # Emit spec or build RPM
86
91
  if target == :spec
87
- IO.write(spec_file, @spec)
92
+ IO.write("#{destdir}/#{spec_file}", @spec)
88
93
  else
89
94
  IO.write(spec_path, @spec)
90
- system "rpmbuild -v -ba --define \"_topdir #{rootdir}\" #{rootdir}/SPECS/#{name}.spec" or
91
- raise "Failed building RPM file"
95
+ system "rpmbuild -v -ba --define \"_topdir #{rootdir}\" #{rootdir}/SPECS/#{name}.spec #{verb}" or
96
+ raise "Failed building RPM file. Re-run with -v option to see errors"
92
97
  if target == :srpm
93
- system "cp #{rootdir}/SRPMS/* ." or raise "Failed copying SRPM file"
98
+ system "cp #{rootdir}/SRPMS/* #{destdir}" or raise "Failed copying SRPM file"
94
99
  elsif target == :rpm
95
- system "cp #{rootdir}/RPMS/*/#{name}-[0-9]* ." or raise "Failed copying RPM file"
100
+ system "cp #{rootdir}/RPMS/*/#{name}-[0-9]* #{destdir}" or raise "Failed copying RPM file"
96
101
  else
97
102
  raise ArgumentError, "Not a valid value for :target - #{target.inspect}"
98
103
  end
data/lib/qrpm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Qrpm
4
- VERSION = "0.0.3"
4
+ VERSION = "0.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qrpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-03 00:00:00.000000000 Z
11
+ date: 2022-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shellopts
@@ -55,6 +55,7 @@ files:
55
55
  - bin/setup
56
56
  - clean
57
57
  - cmd
58
+ - example.yml
58
59
  - example/bin/a_file
59
60
  - example/bin/another_file
60
61
  - example/qrpm.yml