diff --git a/cave_commands/config b/cave_commands/config new file mode 100755 index 0000000..a0e0d5e --- /dev/null +++ b/cave_commands/config @@ -0,0 +1,183 @@ +#!/usr/bin/env ruby + +require 'Paludis' +require 'getoptlong' +require 'pathname' +require 'shellwords' +begin + require 'irb-pager' +rescue LoadError + STDERR.puts < 'Help', + %w[\1 \2 ...] => 'Select file via index', + %w[FILENAME] => 'Select file via filename', + %w[\list] => 'List all files need updates', + %w[\diff] => 'Displays difference of selected file', + %w[\accept \yes] => 'Accepts selected file', + %w[\reject \no] => 'Rejects selected file', + %w[\quit \exit] => 'Quit', + }) + puts + when *%w[d diff] + raise NoSelection unless selected + puts + IRB::Pager::pager( pager: 'less -R') { diff selected, found[selected][0] } + puts + when *%w[l list] + list_cfgs selected, list if selected + when *%w[a accept y yes] + raise NoSelection unless selected + accept_cfg selected, found[selected][0] + selected = nil + when *%w[r reject n no] + raise NoSelection unless selected + reject_cfg selected, found[selected][0] + selected = nil + when *%w[q quit e exit] then exit(0) + else + m = Pathname.new x + if f = found[m] + selected = m + else + raise UsageError, "Uknown command #{x}" + end + end + end + rescue UsageError + puts $! + end +end diff --git a/cave_commands/delete-unused-distfiles b/cave_commands/delete-unused-distfiles new file mode 100755 index 0000000..45fa0d1 --- /dev/null +++ b/cave_commands/delete-unused-distfiles @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +cave print-unused-distfiles | xargs -r rm -- diff --git a/cave_commands/print-package-path b/cave_commands/print-package-path new file mode 100755 index 0000000..366f585 --- /dev/null +++ b/cave_commands/print-package-path @@ -0,0 +1,37 @@ +#!/usr/bin/env ruby + +require 'Paludis' +require 'getoptlong' +require 'pathname' + +include Paludis + +class Object + def with &block + yield self + end + def self.with &block + yield self + end +end + +raise "Name of package expected." unless ARGV[0] + +Log.instance.with do |nst| + nst.log_level = LogLevel::Warning + nst.program_name = $0 +end + +env = EnvironmentFactory.instance.create '' +found = [] + +pkg = parse_user_package_dep_spec( ARGV[0], env, []).to_s + +env.repositories do |repo| + repo.package_ids pkg do |pid| + path = pid['EXHERES'] + found.push Pathname.new( path.parse_value).dirname if path + end +end +found.uniq! +puts found unless found.empty? diff --git a/deactived/print-package-path.sh b/deactived/print-package-path.sh new file mode 100755 index 0000000..c07edae --- /dev/null +++ b/deactived/print-package-path.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +exec cave print-id-metadata --raw-name EXHERES "$1" diff --git a/truckle b/truckle index 0cbd994..f615e41 100755 --- a/truckle +++ b/truckle @@ -393,10 +393,10 @@ EOF cmds, cave, s = @cmds, @cave, @shell # default: simple use cave - cmds.on &s.sudo {|*args| p on: args; cave.this(*args).() } + cmds.on &s.sudo {|*args| cave.this(*args).() } cmds.on :help, '-h', '--help', &s.pager { STDOUT.puts helptext } - cmds.on :sync, &s.sudo {|cmd,*args| cave.this(*args).() } + cmds.on :sync, :config, &s.sudo {|*args| cave.this(*args).() } cmds.on :search, :show, 'print-unused-distfiles', &s.sudo.pager {|*args| cave.this(*args).() } cmds.on :resolve, 'fix-linkage', &s.sudo.pager {|*args| cave.this(*args).() } cmds.on :remove, &s.sudo.pager {|cmd, *args| cave.uninstall(*args).()}