zach-overflow opened a new pull request, #58584:
URL: https://github.com/apache/airflow/pull/58584
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!--
Thank you for contributing! Please make sure that your code changes
are covered with tests. And in case of new features or big changes
remember to adjust the documentation.
Feel free to ping committers for the review!
In case of an existing issue, reference it using one of the following:
closes: #ISSUE
related: #ISSUE
How to write a good git commit message:
http://chris.beams.io/posts/git-commit/
-->
<!-- Please keep an empty line above the dashes. -->
---
**Related Issues**: None that I'm aware of. Happy to open one to go along
with this PR if that is preferable.
## What?
* Add a new `airflow db would-migrate` command to the CLI, which Check if a
migration would take place in the given environment and configuration, but does
not execute the migration. Exits with an exit code of `0` when there are no
pending migrations expected / detected, otherwise has an exit code of `123`
when a pending migration is detected / expected.
## Why?
* As far as I'm aware, `airflow db migrate --show-sql-only` is the only way
to check if a migration is expected or not; however, there are a few scenarios
and reasons that existing command is not sufficient:
* When running `airflow db migrate --show-sql-only` from another script,
the output of that command is not particularly machine-readable (it currently
prints out a cat if there's no migration anticipated).
* Feels slightly less error-prone to check if a migration would happen
by using a different command, rather than the migration command itself. In
other words, this is less risky than accidentally submitting `airflow db
migrate` with the `--show-sql-only` accidentally missing.
* Surfacing this information via the exit code makes for a pretty
straightforward integration with any bash scripts, for example:
```shell
airflow db would-migrate -q
migration_expected=$?
if [[ $migration_expected -eq 123 ]]; then
echo "airflow db migrate would cause a migration"
# do extra stuff here
fi
```
## Testing
* Ran `breeze testing core-tests --test-type CLI --run-db-tests-only
--backend postgres airflow-core/tests/unit/cli`
* `prek`
* Verified the CLI behavior inside of a `breeze` shell session.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]