diff --git a/.github/workflows/cockroach.yml b/.github/workflows/cockroach.yml index a6087cac3..9642410b4 100644 --- a/.github/workflows/cockroach.yml +++ b/.github/workflows/cockroach.yml @@ -18,13 +18,13 @@ jobs: steps: - name: Start CockroachDB run: docker run -d -p 26257:26257 cockroachdb/cockroach:latest-v${{ matrix.version }} start-single-node --insecure - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index b433912a1..042cc800c 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -49,13 +49,13 @@ jobs: run: rm -rf /opt/hostedtoolcache - name: Start CockroachDB run: docker run -d -p 26257:26257 cockroachdb/cockroach:latest start-single-node --insecure - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/exasol.yml b/.github/workflows/exasol.yml index d10db9d22..b372107b4 100644 --- a/.github/workflows/exasol.yml +++ b/.github/workflows/exasol.yml @@ -20,7 +20,7 @@ jobs: ports: [ 8563 ] options: --privileged steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Clients run: .github/ubuntu/exasol.sh - name: Setup Perl @@ -28,7 +28,7 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/firebird.yml b/.github/workflows/firebird.yml index 36a5541a4..2ba7dd920 100644 --- a/.github/workflows/firebird.yml +++ b/.github/workflows/firebird.yml @@ -29,7 +29,7 @@ jobs: ISC_PASSWORD: nix FIREBIRD_DATABASE: sqitchtest.db steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Clients run: .github/ubuntu/firebird.sh - name: Setup Perl @@ -37,7 +37,7 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 14cb78ac6..4510babf7 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -39,7 +39,7 @@ jobs: ports: [ 3306 ] options: --health-cmd="healthcheck.sh --innodb_initialized || mysqladmin ping --protocol=tcp" --health-interval=5s --health-timeout=2s --health-retries=3 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Clients run: .github/ubuntu/mysql.sh - name: Setup Perl @@ -47,7 +47,7 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/oracle.yml b/.github/workflows/oracle.yml index 186501eb3..9fbff57e9 100644 --- a/.github/workflows/oracle.yml +++ b/.github/workflows/oracle.yml @@ -40,7 +40,7 @@ jobs: --health-timeout 10s --health-retries 10 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Clients run: .github/ubuntu/oracle.sh - name: Setup Perl @@ -48,7 +48,7 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/os.yml b/.github/workflows/os.yml index ead19a06b..bcfbd40ac 100644 --- a/.github/workflows/os.yml +++ b/.github/workflows/os.yml @@ -12,26 +12,29 @@ jobs: strategy: matrix: include: - - { icon: 🐧, os: ubuntu, name: Linux } - - { icon: 🍎, os: macos, name: macOS } - - { icon: 🪟, os: windows, name: Windows } + - { icon: 🐧, on: ubuntu, name: Linux } + - { icon: 🍎, on: macos, name: macOS } + - { icon: 🪟, on: windows, name: Windows } name: ${{ matrix.icon }} ${{ matrix.name }} - runs-on: ${{ matrix.os }}-latest + runs-on: ${{ matrix.on }}-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - run: perl -V + - if: runner.os == 'Linux' + name: Install Apt Packages + run: sudo apt-get install -qq aspell-en language-pack-fr language-pack-en language-pack-de language-pack-it - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} - # Remove Locale::TextDomain if https://github.com/gflohr/libintl-perl/issues/7 fixed and released. - - if: ${{ matrix.os == 'windows' }} - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends Encode Win32::Console::ANSI Win32API::Net Win32::Locale Win32::ShellQuote DateTime::TimeZone::Local::Win32 Locale::TextDomain@1.31 + - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends ExtUtils::MakeMaker List::MoreUtils::XS + - if: runner.os == 'Windows' + run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends Encode Win32::Console::ANSI Win32API::Net Win32::Locale Win32::ShellQuote DateTime::TimeZone::Local::Win32 - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends --cpanfile dist/cpanfile - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends Test::Spelling Test::Pod Test::Pod::Coverage - name: prove diff --git a/.github/workflows/perl.yml b/.github/workflows/perl.yml index 22ddac38e..ee95e0c54 100644 --- a/.github/workflows/perl.yml +++ b/.github/workflows/perl.yml @@ -19,20 +19,22 @@ jobs: name: 🧅 Perl ${{ matrix.perl }} on ${{ matrix.os[0] }} ${{ matrix.os[1] }} runs-on: ${{ matrix.os[1] }}-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: "${{ matrix.perl }}" } - run: perl -V + - if: runner.os == 'Linux' + name: Install Apt Packages + run: sudo apt-get install -qq language-pack-fr language-pack-en language-pack-de language-pack-it - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} - # Remove Locale::TextDomain if https://github.com/gflohr/libintl-perl/issues/7 fixed and released. - - if: ${{ matrix.os[1] == 'windows' }} - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends Encode Win32::Console::ANSI Win32API::Net Win32::Locale Win32::ShellQuote DateTime::TimeZone::Local::Win32 Locale::TextDomain@1.31 + - if: runner.os == 'Windows' + run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends Encode Win32::Console::ANSI Win32API::Net Win32::Locale Win32::ShellQuote DateTime::TimeZone::Local::Win32 - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends --cpanfile dist/cpanfile - run: cpm install --verbose --show-build-log-on-failure --no-test --with-recommends Test::Spelling Test::Pod Test::Pod::Coverage - name: prove diff --git a/.github/workflows/pg.yml b/.github/workflows/pg.yml index c97c11ba7..b727a78be 100644 --- a/.github/workflows/pg.yml +++ b/.github/workflows/pg.yml @@ -15,13 +15,13 @@ jobs: name: 🐘 Postgres ${{ matrix.pg }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9f5a1c1a0..1a2548bd2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,13 +10,13 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Check out the repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/snowflake.yml b/.github/workflows/snowflake.yml index 7dc089c56..cdc0ed9aa 100644 --- a/.github/workflows/snowflake.yml +++ b/.github/workflows/snowflake.yml @@ -11,7 +11,7 @@ jobs: name: ❄️ Snowflake runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Clients run: .github/ubuntu/snowflake.sh - name: Setup Perl @@ -19,7 +19,7 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/sqlite.yml b/.github/workflows/sqlite.yml index 4c0b758d1..161a660aa 100644 --- a/.github/workflows/sqlite.yml +++ b/.github/workflows/sqlite.yml @@ -16,13 +16,13 @@ jobs: name: 💡 SQLite ${{ matrix.sqlite }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/vertica.yml b/.github/workflows/vertica.yml index b524bbd3c..1eab0d85e 100644 --- a/.github/workflows/vertica.yml +++ b/.github/workflows/vertica.yml @@ -27,7 +27,7 @@ jobs: image: ${{ matrix.image }}:${{ matrix.version }} ports: [ 5433 ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Clients run: .github/ubuntu/vertica.sh - name: Setup Perl @@ -35,7 +35,7 @@ jobs: uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.github/workflows/yugabyte.yml b/.github/workflows/yugabyte.yml index 9524be9c2..203a56db9 100644 --- a/.github/workflows/yugabyte.yml +++ b/.github/workflows/yugabyte.yml @@ -34,13 +34,13 @@ jobs: uses: jameshartig/yugabyte-db-action@master with: yb_image_tag: "${{ matrix.tag }}" - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Perl id: perl uses: shogo82148/actions-setup-perl@v1 with: { perl-version: latest } - name: Cache CPAN Modules - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: local key: perl-${{ steps.perl.outputs.perl-hash }} diff --git a/.gitignore b/.gitignore index 8033e00ee..a3efe757b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,8 @@ /_rpmbuild /target .build/ -*.mo .al /latest_changes.md /local/ +/LocaleData/ +/lib/LocaleData/ diff --git a/Changes b/Changes index b615c0be1..140e54c8c 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,38 @@ Revision history for Perl extension App::Sqitch +1.4.1 2024-02-04T16:35:32Z + - Removed the quoting of the role and warehouse identifiers that was + added to the Snowflake engine in v1.4.0. Turns out Snowflake allows a + warehouse to be specified in a different database, in which case dots + are valid in the name and should not be quoted! So users must properly + quote when necessary, but added notes to `sqitchtutorial-snowflake.pod` + on the need to use URI escapes for special characters. Thanks to + Patrick Sabo for the find, and to @marc-marketparts for validating + that URI encoding works. + - Added notes on URL encoding database URLs to `sqitch-target.pod`, the + main reference for database URLs in the Sqitch documentation. + - Fixed the output of the list of changes to be deployed or reverted to + actually require `--verbose` twice, as described in the v1.4.0 changes, + and not just once. Thanks to Erik Wienhold for the PR (#785)! + - Removed the duplicate change name from the output of the list of + changes to be deployed or reverted with `-VV`. Thanks to Erik Wienhold + for the PR (#787)! + - Fixed invalid template resolution when adding a singe change to + multiple engines at once. Thanks to Christian Riedel for the detailed + bug report (#795)! + - Fixed Oracle and Firebird test failures due to incorrect use of `chmod`. + Thanks to Slaven Rezić for the report and the fix (#807)! + - Tests now require Test::Warn 0.31 or later, as newline handling issues + cause test failures in earlier versions. Thanks to Slaven Rezić for the + test reports and for identifying the issue. + - Updated the locale configuration to fix issues in more recent versions + of Perl, and added tests to ensure that the sqitch CLI executes and + properly emits localized messages (except on Windows, where the language + codes are incompatible). + - Fixed an issue where the MySQL engine failed to recognize the MariaDB + `mysql` client installed by Homebrew on macOS. Thanks to Carlos Ramos + for the bug report and PR (#791)! + 1.4.0 2023-08-01T23:37:30Z - Fixed Snowflake warehouse and role setup to properly quote identifiers unless they're valid unquoted identifiers or already quoted. Thanks to diff --git a/LICENSE.md b/LICENSE.md index 4caa6933f..15cc6b5b6 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2012-2023 iovation, Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation, Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/README.md b/README.md index cb465fbf3..612c76b52 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -App/Sqitch version v1.4.0 +App/Sqitch version v1.4.1 ========================= | Release | Coverage | Database || @@ -138,7 +138,7 @@ Linux distributions and Windows, see the [Installation documentation]. License ------- -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/bin/sqitch b/bin/sqitch index e14a01115..89c77f22d 100755 --- a/bin/sqitch +++ b/bin/sqitch @@ -1,15 +1,6 @@ #!perl -w -CAS # VERSION -use POSIX qw(setlocale); -BEGIN { - if ($^O eq 'MSWin32') { - require Win32::Locale; - setlocale POSIX::LC_ALL, Win32::Locale::get_locale(); - } else { - setlocale POSIX::LC_ALL, ''; - } -} +use locale; use App::Sqitch; - exit App::Sqitch->go; diff --git a/dist.ini b/dist.ini index 6f61eeb46..e1aca19f0 100644 --- a/dist.ini +++ b/dist.ini @@ -1,8 +1,8 @@ name = App-Sqitch license = MIT copyright_holder = "iovation Inc., David E. Wheeler" -copyright_year = 2012-2023 -version = v1.4.0 +copyright_year = 2012-2024 +version = v1.4.1 [GatherDir] exclude_filename = dist/cpanfile diff --git a/dist/cpanfile b/dist/cpanfile index 4e19f0173..9dac58973 100644 --- a/dist/cpanfile +++ b/dist/cpanfile @@ -1,4 +1,4 @@ -# This file is generated by Dist::Zilla::Plugin::CPANFile v6.030 +# This file is generated by Dist::Zilla::Plugin::CPANFile v6.031 # Do not edit this file directly. To change prereqs, edit the `dist.ini` file. requires "Algorithm::Backoff::Exponential" => "0.006"; @@ -54,6 +54,7 @@ requires "URI::QueryParam" => "0"; requires "URI::db" => "0.20"; requires "User::pwent" => "0"; requires "constant" => "0"; +requires "locale" => "0"; requires "namespace::autoclean" => "0.16"; requires "overload" => "0"; requires "parent" => "0"; @@ -104,7 +105,7 @@ on 'test' => sub { requires "Test::MockObject::Extends" => "0"; requires "Test::More" => "0.94"; requires "Test::NoWarnings" => "0.083"; - requires "Test::Warn" => "0"; + requires "Test::Warn" => "0.31"; requires "base" => "0"; requires "lib" => "0"; }; diff --git a/dist/sqitch.spec b/dist/sqitch.spec index dc40f81d3..9be90f1e3 100644 --- a/dist/sqitch.spec +++ b/dist/sqitch.spec @@ -1,5 +1,5 @@ Name: sqitch -Version: 1.4.0 +Version: 1.4.1 Release: 1%{?dist} Summary: Sensible database change management License: MIT @@ -72,7 +72,7 @@ BuildRequires: perl(Test::MockModule) >= 0.17 BuildRequires: perl(Test::MockObject::Extends) >= 1.20180705 BuildRequires: perl(Test::More) >= 0.94 BuildRequires: perl(Test::NoWarnings) >= 0.083 -BuildRequires: perl(Test::Warn) +BuildRequires: perl(Test::Warn) >= 0.31 BuildRequires: perl(Throwable) >= 0.200009 BuildRequires: perl(Time::HiRes) BuildRequires: perl(Try::Tiny) @@ -309,6 +309,10 @@ also be installed. # No additional files required. %changelog +* Sun Feb 4 2024 David E. Wheeler 1.4.1-1 +- Upgrade to v1.4.1. +- Upgrade Test::Warn to 0.31 + * Mon Aug 1 2023 David E. Wheeler 1.4.0-1 - Upgrade to v1.4.0. - Incrmented minimal DBI to 1.631. diff --git a/inc/Menlo/Sqitch.pm b/inc/Menlo/Sqitch.pm index 9541f1d30..6f75e74ab 100644 --- a/inc/Menlo/Sqitch.pm +++ b/inc/Menlo/Sqitch.pm @@ -14,7 +14,6 @@ sub new { last unless s/^\s+//; $deps{$_} = 1; } - use Data::Dump; ddx \%deps; exit; shift->SUPER::new( @_, _remove => [], @@ -73,6 +72,8 @@ sub remove_build_dependencies { # dev/dependency_report. __DATA__ Build-only dependencies + Alien-Build + Alien-cmake3 Archive-Tar Archive-Zip CPAN @@ -111,6 +112,7 @@ Build-only dependencies ExtUtils-MakeMaker ExtUtils-MakeMaker-CPANfile ExtUtils-ParseXS + FFI-CheckLib File-Fetch File-Find-Rule File-Find-Rule-Perl @@ -118,6 +120,7 @@ Build-only dependencies File-Listing File-ShareDir-Install File-Slurper + File-chdir File-pushd HTML-Parser HTML-Tagset @@ -145,7 +148,6 @@ Build-only dependencies Log-Log4perl Math-Base-Convert Math-BigInt - Math-BigRat Math-Complex Menlo Menlo-Legacy @@ -164,6 +166,7 @@ Build-only dependencies Number-Compare Params-Check Parse-PMFile + Path-Tiny Perl-Tidy Pod-Coverage SQL-Statement @@ -188,6 +191,7 @@ Build-only dependencies Tie-File Tie-Handle-Offset TimeDate + Unicode-UTF8 WWW-RobotRules Win32-ShellQuote XML-DOM diff --git a/lib/App/Sqitch.pm b/lib/App/Sqitch.pm index 79b508844..95c977469 100644 --- a/lib/App/Sqitch.pm +++ b/lib/App/Sqitch.pm @@ -904,7 +904,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command.pm b/lib/App/Sqitch/Command.pm index 555325eeb..95e628189 100644 --- a/lib/App/Sqitch/Command.pm +++ b/lib/App/Sqitch/Command.pm @@ -771,7 +771,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/add.pm b/lib/App/Sqitch/Command/add.pm index ccba27dcf..a60b80b6e 100644 --- a/lib/App/Sqitch/Command/add.pm +++ b/lib/App/Sqitch/Command/add.pm @@ -121,7 +121,7 @@ sub _config_templates { sub all_templates { my ($self, $name) = @_; my $config = $self->sqitch->config; - my $tmpl = $self->templates; + my $tmpl = { %{ $self->templates } }; # Read all the template directories. for my $dir ( @@ -543,7 +543,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/bundle.pm b/lib/App/Sqitch/Command/bundle.pm index 2a90da878..c15c7eb79 100644 --- a/lib/App/Sqitch/Command/bundle.pm +++ b/lib/App/Sqitch/Command/bundle.pm @@ -359,7 +359,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/check.pm b/lib/App/Sqitch/Command/check.pm index 983eb64c8..6f5b82f8a 100644 --- a/lib/App/Sqitch/Command/check.pm +++ b/lib/App/Sqitch/Command/check.pm @@ -176,7 +176,7 @@ Matthieu Foucault =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler, Button Inc. +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler, Button Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/checkout.pm b/lib/App/Sqitch/Command/checkout.pm index fc975bc05..26f87ac3e 100644 --- a/lib/App/Sqitch/Command/checkout.pm +++ b/lib/App/Sqitch/Command/checkout.pm @@ -197,7 +197,7 @@ The Sqitch command-line client. =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Copyright (c) 2012-2013 Ronan Dunklau diff --git a/lib/App/Sqitch/Command/config.pm b/lib/App/Sqitch/Command/config.pm index d40ef4fe0..c2e483dbf 100644 --- a/lib/App/Sqitch/Command/config.pm +++ b/lib/App/Sqitch/Command/config.pm @@ -642,7 +642,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/deploy.pm b/lib/App/Sqitch/Command/deploy.pm index fba561e3c..434d68e4c 100644 --- a/lib/App/Sqitch/Command/deploy.pm +++ b/lib/App/Sqitch/Command/deploy.pm @@ -221,7 +221,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/engine.pm b/lib/App/Sqitch/Command/engine.pm index 55756c6e7..cc681ddb3 100644 --- a/lib/App/Sqitch/Command/engine.pm +++ b/lib/App/Sqitch/Command/engine.pm @@ -315,7 +315,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/help.pm b/lib/App/Sqitch/Command/help.pm index e6064a118..756893ede 100644 --- a/lib/App/Sqitch/Command/help.pm +++ b/lib/App/Sqitch/Command/help.pm @@ -119,7 +119,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/init.pm b/lib/App/Sqitch/Command/init.pm index 462fd95b7..6cbaf5d17 100644 --- a/lib/App/Sqitch/Command/init.pm +++ b/lib/App/Sqitch/Command/init.pm @@ -268,7 +268,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/log.pm b/lib/App/Sqitch/Command/log.pm index 6a6d7a69d..fa7737264 100644 --- a/lib/App/Sqitch/Command/log.pm +++ b/lib/App/Sqitch/Command/log.pm @@ -350,7 +350,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/plan.pm b/lib/App/Sqitch/Command/plan.pm index cfad08673..b5f787fbd 100644 --- a/lib/App/Sqitch/Command/plan.pm +++ b/lib/App/Sqitch/Command/plan.pm @@ -332,7 +332,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/rebase.pm b/lib/App/Sqitch/Command/rebase.pm index dabba7bc8..8ae4a2d46 100644 --- a/lib/App/Sqitch/Command/rebase.pm +++ b/lib/App/Sqitch/Command/rebase.pm @@ -175,7 +175,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/revert.pm b/lib/App/Sqitch/Command/revert.pm index 22c41b476..1f82f98c0 100644 --- a/lib/App/Sqitch/Command/revert.pm +++ b/lib/App/Sqitch/Command/revert.pm @@ -269,7 +269,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/rework.pm b/lib/App/Sqitch/Command/rework.pm index 10f6b3a8f..1f980cd3a 100644 --- a/lib/App/Sqitch/Command/rework.pm +++ b/lib/App/Sqitch/Command/rework.pm @@ -313,7 +313,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/show.pm b/lib/App/Sqitch/Command/show.pm index 11fe8f907..a866a2ec7 100644 --- a/lib/App/Sqitch/Command/show.pm +++ b/lib/App/Sqitch/Command/show.pm @@ -181,7 +181,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/status.pm b/lib/App/Sqitch/Command/status.pm index 45a3c8327..d0a9aed0d 100644 --- a/lib/App/Sqitch/Command/status.pm +++ b/lib/App/Sqitch/Command/status.pm @@ -409,7 +409,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/tag.pm b/lib/App/Sqitch/Command/tag.pm index 887dba000..155595c45 100644 --- a/lib/App/Sqitch/Command/tag.pm +++ b/lib/App/Sqitch/Command/tag.pm @@ -183,7 +183,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/target.pm b/lib/App/Sqitch/Command/target.pm index 69b28c872..fb71b7b1f 100644 --- a/lib/App/Sqitch/Command/target.pm +++ b/lib/App/Sqitch/Command/target.pm @@ -314,7 +314,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/upgrade.pm b/lib/App/Sqitch/Command/upgrade.pm index df477ce7f..5b42a7536 100644 --- a/lib/App/Sqitch/Command/upgrade.pm +++ b/lib/App/Sqitch/Command/upgrade.pm @@ -124,7 +124,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/verify.pm b/lib/App/Sqitch/Command/verify.pm index 5324987df..3ecfa3c61 100644 --- a/lib/App/Sqitch/Command/verify.pm +++ b/lib/App/Sqitch/Command/verify.pm @@ -182,7 +182,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Config.pm b/lib/App/Sqitch/Config.pm index b039a26f8..1c89d7460 100644 --- a/lib/App/Sqitch/Config.pm +++ b/lib/App/Sqitch/Config.pm @@ -208,7 +208,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/DateTime.pm b/lib/App/Sqitch/DateTime.pm index 39ce7c09e..e61edc765 100644 --- a/lib/App/Sqitch/DateTime.pm +++ b/lib/App/Sqitch/DateTime.pm @@ -191,7 +191,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine.pm b/lib/App/Sqitch/Engine.pm index 89dfab35c..f6979ad49 100644 --- a/lib/App/Sqitch/Engine.pm +++ b/lib/App/Sqitch/Engine.pm @@ -270,7 +270,7 @@ sub deploy { ); $sqitch->debug(__ "Will deploy the following changes:"); - foreach my $will_deploy_position ($plan->position .. $to_index) { + foreach my $will_deploy_position (($plan->position + 1) .. $to_index) { $sqitch->debug($plan->change_at($will_deploy_position)->format_name_with_tags); } @@ -313,11 +313,10 @@ sub revert { hurl revert => __('Missing required parameter $prompt_default') unless defined $prompt_default; } else { - warnings::warnif( - "deprecated", - "Engine::revert() requires the `prompt` and `prompt_default` arguments.\n" - . 'Omitting them will become fatal in a future release.', - ); + warnings::warnif(deprecated => join ("\n", + "Engine::revert() requires the `prompt` and `prompt_default` arguments.", + 'Omitting them will become fatal in a future release.', + )); $prompt = !($self->no_prompt // 0); $prompt_default = $self->prompt_accept // 1; @@ -370,11 +369,11 @@ sub revert { change => $change->format_name_with_tags, destination => $self->destination, )); - $sqitch->info(__ 'Will revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Will revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; } else { - $sqitch->info(__ 'Would revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Would revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; hurl { ident => 'revert:confirm', message => __ 'Nothing reverted', @@ -400,11 +399,11 @@ sub revert { 'Reverting all changes from {destination}', destination => $self->destination, )); - $sqitch->info(__ 'Will revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Will revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; } else { - $sqitch->info(__ 'Would revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Would revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; hurl { ident => 'revert', message => __ 'Nothing reverted', @@ -2760,7 +2759,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/cockroach.pm b/lib/App/Sqitch/Engine/cockroach.pm index 4e8b4859d..4f71be599 100644 --- a/lib/App/Sqitch/Engine/cockroach.pm +++ b/lib/App/Sqitch/Engine/cockroach.pm @@ -71,7 +71,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/exasol.pm b/lib/App/Sqitch/Engine/exasol.pm index f5d9bb7e4..d8c14eabb 100644 --- a/lib/App/Sqitch/Engine/exasol.pm +++ b/lib/App/Sqitch/Engine/exasol.pm @@ -572,7 +572,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/firebird.pm b/lib/App/Sqitch/Engine/firebird.pm index a141bf42a..b0ec6bd9c 100644 --- a/lib/App/Sqitch/Engine/firebird.pm +++ b/lib/App/Sqitch/Engine/firebird.pm @@ -996,7 +996,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Copyright (c) 2013 Ștefan Suciu diff --git a/lib/App/Sqitch/Engine/mysql.pm b/lib/App/Sqitch/Engine/mysql.pm index 27adb6e9d..50167326e 100644 --- a/lib/App/Sqitch/Engine/mysql.pm +++ b/lib/App/Sqitch/Engine/mysql.pm @@ -179,7 +179,7 @@ has _mysql => ( # Get Maria to abort properly on error. my $vinfo = try { $self->sqitch->probe($self->client, '--version') } || ''; if ($vinfo =~ /mariadb/i) { - my ($version) = $vinfo =~ /Ver\s(\S+)/; + my ($version) = $vinfo =~ /(?:Ver|client)\s+(\S+)/; my ($maj, undef, $pat) = split /[.]/ => $version; push @ret => '--abort-source-on-error' if $maj > 5 || ($maj == 5 && $pat >= 66); @@ -566,7 +566,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/oracle.pm b/lib/App/Sqitch/Engine/oracle.pm index e40229495..5cd82b8e5 100644 --- a/lib/App/Sqitch/Engine/oracle.pm +++ b/lib/App/Sqitch/Engine/oracle.pm @@ -822,7 +822,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/pg.pm b/lib/App/Sqitch/Engine/pg.pm index 9a7ad2bf2..1317b83a7 100644 --- a/lib/App/Sqitch/Engine/pg.pm +++ b/lib/App/Sqitch/Engine/pg.pm @@ -554,7 +554,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/snowflake.pm b/lib/App/Sqitch/Engine/snowflake.pm index b8f45c07d..ee8151ffc 100644 --- a/lib/App/Sqitch/Engine/snowflake.pm +++ b/lib/App/Sqitch/Engine/snowflake.pm @@ -192,6 +192,8 @@ has dbh => ( my $self = shift; $self->use_driver; my $uri = $self->uri; + my $wh = $self->warehouse; + my $role = $self->role; DBI->connect($uri->dbi_dsn, $self->username, $self->password, { PrintError => 0, RaiseError => 0, @@ -207,23 +209,22 @@ has dbh => ( Callbacks => { connected => sub { my $dbh = shift; - my $wh = _quote_ident($dbh, $self->warehouse); my $role = $self->role; $dbh->do($_) or return for ( - ($role ? ("USE ROLE " . _quote_ident($dbh, $role)) : ()), + ($role ? ("USE ROLE $role") : ()), "ALTER WAREHOUSE $wh RESUME IF SUSPENDED", "USE WAREHOUSE $wh", 'ALTER SESSION SET TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ', "ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS'", "ALTER SESSION SET TIMEZONE='UTC'", ); - $dbh->do('USE SCHEMA ' . _quote_ident($dbh, $self->registry)) + $dbh->do('USE SCHEMA ' . $self->registry) or $self->_handle_no_registry($dbh); return; }, disconnect => sub { my $dbh = shift; - my $wh = _quote_ident($dbh, $self->warehouse); + my $wh = $self->warehouse; $dbh->do("ALTER WAREHOUSE $wh SUSPEND"); return; }, @@ -232,14 +233,6 @@ has dbh => ( } ); -sub _quote_ident { - my ($dbh, $ident) = @_; - # https://docs.snowflake.com/en/sql-reference/identifiers-syntax - return $ident if $ident =~ /^[_a-zA-Z][_a-zA-Z0-9\$]*$/; - return $ident if $ident =~ /^"/ && $ident =~ /"$/; - return $dbh->quote_identifier($ident); -} - # Need to wait until dbh is defined. with 'App::Sqitch::Role::DBIEngine'; @@ -725,7 +718,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/sqlite.pm b/lib/App/Sqitch/Engine/sqlite.pm index 228fb8f41..c5926ebba 100644 --- a/lib/App/Sqitch/Engine/sqlite.pm +++ b/lib/App/Sqitch/Engine/sqlite.pm @@ -288,7 +288,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/vertica.pm b/lib/App/Sqitch/Engine/vertica.pm index 7ac2e485e..35bea7b35 100644 --- a/lib/App/Sqitch/Engine/vertica.pm +++ b/lib/App/Sqitch/Engine/vertica.pm @@ -559,7 +559,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/ItemFormatter.pm b/lib/App/Sqitch/ItemFormatter.pm index 86510b24f..bbb8381ff 100644 --- a/lib/App/Sqitch/ItemFormatter.pm +++ b/lib/App/Sqitch/ItemFormatter.pm @@ -582,7 +582,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan.pm b/lib/App/Sqitch/Plan.pm index ce7fb4194..d17860fca 100644 --- a/lib/App/Sqitch/Plan.pm +++ b/lib/App/Sqitch/Plan.pm @@ -1607,7 +1607,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Blank.pm b/lib/App/Sqitch/Plan/Blank.pm index 0c05d2749..9234584bb 100644 --- a/lib/App/Sqitch/Plan/Blank.pm +++ b/lib/App/Sqitch/Plan/Blank.pm @@ -39,7 +39,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Change.pm b/lib/App/Sqitch/Plan/Change.pm index d3aef0b77..7cdad2da3 100644 --- a/lib/App/Sqitch/Plan/Change.pm +++ b/lib/App/Sqitch/Plan/Change.pm @@ -647,7 +647,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/ChangeList.pm b/lib/App/Sqitch/Plan/ChangeList.pm index 04b93526f..a29f35f6d 100644 --- a/lib/App/Sqitch/Plan/ChangeList.pm +++ b/lib/App/Sqitch/Plan/ChangeList.pm @@ -410,7 +410,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Depend.pm b/lib/App/Sqitch/Plan/Depend.pm index faf98646b..4c5a3e930 100644 --- a/lib/App/Sqitch/Plan/Depend.pm +++ b/lib/App/Sqitch/Plan/Depend.pm @@ -366,7 +366,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Line.pm b/lib/App/Sqitch/Plan/Line.pm index 3a1f519b2..232154561 100644 --- a/lib/App/Sqitch/Plan/Line.pm +++ b/lib/App/Sqitch/Plan/Line.pm @@ -347,7 +347,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/LineList.pm b/lib/App/Sqitch/Plan/LineList.pm index c806fffe5..82ac930b7 100644 --- a/lib/App/Sqitch/Plan/LineList.pm +++ b/lib/App/Sqitch/Plan/LineList.pm @@ -110,7 +110,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Pragma.pm b/lib/App/Sqitch/Plan/Pragma.pm index 0f9d3cd06..88d402f13 100644 --- a/lib/App/Sqitch/Plan/Pragma.pm +++ b/lib/App/Sqitch/Plan/Pragma.pm @@ -102,7 +102,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Tag.pm b/lib/App/Sqitch/Plan/Tag.pm index 356a9e0a1..4e9d6a210 100644 --- a/lib/App/Sqitch/Plan/Tag.pm +++ b/lib/App/Sqitch/Plan/Tag.pm @@ -158,7 +158,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/ConnectingCommand.pm b/lib/App/Sqitch/Role/ConnectingCommand.pm index 70bff56d0..8a17013de 100644 --- a/lib/App/Sqitch/Role/ConnectingCommand.pm +++ b/lib/App/Sqitch/Role/ConnectingCommand.pm @@ -120,7 +120,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/ContextCommand.pm b/lib/App/Sqitch/Role/ContextCommand.pm index a8cc523ba..075cb2dd8 100644 --- a/lib/App/Sqitch/Role/ContextCommand.pm +++ b/lib/App/Sqitch/Role/ContextCommand.pm @@ -122,7 +122,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/DBIEngine.pm b/lib/App/Sqitch/Role/DBIEngine.pm index 42bc38ad2..e09fc4df9 100644 --- a/lib/App/Sqitch/Role/DBIEngine.pm +++ b/lib/App/Sqitch/Role/DBIEngine.pm @@ -1133,7 +1133,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/RevertDeployCommand.pm b/lib/App/Sqitch/Role/RevertDeployCommand.pm index b71b682b3..8d4215d55 100644 --- a/lib/App/Sqitch/Role/RevertDeployCommand.pm +++ b/lib/App/Sqitch/Role/RevertDeployCommand.pm @@ -287,7 +287,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/TargetConfigCommand.pm b/lib/App/Sqitch/Role/TargetConfigCommand.pm index 64acaa5f2..4b9d4396a 100644 --- a/lib/App/Sqitch/Role/TargetConfigCommand.pm +++ b/lib/App/Sqitch/Role/TargetConfigCommand.pm @@ -530,7 +530,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Target.pm b/lib/App/Sqitch/Target.pm index c3af1912a..2d3410dad 100644 --- a/lib/App/Sqitch/Target.pm +++ b/lib/App/Sqitch/Target.pm @@ -842,7 +842,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Types.pm b/lib/App/Sqitch/Types.pm index d9cda3c47..58bdba436 100644 --- a/lib/App/Sqitch/Types.pm +++ b/lib/App/Sqitch/Types.pm @@ -168,7 +168,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/X.pm b/lib/App/Sqitch/X.pm index 121729834..8221998a1 100644 --- a/lib/App/Sqitch/X.pm +++ b/lib/App/Sqitch/X.pm @@ -175,7 +175,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitch-configuration.pod b/lib/sqitch-configuration.pod index a96368565..3fe808c84 100644 --- a/lib/sqitch-configuration.pod +++ b/lib/sqitch-configuration.pod @@ -368,7 +368,7 @@ The commands that take engine and target URI arguments include: =item * L|sqitch-verify> -=item * L|sqitch-upgrade> +=item * L|sqitch-upgrade> =back diff --git a/lib/sqitch-target.pod b/lib/sqitch-target.pod index 3bf9e6dab..9d5ba65cd 100644 --- a/lib/sqitch-target.pod +++ b/lib/sqitch-target.pod @@ -40,7 +40,25 @@ Some examples: =back -See the L for details. +Note that, as with any URI or URL, special characters must be +L. For example, when +a username contains a reserved character, such as the C<|> in C, +it must be percent-encoded as C<%7c>: + + db:pg://ro%7Cmichelle@examle.org/inventory + +The rules are even more strict for query parameters, as often used by for +ODBC connections. For example, when using a +L +with special characters, such as a warehouse name with a C<.>, such as +C, the identifier must be double-quoted --- and double quote are +reserved characters in URIs, so must be encoded as C<%22>. + + db:snowflake://example/flipr?Driver=Snowflake;warehouse=%22sqitch.dev%22 + +See L for details. +and the L for in-depth +information on database URIs in general. =item C diff --git a/lib/sqitch.pod b/lib/sqitch.pod index f81bc41db..729dfa74f 100644 --- a/lib/sqitch.pod +++ b/lib/sqitch.pod @@ -495,7 +495,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-exasol.pod b/lib/sqitchtutorial-exasol.pod index 17c50b77c..c43ef4d87 100644 --- a/lib/sqitchtutorial-exasol.pod +++ b/lib/sqitchtutorial-exasol.pod @@ -1391,7 +1391,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-firebird.pod b/lib/sqitchtutorial-firebird.pod index 31fe551d1..3deb03c60 100644 --- a/lib/sqitchtutorial-firebird.pod +++ b/lib/sqitchtutorial-firebird.pod @@ -1243,7 +1243,7 @@ is planned to make managing idempotent reworkings even easier. Stay tuned. =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-mysql.pod b/lib/sqitchtutorial-mysql.pod index 71bae521f..ba5e72fc6 100644 --- a/lib/sqitchtutorial-mysql.pod +++ b/lib/sqitchtutorial-mysql.pod @@ -1703,7 +1703,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-oracle.pod b/lib/sqitchtutorial-oracle.pod index 01bbc0807..7b73d2bf7 100644 --- a/lib/sqitchtutorial-oracle.pod +++ b/lib/sqitchtutorial-oracle.pod @@ -1963,7 +1963,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-snowflake.pod b/lib/sqitchtutorial-snowflake.pod index 4347c4b9c..317ac7e35 100644 --- a/lib/sqitchtutorial-snowflake.pod +++ b/lib/sqitchtutorial-snowflake.pod @@ -183,7 +183,13 @@ this: db:snowflake://movera@example/flipr?Driver=Snowflake;warehouse=sqitch -Note that Sqitch requires a C parameter in order to record its work +A few notes on the URL format: + +=over + +=item * + +Sqitch requires a C parameter in order to record its work in the registry. The default warehouse is named C, so you can omit it from the URI if that's the warehouse you want Sqitch to use (we'll omit it for the remainder of this tutorial). Otherwise, specify it in the URI. Snowflake @@ -192,7 +198,25 @@ best to put it in the C section of the L file|https://docs.snowflake.com/en/user-guide/snowsql-start.html#configuring-default-connection-settings>. See L for details. -We just tell Sqitch to use that URI to deploy the change: +=item * + +This is a proper URI, where special characters must be +L. For example, when +a warehouse name or role requires +L, +use C<%22> for the quotation marks: + + db:snowflake://movera@example/flipr?Driver=Snowflake;warehouse=%22sqitch.dev%22&role=%22app.sqitch%22 + +Of course that can be tricky to use on the command line, so there are also +L that can simplify things: + + export SNOWSQL_ROLE='"app.sqitch"' + export SNOWSQL_WAREHOUSE='"sqitch.dev"' + +=back + +Back to the change. We just tell Sqitch to use that URI to deploy it: > sqitch deploy 'db:snowflake://movera@example/flipr?Driver=Snowflake' Adding registry tables to db:snowflake://movera@example/flipr?Driver=Snowflake @@ -1399,7 +1423,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-sqlite.pod b/lib/sqitchtutorial-sqlite.pod index e59fa7130..1c89348ca 100644 --- a/lib/sqitchtutorial-sqlite.pod +++ b/lib/sqitchtutorial-sqlite.pod @@ -1220,7 +1220,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-vertica.pod b/lib/sqitchtutorial-vertica.pod index fb995ca46..0ab02b295 100644 --- a/lib/sqitchtutorial-vertica.pod +++ b/lib/sqitchtutorial-vertica.pod @@ -1370,7 +1370,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial.pod b/lib/sqitchtutorial.pod index d7ed13acb..24045d4f8 100644 --- a/lib/sqitchtutorial.pod +++ b/lib/sqitchtutorial.pod @@ -1677,7 +1677,7 @@ David E. Wheeler =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/po/App-Sqitch.pot b/po/App-Sqitch.pot index d998166be..084b93cc5 100644 --- a/po/App-Sqitch.pot +++ b/po/App-Sqitch.pot @@ -1,14 +1,14 @@ # Sqitch Localization Messages -# Copyright (c) 2012-2023 "iovation Inc., David E. Wheeler" +# Copyright (c) 2012-2024 "iovation Inc., David E. Wheeler" # This file is distributed under the same license as the App-Sqitch package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: App-Sqitch v1.4.0\n" +"Project-Id-Version: App-Sqitch v1.4.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 20:02-0400\n" +"POT-Creation-Date: 2024-02-04 10:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -520,8 +520,8 @@ msgstr "" msgid ", " msgstr "" -#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:453 -#: lib/App/Sqitch/Engine.pm:1288 +#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:452 +#: lib/App/Sqitch/Engine.pm:1287 msgid "No changes deployed" msgstr "" @@ -591,7 +591,7 @@ msgstr "" msgid "Nothing to deploy (up-to-date)" msgstr "" -#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:608 +#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:607 msgid "Undeployed change:" msgid_plural "Undeployed changes:" msgstr[0] "" @@ -670,7 +670,7 @@ msgstr "" msgid "Nothing to deploy (empty plan)" msgstr "" -#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:348 +#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:347 #: lib/App/Sqitch/Plan.pm:749 lib/App/Sqitch/Plan/ChangeList.pm:121 #, perl-brace-format msgid "Unknown change: \"{change}\"" @@ -713,156 +713,156 @@ msgstr "" msgid "Missing required parameter $prompt_default" msgstr "" -#: lib/App/Sqitch/Engine.pm:342 +#: lib/App/Sqitch/Engine.pm:341 #, perl-brace-format msgid "Change not deployed: \"{change}\"" msgstr "" -#: lib/App/Sqitch/Engine.pm:359 +#: lib/App/Sqitch/Engine.pm:358 #, perl-brace-format msgid "No changes deployed since: \"{change}\"" msgstr "" -#: lib/App/Sqitch/Engine.pm:369 +#: lib/App/Sqitch/Engine.pm:368 #, perl-brace-format msgid "Reverting changes to {change} from {destination}" msgstr "" -#: lib/App/Sqitch/Engine.pm:373 lib/App/Sqitch/Engine.pm:403 +#: lib/App/Sqitch/Engine.pm:372 lib/App/Sqitch/Engine.pm:402 msgid "Will revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:376 lib/App/Sqitch/Engine.pm:406 +#: lib/App/Sqitch/Engine.pm:375 lib/App/Sqitch/Engine.pm:405 msgid "Would revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:380 lib/App/Sqitch/Engine.pm:410 +#: lib/App/Sqitch/Engine.pm:379 lib/App/Sqitch/Engine.pm:409 msgid "Nothing reverted" msgstr "" -#: lib/App/Sqitch/Engine.pm:383 +#: lib/App/Sqitch/Engine.pm:382 #, perl-brace-format msgid "Revert changes to {change} from {destination}?" msgstr "" -#: lib/App/Sqitch/Engine.pm:392 +#: lib/App/Sqitch/Engine.pm:391 msgid "Nothing to revert (nothing deployed)" msgstr "" -#: lib/App/Sqitch/Engine.pm:400 +#: lib/App/Sqitch/Engine.pm:399 #, perl-brace-format msgid "Reverting all changes from {destination}" msgstr "" -#: lib/App/Sqitch/Engine.pm:413 +#: lib/App/Sqitch/Engine.pm:412 #, perl-brace-format msgid "Revert all changes from {destination}?" msgstr "" -#: lib/App/Sqitch/Engine.pm:447 +#: lib/App/Sqitch/Engine.pm:446 #, perl-brace-format msgid "Verifying {destination}" msgstr "" -#: lib/App/Sqitch/Engine.pm:454 +#: lib/App/Sqitch/Engine.pm:453 msgid "Nothing to verify (no planned or deployed changes)" msgstr "" -#: lib/App/Sqitch/Engine.pm:461 +#: lib/App/Sqitch/Engine.pm:460 msgid "There are deployed changes, but none planned!" msgstr "" -#: lib/App/Sqitch/Engine.pm:474 +#: lib/App/Sqitch/Engine.pm:473 msgid "Verify Summary Report" msgstr "" -#: lib/App/Sqitch/Engine.pm:477 +#: lib/App/Sqitch/Engine.pm:476 #, perl-brace-format msgid "Changes: {number}" msgstr "" -#: lib/App/Sqitch/Engine.pm:478 +#: lib/App/Sqitch/Engine.pm:477 #, perl-brace-format msgid "Errors: {number}" msgstr "" -#: lib/App/Sqitch/Engine.pm:479 +#: lib/App/Sqitch/Engine.pm:478 msgid "Verify failed" msgstr "" -#: lib/App/Sqitch/Engine.pm:484 +#: lib/App/Sqitch/Engine.pm:483 msgid "Verify successful" msgstr "" -#: lib/App/Sqitch/Engine.pm:513 +#: lib/App/Sqitch/Engine.pm:512 #, perl-brace-format msgid "Change \"{change}\" has not been deployed" msgstr "" -#: lib/App/Sqitch/Engine.pm:516 +#: lib/App/Sqitch/Engine.pm:515 #, perl-brace-format msgid "Cannot find \"{change}\" in the database or the plan" msgstr "" -#: lib/App/Sqitch/Engine.pm:523 +#: lib/App/Sqitch/Engine.pm:522 #, perl-brace-format msgid "Change \"{change}\" is deployed, but not planned" msgstr "" -#: lib/App/Sqitch/Engine.pm:567 +#: lib/App/Sqitch/Engine.pm:566 msgid "Out of order" msgstr "" -#: lib/App/Sqitch/Engine.pm:573 +#: lib/App/Sqitch/Engine.pm:572 msgid "Not present in the plan" msgstr "" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:596 -#: lib/App/Sqitch/Engine.pm:1068 lib/App/Sqitch/Engine.pm:1098 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:595 +#: lib/App/Sqitch/Engine.pm:1067 lib/App/Sqitch/Engine.pm:1097 msgid "not ok" msgstr "" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:1046 -#: lib/App/Sqitch/Engine.pm:1088 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:1045 +#: lib/App/Sqitch/Engine.pm:1087 msgid "ok" msgstr "" -#: lib/App/Sqitch/Engine.pm:598 +#: lib/App/Sqitch/Engine.pm:597 msgid "Not deployed" msgstr "" -#: lib/App/Sqitch/Engine.pm:630 +#: lib/App/Sqitch/Engine.pm:629 #, perl-brace-format msgid "Verify script \"{script}\" failed." msgstr "" -#: lib/App/Sqitch/Engine.pm:639 +#: lib/App/Sqitch/Engine.pm:638 #, perl-brace-format msgid "Verify script {file} does not exist" msgstr "" -#: lib/App/Sqitch/Engine.pm:681 +#: lib/App/Sqitch/Engine.pm:680 #, perl-brace-format msgid "Conflicts with previously deployed change: {changes}" msgid_plural "Conflicts with previously deployed changes: {changes}" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:688 +#: lib/App/Sqitch/Engine.pm:687 #, perl-brace-format msgid "Missing required change: {changes}" msgid_plural "Missing required changes: {changes}" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:700 +#: lib/App/Sqitch/Engine.pm:699 #, perl-brace-format msgid "Change \"{changes}\" has already been deployed" msgid_plural "Changes have already been deployed: {changes}" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:723 +#: lib/App/Sqitch/Engine.pm:722 #, perl-brace-format msgid "Change \"{change}\" required by currently deployed change: {changes}" msgid_plural "" @@ -870,120 +870,120 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:746 +#: lib/App/Sqitch/Engine.pm:745 #, perl-brace-format msgid "Invalid dependency: {dependency}" msgstr "" -#: lib/App/Sqitch/Engine.pm:882 lib/App/Sqitch/Plan/ChangeList.pm:88 +#: lib/App/Sqitch/Engine.pm:881 lib/App/Sqitch/Plan/ChangeList.pm:88 #, perl-brace-format msgid "" "Change \"{change}\" is ambiguous. Please specify a tag-qualified change:" msgstr "" -#: lib/App/Sqitch/Engine.pm:897 +#: lib/App/Sqitch/Engine.pm:896 msgid "Change Lookup Failed" msgstr "" -#: lib/App/Sqitch/Engine.pm:918 +#: lib/App/Sqitch/Engine.pm:917 #, perl-brace-format msgid "Reverting to {change}" msgstr "" -#: lib/App/Sqitch/Engine.pm:919 +#: lib/App/Sqitch/Engine.pm:918 msgid "Reverting all changes" msgstr "" -#: lib/App/Sqitch/Engine.pm:927 +#: lib/App/Sqitch/Engine.pm:926 msgid "The schema will need to be manually repaired" msgstr "" -#: lib/App/Sqitch/Engine.pm:931 lib/App/Sqitch/Engine.pm:1062 +#: lib/App/Sqitch/Engine.pm:930 lib/App/Sqitch/Engine.pm:1061 msgid "Deploy failed" msgstr "" -#: lib/App/Sqitch/Engine.pm:991 +#: lib/App/Sqitch/Engine.pm:990 #, perl-brace-format msgid "Cannot find change {id} ({change}) in {file}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1113 +#: lib/App/Sqitch/Engine.pm:1112 #, perl-brace-format msgid "" "Blocked by another instance of Sqitch working on {dest}; waiting {secs} " "seconds..." msgstr "" -#: lib/App/Sqitch/Engine.pm:1123 +#: lib/App/Sqitch/Engine.pm:1122 #, perl-brace-format msgid "" "Timed out waiting {secs} seconds for another instance of Sqitch to finish " "work on {dest}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1182 +#: lib/App/Sqitch/Engine.pm:1181 #, perl-brace-format msgid "No registry found in {destination}. Have you ever deployed?" msgstr "" -#: lib/App/Sqitch/Engine.pm:1187 +#: lib/App/Sqitch/Engine.pm:1186 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " "Sqitch" msgstr "" -#: lib/App/Sqitch/Engine.pm:1193 +#: lib/App/Sqitch/Engine.pm:1192 #, perl-brace-format msgid "" "Registry is at version {old} but latest is {new}. Please run the \"upgrade\" " "command" msgstr "" -#: lib/App/Sqitch/Engine.pm:1208 +#: lib/App/Sqitch/Engine.pm:1207 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " "Sqitch." msgstr "" -#: lib/App/Sqitch/Engine.pm:1223 +#: lib/App/Sqitch/Engine.pm:1222 #, perl-brace-format msgid "Cannot upgrade to {version}: Cannot find upgrade script \"{file}\"" msgstr "" -#: lib/App/Sqitch/Engine.pm:1230 +#: lib/App/Sqitch/Engine.pm:1229 #, perl-brace-format msgid "Upgrading the Sqitch registry from {old} to {new}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1237 +#: lib/App/Sqitch/Engine.pm:1236 #, perl-brace-format msgid "From {old} to {new}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1282 +#: lib/App/Sqitch/Engine.pm:1281 #, perl-brace-format msgid "Checking {destination}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1289 +#: lib/App/Sqitch/Engine.pm:1288 msgid "Nothing to check (no planned or deployed changes)" msgstr "" -#: lib/App/Sqitch/Engine.pm:1302 +#: lib/App/Sqitch/Engine.pm:1301 #, perl-brace-format msgid "Script signatures diverge at change {change}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1310 +#: lib/App/Sqitch/Engine.pm:1309 #, perl-brace-format msgid "Failed one check" msgid_plural "Failed {count} checks" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:1318 +#: lib/App/Sqitch/Engine.pm:1317 msgid "Check successful" msgstr "" @@ -1011,8 +1011,7 @@ msgstr "" msgid "{command} unexpectedly failed; exit value = {exitval}" msgstr "" -#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/mysql.pm:274 -#: lib/App/Sqitch/Engine/sqlite.pm:158 +#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/sqlite.pm:158 #, perl-brace-format msgid "Sqitch database {database} already initialized" msgstr "" @@ -1060,7 +1059,7 @@ msgstr "" msgid "Database name missing in URI \"{uri}\"" msgstr "" -#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:310 +#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:303 #: lib/App/Sqitch/Engine/vertica.pm:139 #, perl-brace-format msgid "Sqitch schema \"{schema}\" already exists" diff --git a/po/de_DE.po b/po/de_DE.po index 6eceb8bc5..c39cab925 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -1,5 +1,5 @@ # Sqitch German Localization Messages -# Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +# Copyright (c) 2012-2024 iovation Inc., David E. Wheeler # This file is distributed under the same license as the App-Sqitch package. # Thomas Iguchi , 2019. # @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: Sqitch 0.932\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 20:02-0400\n" +"POT-Creation-Date: 2024-02-04 10:23-0500\n" "PO-Revision-Date: 2012-08-31 17:15-0700\n" "Last-Translator: Thomas Iguchi \n" -"Language-Team: German \n" +"Language-Team: Sqitch Hackers \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -548,8 +548,8 @@ msgstr "Verwende --project um ein bestimmtes Projekt anzugeben: {projects}" msgid ", " msgstr ", " -#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:453 -#: lib/App/Sqitch/Engine.pm:1288 +#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:452 +#: lib/App/Sqitch/Engine.pm:1287 msgid "No changes deployed" msgstr "Keine Änderungen angewendet" @@ -623,7 +623,7 @@ msgstr "" msgid "Nothing to deploy (up-to-date)" msgstr "Nichts anzuwenden (auf neuestem Stand)" -#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:608 +#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:607 msgid "Undeployed change:" msgid_plural "Undeployed changes:" msgstr[0] "Rückgängig gemachte Änderung:" @@ -710,7 +710,7 @@ msgstr "{driver} benötigt, um {engine} zu benutzen" msgid "Nothing to deploy (empty plan)" msgstr "Nichts anzuwenden (leerer Plan)" -#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:348 +#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:347 #: lib/App/Sqitch/Plan.pm:749 lib/App/Sqitch/Plan/ChangeList.pm:121 #, perl-brace-format msgid "Unknown change: \"{change}\"" @@ -755,156 +755,156 @@ msgstr "Unbekannter Anwendungsmodus: \"{mode}\"" msgid "Missing required parameter $prompt_default" msgstr "" -#: lib/App/Sqitch/Engine.pm:342 +#: lib/App/Sqitch/Engine.pm:341 #, perl-brace-format msgid "Change not deployed: \"{change}\"" msgstr "Änderung nicht angewandt: \"{change}\"" -#: lib/App/Sqitch/Engine.pm:359 +#: lib/App/Sqitch/Engine.pm:358 #, perl-brace-format msgid "No changes deployed since: \"{change}\"" msgstr "Keine Änderungen seit \"{change}\" angewandt" -#: lib/App/Sqitch/Engine.pm:369 +#: lib/App/Sqitch/Engine.pm:368 #, perl-brace-format msgid "Reverting changes to {change} from {destination}" msgstr "Kehre Änderungen an {destination} um nach {change}" -#: lib/App/Sqitch/Engine.pm:373 lib/App/Sqitch/Engine.pm:403 +#: lib/App/Sqitch/Engine.pm:372 lib/App/Sqitch/Engine.pm:402 msgid "Will revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:376 lib/App/Sqitch/Engine.pm:406 +#: lib/App/Sqitch/Engine.pm:375 lib/App/Sqitch/Engine.pm:405 msgid "Would revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:380 lib/App/Sqitch/Engine.pm:410 +#: lib/App/Sqitch/Engine.pm:379 lib/App/Sqitch/Engine.pm:409 msgid "Nothing reverted" msgstr "Nichts rückgängig gemacht" -#: lib/App/Sqitch/Engine.pm:383 +#: lib/App/Sqitch/Engine.pm:382 #, perl-brace-format msgid "Revert changes to {change} from {destination}?" msgstr "Änderungen von {change} nach {destination} wieder rückgängig machen?" -#: lib/App/Sqitch/Engine.pm:392 +#: lib/App/Sqitch/Engine.pm:391 msgid "Nothing to revert (nothing deployed)" msgstr "Nichts rückgängig zu machen (keine Änderungen angewandt)" -#: lib/App/Sqitch/Engine.pm:400 +#: lib/App/Sqitch/Engine.pm:399 #, perl-brace-format msgid "Reverting all changes from {destination}" msgstr "Kehre alle Änderungen an {destination} um" -#: lib/App/Sqitch/Engine.pm:413 +#: lib/App/Sqitch/Engine.pm:412 #, perl-brace-format msgid "Revert all changes from {destination}?" msgstr "Alle Änderungen an {destination} rückgängig machen?" -#: lib/App/Sqitch/Engine.pm:447 +#: lib/App/Sqitch/Engine.pm:446 #, perl-brace-format msgid "Verifying {destination}" msgstr "Verifiziere {destination}" -#: lib/App/Sqitch/Engine.pm:454 +#: lib/App/Sqitch/Engine.pm:453 msgid "Nothing to verify (no planned or deployed changes)" msgstr "Nichts zu verifizieren (keine geplanten oder angewandten Änderungen)" -#: lib/App/Sqitch/Engine.pm:461 +#: lib/App/Sqitch/Engine.pm:460 msgid "There are deployed changes, but none planned!" msgstr "Angewandte Änderungen gefunden die ungeplant sind!" -#: lib/App/Sqitch/Engine.pm:474 +#: lib/App/Sqitch/Engine.pm:473 msgid "Verify Summary Report" msgstr "Verifizierungsreport" -#: lib/App/Sqitch/Engine.pm:477 +#: lib/App/Sqitch/Engine.pm:476 #, perl-brace-format msgid "Changes: {number}" msgstr "Änderungen: {number}" -#: lib/App/Sqitch/Engine.pm:478 +#: lib/App/Sqitch/Engine.pm:477 #, perl-brace-format msgid "Errors: {number}" msgstr "Fehler: {number}" -#: lib/App/Sqitch/Engine.pm:479 +#: lib/App/Sqitch/Engine.pm:478 msgid "Verify failed" msgstr "Verifizierung fehlgeschlagen" -#: lib/App/Sqitch/Engine.pm:484 +#: lib/App/Sqitch/Engine.pm:483 msgid "Verify successful" msgstr "Erfolgreich verifiziert" -#: lib/App/Sqitch/Engine.pm:513 +#: lib/App/Sqitch/Engine.pm:512 #, perl-brace-format msgid "Change \"{change}\" has not been deployed" msgstr "Änderung \"{change}\" wurde noch nicht angewendet" -#: lib/App/Sqitch/Engine.pm:516 +#: lib/App/Sqitch/Engine.pm:515 #, perl-brace-format msgid "Cannot find \"{change}\" in the database or the plan" msgstr "Kann \"{change}\" weder in der Datenbank noch im Plan finden" -#: lib/App/Sqitch/Engine.pm:523 +#: lib/App/Sqitch/Engine.pm:522 #, perl-brace-format msgid "Change \"{change}\" is deployed, but not planned" msgstr "Änderung \"{change}\" wurde angewendet, allerdings nicht geplant" -#: lib/App/Sqitch/Engine.pm:567 +#: lib/App/Sqitch/Engine.pm:566 msgid "Out of order" msgstr "Ungültige Reihenfolge" -#: lib/App/Sqitch/Engine.pm:573 +#: lib/App/Sqitch/Engine.pm:572 msgid "Not present in the plan" msgstr "Im Plan nicht vorhanden" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:596 -#: lib/App/Sqitch/Engine.pm:1068 lib/App/Sqitch/Engine.pm:1098 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:595 +#: lib/App/Sqitch/Engine.pm:1067 lib/App/Sqitch/Engine.pm:1097 msgid "not ok" msgstr "nicht OK" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:1046 -#: lib/App/Sqitch/Engine.pm:1088 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:1045 +#: lib/App/Sqitch/Engine.pm:1087 msgid "ok" msgstr "OK" -#: lib/App/Sqitch/Engine.pm:598 +#: lib/App/Sqitch/Engine.pm:597 msgid "Not deployed" msgstr "Nicht angewendet" -#: lib/App/Sqitch/Engine.pm:630 +#: lib/App/Sqitch/Engine.pm:629 #, perl-brace-format msgid "Verify script \"{script}\" failed." msgstr "Verifizierungsskript {script} fehlgeschlagen." -#: lib/App/Sqitch/Engine.pm:639 +#: lib/App/Sqitch/Engine.pm:638 #, perl-brace-format msgid "Verify script {file} does not exist" msgstr "Verifizierungsskript {file} existiert nicht" -#: lib/App/Sqitch/Engine.pm:681 +#: lib/App/Sqitch/Engine.pm:680 #, perl-brace-format msgid "Conflicts with previously deployed change: {changes}" msgid_plural "Conflicts with previously deployed changes: {changes}" msgstr[0] "Konflikte mit zuvor angewendeter Änderung: {changes}" msgstr[1] "Konflikte mit zuvor angewendeten Änderungen: {changes}" -#: lib/App/Sqitch/Engine.pm:688 +#: lib/App/Sqitch/Engine.pm:687 #, perl-brace-format msgid "Missing required change: {changes}" msgid_plural "Missing required changes: {changes}" msgstr[0] "Fehlende benötigte Änderung: {changes}" msgstr[1] "Fehlende benötigte Änderungen: {changes}" -#: lib/App/Sqitch/Engine.pm:700 +#: lib/App/Sqitch/Engine.pm:699 #, perl-brace-format msgid "Change \"{changes}\" has already been deployed" msgid_plural "Changes have already been deployed: {changes}" msgstr[0] "Änderung \"{changes}\" wurde bereits angewendet" msgstr[1] "Änderungen wurden bereits angewendet: {changes}" -#: lib/App/Sqitch/Engine.pm:723 +#: lib/App/Sqitch/Engine.pm:722 #, perl-brace-format msgid "Change \"{change}\" required by currently deployed change: {changes}" msgid_plural "" @@ -916,66 +916,66 @@ msgstr[1] "" "Änderung \"{change}\" wird erfordert von gerade angewendeten Änderungen: " "{changes}" -#: lib/App/Sqitch/Engine.pm:746 +#: lib/App/Sqitch/Engine.pm:745 #, perl-brace-format msgid "Invalid dependency: {dependency}" msgstr "Ungültige Abhängigkeit: {dependency}" -#: lib/App/Sqitch/Engine.pm:882 lib/App/Sqitch/Plan/ChangeList.pm:88 +#: lib/App/Sqitch/Engine.pm:881 lib/App/Sqitch/Plan/ChangeList.pm:88 #, perl-brace-format msgid "" "Change \"{change}\" is ambiguous. Please specify a tag-qualified change:" msgstr "" "Änderung \"{change}\" ist mehrdeutig. Bitte gib ein Tag für die Änderung an:" -#: lib/App/Sqitch/Engine.pm:897 +#: lib/App/Sqitch/Engine.pm:896 msgid "Change Lookup Failed" msgstr "Suche nach Änderung gescheitert" -#: lib/App/Sqitch/Engine.pm:918 +#: lib/App/Sqitch/Engine.pm:917 #, perl-brace-format msgid "Reverting to {change}" msgstr "Mache Änderungen rückgänging bis nach {change}" -#: lib/App/Sqitch/Engine.pm:919 +#: lib/App/Sqitch/Engine.pm:918 msgid "Reverting all changes" msgstr "Kehre sämtliche Änderungen um" -#: lib/App/Sqitch/Engine.pm:927 +#: lib/App/Sqitch/Engine.pm:926 msgid "The schema will need to be manually repaired" msgstr "Das Schema muss manuell repariert werden" -#: lib/App/Sqitch/Engine.pm:931 lib/App/Sqitch/Engine.pm:1062 +#: lib/App/Sqitch/Engine.pm:930 lib/App/Sqitch/Engine.pm:1061 msgid "Deploy failed" msgstr "Anwendung der Änderung(en) fehlgeschlagen" -#: lib/App/Sqitch/Engine.pm:991 +#: lib/App/Sqitch/Engine.pm:990 #, perl-brace-format msgid "Cannot find change {id} ({change}) in {file}" msgstr "Kann Änderung {id} ({change}) in {file} nicht finden" -#: lib/App/Sqitch/Engine.pm:1113 +#: lib/App/Sqitch/Engine.pm:1112 #, perl-brace-format msgid "" "Blocked by another instance of Sqitch working on {dest}; waiting {secs} " "seconds..." msgstr "" -#: lib/App/Sqitch/Engine.pm:1123 +#: lib/App/Sqitch/Engine.pm:1122 #, perl-brace-format msgid "" "Timed out waiting {secs} seconds for another instance of Sqitch to finish " "work on {dest}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1182 +#: lib/App/Sqitch/Engine.pm:1181 #, perl-brace-format msgid "No registry found in {destination}. Have you ever deployed?" msgstr "" "Registry nicht gefunden in {destination}. Wurde Sqitch jemals darauf " "ausgeführt?" -#: lib/App/Sqitch/Engine.pm:1187 +#: lib/App/Sqitch/Engine.pm:1186 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " @@ -984,7 +984,7 @@ msgstr "" "Aktuelle Registry-Version ist {old} allerdings ist {new} die neueste " "bekannte Version. Bitte aktualisiere Sqitch" -#: lib/App/Sqitch/Engine.pm:1193 +#: lib/App/Sqitch/Engine.pm:1192 #, perl-brace-format msgid "" "Registry is at version {old} but latest is {new}. Please run the \"upgrade\" " @@ -993,7 +993,7 @@ msgstr "" "Registry ist derzeit auf Version {old} aber neueste Version ist {new}. Bitte " "führe den \"upgrade\"-Befehl aus" -#: lib/App/Sqitch/Engine.pm:1208 +#: lib/App/Sqitch/Engine.pm:1207 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " @@ -1002,46 +1002,46 @@ msgstr "" "Aktuelle Registry-Version ist {old} allerdings ist {new} die neueste " "bekannte Version. Bitte aktualisiere Sqitch" -#: lib/App/Sqitch/Engine.pm:1223 +#: lib/App/Sqitch/Engine.pm:1222 #, perl-brace-format msgid "Cannot upgrade to {version}: Cannot find upgrade script \"{file}\"" msgstr "" "Kann nicht nach {version} aktualisieren: Upgrade-Skript \"{file}\" nicht " "gefunden" -#: lib/App/Sqitch/Engine.pm:1230 +#: lib/App/Sqitch/Engine.pm:1229 #, perl-brace-format msgid "Upgrading the Sqitch registry from {old} to {new}" msgstr "Aktualisiere die Sqitch-Registry von {old} nach {new}" -#: lib/App/Sqitch/Engine.pm:1237 +#: lib/App/Sqitch/Engine.pm:1236 #, perl-brace-format msgid "From {old} to {new}" msgstr "Von {old} nach {new}" -#: lib/App/Sqitch/Engine.pm:1282 +#: lib/App/Sqitch/Engine.pm:1281 #, fuzzy, perl-brace-format msgid "Checking {destination}" msgstr "Verifiziere {destination}" -#: lib/App/Sqitch/Engine.pm:1289 +#: lib/App/Sqitch/Engine.pm:1288 #, fuzzy msgid "Nothing to check (no planned or deployed changes)" msgstr "Nichts zu verifizieren (keine geplanten oder angewandten Änderungen)" -#: lib/App/Sqitch/Engine.pm:1302 +#: lib/App/Sqitch/Engine.pm:1301 #, fuzzy, perl-brace-format msgid "Script signatures diverge at change {change}" msgstr "Fehlende benötigte Änderung: {changes}" -#: lib/App/Sqitch/Engine.pm:1310 +#: lib/App/Sqitch/Engine.pm:1309 #, perl-brace-format msgid "Failed one check" msgid_plural "Failed {count} checks" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:1318 +#: lib/App/Sqitch/Engine.pm:1317 #, fuzzy msgid "Check successful" msgstr "Erfolgreich verifiziert" @@ -1071,8 +1071,7 @@ msgstr "" msgid "{command} unexpectedly failed; exit value = {exitval}" msgstr "{command} unerwartet gescheitert. Rückgabewert = {exitval}" -#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/mysql.pm:274 -#: lib/App/Sqitch/Engine/sqlite.pm:158 +#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/sqlite.pm:158 #, perl-brace-format msgid "Sqitch database {database} already initialized" msgstr "Sqitch-Datenbank {database} ist bereits initialisiert" @@ -1124,7 +1123,7 @@ msgstr "" msgid "Database name missing in URI \"{uri}\"" msgstr "Name der Datenbank fehlt in URI \"{uri}\"" -#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:310 +#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:303 #: lib/App/Sqitch/Engine/vertica.pm:139 #, perl-brace-format msgid "Sqitch schema \"{schema}\" already exists" diff --git a/po/fr_FR.po b/po/fr_FR.po index dc2502eac..f1e46674d 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -1,5 +1,5 @@ # Sqitch French Localization Messages -# Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +# Copyright (c) 2012-2024 iovation Inc., David E. Wheeler # This file is distributed under the same license as the App-Sqitch package. # Arnaud Assad , 2012. # @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: Sqitch 0.932\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 20:02-0400\n" +"POT-Creation-Date: 2024-02-04 10:23-0500\n" "PO-Revision-Date: 2012-10-12 11:28-0700\n" "Last-Translator: Arnaud Assad \n" -"Language-Team: French \n" +"Language-Team: Sqitch Hackers \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -532,8 +532,8 @@ msgstr "" msgid ", " msgstr ", " -#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:453 -#: lib/App/Sqitch/Engine.pm:1288 +#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:452 +#: lib/App/Sqitch/Engine.pm:1287 msgid "No changes deployed" msgstr "Pas de changements déployés" @@ -604,7 +604,7 @@ msgstr "Assurez-vous d'être connecté à la bonne base de données pour ce proj msgid "Nothing to deploy (up-to-date)" msgstr "Rien à déployer (à jour)" -#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:608 +#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:607 msgid "Undeployed change:" msgid_plural "Undeployed changes:" msgstr[0] "Changement non déployé :" @@ -684,7 +684,7 @@ msgstr "Module DBD::Pg requis pour gérer PostgreSQL" msgid "Nothing to deploy (empty plan)" msgstr "Rien à déployer (plan vide)" -#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:348 +#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:347 #: lib/App/Sqitch/Plan.pm:749 lib/App/Sqitch/Plan/ChangeList.pm:121 #, perl-brace-format msgid "Unknown change: \"{change}\"" @@ -729,163 +729,163 @@ msgstr "Mode de déploiement inconnu : \"{mode}\"" msgid "Missing required parameter $prompt_default" msgstr "" -#: lib/App/Sqitch/Engine.pm:342 +#: lib/App/Sqitch/Engine.pm:341 #, fuzzy, perl-brace-format msgid "Change not deployed: \"{change}\"" msgstr "Cible non déployée : \"{target}\"" -#: lib/App/Sqitch/Engine.pm:359 +#: lib/App/Sqitch/Engine.pm:358 #, fuzzy, perl-brace-format msgid "No changes deployed since: \"{change}\"" msgstr "Cible non déployée : \"{target}\"" -#: lib/App/Sqitch/Engine.pm:369 +#: lib/App/Sqitch/Engine.pm:368 #, fuzzy, perl-brace-format msgid "Reverting changes to {change} from {destination}" msgstr "Annulation des changements de {destination} à {target}" -#: lib/App/Sqitch/Engine.pm:373 lib/App/Sqitch/Engine.pm:403 +#: lib/App/Sqitch/Engine.pm:372 lib/App/Sqitch/Engine.pm:402 msgid "Will revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:376 lib/App/Sqitch/Engine.pm:406 +#: lib/App/Sqitch/Engine.pm:375 lib/App/Sqitch/Engine.pm:405 msgid "Would revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:380 lib/App/Sqitch/Engine.pm:410 +#: lib/App/Sqitch/Engine.pm:379 lib/App/Sqitch/Engine.pm:409 #, fuzzy msgid "Nothing reverted" msgstr "Rien à annuler (rien de déployé)" -#: lib/App/Sqitch/Engine.pm:383 +#: lib/App/Sqitch/Engine.pm:382 #, fuzzy, perl-brace-format msgid "Revert changes to {change} from {destination}?" msgstr "Annulation des changements de {destination} à {target}" -#: lib/App/Sqitch/Engine.pm:392 +#: lib/App/Sqitch/Engine.pm:391 msgid "Nothing to revert (nothing deployed)" msgstr "Rien à annuler (rien de déployé)" -#: lib/App/Sqitch/Engine.pm:400 +#: lib/App/Sqitch/Engine.pm:399 #, perl-brace-format msgid "Reverting all changes from {destination}" msgstr "Annulation de tous les changements de {destination}" -#: lib/App/Sqitch/Engine.pm:413 +#: lib/App/Sqitch/Engine.pm:412 #, fuzzy, perl-brace-format msgid "Revert all changes from {destination}?" msgstr "Annulation de tous les changements de {destination}" -#: lib/App/Sqitch/Engine.pm:447 +#: lib/App/Sqitch/Engine.pm:446 #, fuzzy, perl-brace-format msgid "Verifying {destination}" msgstr "Déploiement des changements vers {destination}" -#: lib/App/Sqitch/Engine.pm:454 +#: lib/App/Sqitch/Engine.pm:453 #, fuzzy msgid "Nothing to verify (no planned or deployed changes)" msgstr "Rien à annuler (rien de déployé)" -#: lib/App/Sqitch/Engine.pm:461 +#: lib/App/Sqitch/Engine.pm:460 msgid "There are deployed changes, but none planned!" msgstr "" -#: lib/App/Sqitch/Engine.pm:474 +#: lib/App/Sqitch/Engine.pm:473 msgid "Verify Summary Report" msgstr "" -#: lib/App/Sqitch/Engine.pm:477 +#: lib/App/Sqitch/Engine.pm:476 #, fuzzy, perl-brace-format msgid "Changes: {number}" msgstr "Changement : {change_id}" -#: lib/App/Sqitch/Engine.pm:478 +#: lib/App/Sqitch/Engine.pm:477 #, perl-brace-format msgid "Errors: {number}" msgstr "" -#: lib/App/Sqitch/Engine.pm:479 +#: lib/App/Sqitch/Engine.pm:478 #, fuzzy msgid "Verify failed" msgstr "Echec du déploiement" -#: lib/App/Sqitch/Engine.pm:484 +#: lib/App/Sqitch/Engine.pm:483 msgid "Verify successful" msgstr "" -#: lib/App/Sqitch/Engine.pm:513 +#: lib/App/Sqitch/Engine.pm:512 #, perl-brace-format msgid "Change \"{change}\" has not been deployed" msgstr "" -#: lib/App/Sqitch/Engine.pm:516 +#: lib/App/Sqitch/Engine.pm:515 #, fuzzy, perl-brace-format msgid "Cannot find \"{change}\" in the database or the plan" msgstr "Impossible de trouver {target} dans le plan" -#: lib/App/Sqitch/Engine.pm:523 +#: lib/App/Sqitch/Engine.pm:522 #, fuzzy, perl-brace-format msgid "Change \"{change}\" is deployed, but not planned" msgstr "" "Le changement \"{change}\" duplique une déclaration précédente à la ligne " "{line}" -#: lib/App/Sqitch/Engine.pm:567 +#: lib/App/Sqitch/Engine.pm:566 msgid "Out of order" msgstr "" -#: lib/App/Sqitch/Engine.pm:573 +#: lib/App/Sqitch/Engine.pm:572 #, fuzzy msgid "Not present in the plan" msgstr "Impossible de trouver {target} dans le plan" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:596 -#: lib/App/Sqitch/Engine.pm:1068 lib/App/Sqitch/Engine.pm:1098 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:595 +#: lib/App/Sqitch/Engine.pm:1067 lib/App/Sqitch/Engine.pm:1097 msgid "not ok" msgstr "" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:1046 -#: lib/App/Sqitch/Engine.pm:1088 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:1045 +#: lib/App/Sqitch/Engine.pm:1087 msgid "ok" msgstr "" -#: lib/App/Sqitch/Engine.pm:598 +#: lib/App/Sqitch/Engine.pm:597 #, fuzzy msgid "Not deployed" msgstr "Pas de changements déployés" -#: lib/App/Sqitch/Engine.pm:630 +#: lib/App/Sqitch/Engine.pm:629 #, perl-brace-format msgid "Verify script \"{script}\" failed." msgstr "" -#: lib/App/Sqitch/Engine.pm:639 +#: lib/App/Sqitch/Engine.pm:638 #, fuzzy, perl-brace-format msgid "Verify script {file} does not exist" msgstr "Le fichier de plan {file} n'existe pas" -#: lib/App/Sqitch/Engine.pm:681 +#: lib/App/Sqitch/Engine.pm:680 #, perl-brace-format msgid "Conflicts with previously deployed change: {changes}" msgid_plural "Conflicts with previously deployed changes: {changes}" msgstr[0] "Conflits avec le changement déployé précédemment : {changes}" msgstr[1] "Conflits avec les changements déployés précédemment : {changes}" -#: lib/App/Sqitch/Engine.pm:688 +#: lib/App/Sqitch/Engine.pm:687 #, perl-brace-format msgid "Missing required change: {changes}" msgid_plural "Missing required changes: {changes}" msgstr[0] "Changement requis manquant : {changes}" msgstr[1] "Changements requis manquant : {changes}" -#: lib/App/Sqitch/Engine.pm:700 +#: lib/App/Sqitch/Engine.pm:699 #, perl-brace-format msgid "Change \"{changes}\" has already been deployed" msgid_plural "Changes have already been deployed: {changes}" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:723 +#: lib/App/Sqitch/Engine.pm:722 #, fuzzy, perl-brace-format msgid "Change \"{change}\" required by currently deployed change: {changes}" msgid_plural "" @@ -893,121 +893,121 @@ msgid_plural "" msgstr[0] "Requis par le changement actuellement déployé : {changes}" msgstr[1] "Requis par les changements actuellement déployés : {changes}" -#: lib/App/Sqitch/Engine.pm:746 +#: lib/App/Sqitch/Engine.pm:745 #, perl-brace-format msgid "Invalid dependency: {dependency}" msgstr "Dépendance invalide {dependency}" -#: lib/App/Sqitch/Engine.pm:882 lib/App/Sqitch/Plan/ChangeList.pm:88 +#: lib/App/Sqitch/Engine.pm:881 lib/App/Sqitch/Plan/ChangeList.pm:88 #, perl-brace-format msgid "" "Change \"{change}\" is ambiguous. Please specify a tag-qualified change:" msgstr "" -#: lib/App/Sqitch/Engine.pm:897 +#: lib/App/Sqitch/Engine.pm:896 msgid "Change Lookup Failed" msgstr "" -#: lib/App/Sqitch/Engine.pm:918 +#: lib/App/Sqitch/Engine.pm:917 #, fuzzy, perl-brace-format msgid "Reverting to {change}" msgstr "Annulation et retour vers {target}" -#: lib/App/Sqitch/Engine.pm:919 +#: lib/App/Sqitch/Engine.pm:918 msgid "Reverting all changes" msgstr "Annulation de tous les changements" -#: lib/App/Sqitch/Engine.pm:927 +#: lib/App/Sqitch/Engine.pm:926 msgid "The schema will need to be manually repaired" msgstr "Le schéma devra être réparé manuellement" -#: lib/App/Sqitch/Engine.pm:931 lib/App/Sqitch/Engine.pm:1062 +#: lib/App/Sqitch/Engine.pm:930 lib/App/Sqitch/Engine.pm:1061 msgid "Deploy failed" msgstr "Echec du déploiement" -#: lib/App/Sqitch/Engine.pm:991 +#: lib/App/Sqitch/Engine.pm:990 #, fuzzy, perl-brace-format msgid "Cannot find change {id} ({change}) in {file}" msgstr "Impossible de trouver ce changement dans {file}" -#: lib/App/Sqitch/Engine.pm:1113 +#: lib/App/Sqitch/Engine.pm:1112 #, perl-brace-format msgid "" "Blocked by another instance of Sqitch working on {dest}; waiting {secs} " "seconds..." msgstr "" -#: lib/App/Sqitch/Engine.pm:1123 +#: lib/App/Sqitch/Engine.pm:1122 #, perl-brace-format msgid "" "Timed out waiting {secs} seconds for another instance of Sqitch to finish " "work on {dest}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1182 +#: lib/App/Sqitch/Engine.pm:1181 #, perl-brace-format msgid "No registry found in {destination}. Have you ever deployed?" msgstr "" -#: lib/App/Sqitch/Engine.pm:1187 +#: lib/App/Sqitch/Engine.pm:1186 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " "Sqitch" msgstr "" -#: lib/App/Sqitch/Engine.pm:1193 +#: lib/App/Sqitch/Engine.pm:1192 #, perl-brace-format msgid "" "Registry is at version {old} but latest is {new}. Please run the \"upgrade\" " "command" msgstr "" -#: lib/App/Sqitch/Engine.pm:1208 +#: lib/App/Sqitch/Engine.pm:1207 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " "Sqitch." msgstr "" -#: lib/App/Sqitch/Engine.pm:1223 +#: lib/App/Sqitch/Engine.pm:1222 #, perl-brace-format msgid "Cannot upgrade to {version}: Cannot find upgrade script \"{file}\"" msgstr "" -#: lib/App/Sqitch/Engine.pm:1230 +#: lib/App/Sqitch/Engine.pm:1229 #, fuzzy, perl-brace-format msgid "Upgrading the Sqitch registry from {old} to {new}" msgstr "Ajout des tables de metadonnées à {destination}" -#: lib/App/Sqitch/Engine.pm:1237 +#: lib/App/Sqitch/Engine.pm:1236 #, perl-brace-format msgid "From {old} to {new}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1282 +#: lib/App/Sqitch/Engine.pm:1281 #, fuzzy, perl-brace-format msgid "Checking {destination}" msgstr "Déploiement des changements vers {destination}" -#: lib/App/Sqitch/Engine.pm:1289 +#: lib/App/Sqitch/Engine.pm:1288 #, fuzzy msgid "Nothing to check (no planned or deployed changes)" msgstr "Rien à annuler (rien de déployé)" -#: lib/App/Sqitch/Engine.pm:1302 +#: lib/App/Sqitch/Engine.pm:1301 #, fuzzy, perl-brace-format msgid "Script signatures diverge at change {change}" msgstr "Changement requis manquant : {changes}" -#: lib/App/Sqitch/Engine.pm:1310 +#: lib/App/Sqitch/Engine.pm:1309 #, perl-brace-format msgid "Failed one check" msgid_plural "Failed {count} checks" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:1318 +#: lib/App/Sqitch/Engine.pm:1317 msgid "Check successful" msgstr "" @@ -1035,8 +1035,7 @@ msgstr "Impossible d'ouvrir {file} : {error}" msgid "{command} unexpectedly failed; exit value = {exitval}" msgstr "{command} a retourné de manière inattendue la valeur {exitval}" -#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/mysql.pm:274 -#: lib/App/Sqitch/Engine/sqlite.pm:158 +#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/sqlite.pm:158 #, perl-brace-format msgid "Sqitch database {database} already initialized" msgstr "" @@ -1086,7 +1085,7 @@ msgstr "" msgid "Database name missing in URI \"{uri}\"" msgstr "" -#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:310 +#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:303 #: lib/App/Sqitch/Engine/vertica.pm:139 #, perl-brace-format msgid "Sqitch schema \"{schema}\" already exists" diff --git a/po/it_IT.po b/po/it_IT.po index 6b716b1c4..ac07588a4 100644 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -1,5 +1,5 @@ # Sqitch Italian Localization Messages -# Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +# Copyright (c) 2012-2024 iovation Inc., David E. Wheeler # This file is distributed under the same license as the App-Sqitch package. # Luca Ferrari , 2017 # @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: App-Sqitch 0.9996\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 20:02-0400\n" +"POT-Creation-Date: 2024-02-04 10:23-0500\n" "PO-Revision-Date: 2017-10-12 10:30+0200\n" "Last-Translator: Luca Ferrari \n" -"Language-Team: Italian \n" +"Language-Team: Sqitch Hackers \n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -539,8 +539,8 @@ msgstr "Usa --project per selezionare quale progetto interrogare: {projects}" msgid ", " msgstr ", " -#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:453 -#: lib/App/Sqitch/Engine.pm:1288 +#: lib/App/Sqitch/Command/status.pm:138 lib/App/Sqitch/Engine.pm:452 +#: lib/App/Sqitch/Engine.pm:1287 msgid "No changes deployed" msgstr "Nessuna modifica implementata" @@ -612,7 +612,7 @@ msgstr "" msgid "Nothing to deploy (up-to-date)" msgstr "Niente da implementare (tutto già aggiornato)" -#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:608 +#: lib/App/Sqitch/Command/status.pm:311 lib/App/Sqitch/Engine.pm:607 msgid "Undeployed change:" msgid_plural "Undeployed changes:" msgstr[0] "Modifica rimosse dalla implementazione:" @@ -696,7 +696,7 @@ msgstr "{driver} è necessario per gestire {engine}" msgid "Nothing to deploy (empty plan)" msgstr "Niente da implementare (piano di esecuzione vuoto)" -#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:348 +#: lib/App/Sqitch/Engine.pm:221 lib/App/Sqitch/Engine.pm:347 #: lib/App/Sqitch/Plan.pm:749 lib/App/Sqitch/Plan/ChangeList.pm:121 #, perl-brace-format msgid "Unknown change: \"{change}\"" @@ -739,135 +739,135 @@ msgstr "Modalità di implementazione \"{mode}\" sconosciuta" msgid "Missing required parameter $prompt_default" msgstr "" -#: lib/App/Sqitch/Engine.pm:342 +#: lib/App/Sqitch/Engine.pm:341 #, perl-brace-format msgid "Change not deployed: \"{change}\"" msgstr "Modifica non implementata: \"{change}\"" -#: lib/App/Sqitch/Engine.pm:359 +#: lib/App/Sqitch/Engine.pm:358 #, perl-brace-format msgid "No changes deployed since: \"{change}\"" msgstr "Nessuna modifica implementata da: \"{change}\"" -#: lib/App/Sqitch/Engine.pm:369 +#: lib/App/Sqitch/Engine.pm:368 #, perl-brace-format msgid "Reverting changes to {change} from {destination}" msgstr "Annullo modifiche da {destination} a {change}" -#: lib/App/Sqitch/Engine.pm:373 lib/App/Sqitch/Engine.pm:403 +#: lib/App/Sqitch/Engine.pm:372 lib/App/Sqitch/Engine.pm:402 msgid "Will revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:376 lib/App/Sqitch/Engine.pm:406 +#: lib/App/Sqitch/Engine.pm:375 lib/App/Sqitch/Engine.pm:405 msgid "Would revert the following changes:" msgstr "" -#: lib/App/Sqitch/Engine.pm:380 lib/App/Sqitch/Engine.pm:410 +#: lib/App/Sqitch/Engine.pm:379 lib/App/Sqitch/Engine.pm:409 msgid "Nothing reverted" msgstr "Niente è stato annullato" -#: lib/App/Sqitch/Engine.pm:383 +#: lib/App/Sqitch/Engine.pm:382 #, perl-brace-format msgid "Revert changes to {change} from {destination}?" msgstr "Annullo modifiche da {destination} a {change}" -#: lib/App/Sqitch/Engine.pm:392 +#: lib/App/Sqitch/Engine.pm:391 msgid "Nothing to revert (nothing deployed)" msgstr "Niente da annullare (niente da implementare)" -#: lib/App/Sqitch/Engine.pm:400 +#: lib/App/Sqitch/Engine.pm:399 #, perl-brace-format msgid "Reverting all changes from {destination}" msgstr "Annullo tutte le modifiche da {destination}" -#: lib/App/Sqitch/Engine.pm:413 +#: lib/App/Sqitch/Engine.pm:412 #, perl-brace-format msgid "Revert all changes from {destination}?" msgstr "Annullo tutte le modifiche da {destination}?" -#: lib/App/Sqitch/Engine.pm:447 +#: lib/App/Sqitch/Engine.pm:446 #, perl-brace-format msgid "Verifying {destination}" msgstr "Veifico {destination}" -#: lib/App/Sqitch/Engine.pm:454 +#: lib/App/Sqitch/Engine.pm:453 msgid "Nothing to verify (no planned or deployed changes)" msgstr "Niente da verificare (nessuna modifica pianificata o implementata)" -#: lib/App/Sqitch/Engine.pm:461 +#: lib/App/Sqitch/Engine.pm:460 msgid "There are deployed changes, but none planned!" msgstr "Ci sono modifiche implementate, ma nessuna pianificata!" -#: lib/App/Sqitch/Engine.pm:474 +#: lib/App/Sqitch/Engine.pm:473 msgid "Verify Summary Report" msgstr "Report Sommario di verifica" -#: lib/App/Sqitch/Engine.pm:477 +#: lib/App/Sqitch/Engine.pm:476 #, perl-brace-format msgid "Changes: {number}" msgstr "Modifiche: {number}" -#: lib/App/Sqitch/Engine.pm:478 +#: lib/App/Sqitch/Engine.pm:477 #, perl-brace-format msgid "Errors: {number}" msgstr "Errori: {number}" -#: lib/App/Sqitch/Engine.pm:479 +#: lib/App/Sqitch/Engine.pm:478 msgid "Verify failed" msgstr "Verifica fallita" -#: lib/App/Sqitch/Engine.pm:484 +#: lib/App/Sqitch/Engine.pm:483 msgid "Verify successful" msgstr "Verifica riuscita" -#: lib/App/Sqitch/Engine.pm:513 +#: lib/App/Sqitch/Engine.pm:512 #, perl-brace-format msgid "Change \"{change}\" has not been deployed" msgstr "Modifica \"{change}\" non implementata" -#: lib/App/Sqitch/Engine.pm:516 +#: lib/App/Sqitch/Engine.pm:515 #, perl-brace-format msgid "Cannot find \"{change}\" in the database or the plan" msgstr "Non posso trovare \"{change}\" nel database o nel piano di esecuzione" -#: lib/App/Sqitch/Engine.pm:523 +#: lib/App/Sqitch/Engine.pm:522 #, perl-brace-format msgid "Change \"{change}\" is deployed, but not planned" msgstr "La modifica \"{change}\" è implementata ma non pianificata" -#: lib/App/Sqitch/Engine.pm:567 +#: lib/App/Sqitch/Engine.pm:566 msgid "Out of order" msgstr "Fuori servizio" -#: lib/App/Sqitch/Engine.pm:573 +#: lib/App/Sqitch/Engine.pm:572 msgid "Not present in the plan" msgstr "Non presente nel piano di esecuzione" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:596 -#: lib/App/Sqitch/Engine.pm:1068 lib/App/Sqitch/Engine.pm:1098 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:595 +#: lib/App/Sqitch/Engine.pm:1067 lib/App/Sqitch/Engine.pm:1097 msgid "not ok" msgstr "Non OK" -#: lib/App/Sqitch/Engine.pm:584 lib/App/Sqitch/Engine.pm:1046 -#: lib/App/Sqitch/Engine.pm:1088 +#: lib/App/Sqitch/Engine.pm:583 lib/App/Sqitch/Engine.pm:1045 +#: lib/App/Sqitch/Engine.pm:1087 msgid "ok" msgstr "OK" -#: lib/App/Sqitch/Engine.pm:598 +#: lib/App/Sqitch/Engine.pm:597 msgid "Not deployed" msgstr "Non implementato" -#: lib/App/Sqitch/Engine.pm:630 +#: lib/App/Sqitch/Engine.pm:629 #, perl-brace-format msgid "Verify script \"{script}\" failed." msgstr "Script di verifica \"{script}\" fallito" -#: lib/App/Sqitch/Engine.pm:639 +#: lib/App/Sqitch/Engine.pm:638 #, perl-brace-format msgid "Verify script {file} does not exist" msgstr "Lo script di verifica {file} non esiste" -#: lib/App/Sqitch/Engine.pm:681 +#: lib/App/Sqitch/Engine.pm:680 #, perl-brace-format msgid "Conflicts with previously deployed change: {changes}" msgid_plural "Conflicts with previously deployed changes: {changes}" @@ -876,21 +876,21 @@ msgstr[0] "" msgstr[1] "" "Ci sono conflitti con le modifiche precededentemente implementate: {changes}" -#: lib/App/Sqitch/Engine.pm:688 +#: lib/App/Sqitch/Engine.pm:687 #, perl-brace-format msgid "Missing required change: {changes}" msgid_plural "Missing required changes: {changes}" msgstr[0] "Modifica richiesta non trovata: {changes}" msgstr[1] "Modifiche richieste non trovate: {changes}" -#: lib/App/Sqitch/Engine.pm:700 +#: lib/App/Sqitch/Engine.pm:699 #, perl-brace-format msgid "Change \"{changes}\" has already been deployed" msgid_plural "Changes have already been deployed: {changes}" msgstr[0] "La modifica \"{changes}\" è già stata implementata" msgstr[1] "Le modifiche \"{changes}\" sono già state implementate" -#: lib/App/Sqitch/Engine.pm:723 +#: lib/App/Sqitch/Engine.pm:722 #, perl-brace-format msgid "Change \"{change}\" required by currently deployed change: {changes}" msgid_plural "" @@ -902,66 +902,66 @@ msgstr[1] "" "La modifica \"{change}\" è richiesta dalle modifiche correntemente " "implementate: {changes}" -#: lib/App/Sqitch/Engine.pm:746 +#: lib/App/Sqitch/Engine.pm:745 #, perl-brace-format msgid "Invalid dependency: {dependency}" msgstr "Dipendenza {dependency} non valida" -#: lib/App/Sqitch/Engine.pm:882 lib/App/Sqitch/Plan/ChangeList.pm:88 +#: lib/App/Sqitch/Engine.pm:881 lib/App/Sqitch/Plan/ChangeList.pm:88 #, perl-brace-format msgid "" "Change \"{change}\" is ambiguous. Please specify a tag-qualified change:" msgstr "" "La modifica \"{change}\" è ambigua. Per favore indica la modifica con un tag." -#: lib/App/Sqitch/Engine.pm:897 +#: lib/App/Sqitch/Engine.pm:896 msgid "Change Lookup Failed" msgstr "Recupero della modifica fallito" -#: lib/App/Sqitch/Engine.pm:918 +#: lib/App/Sqitch/Engine.pm:917 #, perl-brace-format msgid "Reverting to {change}" msgstr "Ritorno a {change}" -#: lib/App/Sqitch/Engine.pm:919 +#: lib/App/Sqitch/Engine.pm:918 msgid "Reverting all changes" msgstr "Annullo tutte le modifiche" -#: lib/App/Sqitch/Engine.pm:927 +#: lib/App/Sqitch/Engine.pm:926 msgid "The schema will need to be manually repaired" msgstr "Lo schema richiede una riparazione manuale." -#: lib/App/Sqitch/Engine.pm:931 lib/App/Sqitch/Engine.pm:1062 +#: lib/App/Sqitch/Engine.pm:930 lib/App/Sqitch/Engine.pm:1061 msgid "Deploy failed" msgstr "Implementazione fallita" -#: lib/App/Sqitch/Engine.pm:991 +#: lib/App/Sqitch/Engine.pm:990 #, perl-brace-format msgid "Cannot find change {id} ({change}) in {file}" msgstr "Non trovo la modifica {id} ({change}) in {file}" -#: lib/App/Sqitch/Engine.pm:1113 +#: lib/App/Sqitch/Engine.pm:1112 #, perl-brace-format msgid "" "Blocked by another instance of Sqitch working on {dest}; waiting {secs} " "seconds..." msgstr "" -#: lib/App/Sqitch/Engine.pm:1123 +#: lib/App/Sqitch/Engine.pm:1122 #, perl-brace-format msgid "" "Timed out waiting {secs} seconds for another instance of Sqitch to finish " "work on {dest}" msgstr "" -#: lib/App/Sqitch/Engine.pm:1182 +#: lib/App/Sqitch/Engine.pm:1181 #, perl-brace-format msgid "No registry found in {destination}. Have you ever deployed?" msgstr "" "Nessun registro trovato in {destination}. E' mai stata fatta una " "implementazione prima?" -#: lib/App/Sqitch/Engine.pm:1187 +#: lib/App/Sqitch/Engine.pm:1186 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " @@ -970,7 +970,7 @@ msgstr "" "La versione di registro è {old} ma {new} è la più recente conosciuta. Per " "favore aggiorna Sqitch." -#: lib/App/Sqitch/Engine.pm:1193 +#: lib/App/Sqitch/Engine.pm:1192 #, perl-brace-format msgid "" "Registry is at version {old} but latest is {new}. Please run the \"upgrade\" " @@ -979,7 +979,7 @@ msgstr "" "La versione di registro è {old} ma {new} è la più recente conosciuta. Per " "favore esegui il comando \"upgrade\"." -#: lib/App/Sqitch/Engine.pm:1208 +#: lib/App/Sqitch/Engine.pm:1207 #, perl-brace-format msgid "" "Registry version is {old} but {new} is the latest known. Please upgrade " @@ -988,46 +988,46 @@ msgstr "" "La versione di registro è {old} ma {new} è la più recente conosciuta. Per " "favore aggiorna Sqitch." -#: lib/App/Sqitch/Engine.pm:1223 +#: lib/App/Sqitch/Engine.pm:1222 #, perl-brace-format msgid "Cannot upgrade to {version}: Cannot find upgrade script \"{file}\"" msgstr "" "Non posso aggiornare a {version}: non trovo lo script \"{file}\" per " "l'aggiornamento" -#: lib/App/Sqitch/Engine.pm:1230 +#: lib/App/Sqitch/Engine.pm:1229 #, fuzzy, perl-brace-format msgid "Upgrading the Sqitch registry from {old} to {new}" msgstr "Aggiorno il registro {registry} alla versione {version}" -#: lib/App/Sqitch/Engine.pm:1237 +#: lib/App/Sqitch/Engine.pm:1236 #, perl-brace-format msgid "From {old} to {new}" msgstr "Da {old} a {new}" -#: lib/App/Sqitch/Engine.pm:1282 +#: lib/App/Sqitch/Engine.pm:1281 #, fuzzy, perl-brace-format msgid "Checking {destination}" msgstr "Veifico {destination}" -#: lib/App/Sqitch/Engine.pm:1289 +#: lib/App/Sqitch/Engine.pm:1288 #, fuzzy msgid "Nothing to check (no planned or deployed changes)" msgstr "Niente da verificare (nessuna modifica pianificata o implementata)" -#: lib/App/Sqitch/Engine.pm:1302 +#: lib/App/Sqitch/Engine.pm:1301 #, fuzzy, perl-brace-format msgid "Script signatures diverge at change {change}" msgstr "Modifica richiesta non trovata: {changes}" -#: lib/App/Sqitch/Engine.pm:1310 +#: lib/App/Sqitch/Engine.pm:1309 #, perl-brace-format msgid "Failed one check" msgid_plural "Failed {count} checks" msgstr[0] "" msgstr[1] "" -#: lib/App/Sqitch/Engine.pm:1318 +#: lib/App/Sqitch/Engine.pm:1317 #, fuzzy msgid "Check successful" msgstr "Verifica riuscita" @@ -1056,8 +1056,7 @@ msgstr "Non posso creare un link simbolico da {file} a {alias}: {error}" msgid "{command} unexpectedly failed; exit value = {exitval}" msgstr "Il comando {command} ha restituito un exit value inatteso {exitval}" -#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/mysql.pm:274 -#: lib/App/Sqitch/Engine/sqlite.pm:158 +#: lib/App/Sqitch/Engine/firebird.pm:208 lib/App/Sqitch/Engine/sqlite.pm:158 #, perl-brace-format msgid "Sqitch database {database} already initialized" msgstr "Database Sqitch già inizialiatto su {database}" @@ -1109,7 +1108,7 @@ msgstr "" msgid "Database name missing in URI \"{uri}\"" msgstr "Il nome di database non è specificato nell'URI {uri}" -#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:310 +#: lib/App/Sqitch/Engine/pg.pm:213 lib/App/Sqitch/Engine/snowflake.pm:303 #: lib/App/Sqitch/Engine/vertica.pm:139 #, perl-brace-format msgid "Sqitch schema \"{schema}\" already exists" diff --git a/t/add.t b/t/add.t index 533cd13ed..a98d3ca0c 100644 --- a/t/add.t +++ b/t/add.t @@ -3,7 +3,7 @@ use strict; use warnings; use utf8; -use Test::More tests => 242; +use Test::More tests => 243; #use Test::More 'no_plan'; use App::Sqitch; use App::Sqitch::Target; @@ -301,7 +301,14 @@ is_deeply $add->all_templates($tname), { deploy => file('etc/templates/deploy/pg.tmpl'), revert => file('etc/templates/revert/pg.tmpl'), verify => file('etc/templates/verify/pg.tmpl'), -}, 'Should find all templates in directory'; +}, 'Should find all pg templates in directory'; + +# Make sure it works for a second name. +is_deeply $add->all_templates('sqlite'), { + deploy => file('etc/templates/deploy/sqlite.tmpl'), + revert => file('etc/templates/revert/sqlite.tmpl'), + verify => file('etc/templates/verify/sqlite.tmpl'), +}, 'Should find all sqlite templates in directory'; # Now let it find the templates in the user dir. $usrdir = dir 'etc'; diff --git a/t/engine.t b/t/engine.t index ee971371d..f7bfa8e8a 100755 --- a/t/engine.t +++ b/t/engine.t @@ -4,7 +4,7 @@ use strict; use warnings; use 5.010; use utf8; -use Test::More tests => 775; +use Test::More tests => 781; # use Test::More 'no_plan'; use App::Sqitch; use App::Sqitch::Plan; @@ -14,7 +14,7 @@ use Test::Exception; use Test::NoWarnings; use Test::MockModule; use Test::MockObject::Extends; -use Test::Warn qw(warning_is); +use Test::Warn 0.31 qw(warning_is); use Time::HiRes qw(sleep); use Locale::TextDomain qw(App-Sqitch); use App::Sqitch::X qw(hurl); @@ -1169,6 +1169,7 @@ is_deeply +MockOutput->get_info, [ ], 'Should have emitted deploy announcement and successes'; # Make sure we can deploy everything by change. +MockOutput->clear; $latest_change_id = undef; $plan->reset; $plan->add( name => 'lolz', note => 'ha ha' ); @@ -1208,6 +1209,15 @@ is_deeply +MockOutput->get_info_literal, [ [' + lolz ..', '.........', ' '], ], 'Should have seen the output of the deploy to the end'; +is_deeply +MockOutput->get_debug, [ + [__ 'Will deploy the following changes:' ], + ['roles'], + ['users @alpha'], + ['widgets @beta'], + ['lolz'], +], 'Debug output should show what will be deployed'; + + # If we deploy again, it should be up-to-date. $latest_change_id = $changes[-1]->id; ok $engine->deploy, 'Should return success for deploy to up-to-date DB'; @@ -1928,6 +1938,8 @@ is_deeply $engine->seen, [ is_deeply +MockOutput->get_info, [], 'Nothing should have been output'; # Make sure deprecation warning happens. +# Test only the first line of the warning. Reason: +# https://github.com/hanfried/test-warn/issues/9 warning_is { $engine->revert } "Engine::revert() requires the `prompt` and `prompt_default` arguments.\n", 'Should get warning omitting required arguments'; @@ -2050,6 +2062,7 @@ my @dbchanges; $params; } @changes[0..3]; +MockOutput->clear; MockOutput->ask_yes_no_returns(1); is $engine->revert(undef, 1, 1), $engine, 'Revert all changes'; is_deeply $engine->seen, [ @@ -2077,12 +2090,14 @@ is_deeply +MockOutput->get_info_literal, [ [' - users @alpha ..', '.', ' '], [' - roles ..', '........', ' '], ], 'It should have said it was reverting all changes and listed them'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['roles'], ['users @alpha'], ['widgets @beta'], ['lolz'], +], 'Output should show what would be reverted'; +is_deeply +MockOutput->get_info, [ [__ 'ok'], [__ 'ok'], [__ 'ok'], @@ -2114,12 +2129,14 @@ is_deeply +MockOutput->get_info_literal, [ [' - users @alpha ..', '.', ' '], [' - roles ..', '........', ' '], ], 'It should have said it was reverting all changes and listed them'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['roles'], ['users @alpha'], ['widgets @beta'], ['lolz'], +], 'Output should show what would be reverted'; +is_deeply +MockOutput->get_info, [ [__ 'ok'], [__ 'ok'], [__ 'ok'], @@ -2142,13 +2159,13 @@ is_deeply +MockOutput->get_ask_yes_no, [ destination => $engine->destination, ), 1], ], 'Should have prompt to revert all changes'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['roles'], ['users @alpha'], ['widgets @beta'], ['lolz'], -], 'It should have emitted nothing else'; +], 'Output should show what would be reverted'; # Revert all changes with no prompt. MockOutput->ask_yes_no_returns(1); @@ -2180,16 +2197,18 @@ is_deeply +MockOutput->get_info, [ 'Reverting all changes from {destination}', destination => $engine->destination, )], - [__ 'Will revert the following changes:'], - ['roles'], - ['users @alpha'], - ['widgets @beta'], - ['lolz'], [__ 'ok'], [__ 'ok'], [__ 'ok'], [__ 'ok'], ], 'And the revert successes should be emitted'; +is_deeply +MockOutput->get_debug, [ + [__ 'Will revert the following changes:'], + ['roles'], + ['users @alpha'], + ['widgets @beta'], + ['lolz'], +], 'Output should show what will be reverted'; # Now just revert to an earlier change. $offset_change = $dbchanges[1]; @@ -2220,10 +2239,12 @@ is_deeply +MockOutput->get_info_literal, [ [' - lolz ..', '.........', ' '], [' - widgets @beta ..', '', ' '], ], 'Output should show what it reverts to'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['widgets @beta'], ['lolz'], +], 'Output should show what would be reverted'; +is_deeply +MockOutput->get_info, [ [__ 'ok'], [__ 'ok'], ], 'And the revert successes should be emitted'; @@ -2249,7 +2270,7 @@ is_deeply +MockOutput->get_ask_yes_no, [ destination => $engine->destination, ), 1], ], 'Should have prompt to revert to @alpha'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['widgets @beta'], ['lolz'], @@ -2282,10 +2303,12 @@ is_deeply +MockOutput->get_info, [ destination => $engine->destination, change => $dbchanges[-1]->format_name_with_tags, )], - [__ 'Will revert the following changes:'], - ['lolz'], [__ 'ok'], ], 'And the header and "ok" should be emitted'; +is_deeply +MockOutput->get_debug, [ + [__ 'Will revert the following changes:'], + ['lolz'], +], 'Output should show what will be reverted'; ############################################################################## # Test change_id_for_depend(). diff --git a/t/firebird.t b/t/firebird.t index a57594100..f0a04e891 100644 --- a/t/firebird.t +++ b/t/firebird.t @@ -377,7 +377,7 @@ FSPEC: { my $iswin = App::Sqitch::ISWIN || $^O eq 'cygwin'; my $fbsql = $tmp->file('fbsql' . ($iswin ? '.exe' : '')); $fbsql->touch; - chmod '0755', $fbsql unless $iswin; + chmod 0755, $fbsql unless $iswin; my $fs_mock = Test::MockModule->new('File::Spec'); $fs_mock->mock(path => sub { $tmp }); diff --git a/t/mysql.t b/t/mysql.t index 33ce8aed4..513542404 100644 --- a/t/mysql.t +++ b/t/mysql.t @@ -75,7 +75,7 @@ my @std_opts = ( ); my $vinfo = try { $sqitch->probe($mysql->client, '--version') } || ''; if ($vinfo =~ /mariadb/i) { - my ($version) = $vinfo =~ /Ver\s(\S+)/; + my ($version) = $vinfo =~ /(?:Ver|client)\s+(\S+)/; my ($maj, undef, $pat) = split /[.]/ => $version; push @std_opts => '--abort-source-on-error' if $maj > 5 || ($maj == 5 && $pat >= 66); diff --git a/t/oracle.t b/t/oracle.t index 587a1d400..8cfece56a 100644 --- a/t/oracle.t +++ b/t/oracle.t @@ -156,7 +156,7 @@ ORACLE_HOME: { my $tmp = Path::Class::Dir->new("$tmpdir"); my $sqlplus = $tmp->file($cli); $sqlplus->touch; - chmod '0755', $sqlplus unless $iswin; + chmod 0755, $sqlplus unless $iswin; local $ENV{ORACLE_HOME} = "$tmpdir"; $target = App::Sqitch::Target->new(sqitch => $sqitch); @@ -168,7 +168,7 @@ ORACLE_HOME: { $bin->mkpath; $sqlplus = $bin->file($cli); $sqlplus->touch; - chmod '0755', $sqlplus unless $iswin; + chmod 0755, $sqlplus unless $iswin; $target = App::Sqitch::Target->new(sqitch => $sqitch); isa_ok $ora = $CLASS->new(sqitch => $sqitch, target => $target), $CLASS; diff --git a/t/snowflake.t b/t/snowflake.t index e0001ad8a..0f957e04d 100644 --- a/t/snowflake.t +++ b/t/snowflake.t @@ -515,22 +515,6 @@ ok my $now = App::Sqitch::DateTime->now, 'Construct a datetime object'; is $snow->_char2ts($now), $now->as_string(format => 'iso'), 'Should get ISO output from _char2ts'; -############################################################################## -# Test _quote_ident. -# Mock DBI method. -sub quote_identifier { qq{"$_[1]"} } - -ok my $quote_ident = $CLASS->can('_quote_ident'), 'Should have _quote_ident sub'; -# https://docs.snowflake.com/en/sql-reference/identifiers-syntax#unquoted-identifiers -for my $ident (qw(foo FOO _xXx _ a id1 My$Thing), "foo") { - is $quote_ident->(__PACKAGE__, $ident), $ident, "Should not quote “$ident”"; -} - -for my $ident (qw(my.thing 1go $foo идентификатор), 'hi there', qq{'thing'}) { - is $quote_ident->(__PACKAGE__, $ident), quote_identifier(__PACKAGE__, $ident), - "Should quote “$ident”"; -} - ############################################################################## # Can we do live tests? my $dbh; diff --git a/t/sqitch b/t/sqitch index 350e7fc0a..cf9171dca 100755 --- a/t/sqitch +++ b/t/sqitch @@ -1,14 +1,6 @@ #!/usr/bin/env perl -CAS -use POSIX qw(setlocale); -BEGIN { - if ($^O eq 'MSWin32') { - require Win32::Locale; - setlocale POSIX::LC_ALL, Win32::Locale::get_locale(); - } else { - setlocale POSIX::LC_ALL, ''; - } -} +use locale; use FindBin; use lib "$FindBin::Bin/../lib"; use App::Sqitch; diff --git a/xt/locale/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo b/xt/locale/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo new file mode 100644 index 000000000..3c1b7c0eb Binary files /dev/null and b/xt/locale/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo differ diff --git a/xt/locale/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo b/xt/locale/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo new file mode 100644 index 000000000..5ff3b87c6 Binary files /dev/null and b/xt/locale/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo differ diff --git a/xt/locale/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo b/xt/locale/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo new file mode 100644 index 000000000..bbb9aa099 Binary files /dev/null and b/xt/locale/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo differ diff --git a/xt/locale/README.md b/xt/locale/README.md new file mode 100644 index 000000000..bc5900eb5 --- /dev/null +++ b/xt/locale/README.md @@ -0,0 +1,43 @@ +Sqitch Locale Test +================== + +This directory contains the files necessary to test the Sqitch CLI to ensure it +properly detects locale settings and emits translated messages. The +[`po` directory here](./po/), unlike the canonical translations in the root `po` +directory, contains only a few languages translating a single message: + +``` +"{command}" is not a valid command +``` + +The `LocaleData` directory contains the compiled forms of these dictionaries, +and unlike the main dictionaries, these are committed to the repository. This +allows the [OS](.github/workflows/os.yml) and [Perl](.github/workflows/os.yml) +workflows to run without the overhead of compiling them (a PITA since `gettext` +is hard to get on Windows and Dist::Zilla supports only more recent versions of +Perl). If the messages need to change, recompile the dictionaries with these +commands: + +```sh +cpanm Dist::Zilla --notest +dzil authordeps --missing | cpanm --notest +dzil msg-compile -d xt/locale xt/locale/po/*.po +``` + +For errors where it can't find `msgformat` or `gettext`, be sure that [gettext] +is installed (readily available via `apt-get`, `yum`, or `brew`). + +Now run the test, which validates the output from [`bin/sqitch`](bin/sqitch): + +```sh +prove -lv xt/locale/test-cli.t +``` + +If tests fail, be sure each of the locales is installed on your system. +Apt-based systems, for example, require the relevant language packs: + +```sh +sudo apt-get install -qq language-pack-fr language-pack-en language-pack-de language-pack-it +``` + + [gettext]: https://www.gnu.org/software/gettext/ diff --git a/xt/locale/po/de_DE.po b/xt/locale/po/de_DE.po new file mode 100644 index 000000000..1f1cabee0 --- /dev/null +++ b/xt/locale/po/de_DE.po @@ -0,0 +1,12 @@ +msgid "" +msgstr "" +"Language: de\n" +"Project-Id-Version: Sqitch 1.4.1\n" +"PO-Revision-Date: 22024-01-06T21:10:06Z\n" +"Last-Translator: Sqitch Hackers \n" +"Language-Team: Sqitch Hackers \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +msgid "\"{command}\" is not a valid command" +msgstr "\"{command}\" ist ein ungültiger Befehl" diff --git a/xt/locale/po/fr_FR.po b/xt/locale/po/fr_FR.po new file mode 100644 index 000000000..17df56188 --- /dev/null +++ b/xt/locale/po/fr_FR.po @@ -0,0 +1,12 @@ +msgid "" +msgstr "" +"Language: fr\n" +"Project-Id-Version: Sqitch 1.4.1\n" +"PO-Revision-Date: 22024-01-06T21:10:06Z\n" +"Last-Translator: Sqitch Hackers \n" +"Language-Team: Sqitch Hackers \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +msgid "\"{command}\" is not a valid command" +msgstr "\"{command}\" n'est pas une commande valide" diff --git a/xt/locale/po/it_IT.po b/xt/locale/po/it_IT.po new file mode 100644 index 000000000..0edd5753c --- /dev/null +++ b/xt/locale/po/it_IT.po @@ -0,0 +1,12 @@ +msgid "" +msgstr "" +"Language: it\n" +"Project-Id-Version: Sqitch 1.4.1\n" +"PO-Revision-Date: 22024-01-06T21:10:06Z\n" +"Last-Translator: Sqitch Hackers \n" +"Language-Team: Sqitch Hackers \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +msgid "\"{command}\" is not a valid command" +msgstr "\"{command}\" non è un comando valido" diff --git a/xt/locale/test-cli.t b/xt/locale/test-cli.t new file mode 100644 index 000000000..ec666b2f8 --- /dev/null +++ b/xt/locale/test-cli.t @@ -0,0 +1,57 @@ +#!/usr/bin/perl -w + +use strict; +use warnings; +use Test::More tests => 4; +use File::Spec; +use Capture::Tiny qw(:all); + +# Requires xt/locale/LocaleData; see xt/locale/README.md for details. +my @cli = (qw(-Ilib -CAS -Ixt/locale), File::Spec->catfile(qw(bin sqitch))); + +# Windows has its own locale names for some reason. +# https://stackoverflow.com/q/77771097/79202 +my %lang_for = ( + "en_US" => 'English_United States.1252', + "fr_FR" => 'French_France.1252', + "de_DE" => 'German_Germany.1252', + "it_IT" => 'Italian_Italy.1252', +); + +# Other supported OSes just use the code name. +if ($^O ne 'MSWin32') { + $lang_for{$_} = "$_.UTF-8" for keys %lang_for; +} + +# Each locale must be installed on the local system. Adding a new lang? Also add +# the relevant language-pack-XX package to os.yml and perl.yml. +for my $tc ( + { lang => 'en_US', err => q{"nonesuch" is not a valid command} }, + { lang => 'fr_FR', err => q{"nonesuch" n'est pas une commande valide} }, + { lang => 'de_DE', err => q{"nonesuch" ist ein ungültiger Befehl} }, + { lang => 'it_IT', err => q{"nonesuch" non è un comando valido} }, +) { + subtest $tc->{lang} || 'default' => sub { + local $ENV{LC_ALL} = $lang_for{$tc->{lang}}; + + # Test successful run. + my ($stdout, $stderr, $exit) = capture { system $^X, @cli, 'help' }; + is $exit >> 8, 0, 'Should have exited normally'; + like $stdout, qr/\AUsage\b/, 'Should have usage statement in STDOUT'; + is $stderr, '', 'Should have no STDERR'; + + # Test localized error. + ($stdout, $stderr, $exit) = capture { system $^X, @cli, 'nonesuch' }; + is $exit >> 8, 2, 'Should have exit val 2'; + is $stdout, '', 'Should have no STDOUT'; + TODO: { + # The Windows locales don't translate into the language codes + # recognized by Locale::TextDomain/gettext. Not at all sure how to + # fix this. Some relevant notes in the FAQ: + # https://metacpan.org/dist/libintl-perl/view/lib/Locale/libintlFAQ.pod#How-do-I-switch-languages-or-force-a-certain-language-independently-from-user-settings-read-from-the-environment? + local $TODO = $^O eq 'MSWin32' ? 'localization fails on Windows' : ''; + like $stderr, qr/\A\Q$tc->{err}/, + 'Should have localized error message in STDERR'; + } + }; +} diff --git a/xt/release.md b/xt/release.md index f7a4171aa..d8a50a447 100644 --- a/xt/release.md +++ b/xt/release.md @@ -2,10 +2,11 @@ Releasing Sqitch ================ Notes on the steps to make a release of Sqitch. In the steps, below, examples -use the `$VERSION` environment variable for consistency. The assumption is that -it's set to the new version being released, e.g., +use the `$VERSION` and `$OLD_VERSION` environment variables for consistency. The +assumption is that they're set to the old and new versions, respectively, e.g., ``` sh +export OLD_VERSION=1.3.1 export VERSION=1.4.0 ``` @@ -40,7 +41,7 @@ First, update the sources so that everything is up-to-date. * Update copyright dates if a year has turned over since the last release: ``` sh - grep -ril copyright . | xargs perl -i -pe "s/-2023/-$(date +%Y)/g" + grep -ril copyright . | xargs perl -i -pe "s/-2024/-$(date +%Y)/g" ``` * Make a build and run `xt/dependency_report`: @@ -101,7 +102,7 @@ to get it out there! the release and that the list of Changes is nicely formatted. It should also appear [on CPAN] a short time later. -* Congratulations, you'e released a new version of Sqitch! Just a few changes +* Congratulations, you've released a new version of Sqitch! Just a few changes left to make. Web Site @@ -119,11 +120,11 @@ To update the Docker image, first preserve the previous release in a branch, then make the updates. * Create a branch for the previous release so that it can still be supported - if necessary. For v1.1.0, for example, do this: + if necessary: ``` sh - git checkout -b v1.1.0-maint - git push origin -u v1.1.0-maint + git checkout -b "v$OLD_VERSION-maint" + git push origin -u "v$OLD_VERSION-maint" ``` * Switch back to the main branch and update it for the new version: @@ -193,8 +194,8 @@ Update the Sqitch Homebrew tap with the new version. ``` * And that's all it takes. If you don't already have the tap with Sqitch - installed, you can tap and install the new version with SQLite support) with - these commands: + installed, you can tap and install the new version (with SQLite support) + with these commands: ``` sh brew tap sqitchers/sqitch