summaryrefslogtreecommitdiff
path: root/Tools/scripts/plist
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/scripts/plist')
-rwxr-xr-xTools/scripts/plist149
1 files changed, 0 insertions, 149 deletions
diff --git a/Tools/scripts/plist b/Tools/scripts/plist
deleted file mode 100755
index e092b158bf13..000000000000
--- a/Tools/scripts/plist
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/usr/local/bin/ruby
-# pkg-plist generator by Brian Fundakowski Feldman <green@FreeBSD.org>
-# (public domain)
-# $FreeBSD$
-
-class Plist
- def initialize(no_manpages = true, mtree = [])
- @no_manpages = no_manpages
- @mtree = mtree
- self
- end
- def make(dir)
- @root = dir.to_s + '/'
- imake('', 0, '')
- end
- private
- def imake(dir, level, prevwd)
- thiswd = prevwd + dir # always ends in '/'
- rootedwd = @root + thiswd
- subs = []
- Dir.foreach(rootedwd) {|dirent|
- next if dirent =~ /^\.\.?$/
- if test(?d, rootedwd + dirent)
- subs.concat(imake(dirent + '/', level + 1, thiswd))
- else
- if thiswd !~ /^man\// || !@no_manpages
- subs.push(thiswd + dirent)
- end
- end
- }
- thiswd.chop!
- # Strip mtree-created directories
- if level > 0 && !@mtree.find {|x| x == thiswd}
- subs.push('@dirrm ' + thiswd)
- end
- return subs
- end
-end
-
-class Mtree
- def initialize(strip = 1)
- @paths = []
- @curlevel = []
- @strip = strip.to_i
- @curline = ''
- @global_settings = {}
- self
- end
- def parse_line(line)
- line.chomp!
- if line.empty? || line[0, 1] == '#'
- return
- end
- if line[-1, 1] == "\\"
- @curline.concat(line[0..-2])
- return
- end
- line = @curline + line
- @curline = ''
- case line[/\S.+/]
- when /^\/(\S+)/
- case $1
- when 'set'
- $'.split.each {|setting|
- key, value, = setting.split(/=/)
- @global_settings[key] = value
- }
- when 'unset'
- $'.split.each {|setting| @global_settings.delete(setting)}
- else
- raise "invalid command \"#{$1}\""
- end
- when '..'
- if @curlevel.pop.nil?
- raise '".." with no previous directory'
- end
- else
- spline = line.split()
- path = spline[0]
- settings = @global_settings.dup
- if spline.size > 1
- spline[1..-1].each {|setting|
- key, value, = setting.split(/=/)
- settings[key] = value
- }
- end
- @paths.push(@curlevel + [path])
- if settings['type'] == nil || settings['type'] == 'dir'
- @curlevel.push(path)
- end
- end
- self
- end
- def Mtree.read(filename)
- m = Mtree.new
- open(filename, 'r') {|file|
- file.each_line {|line| m.parse_line(line)}
- }
- m
- end
- def paths(strip = @strip)
- @paths.collect {|path| path[strip..-1].join('/')}
- end
-end
-
-if __FILE__ == $0
- def usage
- $stderr.print <<-USAGE_EOF
-usage: #{$0} [-Md] [-m mtree] somepath
- Generate a pkg-plist to stdout given a previously empty somepath which
- a port has been installed into (PREFIX=somepath). The mtree file is
- consulted to prevent base directories from being added to the plist.
- The -M argument allows manpages to be added to the plist.
- The -d argument puts all @dirrm commands at the end of the plist.
-USAGE_EOF
- exit 1
- end
-
- require 'optparse'
-
- begin
- params = ARGV.getopts('Md', 'm:')
- rescue OptionParser::ParseError => e
- $stderr.puts e
- usage
- end
- if ARGV.size != 1
- usage
- end
- mtree = params['m'] || '/etc/mtree/BSD.local.dist'
- pl = Plist.new(!params['M'], Mtree.read(mtree).paths).make(ARGV[0])
- if params['d']
- plnotdirrm = []
- pldirrm = []
- pl.each {|ent|
- if ent =~ /^@dirrm /
- pldirrm.push(ent)
- else
- plnotdirrm.push(ent)
- end
- plnotdirrm.sort!
- pldirrm.sort!
- pl = plnotdirrm + pldirrm.reverse
- }
- else
- pl.sort!
- end
- puts(pl.join("\n"))
-end