Hello community, here is the log from the commit of package machinery for openSUSE:Factory checked in at 2017-06-22 11:21:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/machinery (Old) and /work/SRC/openSUSE:Factory/.machinery.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "machinery" Thu Jun 22 11:21:25 2017 rev:13 rq:504998 version:1.22.3 Changes: -------- --- /work/SRC/openSUSE:Factory/machinery/machinery.changes 2017-05-03 15:56:46.559733842 +0200 +++ /work/SRC/openSUSE:Factory/.machinery.new/machinery.changes 2017-06-22 11:21:27.038430212 +0200 @@ -1,0 +2,10 @@ +Tue Jun 20 10:56:18 CEST 2017 - thard...@suse.de + +- update to version 1.22.3 + * Gracefully handle incorrect filter pathes in the experimental filtering function + * Error handling for disrupted ssh connection while inspecting + * Fix resetting of scroll bar after clicking on button "inspection details" +- add support for HAML gems >= 5.0 (bnc#1043785) +- add support for Sinatra gems >= 2.0 + +------------------------------------------------------------------- Old: ---- machinery-tool-1.22.2.gem New: ---- machinery-tool-1.22.3.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ machinery.spec ++++++ --- /var/tmp/diff_new_pack.RXy1Vr/_old 2017-06-22 11:21:27.642345078 +0200 +++ /var/tmp/diff_new_pack.RXy1Vr/_new 2017-06-22 11:21:27.646344513 +0200 @@ -1,7 +1,7 @@ # # spec file for package machinery # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: machinery -Version: 1.22.2 +Version: 1.22.3 Release: 0 %define binary_name machinery %define mod_name machinery-tool @@ -29,7 +29,7 @@ # openSUSE Factory %define bundlegems 0 %else -# SLES12, openSUSE 13.1/13.2/Leap +# SLES12, openSUSE Leap # LEAP has the suse_Version 1315 %define bundlegems 1 %endif @@ -43,7 +43,6 @@ %endif BuildRequires: fdupes BuildRequires: ruby-macros >= 5 -%if %suse_version > 1310 %define rb_build_versions %{rb_default_ruby} BuildRequires: %{rubydevel} BuildRequires: %{rubygem bundler} @@ -59,17 +58,13 @@ BuildRequires: %{rubygem diffy >= 3.0} BuildRequires: %{rubygem gli < 3} BuildRequires: %{rubygem gli >= 2.11} -BuildRequires: %{rubygem haml < 5} BuildRequires: %{rubygem haml >= 4.0} -BuildRequires: %{rubygem json < 2} -BuildRequires: %{rubygem json >= 1.8} BuildRequires: %{rubygem json-schema < 2.3} BuildRequires: %{rubygem json-schema >= 2.2.4} BuildRequires: %{rubygem kramdown < 2} BuildRequires: %{rubygem kramdown >= 1.3} BuildRequires: %{rubygem mimemagic < 1} BuildRequires: %{rubygem mimemagic >= 0.3} -BuildRequires: %{rubygem sinatra < 2} BuildRequires: %{rubygem sinatra >= 1.4} BuildRequires: %{rubygem tilt < 3} BuildRequires: %{rubygem tilt >= 2.0} @@ -84,50 +79,17 @@ Requires: %{rubygem diffy >= 3.0} Requires: %{rubygem gli < 3} Requires: %{rubygem gli >= 2.11} -Requires: %{rubygem haml < 5} Requires: %{rubygem haml >= 4.0} -Requires: %{rubygem json < 2} -Requires: %{rubygem json >= 1.8} Requires: %{rubygem json-schema < 2.3} Requires: %{rubygem json-schema >= 2.2.4} Requires: %{rubygem kramdown < 2} Requires: %{rubygem kramdown >= 1.3} Requires: %{rubygem mimemagic < 1} Requires: %{rubygem mimemagic >= 0.3} -Requires: %{rubygem sinatra < 2} Requires: %{rubygem sinatra >= 1.4} Requires: %{rubygem tilt < 3} Requires: %{rubygem tilt >= 2.0} %endif -%else -BuildRequires: ruby-devel -BuildRequires: rubygem(abstract_method) < 2 -BuildRequires: rubygem(abstract_method) >= 1.2 -BuildRequires: rubygem(builder) < 4 -BuildRequires: rubygem(builder) >= 3.2 -BuildRequires: rubygem(bundler) -BuildRequires: rubygem(cheetah) < 1 -BuildRequires: rubygem(cheetah) >= 0.4 -BuildRequires: rubygem(diffy) < 4 -BuildRequires: rubygem(diffy) >= 3.0 -BuildRequires: rubygem(gem2rpm) -BuildRequires: rubygem(gli) < 3 -BuildRequires: rubygem(gli) >= 2.11 -BuildRequires: rubygem(haml) < 5 -BuildRequires: rubygem(haml) >= 4.0 -BuildRequires: rubygem(json) < 2 -BuildRequires: rubygem(json) >= 1.8 -BuildRequires: rubygem(json-schema) < 2.3 -BuildRequires: rubygem(json-schema) >= 2.2.4 -BuildRequires: rubygem(kramdown) < 2 -BuildRequires: rubygem(kramdown) >= 1.3 -BuildRequires: rubygem(mimemagic) < 1 -BuildRequires: rubygem(mimemagic) >= 0.3 -BuildRequires: rubygem(sinatra) < 2 -BuildRequires: rubygem(sinatra) >= 1.4 -BuildRequires: rubygem(tilt) < 3 -BuildRequires: rubygem(tilt) >= 2.0 -%endif # Disable autogenerating "Requires:" headers for bundled gems. %define __requires_exclude ^rubygem Requires: ruby >= 2.0 @@ -170,17 +132,14 @@ cat > Gemfile <<EOT gem "cheetah", "~> 0.4" -%if %suse_version <= 1310 -gem "json", "~> 1.8" -%endif gem "abstract_method", "~> 1.2" gem "builder", "~> 3.2" gem "gli", "~> 2.11" gem "json-schema", "~> 2.2.4" -gem "haml", "~> 4.0" +gem "haml", ">= 4.0" gem "kramdown", "~> 1.3" gem "tilt", "~> 2.0" -gem "sinatra", "~> 1.4" +gem "sinatra", ">= 1.4" gem "mimemagic", "~> 0.3" gem "diffy", "~> 3.0" EOT @@ -230,9 +189,7 @@ %{_libdir}/ruby/gems/%{rb_ver}/cache/%{mod_full_name}.gem %{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/ -%if %suse_version > 1310 %{_libdir}/ruby/gems/%{rb_ver}/extensions/ -%endif %{_libdir}/ruby/gems/%{rb_ver}/specifications/%{mod_full_name}.gemspec %{_mandir}/man1/*.1.gz %doc COPYING NEWS ++++++ machinery-tool-1.22.2.gem -> machinery-tool-1.22.3.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.git_revision new/.git_revision --- old/.git_revision 2016-11-16 16:44:52.000000000 +0100 +++ new/.git_revision 2017-06-20 10:51:52.000000000 +0200 @@ -1 +1 @@ -5544d3469a45c0bf15d3263bc1bbbd32afb7f274 \ No newline at end of file +167aca702b5ff5775557ae8df47026e67035f8e7 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NEWS new/NEWS --- old/NEWS 2016-11-16 16:44:52.000000000 +0100 +++ new/NEWS 2017-06-20 10:51:52.000000000 +0200 @@ -1,6 +1,15 @@ # Machinery Release Notes +## Version 1.22.3 - Tue Jun 20 10:56:18 CEST 2017 - thard...@suse.de + +* Gracefully handle incorrect filter pathes in the experimental filtering function + (gh#SUSE/machinery#2189) +* Error handling for disrupted ssh connection while inspecting + (gh#SUSE/machinery#2090) +* Fix resetting of scroll bar after clicking on button "inspection details" + (gh#SUSE/machinery#1901) + ## Version 1.22.2 - Wed Nov 16 16:44:00 CET 2016 - thard...@suse.de * Prevent machinery-helper from crashing when files are inaccessible during diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bin/machinery new/bin/machinery --- old/bin/machinery 2016-11-16 16:44:52.000000000 +0100 +++ new/bin/machinery 2017-06-20 10:51:52.000000000 +0200 @@ -23,7 +23,7 @@ if Dir.exist?(File.join(Machinery::ROOT, ".git")) begin Dir.chdir(File.join(Machinery::ROOT, "machinery-helper")) do - Cheetah.run("rake", "build") + Cheetah.run("rake", "build", stdout: STDOUT, stderr: STDERR) end rescue STDERR.puts( Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html/index.html.haml new/html/index.html.haml --- old/html/index.html.haml 2016-11-16 16:44:52.000000000 +0100 +++ new/html/index.html.haml 2017-06-20 10:51:52.000000000 +0200 @@ -75,7 +75,7 @@ :class => nav_class(scope) } %span= scope_initials(scope) .col-xs-2 - %a.btn.btn-default.inspection_details{ :href => "#", "data-toggle" => "popover" } + %a.btn.btn-default.inspection_details{ "data-toggle" => "popover" } inspection details .col-xs-2 %small.pull-right diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/exceptions.rb new/lib/exceptions.rb --- old/lib/exceptions.rb 2016-11-16 16:44:52.000000000 +0100 +++ new/lib/exceptions.rb 2017-06-20 10:51:52.000000000 +0200 @@ -170,7 +170,9 @@ class BinaryDiffError < MachineryError; end class SshConnectionFailed < MachineryError; end + class SshConnectionDisrupted < MachineryError; end class RsyncFailed < MachineryError; end + class WrongFilterPath < MachineryError; end class OpenInBrowserFailed < MachineryError; end class ZypperFailed < MachineryError; end class UnknownConfig < MachineryError; end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/filter.rb new/lib/filter.rb --- old/lib/filter.rb 2016-11-16 16:44:52.000000000 +0100 +++ new/lib/filter.rb 2017-06-20 10:51:52.000000000 +0200 @@ -151,7 +151,13 @@ container = nil steps.each do |step| break unless pointer - pointer = pointer[step] + begin + pointer = pointer[step] + rescue TypeError + raise Machinery::Errors::WrongFilterPath.new( + "Error: Check if the path: '#{path}' is correct." + ) + end container ||= pointer if pointer.is_a?(Machinery::Array) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/remote_system.rb new/lib/remote_system.rb --- old/lib/remote_system.rb 2016-11-16 16:44:52.000000000 +0100 +++ new/lib/remote_system.rb 2017-06-20 10:51:52.000000000 +0200 @@ -94,7 +94,16 @@ "LogLevel=ERROR", sudo, "LANGUAGE=", "LC_ALL=#{locale}", *piped_args, options ].compact.flatten - cheetah_class.run(*cmds) + begin + cheetah_class.run(*cmds) + rescue Cheetah::ExecutionFailed => e + ssh_error_regex = /Connection refused|Connection reset by peer|Broken pipe|Network is unreachable/ + if e.stderr && e.stderr =~ ssh_error_regex + raise Machinery::Errors::SshConnectionDisrupted.new("\nSSH ERROR: #{e.stderr}") + else + raise + end + end end # Retrieves files specified in filelist from the remote system and raises an diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/version.rb new/lib/version.rb --- old/lib/version.rb 2016-11-16 16:44:52.000000000 +0100 +++ new/lib/version.rb 2017-06-20 10:51:52.000000000 +0200 @@ -17,6 +17,6 @@ module Machinery - VERSION = "1.22.2" + VERSION = "1.22.3" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/machinery-helper/version.go new/machinery-helper/version.go --- old/machinery-helper/version.go 2016-11-16 16:44:52.000000000 +0100 +++ new/machinery-helper/version.go 2017-06-20 10:51:52.000000000 +0200 @@ -2,4 +2,4 @@ package main -const VERSION = "5544d3469a45c0bf15d3263bc1bbbd32afb7f274" +const VERSION = "167aca702b5ff5775557ae8df47026e67035f8e7" Binary files old/man/generated/machinery.1.gz and new/man/generated/machinery.1.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/docs/machinery.ymp new/manual/docs/machinery.ymp --- old/manual/docs/machinery.ymp 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/docs/machinery.ymp 2017-06-20 10:51:52.000000000 +0200 @@ -1,58 +1,13 @@ <metapackage xmlns:os="http://opensuse.org/Standards/One_Click_Install" xmlns="http://opensuse.org/Standards/One_Click_Install"> - <!-- openSUSE 13.1 --> - <group distversion="openSUSE 13.1"> - <repositories> - <repository recommended="true"> - <name>systemsmanagement:machinery</name> - <summary>Machinery systems management toolkit</summary> - <description>Machinery is a systems management toolkit for Linux. It supports configuration -discovery, system validation, and service migration. It's based on the idea of a -universal system description.</description> - <url>http://download.opensuse.org/repositories/systemsmanagement:/machinery/openSUSE_13.1/</url> - </repository> - <repository recommended="true"> - <name>devel:languages:ruby:backports</name> - <summary>Helper project for devel:languages:ruby:extensions - providing fixed rpm and macros</summary> - <description>This project aims to provide the latest version of the ruby macros</description> - <url>http://download.opensuse.org/repositories/devel:/languages:/ruby:/backports/openSUSE_13.1/</url> - </repository> - <repository recommended="false"> - <name>openSUSE:13.1</name> - <summary>Official 13.1 openSUSE distribution</summary> - <description>This project builds the official 13.1 openSUSE distribution. - -Have a look at http://en.opensuse.org/Portal:13.1 for more details.</description> - <url>http://download.opensuse.org/distribution/13.1/repo/oss/</url> - </repository> - </repositories> - <software> - <item> - <name>machinery</name> - <summary>Systems management toolkit</summary> - <description>Machinery is a systems management toolkit for Linux. It supports configuration -discovery, system validation, and service migration. It's based on the idea of a -universal system description.</description> - </item> - </software> - </group> - - <!-- openSUSE 13.2 --> - <group distversion="openSUSE 13.2"> + <!-- openSUSE Leap 42.1 --> + <group distversion="openSUSE Leap 42.1"> <repositories> - <repository recommended="true"> - <name>systemsmanagement:machinery</name> - <summary>Machinery systems management toolkit</summary> - <description>Machinery is a systems management toolkit for Linux. It supports configuration -discovery, system validation, and service migration. It's based on the idea of a -universal system description.</description> - <url>http://download.opensuse.org/repositories/systemsmanagement:/machinery/openSUSE_13.2/</url> - </repository> <repository recommended="false"> - <name>openSUSE:13.2</name> - <summary>Test setup for 13.2</summary> - <description>This is really just a snapshot of Factory, but we need it to adapt the tools to later test and accept requests to it.</description> - <url>http://download.opensuse.org/distribution/13.2/repo/oss/</url> + <name>openSUSE Leap 42.1</name> + <summary>Test setup for openSUSE Leap 42.1</summary> + <description></description> + <url>http://download.opensuse.org/distribution/leap/42.1/repo/oss/</url> </repository> </repositories> <software> @@ -66,14 +21,14 @@ </software> </group> - <!-- openSUSE Leap --> - <group distversion="openSUSE Leap 42.1"> + <!-- openSUSE Leap 42.2 --> + <group distversion="openSUSE Leap 42.2"> <repositories> <repository recommended="false"> - <name>openSUSE Leap 42.1</name> - <summary>Test setup for openSUSE Leap 42.1</summary> + <name>openSUSE Leap 42.2</name> + <summary>Test setup for openSUSE Leap 42.2</summary> <description></description> - <url>http://download.opensuse.org/distribution/leap/42.1/repo/oss/</url> + <url>http://download.opensuse.org/distribution/leap/42.2/repo/oss/</url> </repository> </repositories> <software> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/base.html new/manual/site/base.html --- old/manual/site/base.html 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/base.html 1970-01-01 01:00:00.000000000 +0100 @@ -1,42 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"/> - <link href="{{ base_url }}/custom.css" rel="stylesheet"> - </head> - <body id="manpage"> - <div id="back"> - <a href="{{ base_url }}"> - <img src="../hand3.png" class="hand3"/> - <div class="goback">Go back to the web site</div> - </a> - </div> - <div class="mp"> - <div class="nav"> - <ul> - {% for nav_item in nav %} - {% if nav_item.children %} - <li>{{ nav_item.title }} - <ul> - {% for nav_item in nav_item.children %} - <li class="{% if nav_item.active%}current{%endif%}"> - <a href="{{ nav_item.url }}">{{ nav_item.title }}</a> - </li> - {% endfor %} - </ul> - </li> - {% else %} - <li class="{% if nav_item.active%}current{%endif%}"> - <a href="{{ nav_item.url }}">{{ nav_item.title }}</a> - </li> - {% endif %} - - {% endfor %} - </ul> - </div> - <div class="content"> - {{ content }} - </div> - </div> - </body> -</html> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/machinery-inspect-docker.1/index.html new/manual/site/machinery-inspect-docker.1/index.html --- old/manual/site/machinery-inspect-docker.1/index.html 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/machinery-inspect-docker.1/index.html 1970-01-01 01:00:00.000000000 +0100 @@ -1,242 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"/> - <link href="../custom.css" rel="stylesheet"> - </head> - <body id="manpage"> - <div id="back"> - <a href=".."> - <img src="../hand3.png" class="hand3"/> - <div class="goback">Go back to the web site</div> - </a> - </div> - <div class="mp"> - <div class="nav"> - <ul> - - - <li class=""> - <a href="../docs/">Welcome</a> - </li> - - - - - <li>Home - <ul> - - <li class=""> - <a href="../machinery_main_general.1/">General</a> - </li> - - <li class=""> - <a href="../machinery_main_scopes.1/">Scopes</a> - </li> - - <li class=""> - <a href="../machinery_main_usecases.1/">Use cases</a> - </li> - - <li class=""> - <a href="../machinery_security_implications.1/">Security Implications</a> - </li> - - </ul> - </li> - - - - - <li>Commands - <ul> - - <li class=""> - <a href="../machinery-analyze.1/">Analyze</a> - </li> - - <li class=""> - <a href="../machinery-build.1/">Build</a> - </li> - - <li class=""> - <a href="../machinery-compare.1/">Compare</a> - </li> - - <li class=""> - <a href="../machinery-config.1/">Config</a> - </li> - - <li class=""> - <a href="../machinery-copy.1/">Copy</a> - </li> - - <li class=""> - <a href="../machinery-deploy.1/">Deploy</a> - </li> - - <li class=""> - <a href="../machinery-export-autoyast.1/">Export AutoYaST</a> - </li> - - <li class=""> - <a href="../machinery-export-kiwi.1/">Export Kiwi</a> - </li> - - <li class=""> - <a href="../machinery-inspect.1/">Inspect</a> - </li> - - <li class="current"> - <a href="./">Inspect Docker</a> - </li> - - <li class=""> - <a href="../machinery-list.1/">List</a> - </li> - - <li class=""> - <a href="../machinery-man.1/">Man</a> - </li> - - <li class=""> - <a href="../machinery-move.1/">Move</a> - </li> - - <li class=""> - <a href="../machinery-remove.1/">Remove</a> - </li> - - <li class=""> - <a href="../machinery-serve.1/">Serve</a> - </li> - - <li class=""> - <a href="../machinery-show.1/">Show</a> - </li> - - <li class=""> - <a href="../machinery-upgrade-format.1/">Upgrade Format</a> - </li> - - <li class=""> - <a href="../machinery-validate.1/">Validate</a> - </li> - - </ul> - </li> - - - - </ul> - </div> - <div class="content"> - <h1 id="inspect-container-inspect-container">inspect-container — Inspect Container</h1> -<h2 id="synopsis">SYNOPSIS</h2> -<p><code>machinery inspect-container</code> [OPTIONS] IMAGENAME</p> -<p><code>machinery inspect-container</code> [OPTIONS] IMAGEID</p> -<p><code>machinery</code> help inspect-container</p> -<h2 id="description">DESCRIPTION</h2> -<p>The <code>inspect-container</code> command inspects a container image. It creates and starts the container from the provided image before inspection -and generates a system description from the gathered data. After the inspection the container will be killed and removed again. -This approach ensures that no containers and images are affected by the inspection.</p> -<p>Right now the container inspection only supports Docker images.</p> -<p>The system data is structured into scopes, controlled by the -<code>--scope</code> option.</p> -<p><strong>Note</strong>: -Machinery will always inspect all specified scopes, and skip scopes which -trigger errors.</p> -<h2 id="arguments">ARGUMENTS</h2> -<ul> -<li><code>IMAGENAME / IMAGEID</code> (required): - The name or id of the image to be inspected. The provided name or id will also be - used as the name of the stored system description unless another name is - provided with the <code>--name</code> option.</li> -</ul> -<h2 id="options">OPTIONS</h2> -<ul> -<li> -<p><code>-n NAME</code>, <code>--name=NAME</code> (optional): - Store the system description under the specified name.</p> -</li> -<li> -<p><code>-s SCOPE</code>, <code>--scope=SCOPE</code> (optional): - Inspect image for specified scope. - See the <a href="#Scopes">Scope section</a> for more information.</p> -</li> -<li> -<p><code>-e SCOPE</code>, <code>--ignore-scope=IGNORE-SCOPE</code> (optional): - Inspect image for all scopes except the specified scope. - See the <a href="#Scopes">Scope section</a> for more information.</p> -</li> -<li> -<p><code>-x</code>, <code>--extract-files</code> (optional): - Extract changed configuration and unmanaged files from the inspected container. - Shortcut for the combination of <code>--extract-changed-config-files</code>, - <code>--extract-unmanaged-files</code>, and <code>--extract-changed-managed-files</code></p> -</li> -<li> -<p><code>--extract-changed-config-files</code> (optional): - Extract changed configuration files from the inspected image.</p> -</li> -<li> -<p><code>--extract-unmanaged-files</code> (optional): - Extract unmanaged files from the inspected image.</p> -</li> -<li> -<p><code>--extract-changed-managed-files</code> (optional): - Extract changed managed files from inspected image.</p> -</li> -<li> -<p><code>--skip-files</code> (optional): - Do not consider given files or directories during inspection. Either provide - one file or directory name or a list of names separated by commas. You can - also point to a file which contains a list of files to filter (one per line) - by adding an '@' before the path, e.g.</p> -<p>$ <code>machinery</code> inspect-container --skip-files=@/path/to/filter_file myimage</p> -<p>If a filename contains a comma it needs to be escaped, e.g.</p> -<p>$ <code>machinery</code> inspect-container --skip-files=/file\,with_comma myimage</p> -<p><strong>Note</strong>: File or directory names are not expanded, e.g. '../path' is taken - literally and not expanded.</p> -</li> -<li> -<p><code>--verbose</code> (optional): - Display the filters which are used during inspection.</p> -</li> -</ul> -<h2 id="prerequisites">PREREQUISITES</h2> -<ul> -<li> -<p>Inspecting a container requires an image specified by the name or id.</p> -</li> -<li> -<p>The image to be inspected needs to have the following commands:</p> -<ul> -<li><code>rpm</code> or <code>dpkg</code></li> -<li><code>zypper</code>, <code>yum</code> or <code>apt-cache</code></li> -<li><code>rsync</code></li> -<li><code>cat</code></li> -<li><code>sed</code></li> -<li><code>find</code></li> -</ul> -</li> -</ul> -<h2 id="examples">EXAMPLES</h2> -<ul> -<li> -<p>Inspect Docker container <code>myimage</code> and save system description under name 'MyContainer':</p> -<p>$ <code>machinery</code> inspect-container --name=MyContainer myimage</p> -</li> -<li> -<p>Inspect Docker container <code>076f46c1bef1</code> and save system description under name 'MySecondContainer':</p> -<p>$ <code>machinery</code> inspect-container --name=MySecondContainer 076f46c1bef1</p> -</li> -<li> -<p>Extract changed managed files and save them:</p> -<p>$ <code>machinery</code> inspect-container --scope=changed-managed-files --extract-files myimage</p> -</li> -</ul> - </div> - </div> - </body> -</html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/machinery.ymp new/manual/site/machinery.ymp --- old/manual/site/machinery.ymp 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/machinery.ymp 2017-06-20 10:51:52.000000000 +0200 @@ -1,58 +1,13 @@ <metapackage xmlns:os="http://opensuse.org/Standards/One_Click_Install" xmlns="http://opensuse.org/Standards/One_Click_Install"> - <!-- openSUSE 13.1 --> - <group distversion="openSUSE 13.1"> - <repositories> - <repository recommended="true"> - <name>systemsmanagement:machinery</name> - <summary>Machinery systems management toolkit</summary> - <description>Machinery is a systems management toolkit for Linux. It supports configuration -discovery, system validation, and service migration. It's based on the idea of a -universal system description.</description> - <url>http://download.opensuse.org/repositories/systemsmanagement:/machinery/openSUSE_13.1/</url> - </repository> - <repository recommended="true"> - <name>devel:languages:ruby:backports</name> - <summary>Helper project for devel:languages:ruby:extensions - providing fixed rpm and macros</summary> - <description>This project aims to provide the latest version of the ruby macros</description> - <url>http://download.opensuse.org/repositories/devel:/languages:/ruby:/backports/openSUSE_13.1/</url> - </repository> - <repository recommended="false"> - <name>openSUSE:13.1</name> - <summary>Official 13.1 openSUSE distribution</summary> - <description>This project builds the official 13.1 openSUSE distribution. - -Have a look at http://en.opensuse.org/Portal:13.1 for more details.</description> - <url>http://download.opensuse.org/distribution/13.1/repo/oss/</url> - </repository> - </repositories> - <software> - <item> - <name>machinery</name> - <summary>Systems management toolkit</summary> - <description>Machinery is a systems management toolkit for Linux. It supports configuration -discovery, system validation, and service migration. It's based on the idea of a -universal system description.</description> - </item> - </software> - </group> - - <!-- openSUSE 13.2 --> - <group distversion="openSUSE 13.2"> + <!-- openSUSE Leap 42.1 --> + <group distversion="openSUSE Leap 42.1"> <repositories> - <repository recommended="true"> - <name>systemsmanagement:machinery</name> - <summary>Machinery systems management toolkit</summary> - <description>Machinery is a systems management toolkit for Linux. It supports configuration -discovery, system validation, and service migration. It's based on the idea of a -universal system description.</description> - <url>http://download.opensuse.org/repositories/systemsmanagement:/machinery/openSUSE_13.2/</url> - </repository> <repository recommended="false"> - <name>openSUSE:13.2</name> - <summary>Test setup for 13.2</summary> - <description>This is really just a snapshot of Factory, but we need it to adapt the tools to later test and accept requests to it.</description> - <url>http://download.opensuse.org/distribution/13.2/repo/oss/</url> + <name>openSUSE Leap 42.1</name> + <summary>Test setup for openSUSE Leap 42.1</summary> + <description></description> + <url>http://download.opensuse.org/distribution/leap/42.1/repo/oss/</url> </repository> </repositories> <software> @@ -66,14 +21,14 @@ </software> </group> - <!-- openSUSE Leap --> - <group distversion="openSUSE Leap 42.1"> + <!-- openSUSE Leap 42.2 --> + <group distversion="openSUSE Leap 42.2"> <repositories> <repository recommended="false"> - <name>openSUSE Leap 42.1</name> - <summary>Test setup for openSUSE Leap 42.1</summary> + <name>openSUSE Leap 42.2</name> + <summary>Test setup for openSUSE Leap 42.2</summary> <description></description> - <url>http://download.opensuse.org/distribution/leap/42.1/repo/oss/</url> + <url>http://download.opensuse.org/distribution/leap/42.2/repo/oss/</url> </repository> </repositories> <software> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/machinery_security_implications.1/index.html new/manual/site/machinery_security_implications.1/index.html --- old/manual/site/machinery_security_implications.1/index.html 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/machinery_security_implications.1/index.html 1970-01-01 01:00:00.000000000 +0100 @@ -1,223 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"/> - <link href="../custom.css" rel="stylesheet"> - </head> - <body id="manpage"> - <div id="back"> - <a href=".."> - <img src="../hand3.png" class="hand3"/> - <div class="goback">Go back to the web site</div> - </a> - </div> - <div class="mp"> - <div class="nav"> - <ul> - - - <li class=""> - <a href="../docs/">Welcome</a> - </li> - - - - - <li>Home - <ul> - - <li class=""> - <a href="../machinery_main_general.1/">General</a> - </li> - - <li class=""> - <a href="../machinery_main_scopes.1/">Scopes</a> - </li> - - <li class=""> - <a href="../machinery_main_usecases.1/">Use cases</a> - </li> - - <li class="current"> - <a href="./">Security Implications</a> - </li> - - </ul> - </li> - - - - - <li>Commands - <ul> - - <li class=""> - <a href="../machinery-analyze.1/">Analyze</a> - </li> - - <li class=""> - <a href="../machinery-build.1/">Build</a> - </li> - - <li class=""> - <a href="../machinery-compare.1/">Compare</a> - </li> - - <li class=""> - <a href="../machinery-config.1/">Config</a> - </li> - - <li class=""> - <a href="../machinery-copy.1/">Copy</a> - </li> - - <li class=""> - <a href="../machinery-deploy.1/">Deploy</a> - </li> - - <li class=""> - <a href="../machinery-export-autoyast.1/">Export AutoYaST</a> - </li> - - <li class=""> - <a href="../machinery-export-kiwi.1/">Export Kiwi</a> - </li> - - <li class=""> - <a href="../machinery-inspect.1/">Inspect</a> - </li> - - <li class=""> - <a href="../machinery-inspect-docker.1/">Inspect Docker</a> - </li> - - <li class=""> - <a href="../machinery-list.1/">List</a> - </li> - - <li class=""> - <a href="../machinery-man.1/">Man</a> - </li> - - <li class=""> - <a href="../machinery-move.1/">Move</a> - </li> - - <li class=""> - <a href="../machinery-remove.1/">Remove</a> - </li> - - <li class=""> - <a href="../machinery-serve.1/">Serve</a> - </li> - - <li class=""> - <a href="../machinery-show.1/">Show</a> - </li> - - <li class=""> - <a href="../machinery-upgrade-format.1/">Upgrade Format</a> - </li> - - <li class=""> - <a href="../machinery-validate.1/">Validate</a> - </li> - - </ul> - </li> - - - - </ul> - </div> - <div class="content"> - <h1 id="security-implications">SECURITY IMPLICATIONS</h1> -<p>This document describes security related issues administrators need to be aware of when using -Machinery.</p> -<h2 id="inspection">Inspection</h2> -<p>Machinery inspects several parts of a system which are covered by Machinery's scopes. A list -of the available scopes and information about what they do can be found -<a href="../machinery_main_scopes.1/index.html">here</a>.</p> -<p>Users of Machinery who inspect systems need to be aware of the security implications in order -to take the right decisions on how to protect the retrieved data.</p> -<h2 id="retrieval-of-data">Retrieval of Data</h2> -<p>Machinery transfers data from one end point to another via SSH (using public key authentication).</p> -<p>Depending on the scope, Machinery <a href="../machinery_main_scopes.1/index.html">collects information</a> -about files on the system. Additionally, when the <code>--extract-files</code> option is given for the -<code>inspect</code> command, not only the meta data about the files (e.g. permission bits, owner, group etc -.) but also the file content is extracted. Machinery does not distinguish between sensitive -data (such as private keys or password files). That means that everyone with access to the system -description has automatically access to <strong>all</strong> extracted files and contained sensitive data.</p> -<h4 id="rootsudo-privileges">root/sudo Privileges</h4> -<p>An inspection can only be done, when the user on the inspected system is either root or has -sudo privileges. Information about the required sudo configuration can be found -<a href="../machinery-inspect.1/index.html#prerequisites">here</a>.</p> -<h2 id="storage-of-data">Storage of Data</h2> -<h4 id="access-restrictions">Access Restrictions</h4> -<p>After an inspection has been completed, the directory where the description is stored is made -readable only for the user. The data is not encrypted by Machinery.</p> -<h4 id="used-permission-bits">Used Permission Bits</h4> -<p>When Machinery extracts data, it sets permission bits for files and directories as follows:</p> -<table> -<thead> -<tr> -<th>Permission Bits</th> -<th>Used for ...</th> -</tr> -</thead> -<tbody> -<tr> -<td>0700</td> -<td>... directories inside the description directory</td> -</tr> -<tr> -<td>0600</td> -<td>... for files inside the description directory</td> -</tr> -</tbody> -</table> -<h4 id="accessing-system-descriptions">Accessing System Descriptions</h4> -<p>By default, all system descriptions are stored in the directory <code>.machinery</code> in the home directory -of the user running Machinery. The directory can be redefined by the environment variable -<code>$MACHINERY_DIR</code>. Each description has its own subdirectory. There is a <code>manifest.json</code> file in -each description directory which contains the data of the inspection. Extracted files are stored in -separate subdirectories inside the same description directory.</p> -<h2 id="presentation-of-data">Presentation of Data</h2> -<p>There are several ways how data can be presented to one or more users. The user has the option to -either start a web server and view descriptions or view the descriptions only in the console.</p> -<p>The following commands are used to present data to users:</p> -<ul> -<li>show</li> -<li>compare</li> -<li>serve</li> -<li>list</li> -</ul> -<p>All of the commands listed above also have a <code>--html</code> option. When this option is used, Machinery -starts a web server what will listen on the IP address <code>127.0.0.1</code>. The <code>serve</code> command -offers also a <code>--public</code> option which makes the server listen on all configured IP addresses.</p> -<p><strong>WARNING:</strong> When making the server reachable from the outside, users can modify the link to -access also other descriptions. There is currently no way to restrict the access to only one -description.</p> -<p>The <code>serve</code> command also allows the user to specify a port via the <code>--port</code> option. When no port -is specified, the default port which is configured in the machinery config file in -<code>~/.machinery/machinery.config</code>) will be taken.</p> -<h2 id="export-of-data">Export of Data</h2> -<h4 id="export-autoyast">export-autoyast</h4> -<p>The <code>export-autoyast</code> command creates an AutoYaST profile for an automated installation. The result -are also tar balls containing the extracted files from the system description. These files -potentially contain sensitive data (e.g. passwords). This fact needs to be kept in mind, especially -if these files are copied to a web server for an AutoYaST installation via HTTP.</p> -<h4 id="export-kiwi">export-kiwi</h4> -<p>The program Kiwi allows you to build OS images what you can use for installation. Machinery gives -you the opportunity to build a complete Kiwi configuration from a system description. This -configuration can be used to build an image via Kiwi. The <code>export-kiwi</code> command creates a -directory, where it stores the Kiwi configuration and the files of a system description. These -files potentially contain sensitive data (e.g. passwords).</p> -<h4 id="build">build</h4> -<p>The created image potentially contains sensitive data (e.g. passwords) from extracted files.</p> -<h4 id="deploy">deploy</h4> -<p>The uploaded image potentially contains sensitive data (e.g. passwords) from extracted files.</p> - </div> - </div> - </body> -</html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/mkdocs/js/lunr-0.5.7.min.js new/manual/site/mkdocs/js/lunr-0.5.7.min.js --- old/manual/site/mkdocs/js/lunr-0.5.7.min.js 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/mkdocs/js/lunr-0.5.7.min.js 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.7 - * Copyright (C) 2014 Oliver Nightingale - * MIT Licensed - * @license - */ -!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.7",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return t.toLowerCase()});for(var e=t.toString().replace(/^\s+/,""),n=e.length-1;n>=0;n--)if(/\S/.test(e.charAt(n))){e=e.substring(0,n+1);break}return e.split(/(?:\s+|\-)/).filter(function(t){return!!t}).map(function(t){return t.toLowerCase()})},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e)+1;this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;for(var o=i,r=i.next;void 0!=r;){if(e<r.idx)return o.next=new t.Vector.Node(e,n,r),this.length++;o=r,r=r.next}return o.next=new t.Vector.Node(e,n,r),this.length++},t.Vector.prototype.magnitude=function(){if(this._magniture)return this._magnitude;for(var t,e=this.list,n=0;e;)t=e.val,n+=t*t,e=e.next;return this._magnitude=Math.sqrt(n)},t.Vector.prototype.dot=function(t){for(var e=this.list,n=t.list,i=0;e&&n;)e.idx<n.idx?e=e.next:e.idx>n.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(t){~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t)},this),this.length=this.elements.length},t.SortedSet.prototype.toArray=function(){return this.elements.slice()},t.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},t.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},t.SortedSet.prototype.indexOf=function(t,e,n){var e=e||0,n=n||this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return 1>=i?r===t?o:-1:t>r?this.indexOf(t,o,n):r>t?this.indexOf(t,e,o):r===t?o:void 0},t.SortedSet.prototype.locationFor=function(t,e,n){var e=e||0,n=n||this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];if(1>=i){if(r>t)return o;if(t>r)return o+1}return t>r?this.locationFor(t,o,n):r>t?this.locationFor(t,e,o):void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]<h[o]?i++:a[i]>h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s<o.length;s++){var a=o.elements[s],h=this._fields.reduce(function(t,e){var n=i[e.name].length;if(!n)return t;var o=i[e.name].filter(function(t){return t===a}).length;return t+o/n*e.boost},0);this.tokenStore.add(a,{ref:r,tf:h})}n&&this.eventEmitter.emit("add",e,this)},t.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var i=this.documentStore.get(n);this.documentStore.remove(n),i.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},t.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},t.Index.prototype.idf=function(t){var e="@"+t;if(Object.prototype.hasOwnProperty.call(this._idfCache,e))return this._idfCache[e];var n=this.tokenStore.count(t),i=1;return n>0&&(i=1+Math.log(this.tokenStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,u=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),u=1,l=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);u=1/Math.log(c)}return r>-1&&i.insert(r,a*s*u),Object.keys(h.tokenStore.get(o)).forEach(function(t){l.add(t)}),n.union(l)},new t.SortedSet);o.push(u)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,u="^("+o+")?"+i,l=new RegExp(s),c=new RegExp(h),p=new RegExp(a),f=new RegExp(u),d=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,O=/^(.+?)(s|t)(ion)$/,F=/^(.+?)e$/,P=/ll$/,T=new RegExp("^"+o+i+"[^aeiouwxy]$"),$=function(n){var i,o,r,s,a,h,u;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=d,a=v,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=m,a=g,s.test(n)){var $=s.exec(n);s=l,s.test($[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var $=a.exec(n);i=$[1],a=f,a.test(i)&&(n=i,a=S,h=w,u=x,a.test(n)?n+="e":h.test(n)?(s=y,n=n.replace(s,"")):u.test(n)&&(n+="e"))}if(s=k,s.test(n)){var $=s.exec(n);i=$[1],n=i+"i"}if(s=b,s.test(n)){var $=s.exec(n);i=$[1],o=$[2],s=l,s.test(i)&&(n=i+t[o])}if(s=E,s.test(n)){var $=s.exec(n);i=$[1],o=$[2],s=l,s.test(i)&&(n=i+e[o])}if(s=_,a=O,s.test(n)){var $=s.exec(n);i=$[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var $=a.exec(n);i=$[1]+$[2],a=c,a.test(i)&&(n=i)}if(s=F,s.test(n)){var $=s.exec(n);i=$[1],s=c,a=p,h=T,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return $}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return-1===t.stopWordFilter.stopWords.indexOf(e)?e:void 0},t.stopWordFilter.stopWords=new t.SortedSet,t.stopWordFilter.stopWords.length=119,t.stopWordFilter.stopWords.elements=["","a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"],t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n<t.length;n++){if(!e[t[n]])return!1;e=e[t[n]]}return!0},t.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;n<t.length;n++){if(!e[t[n]])return{};e=e[t[n]]}return e},t.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},t.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},t.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,i=0;i<t.length;i++){if(!(t[i]in n))return;n=n[t[i]]}delete n.docs[e]}},t.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),i=n.docs||{},e=e||[];return Object.keys(i).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},t.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}},function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.lunr=e()}(this,function(){return t})}(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/mkdocs/js/lunr.min.js new/manual/site/mkdocs/js/lunr.min.js --- old/manual/site/mkdocs/js/lunr.min.js 1970-01-01 01:00:00.000000000 +0100 +++ new/manual/site/mkdocs/js/lunr.min.js 2017-06-20 10:51:52.000000000 +0200 @@ -0,0 +1,7 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.7.0 + * Copyright (C) 2016 Oliver Nightingale + * MIT Licensed + * @license + */ +!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.7.0",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.utils.asString=function(t){return void 0===t||null===t?"":t.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(e){return arguments.length&&null!=e&&void 0!=e?Array.isArray(e)?e.map(function(e){return t.utils.asString(e).toLowerCase()}):e.toString().trim().toLowerCase().split(t.tokenizer.seperator):[]},t.tokenizer.seperator=/[\s\-]+/,t.tokenizer.load=function(t){var e=this.registeredFunctions[t];if(!e)throw new Error("Cannot load un-registered function: "+t);return e},t.tokenizer.label="default",t.tokenizer.registeredFunctions={"default":t.tokenizer},t.tokenizer.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing tokenizer: "+n),e.label=n,this.registeredFunctions[n]=e},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,r=0;n>r;r++){for(var o=t[r],s=0;i>s&&(o=this._stack[s](o,r,t),void 0!==o&&""!==o);s++);void 0!==o&&""!==o&&e.push(o)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(e<i.idx)return this.list=new t.Vector.Node(e,n,i),this.length++;for(var r=i,o=i.next;void 0!=o;){if(e<o.idx)return r.next=new t.Vector.Node(e,n,o),this.length++;r=o,o=o.next}return r.next=new t.Vector.Node(e,n,o),this.length++},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t,e=this.list,n=0;e;)t=e.val,n+=t*t,e=e.next;return this._magnitude=Math.sqrt(n)},t.Vector.prototype.dot=function(t){for(var e=this.list,n=t.list,i=0;e&&n;)e.idx<n.idx?e=e.next:e.idx>n.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t<arguments.length;t++)e=arguments[t],~this.indexOf(e)||this.elements.splice(this.locationFor(e),0,e);this.length=this.elements.length},t.SortedSet.prototype.toArray=function(){return this.elements.slice()},t.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},t.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},t.SortedSet.prototype.indexOf=function(t){for(var e=0,n=this.elements.length,i=n-e,r=e+Math.floor(i/2),o=this.elements[r];i>1;){if(o===t)return r;t>o&&(e=r),o>t&&(n=r),i=n-e,r=e+Math.floor(i/2),o=this.elements[r]}return o===t?r:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,r=e+Math.floor(i/2),o=this.elements[r];i>1;)t>o&&(e=r),o>t&&(n=r),i=n-e,r=e+Math.floor(i/2),o=this.elements[r];return o>t?r:t>o?r+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,r=0,o=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>o-1||r>s-1)break;a[i]!==h[r]?a[i]<h[r]?i++:a[i]>h[r]&&r++:(n.add(a[i]),i++,r++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone();for(var r=0,o=n.toArray();r<o.length;r++)i.add(o[r]);return i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this.tokenizerFn=t.tokenizer,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.tokenizer=t.tokenizer.load(e.tokenizer),n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.tokenizer=function(e){var n=e.label&&e.label in t.tokenizer.registeredFunctions;return n||t.utils.warn("Function is not a registered tokenizer. This may cause problems when serialising the index"),this.tokenizerFn=e,this},t.Index.prototype.add=function(e,n){var i={},r=new t.SortedSet,o=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(t){var n=this.pipeline.run(this.tokenizerFn(e[t.name]));i[t.name]=n;for(var o=0;o<n.length;o++){var s=n[o];r.add(s),this.corpusTokens.add(s)}},this),this.documentStore.set(o,r);for(var s=0;s<r.length;s++){for(var a=r.elements[s],h=0,u=0;u<this._fields.length;u++){var l=this._fields[u],c=i[l.name],f=c.length;if(f){for(var d=0,p=0;f>p;p++)c[p]===a&&d++;h+=d/f*l.boost}}this.tokenStore.add(a,{ref:o,tf:h})}n&&this.eventEmitter.emit("add",e,this)},t.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var i=this.documentStore.get(n);this.documentStore.remove(n),i.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},t.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},t.Index.prototype.idf=function(t){var e="@"+t;if(Object.prototype.hasOwnProperty.call(this._idfCache,e))return this._idfCache[e];var n=this.tokenStore.count(t),i=1;return n>0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(this.tokenizerFn(e)),i=new t.Vector,r=[],o=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*o,h=this,u=this.tokenStore.expand(e).reduce(function(n,r){var o=h.corpusTokens.indexOf(r),s=h.idf(r),u=1,l=new t.SortedSet;if(r!==e){var c=Math.max(3,r.length-e.length);u=1/Math.log(c)}o>-1&&i.insert(o,a*s*u);for(var f=h.tokenStore.get(r),d=Object.keys(f),p=d.length,v=0;p>v;v++)l.add(f[d[v]].ref);return n.union(l)},new t.SortedSet);r.push(u)},this);var a=r.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,r=new t.Vector,o=0;i>o;o++){var s=n.elements[o],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);r.insert(this.corpusTokens.indexOf(s),a*h)}return r},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,tokenizer:this.tokenizerFn.label,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",r=n+"[^aeiouy]*",o=i+"[aeiou]*",s="^("+r+")?"+o+r,a="^("+r+")?"+o+r+"("+o+")?$",h="^("+r+")?"+o+r+o+r,u="^("+r+")?"+i,l=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(u),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+r+i+"[^aeiouwxy]$"),x=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,F=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,_=/^(.+?)(s|t)(ion)$/,z=/^(.+?)e$/,O=/ll$/,P=new RegExp("^"+r+i+"[^aeiouwxy]$"),T=function(n){var i,r,o,s,a,h,u;if(n.length<3)return n;if(o=n.substr(0,1),"y"==o&&(n=o.toUpperCase()+n.substr(1)),s=p,a=v,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=g,a=m,s.test(n)){var T=s.exec(n);s=l,s.test(T[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,u=k,a.test(n)?n+="e":h.test(n)?(s=y,n=n.replace(s,"")):u.test(n)&&(n+="e"))}if(s=x,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],r=T[2],s=l,s.test(i)&&(n=i+t[r])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],r=T[2],s=l,s.test(i)&&(n=i+e[r])}if(s=F,a=_,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=z,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=P,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=O,a=c,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==o&&(n=o.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.generateStopWordFilter=function(t){var e=t.reduce(function(t,e){return t[e]=e,t},{});return function(t){return t&&e[t]!==t?t:void 0}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t.charAt(0),r=t.slice(1);return i in n||(n[i]={docs:{}}),0===r.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(r,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n<t.length;n++){if(!e[t.charAt(n)])return!1;e=e[t.charAt(n)]}return!0},t.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;n<t.length;n++){if(!e[t.charAt(n)])return{};e=e[t.charAt(n)]}return e},t.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},t.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},t.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,i=0;i<t.length;i++){if(!(t.charAt(i)in n))return;n=n[t.charAt(i)]}delete n.docs[e]}},t.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),i=n.docs||{},e=e||[];return Object.keys(i).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},t.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}},function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.lunr=e()}(this,function(){return t})}(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/mkdocs/js/search.js new/manual/site/mkdocs/js/search.js --- old/manual/site/mkdocs/js/search.js 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/mkdocs/js/search.js 2017-06-20 10:51:52.000000000 +0200 @@ -1,6 +1,6 @@ require([ base_url + '/mkdocs/js/mustache.min.js', - base_url + '/mkdocs/js/lunr-0.5.7.min.js', + base_url + '/mkdocs/js/lunr.min.js', 'text!search-results-template.mustache', 'text!../search_index.json', ], function (Mustache, lunr, results_template, data) { @@ -70,7 +70,7 @@ */ jQuery('#mkdocs_search_modal a').click(function(){ jQuery('#mkdocs_search_modal').modal('hide'); - }) + }); } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/manual/site/sitemap.xml new/manual/site/sitemap.xml --- old/manual/site/sitemap.xml 2016-11-16 16:44:53.000000000 +0100 +++ new/manual/site/sitemap.xml 2017-06-20 10:51:52.000000000 +0200 @@ -3,40 +3,40 @@ <url> - <loc>None/docs/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/docs/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery_main_general.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery_main_general.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery_main_scopes.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery_main_scopes.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery_main_usecases.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery_main_usecases.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery_main_security_implications.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery_main_security_implications.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> @@ -44,116 +44,116 @@ <url> - <loc>None/machinery-analyze.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-analyze.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-build.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-build.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-compare.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-compare.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-config.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-config.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-copy.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-copy.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-deploy.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-deploy.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-export-autoyast.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-export-autoyast.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-export-kiwi.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-export-kiwi.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-export-html.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-export-html.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-inspect.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-inspect.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-inspect-container.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-inspect-container.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-list.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-list.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-man.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-man.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-move.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-move.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-remove.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-remove.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-serve.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-serve.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-show.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-show.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-upgrade-format.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-upgrade-format.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> <url> - <loc>None/machinery-validate.1/</loc> - <lastmod>2016-11-16</lastmod> + <loc>/machinery-validate.1/</loc> + <lastmod>2017-06-20</lastmod> <changefreq>daily</changefreq> </url> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2016-11-16 16:44:52.000000000 +0100 +++ new/metadata 2017-06-20 10:57:15.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: machinery-tool version: !ruby/object:Gem::Version - version: 1.22.2 + version: 1.22.3 platform: ruby authors: - SUSE autorequire: bindir: bin cert_chain: [] -date: 2016-11-16 00:00:00.000000000 Z +date: 2017-06-20 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: cheetah @@ -25,20 +25,6 @@ - !ruby/object:Gem::Version version: '0.4' - !ruby/object:Gem::Dependency - name: json - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.8' - type: :runtime - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.8' -- !ruby/object:Gem::Dependency name: abstract_method requirement: !ruby/object:Gem::Requirement requirements: @@ -98,14 +84,14 @@ name: haml requirement: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version version: '4.0' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version version: '4.0' - !ruby/object:Gem::Dependency @@ -140,14 +126,14 @@ name: sinatra requirement: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version version: '1.4' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version version: '1.4' - !ruby/object:Gem::Dependency @@ -483,7 +469,6 @@ - manual/docs/wheels.png - manual/mkdocs.yml - manual/site/CNAME -- manual/site/base.html - manual/site/css/bootstrap.min.css - manual/site/css/custom.css - manual/site/css/fixed-positioning.css @@ -542,7 +527,6 @@ - manual/site/machinery-export-html.1/index.html - manual/site/machinery-export-kiwi.1/index.html - manual/site/machinery-inspect-container.1/index.html -- manual/site/machinery-inspect-docker.1/index.html - manual/site/machinery-inspect.1/index.html - manual/site/machinery-list.1/index.html - manual/site/machinery-man.1/index.html @@ -557,8 +541,7 @@ - manual/site/machinery_main_scopes.1/index.html - manual/site/machinery_main_security_implications.1/index.html - manual/site/machinery_main_usecases.1/index.html -- manual/site/machinery_security_implications.1/index.html -- manual/site/mkdocs/js/lunr-0.5.7.min.js +- manual/site/mkdocs/js/lunr.min.js - manual/site/mkdocs/js/mustache.min.js - manual/site/mkdocs/js/require.js - manual/site/mkdocs/js/search-results-template.mustache @@ -781,7 +764,7 @@ version: 1.3.6 requirements: [] rubyforge_project: -rubygems_version: 2.2.2 +rubygems_version: 2.2.5 signing_key: specification_version: 4 summary: Systems management toolkit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plugins/patterns/patterns_inspector.rb new/plugins/patterns/patterns_inspector.rb --- old/plugins/patterns/patterns_inspector.rb 2016-11-16 16:44:53.000000000 +0100 +++ new/plugins/patterns/patterns_inspector.rb 2017-06-20 10:51:52.000000000 +0200 @@ -60,11 +60,19 @@ xml = @system.run_command("zypper", "--non-interactive", "-xq", "--no-refresh", "patterns", "-i", stdout: :capture) rescue Cheetah::ExecutionFailed => e - if e.stdout.include?("locked") + # Zypper is locked + if e.status.exitstatus == 7 # ZYPPER_EXIT_ZYPP_LOCKED Machinery.logger.error(e.stdout) raise Machinery::Errors::ZypperFailed.new( "Zypper is locked." ) + # Repositories are updated or gpg keys are expiring + elsif e.status.exitstatus == 106 # ZYPPER_EXIT_INF_REPOS_SKIPPED + Machinery.logger.error( + "Zypper returned exit code #{e.status.exitstatus} during patterns inspection with" \ + " the message:\n#{e.stdout}" + ) + xml = e.stdout else raise end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/go.rb new/tools/go.rb --- old/tools/go.rb 2016-11-16 16:44:53.000000000 +0100 +++ new/tools/go.rb 2017-06-20 10:51:52.000000000 +0200 @@ -35,9 +35,12 @@ def build if archs.count == 1 - system("go build -o machinery-helper-#{archs.first}") + arch = archs.first + puts("Building machinery-helper for architecture #{arch}.") + system("go build -o machinery-helper-#{arch}") else archs.each do |arch| + puts("Building machinery-helper for architecture #{arch}.") system( "env GOOS=linux #{compile_options(arch)} go build -o machinery-helper-#{arch}" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/helper_builder.rb new/tools/helper_builder.rb --- old/tools/helper_builder.rb 2016-11-16 16:44:53.000000000 +0100 +++ new/tools/helper_builder.rb 2017-06-20 10:51:52.000000000 +0200 @@ -66,7 +66,6 @@ def build_machinery_helper FileUtils.rm_f(Dir.glob(File.join(@helper_dir, "machinery-helper*"))) Dir.chdir(@helper_dir) do - puts("Building machinery-helper binaries") if @go.build true else