Subject: CVS commit: pkgsrc/databases/p5-App-Sqitch
From: Amitai Schleier
Date: 2019-02-02 17:59:30
Message id: 20190202165930.F002BFB16@cvs.NetBSD.org

Log Message:
Update to 0.9999. From the changelog:

[Bug Fixes]
- Fixed a test failure with the MySQL max limit value, mostly exhibited
  on BSD platforms.
- Removed fallback in the PostgreSQL engine on the `$PGUSER` and
  `$PGPASSWORD` environnement variables, as well as the system username,
  since libpq does all that automatically, and collects data from other
  sources that we did not (e.g., the password and connection service
  files). Thanks to Tom Bloor for the report (issue #410).
- Changed dependency validation to prevent an error when a change required
  from a different project has been reworked. Previously, when a when
  requiring a change such as `foo:greeble`, Sqitch would raise an error if
  `foo:greeble` was reworked, suggesting that the dependency be
  tag-qualified to eliminate ambiguity. Now reworked dependencies may be
  required without tag-qualification, though tag-qualification should still
  be specified if functionality as of a particular tag is required.
- Added a workaround for the shell quoting issue on Windows. Applies to
  IPC::System::Simple 1.29 and lower. See
  [pjf/ipc-system-simple#29](https://github.com/pjf/ipc-system-simple/pull/29)
  for details (#413).
- Fixed an issue with the MariaDB client where a deploy, revert, or
  verify failure was not properly propagated to Sqitch. Sqitch now passes
  `--abort-source-on-error` to the Maria `mysql` client to ensure that
  SQL errors cause the client to abort with an error so that Sqitch can
  properly handle it. Thanks to @mvgrimes for the original report and,
  years later, the fix (#209).
- Fixed an issue with command argument parsing so that it truly never
  returns a target without an engine specified, as documented.
- Removed documentation for methods that don't exist.
- Fixed test failures due to a change in Encode v2.99 that's stricter
  about `undef` arguments that should be defined.

[Improvements]
- The Snowflake engine now consults the `connections.warehousename`,
  `connections.dbname`, and `connections.rolename` variables in the
  SnowSQL configuration file (`~/.snowsql/config`) before falling back on
  the hard-coded warehouse name "sqitch" and using the system username as
  the database name and no default for the role.
- Switched to using a constant internally to optimize windows-specific
  code paths at compile time.
- When `deploy` detects undeployed dependencies, it now eliminates
  duplicates before listing them in the error message.
- Now requiring IO::Pager v0.34 or later for its more consistent
  interface.
- Added notes about creating databases to the tutorials. Thanks to Dave
  Rolsky for the prompt (#315).
- Added a status message to tell the user when the registry is being
  updated, rather than just show each individual update. Thanks to Ben
  Hutton for the suggestion (#276).
- Added support for a `$SQITCH_TARGET` environment variable, which takes
  precedence over all other target specifications except for command-line
  options and arguments. Thanks to @mvgrimes for the suggestion (#203).
- Fixed target/engine/change argument parsing so it won't automatically
  fail when `core.engine` isn't set unless no targets are found. This
  lets engines be determined strictly from command-line arguments --
  derived from targets, or just listed on their own -- whether or not
  `core.engine` is set. This change eliminates the need for the
  `no_default` parameter to the `parse_args()` method of App::Sqitch
  Command. It also greatly reduces the need for the core `--engine`
  option, which was previously required to work around this issue (see
  below for its removal).
- Refactored config handling in tests to use a custom subclass of
  App::Sqitch::Config instead of various mocks, temporary files, and the
  like.
- Added advice to use the PL/pgSQL `ASSERT()` function for verify scripts
  to the Postgres tutorial. Thanks to Sergii Tkachenko for the PR (#425).

[Target Variables]
- The `verify` command now reads `deploy.variables`, and individual
  `verify.variables override `deploy.variables`, on the assumption that
  the verify variables in general ought to be the same as the deploy
  variables. This makes `verify` variable configuration consistent with
  `revert` variable configuration.
- Variables set via the `--set-deploy` option on the `rebase` and
  `checkout` commands no longer apply to both reverts and deploys, but
  only deploys. Use the `--set` option to apply a variable to both
  reverts and deploys.
- Added support for core, engine, and target variable configuration. The
  simplest way to use them is via the `--set` option on the `init`,
  `engine`, and `target` commands. These commands allow the configuration
  of database client variables for specific engines and targets, as well
  as defaults that apply to all change execution commands (`deploy`,
  `revert`, `verify`, `rebase`, and `checkout`). The commands merge the
  variables from each level in this priority order:
  * `--set-deploy` and `--set-revert` options on `rebase` and `checkout`
  * `--set` option
  * `target.$target.variables`
  * `engine.$engine.variables`
  * `deploy.variables`, `revert.variables`, and `verify.variables`
  * `core.variables`
  See `sqitch-configuration` for general documentation of of the
  hierarchy for merging variables and the documentation for each command
  for specifics.

[Options Unification]
- Added the `--chdir`/`--cd`/`-C` option to specify a directory to change
  to before executing any Sqitch commands. Thanks to Thomas Sibley for
  the suggestion (#411).
- Added the `--no-pager` option to disable the pager (#414).
- Changed command-line parsing to allow core and command options to
  appear anywhere on the line. Previously, core options had to come
  before the command name, and command options after. No more. The caveat
  is that command options that take arguments should either appear after
  the command or use the `--opt=val` syntax instead of `--opt val`, so
  that Sqitch doesn't think `val` is the command. Even in that case, it
  will search the rest of the arguments to find a valid command.
  However, to minimize this challenge, the documentation now suggests
  and demonstrates putting all options after the command, like so:
  `sqitch [command] [options]`.
- Simplified and clarified the distinction between core and command
  options by removing all options from the core except those that affect
  output and runtime context. The core options are:
  * -C --chdir --cd <dir>  Change to directory before performing any actions
  *    --etc-path          Print the path to the etc directory and exit
  *    --no-pager          Do not pipe output into a pager
  *    --quiet             Quiet mode with non-error output suppressed
  * -V --verbose           Increment verbosity
  *    --version           Print the version number and exit
  *    --help              Show a list of commands and exit
  *    --man               Print the introductory documentation and exit
- Relatedly, single-letter core options will now always be uppercase,
  while single-letter command options will be lowercase. As such, `-V`
  has been added as an alias for `--version`, although `-v` remains for
  now, undocumented. It may be removed in the future should a compelling
  use for `-v` in a command be discovered.
- All other options have been moved to the commands they affect. Their
  use should remain mostly unchanged now that command options are parsed
  from anywhere on the command-line, although we recommend that all
  options come after commands. The options were moved as follows:
  * `--registry`, `--client`, `--db-name`, `--db-user`, `--db-host`, and
    `--db-port` (and their aliases) have been moved to the `checkout`,
    `deploy`, `log`, `rebase`, `revert`, `status`, `upgrade`, and
    `verify` commands.
  * `--plan-file` and `--top-dir` (deprecated; see below) have been moved
    to the `add`, `bundle`, `checkout`, `deploy`, `rebase`, `revert`,
    `rework`, `show`, `status`, `tag`, and `verify` commands. They were
    already supported by the `init`, `engine`, and `target` commands
    (where `--top-dir` is not deprecated).
- Because some command options conflicted with core options, a few
  options have been removed altogether, including:
  * The `--verbose` option on the `--engine` and `--target` commands has
    been removed, but no visible change should be apparent, since those
    commands now read the core `--verbose` option.
  * The undocumented `--dir` alias for `--top-dir` has been removed, as
    it conflicted with the option of the same name but different meaning
    in the `init`, `engine`, and `target` commands.
  * The `-d` alias for `--set-deploy` in the `rebase` and `checkout`
    commands has been changed to `-e` so as not to conflict with the `-d`
    alias for `--db-name`.
  * Added tests for all commands to ensure none of their options conflict
    with core options. Will help prevent conflicts in the future.

[Deprecations & Removals]
- Deprecated the `--top-dir` option in favor of `--chdir` with a warning
  except when used for configuration in the `init`, `engine`, and
  `target` commands.
- Removed the core `--deploy-dir`, `--revert-dir`, and `--verify-dir`
  options, which have been deprecated and triggering warnings since
  v0.9993 (August 2015). The `--dir` option to the `init`, `engine`, and
  `target` commands remains the favored interface for specifying script
  directories.
- Removed the deprecated core `--engine` option. The `init` command still
  supports it, while other commands are able to parse the engine name as
  an argument — e.g., `sqitch deploy mysql` — or implicitly as part of a
  target, as in `sqitch revert db:pg:tryme`. When Sqitch is unable to
  determine the engine for a command, the error message no longer
  mentions `--engine` and instead suggests specifying the engine via the
  target. This option never triggered an error, but demonstration of its
  use has been limited to `init` examples.
- Removed support for reading the `core.$engine` configuration, which has
  been deprecated with warnings in favor of `engine.$engine` since 0.997
  (November 2014). The `sqitch engine update-config` action remains
  available to update old configurations, but may be removed in the
  future.
- Removed the `--deploy`, `--revert`, and `--verify` options on the `add`
  command, as well as their `--no-*` variants. They have been deprecated
  with warnings in favor of the `--with` and `--without` options since
  v0.990 (January 2014).
- Removed the `--deploy-template`, `--revert-template`, and
  `--verify-template` options to the `add` command. They have been
  deprecated with warnings in favor of the `--use` option since v0.990
  (January 2014).
- Removed the `add.deploy_template`, `add.revert_template`, and
      `add.verify_template` configuration settings. They have been deprecated
      with warnings in favor of the `add.templates` configuration section
  since v0.990 (January 2014).
- Removed the `@FIRST` and `@LAST` symbolic tags, which have been
  deprecated with warnings in favor of `@ROOT` and `@HEAD`, respectively,
  since 0.997 (November 2014).
- Removed the command-specific options with the string "target" in them,
  such as `--to-target`, `--upto-target`, which have been deprecated with
  warnings in in favor of options containing the string "change", such as
  `--to-change` and `--upto-change`, since v0.997 (November 2014).
- Remove the `engine` and `target` command `set-*` actions and their
  corresponding methods, which have been deprecated in favor of the
  `alter` action since v0.9993 (August 2015).
- Removed the automatic updating of change and tag IDs in the Postgres
  engine. This functionality was added in v0.940 (December 2012), when
  Postgres was the only engine, and the SHA-1 hash for change and tag IDs
  was changed. There were very few deployments at the time, and all
  should long since have been updated.

[API Changes]
- Added the URI-overriding parameters `user`, `host`, `port`, and
  `dbname` to App::Sqitch::Target so that command options can be used to
  easily set them.
- Added support for passing attribute parameters to the `all_targets`
  group constructor on App::Sqitch::Target, so that command-line options
  can be used to assign attributes to all targets read from the
  configuration.
- Aded the `target_params` method to App::Sqitch::Command and updated all
  commands to use it when constructing targets. This allows commands to
  define options for Target parameters, as required for moving options to
  commands as described above.
- Added the `class_for` method to App::Sqitch::Command so that the new
  options parser described above can load a command class without
  instantiating an instance. Useful for searching command-line arguments
  for a command name.
- Added the `create` constructor to App::Sqitch::Command to let Sqitch
  instantiate an instance of a command once it finds one via `class_for`.
  Previously, Sqitch used the `load` method, which handled the
  functionality of both `class_for` and `create`. That method still
  exists but is used only in tests.
- Added the ConnectingCommand role to define database connection options
  for the commands that need them.
- Added the ContextCommand role to define command options for the
  location of the plan file and top directory. This is also where use of
  the deprecated form of `--top-dir` triggers a warning.
- Removed the `verbosity` attribute from App::Sqitch::Command::engine and
  App::Sqitch::Command::target, since the `--verbose` option is no longer
  needed. These commands now rely on the core `--verbose` option.
- Removed the copying of core options from the target class and
  TargetConfigCommand role, since the attributes fetched from there are
  no longer core options, but provided as attribute parameters to the
  constructors by commands.
- Removed documentation for the optional `config` parameter to the
  `all_targets` constructor of App::Sqitch::Target, since it was never
  used by Sqitch. It always fetched the config from the required `sqitch`
  parameter. Support for the `config` parameter has not been removed,
  since third-parties might use it.
- Removed the `set_*` methods in the `engine` and `target` commands,
  which have been deprecated in favor of the new `alter` method since
  v0.9993 (August 2015).
- Removed the `old_id` and `old_info` methods from Change and Tag, which
  date from v0.940 (December 2012), and were provided only to allow
  existing Postgres databases to be updated from the old to new ID
  format, now removed. There should be no other use case for these
  methods.

Files:
RevisionActionfile
1.22modifypkgsrc/databases/p5-App-Sqitch/Makefile
1.13modifypkgsrc/databases/p5-App-Sqitch/distinfo