mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-27 16:51:15 -03:00
Compare commits
118 Commits
47a3757f73
...
4.7.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efb0223da1 | ||
|
|
b6f30f11e4 | ||
|
|
fb29c85a62 | ||
|
|
e071de3b68 | ||
|
|
ed6fe3f315 | ||
|
|
4f539dffaf | ||
|
|
d885e0efd7 | ||
|
|
330e897acc | ||
|
|
b638aa198f | ||
|
|
fd44c23678 | ||
|
|
f84179f8fe | ||
|
|
71d6ec4ab9 | ||
|
|
683e4c8d15 | ||
|
|
d7cc3c7bb6 | ||
|
|
9370830733 | ||
|
|
161f31f42b | ||
|
|
5998421410 | ||
|
|
5b1e163f22 | ||
|
|
7c5fc85d96 | ||
|
|
2f9f46b2a5 | ||
|
|
4b069b51e7 | ||
|
|
398fc17b81 | ||
|
|
12fa0d8b3d | ||
|
|
0441bdc634 | ||
|
|
d0e47cf58a | ||
|
|
d35aa3860a | ||
|
|
5971e79c3f | ||
|
|
dad660cda5 | ||
|
|
8328e53050 | ||
|
|
4aadeea184 | ||
|
|
df5067cc1c | ||
|
|
3d708d6fc1 | ||
|
|
a564238d82 | ||
|
|
64443aa173 | ||
|
|
d2c2b23d1f | ||
|
|
4e3898d0d7 | ||
|
|
3ad45d8fb1 | ||
|
|
39bd54cb49 | ||
|
|
281399561b | ||
|
|
e5f57b1daf | ||
|
|
6c04a72697 | ||
|
|
1034945690 | ||
|
|
e2b18fc5b6 | ||
|
|
319b093ef8 | ||
|
|
ab2678082e | ||
|
|
81e8eebd8d | ||
|
|
2b41f132be | ||
|
|
688d1954a8 | ||
|
|
96695a2859 | ||
|
|
f2b0706494 | ||
|
|
c91bfba08c | ||
|
|
cc40fa4a4c | ||
|
|
ff6ee65deb | ||
|
|
1771a325aa | ||
|
|
58648054c0 | ||
|
|
27fb4d6731 | ||
|
|
6701b7f6c8 | ||
|
|
e175a317af | ||
|
|
7b98a275fe | ||
|
|
b78dc4fbec | ||
|
|
12e97ea7fc | ||
|
|
af8594c611 | ||
|
|
006fa86ef4 | ||
|
|
9b04300dc3 | ||
|
|
c80496fad1 | ||
|
|
ca56949028 | ||
|
|
fa74d0fe54 | ||
|
|
59f3719e95 | ||
|
|
170c171e85 | ||
|
|
c33ca660e3 | ||
|
|
f7c336021b | ||
|
|
523e25df17 | ||
|
|
c8b28d4d24 | ||
|
|
ba35214e1e | ||
|
|
d05d8557a7 | ||
|
|
a3dc57873c | ||
|
|
0c078c179d | ||
|
|
ca443e2e54 | ||
|
|
63c3306e6c | ||
|
|
923d0b7974 | ||
|
|
52998635f9 | ||
|
|
1ccf4ad480 | ||
|
|
23b5b01242 | ||
|
|
ca2b5dc40b | ||
|
|
0dfe06f4c9 | ||
|
|
4e47f47d85 | ||
|
|
f3e43e932f | ||
|
|
1dfc75bb9c | ||
|
|
fa33f6f0e0 | ||
|
|
31363120aa | ||
|
|
2304077e0d | ||
|
|
86c052b6ba | ||
|
|
68472da48a | ||
|
|
4b172fc735 | ||
|
|
944ab91fab | ||
|
|
34535fcb61 | ||
|
|
9e4eb37696 | ||
|
|
dda76d7f18 | ||
|
|
fdb1d95521 | ||
|
|
937f3bc6cb | ||
|
|
ebc32adc09 | ||
|
|
a4b6348315 | ||
|
|
b21a4a7197 | ||
|
|
0cd227533f | ||
|
|
5eb7687a64 | ||
|
|
8d6426295e | ||
|
|
85e76ba356 | ||
|
|
fee4288122 | ||
|
|
413246a93d | ||
|
|
3cb939c9a8 | ||
|
|
4790a444d8 | ||
|
|
da924927a0 | ||
|
|
29ff2fdd43 | ||
|
|
732c04420b | ||
|
|
947abd7464 | ||
|
|
12cfe59578 | ||
|
|
4b60d18b44 | ||
|
|
dd8e59db03 |
@@ -30,5 +30,5 @@ max_line_length = unset
|
||||
[{COMMIT_EDITMSG,git-revise-todo,*.jjdescription}]
|
||||
max_line_length = 72
|
||||
|
||||
[*.yml]
|
||||
[*.{toml,yml}]
|
||||
indent_size = 2
|
||||
|
||||
2
.github/actions/rust-toolchain/action.yml
vendored
2
.github/actions/rust-toolchain/action.yml
vendored
@@ -25,7 +25,7 @@ runs:
|
||||
set -x
|
||||
toolchain=$(
|
||||
case "$toolchain_channel" in
|
||||
(stable) echo 1.93 ;; # updatecli.d/rust.yml
|
||||
(stable) echo 1.95 ;; # updatecli.d/rust.yml
|
||||
(msrv) echo 1.85 ;; # updatecli.d/rust.yml
|
||||
(*)
|
||||
printf >&2 "error: unsupported toolchain channel %s" "$toolchain_channel"
|
||||
|
||||
2
.github/workflows/lint-dependencies.yml
vendored
2
.github/workflows/lint-dependencies.yml
vendored
@@ -21,4 +21,4 @@ jobs:
|
||||
with:
|
||||
command: check licenses
|
||||
arguments: --all-features --locked --exclude-dev
|
||||
rust-version: 1.93 # updatecli.d/rust.yml
|
||||
rust-version: 1.95 # updatecli.d/rust.yml
|
||||
|
||||
23
.github/workflows/lint.yml
vendored
23
.github/workflows/lint.yml
vendored
@@ -22,6 +22,27 @@ jobs:
|
||||
- name: check rustfmt
|
||||
run: find build.rs crates src -type f -name '*.rs' | xargs rustfmt --check
|
||||
|
||||
shellcheck:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@stable
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install shellcheck
|
||||
run: sudo apt install shellcheck
|
||||
- name: shellcheck
|
||||
run: cargo xtask shellcheck
|
||||
|
||||
po_files_up_to_date:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@stable
|
||||
- name: Install deps
|
||||
uses: ./.github/actions/install-dependencies
|
||||
- name: Check PO files
|
||||
run: cargo xtask gettext check
|
||||
|
||||
clippy:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -32,6 +53,8 @@ jobs:
|
||||
features: ""
|
||||
- rust_version: "stable"
|
||||
features: "--no-default-features"
|
||||
- rust_version: "stable"
|
||||
features: "--all-features"
|
||||
- rust_version: "msrv"
|
||||
features: ""
|
||||
steps:
|
||||
|
||||
18
.github/workflows/test.yml
vendored
18
.github/workflows/test.yml
vendored
@@ -32,14 +32,6 @@ jobs:
|
||||
- name: make fish_run_tests
|
||||
run: |
|
||||
make -C build VERBOSE=1 fish_run_tests
|
||||
- name: translation updates
|
||||
run: |
|
||||
# Generate PO files. This should not result it a change in the repo if all translations are
|
||||
# up to date.
|
||||
# Ensure that fish is available as an executable.
|
||||
PATH="$PWD/build:$PATH" build_tools/update_translations.fish
|
||||
# Show diff output. Fail if there is any.
|
||||
git --no-pager diff --exit-code || { echo 'There are uncommitted changes after regenerating the gettext PO files. Make sure to update them via `build_tools/update_translations.fish` after changing source files.'; exit 1; }
|
||||
|
||||
ubuntu-32bit-static-pcre2:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -167,7 +159,7 @@ jobs:
|
||||
- name: Install deps
|
||||
# Not using setup-msys2 `install` option to make it easier to copy/paste
|
||||
run: |
|
||||
pacman --noconfirm -S --needed git rust
|
||||
pacman --noconfirm -S --needed git rust python3 diffutils tmux
|
||||
- name: rebase
|
||||
env:
|
||||
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
|
||||
@@ -177,10 +169,6 @@ jobs:
|
||||
- name: cargo build
|
||||
run: |
|
||||
cargo build
|
||||
- name: smoketest
|
||||
# We can't run `build_tools/check.sh` yet, there are just too many failures
|
||||
# so this is just a quick check to make sure that fish can swim
|
||||
- name: tests
|
||||
run: |
|
||||
set -x
|
||||
[ "$(target/debug/fish.exe -c 'echo (math 1 + 1)')" = 2 ]
|
||||
cargo test
|
||||
cargo xtask check
|
||||
|
||||
53
.gitignore
vendored
53
.gitignore
vendored
@@ -20,7 +20,6 @@
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
!tests/*.out
|
||||
*.out
|
||||
*.pch
|
||||
*.slo
|
||||
@@ -36,46 +35,31 @@
|
||||
Desktop.ini
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
__pycache__/
|
||||
|
||||
.directory
|
||||
.fuse_hidden*
|
||||
|
||||
|
||||
# Directories that only contain transitory files from building and testing.
|
||||
/doc/
|
||||
/share/man/
|
||||
/share/doc/
|
||||
/test/
|
||||
/user_doc/
|
||||
|
||||
# File names that can appear in the project root that represent artifacts from
|
||||
# building and testing.
|
||||
/FISH-BUILD-VERSION-FILE
|
||||
/command_list.txt
|
||||
/command_list_toc.txt
|
||||
/compile_commands.json
|
||||
/doc.h
|
||||
# Artifacts from in-tree builds ("cmake .").
|
||||
/build.ninja
|
||||
/cargo/
|
||||
/CMakeCache.txt
|
||||
/CMakeFiles/
|
||||
/cmake_install.cmake
|
||||
/fish
|
||||
/fish.pc
|
||||
/fish_indent
|
||||
/fish_key_reader
|
||||
/fish_tests
|
||||
/lexicon.txt
|
||||
/lexicon_filter
|
||||
/toc.txt
|
||||
/version
|
||||
fish-build-version-witness.txt
|
||||
__pycache__
|
||||
/fish-localization-map-cache/
|
||||
/fish.pc
|
||||
/fish.pc.noversion
|
||||
/.ninja_log
|
||||
|
||||
# File names that can appear below the project root that represent artifacts
|
||||
# from building and testing.
|
||||
/doc_src/commands.hdr
|
||||
/doc_src/index.hdr
|
||||
/po/*.gmo
|
||||
/share/__fish_build_paths.fish
|
||||
/share/pkgconfig
|
||||
/tests/*.tmp.*
|
||||
/tests/.last-check-all-files
|
||||
/.venv/
|
||||
|
||||
# xcode
|
||||
## Build generated
|
||||
@@ -83,24 +67,19 @@ __pycache__
|
||||
*.xccheckout
|
||||
*.xcscmblueprin
|
||||
.vscode
|
||||
/DerivedData/
|
||||
/build/
|
||||
/DerivedData/
|
||||
/tags
|
||||
xcuserdata/
|
||||
/xcuserdata/
|
||||
|
||||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
debug/
|
||||
target/
|
||||
|
||||
/target/
|
||||
# These are backup files generated by rustfmt
|
||||
**/*.rs.bk
|
||||
|
||||
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||
*.pdb
|
||||
|
||||
# Generated by clangd
|
||||
/.cache
|
||||
/.cache/
|
||||
|
||||
# JetBrains editors.
|
||||
.idea/
|
||||
|
||||
@@ -1,33 +1,46 @@
|
||||
fish ?.?.? (released ???)
|
||||
=========================
|
||||
fish 4.7.1 (released May 08, 2026)
|
||||
==================================
|
||||
|
||||
Notable improvements and fixes
|
||||
------------------------------
|
||||
This release fixes a regression in 4.7.0 that caused the web config (``fish_config``) to fail to start (:issue:`12717`).
|
||||
|
||||
fish 4.7.0 (released May 05, 2026)
|
||||
==================================
|
||||
|
||||
Deprecations and removed features
|
||||
---------------------------------
|
||||
- The default theme (i.e. the ``fish_color_*`` variables) is no longer set in non-interactive shells.
|
||||
|
||||
Interactive improvements
|
||||
------------------------
|
||||
- :doc:`prompt_pwd <cmds/prompt_pwd>` now strips control characters.
|
||||
- Background color and underline color specified in :envvar:`fish_color_valid_path` are now respected (:issue:`12622`).
|
||||
|
||||
Improved terminal support
|
||||
-------------------------
|
||||
- Repaint events (as triggered by changes to color variables or by event handlers running ``commandline -f repaint``) no longer reset the completion pager and other transient UI states (:issue:`12683`).
|
||||
- :envvar:`fish_color_valid_path` now respects background and underline colors (:issue:`12622`).
|
||||
- :doc:`funced <cmds/funced>` will no longer lose work if there are parse errors multiple times without new changes to the file.
|
||||
- Fixed a case where directory completions were sorted in a surprising order (:issue:`12695`).
|
||||
- When at the command token, the :kbd:`alt-o` binding will now open read-only files too (:issue:`12671`).
|
||||
- Private mode in-memory history (``set fish_history``) is no longer shared with :doc:`builtin read <cmds/read>` (:issue:`12662`).
|
||||
|
||||
Other improvements
|
||||
------------------
|
||||
- History is no longer corrupted with NUL bytes when fish receives SIGTERM or SIGHUP (:issue:`10300`).
|
||||
- :doc:`fish_update_completions <cmds/fish_update_completions>` now handles groff ``\X'...'`` device control escapes, fixing completion generation for man pages produced by help2man 1.50 and later (such as coreutils 9.10).
|
||||
- Removing history entries via the :doc:`web-based config <cmds/fish_config>` is more intuitive.
|
||||
- If :envvar:`XDG_DATA_DIRS` is empty, the default value is assumed, which means that fish will now also use configuration from paths like ``$PREFIX/share/fish/vendor_completions.d`` (:issue:`11349`).
|
||||
- Some internal file descriptors were moved to number 10 or higher, to reduce risk of clashes with those used by the user in scripts.
|
||||
- The wording of error messages has been made consistent, especially for builtin subcommands (:issue:`12556`).
|
||||
|
||||
For distributors and developers
|
||||
-------------------------------
|
||||
- When the default global config directory (``$PREFIX/etc/fish``) exists but has been overridden via ``-DCMAKE_INSTALL_SYSCONFDIR``, fish will now respect that override (:issue:`10748`).
|
||||
- ``build_tools/update_translations.fish`` has been replaced by ``cargo xtask gettext {check,new,update}`` (:issue:`12676`).
|
||||
- ``cargo xtask shellcheck`` to lint shell-scripts.
|
||||
|
||||
Regression fixes:
|
||||
-----------------
|
||||
- Vi mode ``dl`` (:issue:`12461`).
|
||||
- (from 4.6) Vi mode ``dl`` (:issue:`12461`).
|
||||
- (from 4.6) Backspace after newline (:issue:`12583`).
|
||||
- (from 4.3.3) Long options were spuriously completed after typing short options (85e76ba3561).
|
||||
- (from 3.2) ``nosuchcommand || echo hello`` executes the right hand side again (:issue:`12654`).
|
||||
|
||||
fish 4.6.0 (released March 28, 2026)
|
||||
====================================
|
||||
|
||||
@@ -271,13 +271,14 @@ Adding translations for a new language
|
||||
--------------------------------------
|
||||
|
||||
Creating new translations requires the Gettext tools.
|
||||
More specifically, you will need ``msguniq`` and ``msgmerge`` for creating translations for a new
|
||||
language.
|
||||
To create a new translation, run::
|
||||
More specifically, you will need ``msguniq``, ``msgmerge``, and ``msgattrib``
|
||||
for creating translations for a new language.
|
||||
To create a PO file for a new language ``ll_CC``, run::
|
||||
|
||||
build_tools/update_translations.fish localization/po/ll_CC.po
|
||||
cargo xtask gettext new ll_CC
|
||||
|
||||
This will create a new PO file containing all messages available for translation.
|
||||
This will create a new PO file in ``localization/po/``
|
||||
containing all messages available for translation.
|
||||
If the file already exists, it will be updated.
|
||||
|
||||
After modifying a PO file, you can recompile fish, and it will integrate the modifications you made.
|
||||
@@ -347,10 +348,12 @@ Modifications to strings in source files
|
||||
----------------------------------------
|
||||
|
||||
If a string changes in the sources, the old translations will no longer work.
|
||||
They will be preserved in the PO files, but commented-out (starting with ``#~``).
|
||||
If you add/remove/change a translatable strings in a source file,
|
||||
run ``build_tools/update_translations.fish`` to propagate this to all translation files (``localization/po/*.po``).
|
||||
run ``cargo xtask gettext update`` to propagate this to all translation files (``localization/po/*.po``).
|
||||
This is only relevant for developers modifying the source files of fish or fish scripts.
|
||||
Note translations for messages which are no longer present in the sources will be deleted from the PO files.
|
||||
If the source string changed in a way which should not affect translations,
|
||||
consider updating the ``msgid`` in the PO files such that translations are preserved.
|
||||
|
||||
Setting Code Up For Translations
|
||||
--------------------------------
|
||||
|
||||
83
Cargo.lock
generated
83
Cargo.lock
generated
@@ -67,6 +67,12 @@ dependencies = [
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.102"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
||||
|
||||
[[package]]
|
||||
name = "assert_matches"
|
||||
version = "1.5.0"
|
||||
@@ -183,6 +189,31 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-deque"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
|
||||
dependencies = [
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.7"
|
||||
@@ -260,7 +291,7 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
||||
|
||||
[[package]]
|
||||
name = "fish"
|
||||
version = "4.6.0"
|
||||
version = "4.7.1"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bitflags",
|
||||
@@ -296,7 +327,9 @@ dependencies = [
|
||||
"rand",
|
||||
"rsconf",
|
||||
"rust-embed",
|
||||
"rustc_version",
|
||||
"serial_test",
|
||||
"strum_macros",
|
||||
"unix_path",
|
||||
"xterm-color",
|
||||
]
|
||||
@@ -520,6 +553,22 @@ version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||
|
||||
[[package]]
|
||||
name = "ignore"
|
||||
version = "0.4.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a"
|
||||
dependencies = [
|
||||
"crossbeam-deque",
|
||||
"globset",
|
||||
"log",
|
||||
"memchr",
|
||||
"regex-automata",
|
||||
"same-file",
|
||||
"walkdir",
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "is_terminal_polyfill"
|
||||
version = "1.70.2"
|
||||
@@ -889,6 +938,15 @@ dependencies = [
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
|
||||
dependencies = [
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.6"
|
||||
@@ -919,6 +977,12 @@ version = "3.0.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.228"
|
||||
@@ -1015,6 +1079,18 @@ version = "0.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "strum_macros"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.114"
|
||||
@@ -1163,9 +1239,14 @@ name = "xtask"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"anstyle",
|
||||
"anyhow",
|
||||
"clap",
|
||||
"fish-build-helper",
|
||||
"fish-common",
|
||||
"fish-tempfile",
|
||||
"fish-widestring",
|
||||
"ignore",
|
||||
"pcre2",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
|
||||
61
Cargo.toml
61
Cargo.toml
@@ -12,6 +12,7 @@ license = "GPL-2.0-only AND LGPL-2.0-or-later AND MIT AND PSF-2.0"
|
||||
|
||||
[workspace.dependencies]
|
||||
anstyle = "1.0.13"
|
||||
anyhow = "1.0.102"
|
||||
assert_matches = "1.5.0"
|
||||
bitflags = "2.5.0"
|
||||
cc = "1.0.94"
|
||||
@@ -35,6 +36,7 @@ fish-wcstringutil = { path = "crates/wcstringutil" }
|
||||
fish-widecharwidth = { path = "crates/widecharwidth" }
|
||||
fish-widestring = { path = "crates/widestring" }
|
||||
fish-wgetopt = { path = "crates/wgetopt" }
|
||||
ignore = "0.4.25"
|
||||
itertools = "0.14.0"
|
||||
libc = "0.2.177"
|
||||
# lru pulls in hashbrown by default, which uses a faster (though less DoS resistant) hashing algo.
|
||||
@@ -42,38 +44,41 @@ libc = "0.2.177"
|
||||
# files as of 22 April 2024.
|
||||
lru = "0.16.2"
|
||||
nix = { version = "0.31.1", default-features = false, features = [
|
||||
"event",
|
||||
"fs",
|
||||
"inotify",
|
||||
"hostname",
|
||||
"resource",
|
||||
"process",
|
||||
"signal",
|
||||
"term",
|
||||
"user",
|
||||
"event",
|
||||
"fs",
|
||||
"inotify",
|
||||
"hostname",
|
||||
"resource",
|
||||
"process",
|
||||
"signal",
|
||||
"term",
|
||||
"user",
|
||||
] }
|
||||
num-traits = "0.2.19"
|
||||
once_cell = "1.19.0"
|
||||
pcre2 = { git = "https://github.com/fish-shell/rust-pcre2", tag = "0.2.9-utf32", default-features = false, features = [
|
||||
"utf32",
|
||||
"utf32",
|
||||
] }
|
||||
phf = { version = "0.13", default-features = false }
|
||||
phf_codegen = "0.13"
|
||||
portable-atomic = { version = "1", default-features = false, features = [
|
||||
"fallback",
|
||||
"fallback",
|
||||
] }
|
||||
proc-macro2 = "1.0"
|
||||
rand = { version = "0.9.2", default-features = false, features = [
|
||||
"small_rng",
|
||||
"thread_rng",
|
||||
"small_rng",
|
||||
"thread_rng",
|
||||
] }
|
||||
regex = "1.12.3"
|
||||
rsconf = "0.3.0"
|
||||
rust-embed = { version = "8.11.0", features = [
|
||||
"deterministic-timestamps",
|
||||
"include-exclude",
|
||||
"interpolate-folder-path",
|
||||
"deterministic-timestamps",
|
||||
"include-exclude",
|
||||
"interpolate-folder-path",
|
||||
] }
|
||||
rustc_version = "0.4.1"
|
||||
serial_test = { version = "3", default-features = false }
|
||||
strum_macros = "0.28.0"
|
||||
widestring = "1.2.0"
|
||||
unicode-segmentation = "1.12.0"
|
||||
unicode-width = "0.2.0"
|
||||
@@ -91,7 +96,7 @@ debug = true
|
||||
|
||||
[package]
|
||||
name = "fish"
|
||||
version = "4.6.0"
|
||||
version = "4.7.1"
|
||||
edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
default-run = "fish"
|
||||
@@ -128,6 +133,7 @@ num-traits.workspace = true
|
||||
once_cell.workspace = true
|
||||
pcre2.workspace = true
|
||||
rand.workspace = true
|
||||
strum_macros.workspace = true
|
||||
xterm-color.workspace = true
|
||||
|
||||
[target.'cfg(not(target_has_atomic = "64"))'.dependencies]
|
||||
@@ -135,16 +141,16 @@ portable-atomic.workspace = true
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
rust-embed = { workspace = true, features = [
|
||||
"deterministic-timestamps",
|
||||
"debug-embed",
|
||||
"include-exclude",
|
||||
"interpolate-folder-path",
|
||||
"deterministic-timestamps",
|
||||
"debug-embed",
|
||||
"include-exclude",
|
||||
"interpolate-folder-path",
|
||||
] }
|
||||
[target.'cfg(not(windows))'.dependencies]
|
||||
rust-embed = { workspace = true, features = [
|
||||
"deterministic-timestamps",
|
||||
"include-exclude",
|
||||
"interpolate-folder-path",
|
||||
"deterministic-timestamps",
|
||||
"include-exclude",
|
||||
"interpolate-folder-path",
|
||||
] }
|
||||
|
||||
[dev-dependencies]
|
||||
@@ -156,6 +162,7 @@ fish-build-helper.workspace = true
|
||||
fish-gettext-mo-file-parser.workspace = true
|
||||
phf_codegen = { workspace = true, optional = true }
|
||||
rsconf.workspace = true
|
||||
rustc_version.workspace = true
|
||||
|
||||
[target.'cfg(windows)'.build-dependencies]
|
||||
unix_path.workspace = true
|
||||
@@ -185,16 +192,14 @@ embed-manpages = ["dep:fish-build-man-pages"]
|
||||
localize-messages = ["dep:fish-gettext"]
|
||||
# This feature is used to enable extracting messages from the source code for localization.
|
||||
# It only needs to be enabled if updating these messages (and the corresponding PO files) is
|
||||
# desired. This happens when running tests via `cargo xtask check` and when calling
|
||||
# `build_tools/update_translations.fish`, so there should not be a need to enable it manually.
|
||||
# desired. This happens for the `gettext` xtask, which is also invoked via `cargo xtask check`.
|
||||
# There should not be a need to enable this feature manually.
|
||||
gettext-extract = ["dep:fish-gettext-extraction"]
|
||||
|
||||
# The following features are auto-detected by the build-script and should not be enabled manually.
|
||||
tsan = []
|
||||
|
||||
[workspace.lints]
|
||||
rust.non_camel_case_types = "allow"
|
||||
rust.non_upper_case_globals = "allow"
|
||||
rust.unknown_lints = { level = "allow", priority = -1 }
|
||||
rust.unstable_name_collisions = "allow"
|
||||
rustdoc.private_intra_doc_links = "allow"
|
||||
|
||||
4
build.rs
4
build.rs
@@ -6,6 +6,10 @@
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
fn main() {
|
||||
let is_nightly =
|
||||
rustc_version::version_meta().unwrap().channel == rustc_version::Channel::Nightly;
|
||||
rsconf::declare_cfg("nightly", is_nightly);
|
||||
|
||||
setup_paths();
|
||||
|
||||
// Add our default to enable tools that don't go through CMake, like "cargo test" and the
|
||||
|
||||
@@ -60,6 +60,7 @@ cargo() {
|
||||
fi
|
||||
}
|
||||
|
||||
# shellcheck disable=2317,2329
|
||||
cleanup () {
|
||||
if [ -n "$gettext_template_dir" ] && [ -e "$gettext_template_dir" ]; then
|
||||
rm -r "$gettext_template_dir"
|
||||
@@ -89,6 +90,7 @@ fi
|
||||
|
||||
gettext_template_dir=$(mktemp -d)
|
||||
(
|
||||
# shellcheck disable=2030
|
||||
export FISH_GETTEXT_EXTRACTION_DIR="$gettext_template_dir"
|
||||
cargo build --workspace --all-targets --features=gettext-extract
|
||||
)
|
||||
@@ -96,10 +98,17 @@ if $lint; then
|
||||
if command -v cargo-deny >/dev/null; then
|
||||
cargo deny --all-features --locked --exclude-dev check licenses
|
||||
fi
|
||||
|
||||
if command -v shellcheck >/dev/null || { test -n "$CI" && ! $is_cygwin; }; then
|
||||
cargo xtask shellcheck
|
||||
fi
|
||||
|
||||
PATH="$build_dir:$PATH" cargo xtask format --all --check
|
||||
for features in "" --no-default-features; do
|
||||
for features in "" --no-default-features --all-features; do
|
||||
cargo clippy --workspace --all-targets $features
|
||||
done
|
||||
|
||||
cargo xtask gettext --rust-extraction-dir="$gettext_template_dir" check
|
||||
fi
|
||||
|
||||
# When running `cargo test`, some binaries (e.g. `fish_gettext_extraction`)
|
||||
@@ -112,7 +121,8 @@ fi
|
||||
# - https://github.com/msys2/MSYS2-packages/issues/5784
|
||||
(
|
||||
if $is_cygwin; then
|
||||
export PATH="$PATH:$(rustc --print target-libdir)"
|
||||
PATH="$PATH:$(rustc --print target-libdir)"
|
||||
export PATH
|
||||
fi
|
||||
cargo test --no-default-features --workspace --all-targets
|
||||
)
|
||||
@@ -124,20 +134,22 @@ fi
|
||||
|
||||
# Using "()" not "{}" because we do want a subshell (for the export)
|
||||
system_tests() (
|
||||
[ -n "$@" ] && export "$@"
|
||||
export FISH_GETTEXT_EXTRACTION_DIR="$gettext_template_dir"
|
||||
# shellcheck disable=2163
|
||||
[ -n "$*" ] && export "$@"
|
||||
"$workspace_root/tests/test_driver.py" "$build_dir"
|
||||
)
|
||||
|
||||
test_cmd='FISH_GETTEXT_EXTRACTION_DIR="$gettext_template_dir" "$workspace_root/tests/test_driver.py" "$build_dir"'
|
||||
if $is_cygwin; then
|
||||
echo -e "=== Running ${green}integration tests ${yellow}with${green} symlinks${reset}"
|
||||
system_tests $cygwin_var=winsymlinks
|
||||
# shellcheck disable=2059
|
||||
printf "=== Running ${green}integration tests ${yellow}with${green} symlinks${reset}\n"
|
||||
system_tests "$cygwin_var"=winsymlinks
|
||||
|
||||
echo -e "=== Running ${green}integration tests ${yellow}without${green} symlinks${reset}"
|
||||
system_tests $cygwin_var=winsymlinks
|
||||
# shellcheck disable=2059
|
||||
printf "=== Running ${green}integration tests ${yellow}without${green} symlinks${reset}\n"
|
||||
system_tests "$cygwin_var"=
|
||||
else
|
||||
echo -e "=== Running ${green}integration tests${reset}"
|
||||
# shellcheck disable=2059
|
||||
printf "=== Running ${green}integration tests${reset}\n"
|
||||
system_tests
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,150 +0,0 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# Tool to generate gettext messages template file.
|
||||
# Writes to stdout.
|
||||
# Intended to be called from `update_translations.fish`.
|
||||
|
||||
argparse use-existing-template= -- $argv
|
||||
or exit $status
|
||||
|
||||
begin
|
||||
# Write header. This is required by msguniq.
|
||||
# Note that this results in the file being overwritten.
|
||||
# This is desired behavior, to get rid of the results of prior invocations
|
||||
# of this script.
|
||||
set -l header 'msgid ""\nmsgstr "Content-Type: text/plain; charset=UTF-8\\\\n"\n\n'
|
||||
printf $header
|
||||
|
||||
set -g workspace_root (path resolve (status dirname)/..)
|
||||
|
||||
set -l rust_extraction_dir
|
||||
if set -l --query _flag_use_existing_template
|
||||
set rust_extraction_dir $_flag_use_existing_template
|
||||
else
|
||||
set rust_extraction_dir (mktemp -d)
|
||||
# We need to build to ensure that the proc macro for extracting strings runs.
|
||||
FISH_GETTEXT_EXTRACTION_DIR=$rust_extraction_dir cargo check --features=gettext-extract
|
||||
or exit 1
|
||||
end
|
||||
|
||||
function mark_section
|
||||
set -l section_name $argv[1]
|
||||
echo 'msgid "fish-section-'$section_name'"'
|
||||
echo 'msgstr ""'
|
||||
echo ''
|
||||
end
|
||||
|
||||
mark_section tier1-from-rust
|
||||
|
||||
# Get rid of duplicates and sort.
|
||||
begin
|
||||
# Without providing this header, msguniq complains when a msgid is non-ASCII.
|
||||
printf $header
|
||||
find $rust_extraction_dir -type f -exec cat {} +
|
||||
end |
|
||||
msguniq --no-wrap --sort-output |
|
||||
# Remove the header again. Otherwise it would appear twice, breaking the msguniq at the end
|
||||
# of this file.
|
||||
sed '/^msgid ""$/ {N; /\nmsgstr "Content-Type: text\/plain; charset=UTF-8\\\\n"$/ {N; d}}'
|
||||
|
||||
if not set -l --query _flag_use_existing_template
|
||||
rm -r $rust_extraction_dir
|
||||
end
|
||||
|
||||
function extract_fish_script_messages_impl
|
||||
set -l regex $argv[1]
|
||||
set -e argv[1]
|
||||
# Using xgettext causes more trouble than it helps.
|
||||
# This is due to handling of escaping in fish differing from formats xgettext understands
|
||||
# (e.g. POSIX shell strings).
|
||||
# We work around this issue by manually writing the file content.
|
||||
|
||||
# Steps:
|
||||
# 1. We extract strings to be translated from the relevant files and drop the rest. This step
|
||||
# depends on the regex matching the entire line, and the first capture group matching the
|
||||
# string.
|
||||
# 2. We unescape. This gets rid of some escaping necessary in fish strings.
|
||||
# 3. The resulting strings are sorted alphabetically. This step is optional. Not sorting would
|
||||
# result in strings from the same file appearing together. Removing duplicates is also
|
||||
# optional, since msguniq takes care of that later on as well.
|
||||
# 4. Single backslashes are replaced by double backslashes. This results in the backslashes
|
||||
# being interpreted as literal backslashes by gettext tooling.
|
||||
# 5. Double quotes are escaped, such that they are not interpreted as the start or end of
|
||||
# a msgid.
|
||||
# 6. We transform the string into the format expected in a PO file.
|
||||
cat $argv |
|
||||
string replace --filter --regex $regex '$1' |
|
||||
string unescape |
|
||||
sort -u |
|
||||
sed -E -e 's_\\\\_\\\\\\\\_g' -e 's_"_\\\\"_g' -e 's_^(.*)$_msgid "\1"\nmsgstr ""\n_'
|
||||
end
|
||||
|
||||
function extract_fish_script_messages
|
||||
set -l tier $argv[1]
|
||||
set -e argv[1]
|
||||
if not set -q argv[1]
|
||||
return
|
||||
end
|
||||
# This regex handles explicit requests to translate a message. These are more important to translate
|
||||
# than messages which should be implicitly translated.
|
||||
set -l explicit_regex '.*\( *_ (([\'"]).+?(?<!\\\\)\\2) *\).*'
|
||||
mark_section "$tier-from-script-explicitly-added"
|
||||
extract_fish_script_messages_impl $explicit_regex $argv
|
||||
|
||||
# This regex handles descriptions for `complete` and `function` statements. These messages are not
|
||||
# particularly important to translate. Hence the "implicit" label.
|
||||
set -l implicit_regex '^(?:\s|and |or )*(?:complete|function).*? (?:-d|--description) (([\'"]).+?(?<!\\\\)\\2).*'
|
||||
mark_section "$tier-from-script-implicitly-added"
|
||||
extract_fish_script_messages_impl $implicit_regex $argv
|
||||
end
|
||||
|
||||
set -g share_dir $workspace_root/share
|
||||
|
||||
set -l tier1 $share_dir/config.fish
|
||||
set -l tier2
|
||||
set -l tier3
|
||||
|
||||
for file in $share_dir/completions/*.fish $share_dir/functions/*.fish
|
||||
# set -l tier (string match -r '^# localization: .*' <$file)
|
||||
set -l tier (string replace -rf -m1 \
|
||||
'^# localization: (.*)$' '$1' <$file)
|
||||
if set -q tier[1]
|
||||
switch "$tier"
|
||||
case tier1 tier2 tier3
|
||||
set -a $tier $file
|
||||
case 'skip*'
|
||||
case '*'
|
||||
echo >&2 "$file:1 unexpected localization tier: $tier"
|
||||
exit 1
|
||||
end
|
||||
continue
|
||||
end
|
||||
set -l dirname (path basename (path dirname $file))
|
||||
set -l command_name (path basename --no-extension $file)
|
||||
if test $dirname = functions &&
|
||||
string match -q -- 'fish_*' $command_name
|
||||
set -a tier1 $file
|
||||
continue
|
||||
end
|
||||
if test $dirname != completions
|
||||
echo >&2 "$file:1 missing localization tier for function file"
|
||||
exit 1
|
||||
end
|
||||
if test -e $workspace_root/doc_src/cmds/$command_name.rst
|
||||
set -a tier1 $file
|
||||
else
|
||||
set -a tier3 $file
|
||||
end
|
||||
end
|
||||
|
||||
extract_fish_script_messages tier1 $tier1
|
||||
extract_fish_script_messages tier2 $tier2
|
||||
extract_fish_script_messages tier3 $tier3
|
||||
end |
|
||||
# At this point, all extracted strings have been written to stdout,
|
||||
# starting with the ones taken from the Rust sources,
|
||||
# followed by strings explicitly marked for translation in fish scripts,
|
||||
# and finally the strings from fish scripts which get translated implicitly.
|
||||
# Because we do not eliminate duplicates across these categories,
|
||||
# we do it here, since other gettext tools expect no duplicates.
|
||||
msguniq --no-wrap
|
||||
@@ -16,7 +16,7 @@ manifest=$tmpdir/Cargo.toml
|
||||
lockfile=$tmpdir/Cargo.lock
|
||||
|
||||
sed "s/^version = \".*\"\$/version = \"$VERSION\"/g" Cargo.toml >"$manifest"
|
||||
awk -v version=$VERSION '
|
||||
awk -v version="$VERSION" '
|
||||
/^name = "fish"$/ { ok=1 }
|
||||
ok == 1 && /^version = ".*"$/ {
|
||||
ok = 2;
|
||||
|
||||
@@ -48,7 +48,7 @@ if test -z "$CI" || [ "$(git -C "$workspace_root" tag | wc -l)" -gt 1 ]; then {
|
||||
num_new_authors=$(wc -l <"$relnotes_tmp/committers-new")
|
||||
printf %s \
|
||||
"This release brings $num_commits new commits since $previous_version," \
|
||||
" contributed by $num_authors authors, $num_new_authors of which are new committers."
|
||||
" contributed by $num_authors authors, $num_new_authors of which are new faces."
|
||||
echo
|
||||
echo
|
||||
)
|
||||
@@ -86,10 +86,13 @@ if test -z "$CI" || [ "$(git -C "$workspace_root" tag | wc -l)" -gt 1 ]; then {
|
||||
echo
|
||||
echo 'Download links:'
|
||||
echo 'To download the source code for fish, we suggest the file named ``fish-'"$version"'.tar.xz``.'
|
||||
# shellcheck disable=2016
|
||||
echo 'The file downloaded from ``Source code (tar.gz)`` will not build correctly.'
|
||||
# shellcheck disable=2016
|
||||
echo 'A GPG signature using `this key <'"${FISH_GPG_PUBLIC_KEY_URL:-???}"'>`__ is available as ``fish-'"$version"'.tar.xz.asc``.'
|
||||
echo
|
||||
echo 'The files called ``fish-'"$version"'-linux-*.tar.xz`` contain'
|
||||
# shellcheck disable=2016
|
||||
echo '`standalone fish binaries <https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo>`__'
|
||||
echo 'for any Linux with the given CPU architecture.'
|
||||
} >"$relnotes_tmp/fake-workspace"/CHANGELOG.rst
|
||||
|
||||
@@ -72,7 +72,7 @@ integration_branch=$(
|
||||
--format='%(refname:strip=2)'
|
||||
)
|
||||
[ -n "$integration_branch" ] ||
|
||||
git merge-base --is-ancestor $remote/master HEAD
|
||||
git merge-base --is-ancestor "$remote"/master HEAD
|
||||
|
||||
sed -n 1p CHANGELOG.rst | grep -q '^fish .*(released .*)$'
|
||||
sed -n 2p CHANGELOG.rst | grep -q '^===*$'
|
||||
@@ -113,9 +113,9 @@ CreateCommit "Release $version"
|
||||
# Tags must be full objects, not lightweight tags, for
|
||||
# git_version-gen.sh to work.
|
||||
git -c "user.signingKey=$committer" \
|
||||
tag --sign --message="Release $version" $version
|
||||
tag --sign --message="Release $version" "$version"
|
||||
|
||||
git push $remote $version
|
||||
git push "$remote" "$version"
|
||||
|
||||
TIMEOUT=
|
||||
gh() {
|
||||
@@ -173,6 +173,7 @@ actual_tag_oid=$(git ls-remote "$remote" |
|
||||
(
|
||||
cd "$tmpdir/local-tarball/fish-$version"
|
||||
uv --no-managed-python venv
|
||||
# shellcheck disable=1091
|
||||
. .venv/bin/activate
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Debug .
|
||||
ninja doc
|
||||
@@ -180,14 +181,17 @@ actual_tag_oid=$(git ls-remote "$remote" |
|
||||
CopyDocs() {
|
||||
rm -rf "$fish_site/site/docs/$1"
|
||||
cp -r "$tmpdir/local-tarball/fish-$version/cargo/fish-docs/html" "$fish_site/site/docs/$1"
|
||||
git -C $fish_site add "site/docs/$1"
|
||||
git -C "$fish_site" add "site/docs/$1"
|
||||
}
|
||||
minor_version=${version%.*}
|
||||
CopyDocs "$minor_version"
|
||||
latest_release=$(
|
||||
releases=$(git tag | grep '^[0-9]*\.[0-9]*\.[0-9]*.*' |
|
||||
sed $(: "De-prioritize release candidates (1.2.3-rc0)") \
|
||||
's/-/~/g' | LC_ALL=C sort --version-sort)
|
||||
sed '
|
||||
# De-prioritize release candidates (1.2.3-rc0)
|
||||
s/-/~/g
|
||||
' | LC_ALL=C sort --version-sort
|
||||
)
|
||||
printf %s\\n "$releases" | tail -1
|
||||
)
|
||||
if [ "$version" = "$latest_release" ]; then
|
||||
@@ -272,7 +276,7 @@ done
|
||||
)
|
||||
|
||||
if [ -n "$integration_branch" ]; then {
|
||||
git push $remote "$version^{commit}":refs/heads/$integration_branch
|
||||
git push "$remote" "$version^{commit}:refs/heads/$integration_branch"
|
||||
} else {
|
||||
changelog=$(cat - CHANGELOG.rst <<EOF
|
||||
fish ?.?.? (released ???)
|
||||
@@ -283,7 +287,7 @@ EOF
|
||||
printf %s\\n "$changelog" >CHANGELOG.rst
|
||||
git add CHANGELOG.rst
|
||||
CreateCommit "start new cycle"
|
||||
git push $remote HEAD:master
|
||||
git push "$remote" HEAD:master
|
||||
} fi
|
||||
|
||||
milestone_version="$(
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
#!/usr/bin/env fish
|
||||
|
||||
# Updates the files used for gettext translations.
|
||||
# By default, the whole xgettext + msgmerge pipeline runs,
|
||||
# which extracts the messages from the source files into $template_file,
|
||||
# and updates the PO files for each language from that.
|
||||
#
|
||||
# Use cases:
|
||||
# For developers:
|
||||
# - Run with no args to update all PO files after making changes to Rust/fish sources.
|
||||
# For translators:
|
||||
# - Specify the language you want to work on as an argument, which must be a file in the
|
||||
# localization/po/ directory. You can specify a language which does not have translations
|
||||
# yet by specifying the name of a file which does not yet exist.
|
||||
# Make sure to follow the naming convention.
|
||||
# For testing:
|
||||
# - Specify `--dry-run` to see if any updates to the PO files would by applied by this script.
|
||||
# If this flag is specified, the script will exit with an error if there are outstanding
|
||||
# changes, and will display the diff. Do not specify other flags if `--dry-run` is specified.
|
||||
#
|
||||
# Specify `--use-existing-template=DIR` to prevent running cargo for extracting an up-to-date
|
||||
# version of the localized strings. This flag is intended for testing setups which make it
|
||||
# inconvenient to run cargo here, but run it in an earlier step to ensure up-to-date values.
|
||||
# This argument is passed on to the `fish_xgettext.fish` script and has no other uses.
|
||||
# `DIR` must be the path to a gettext template file generated from our compilation process.
|
||||
# It can be obtained by running:
|
||||
# set -l DIR (mktemp -d)
|
||||
# FISH_GETTEXT_EXTRACTION_DIR=$DIR cargo check --features=gettext-extract
|
||||
|
||||
# The sort utility is locale-sensitive.
|
||||
# Ensure that sorting output is consistent by setting LC_ALL here.
|
||||
set -gx LC_ALL C.UTF-8
|
||||
|
||||
set -l build_tools (status dirname)
|
||||
set -l po_dir $build_tools/../localization/po
|
||||
|
||||
set -l extract
|
||||
|
||||
argparse dry-run use-existing-template= -- $argv
|
||||
or exit $status
|
||||
|
||||
if test -z $argv[1]
|
||||
# Update everything if not specified otherwise.
|
||||
set -g po_files $po_dir/*.po
|
||||
else
|
||||
set -l po_dir_id (stat --format='%d:%i' -- $po_dir)
|
||||
for arg in $argv
|
||||
set -l arg_dir_id (stat --format='%d:%i' -- (dirname $arg) 2>/dev/null)
|
||||
if test $po_dir_id != "$arg_dir_id"
|
||||
echo "Argument $arg is not a file in the directory $(realpath $po_dir)."
|
||||
echo "Non-option arguments must specify paths to files in this directory."
|
||||
echo ""
|
||||
echo "If you want to add a new language to the translations not the following:"
|
||||
echo "The filename must identify a language, with a two letter ISO 639-1 language code of the target language (e.g. 'pt' for Portuguese), and use the file extension '.po'."
|
||||
echo "Optionally, you can specify a regional variant (e.g. 'pt_BR')."
|
||||
echo "So valid filenames are of the shape 'll.po' or 'll_CC.po'."
|
||||
exit 1
|
||||
end
|
||||
if not basename $arg | grep -qE '^[a-z]{2,3}(_[A-Z]{2})?\.po$'
|
||||
echo "Filename does not match the expected format ('ll.po' or 'll_CC.po')."
|
||||
exit 1
|
||||
end
|
||||
end
|
||||
set -g po_files $argv
|
||||
end
|
||||
|
||||
set -g template_file (mktemp)
|
||||
# Protect from externally set $tmpdir leaking into this script.
|
||||
set -g tmpdir
|
||||
|
||||
function cleanup_exit
|
||||
set -l exit_status $status
|
||||
|
||||
rm $template_file
|
||||
|
||||
if set -g --query tmpdir[1]
|
||||
rm -r $tmpdir
|
||||
end
|
||||
|
||||
exit $exit_status
|
||||
end
|
||||
|
||||
if set -l --query extract
|
||||
set -l xgettext_args
|
||||
if set -l --query _flag_use_existing_template
|
||||
set xgettext_args --use-existing-template=$_flag_use_existing_template
|
||||
end
|
||||
$build_tools/fish_xgettext.fish $xgettext_args >$template_file
|
||||
or cleanup_exit
|
||||
end
|
||||
|
||||
if set -l --query _flag_dry_run
|
||||
# On a dry run, we do not modify localization/po/ but write to a temporary directory instead
|
||||
# and check if there is a difference between localization/po/ and the tmpdir after re-generating
|
||||
# the PO files.
|
||||
set -g tmpdir (mktemp -d)
|
||||
|
||||
# Ensure tmpdir has the same initial state as the po dir.
|
||||
cp -r $po_dir/* $tmpdir
|
||||
end
|
||||
|
||||
# This is used to identify lines which should be set here via $header_lines.
|
||||
# Make sure that this prefix does not appear elsewhere in the file and only contains characters
|
||||
# without special meaning in a sed pattern.
|
||||
set -g header_prefix "# fish-note-sections: "
|
||||
|
||||
function print_header
|
||||
set -l header_lines \
|
||||
"Translations are divided into sections, each starting with a fish-section-* pseudo-message." \
|
||||
"The first few sections are more important." \
|
||||
"Ignore the tier3 sections unless you have a lot of time."
|
||||
for line in $header_lines
|
||||
printf '%s%s\n' $header_prefix $line
|
||||
end
|
||||
end
|
||||
|
||||
function merge_po_files --argument-names template_file po_file
|
||||
msgmerge --no-wrap --update --no-fuzzy-matching --backup=none --quiet \
|
||||
$po_file $template_file
|
||||
or cleanup_exit
|
||||
set -l new_po_file (mktemp) # TODO Remove on failure.
|
||||
# Remove obsolete messages instead of keeping them as #~ entries.
|
||||
and msgattrib --no-wrap --no-obsolete -o $new_po_file $po_file
|
||||
or cleanup_exit
|
||||
|
||||
begin
|
||||
print_header
|
||||
# Paste PO file without old header lines.
|
||||
sed '/^'$header_prefix'/d' $new_po_file
|
||||
end >$po_file
|
||||
rm $new_po_file
|
||||
end
|
||||
|
||||
for po_file in $po_files
|
||||
if set --query tmpdir[1]
|
||||
set po_file $tmpdir/(basename $po_file)
|
||||
end
|
||||
if test -e $po_file
|
||||
merge_po_files $template_file $po_file
|
||||
else
|
||||
begin
|
||||
print_header
|
||||
cat $template_file
|
||||
end >$po_file
|
||||
end
|
||||
end
|
||||
|
||||
if set -g --query tmpdir[1]
|
||||
diff -ur $po_dir $tmpdir
|
||||
or begin
|
||||
echo ERROR: translations in localization/po/ are stale. Try running build_tools/update_translations.fish
|
||||
cleanup_exit
|
||||
end
|
||||
end
|
||||
|
||||
cleanup_exit
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
@@ -11,6 +11,6 @@ codename=$(
|
||||
curl -fsS https://sources.debian.org/api/src/"${package}"/ |
|
||||
jq -r --arg codename "${codename}" '
|
||||
.versions[] | select(.suites[] == $codename) | .version' |
|
||||
sed 's/^\([0-9]\+\.[0-9]\+\).*/\1/' |
|
||||
sed -E 's/^([0-9]+\.[0-9]+).*/\1/' |
|
||||
sort --version-sort |
|
||||
tail -1
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
fish (4.7.1-1) stable; urgency=medium
|
||||
|
||||
* Release of new version 4.7.1.
|
||||
|
||||
See https://github.com/fish-shell/fish-shell/releases/tag/4.7.1 for details.
|
||||
|
||||
-- Johannes Altmanninger <aclopte@gmail.com> Fri, 08 May 2026 00:02:14 +0800
|
||||
|
||||
fish (4.7.0-1) stable; urgency=medium
|
||||
|
||||
* Release of new version 4.7.0.
|
||||
|
||||
See https://github.com/fish-shell/fish-shell/releases/tag/4.7.0 for details.
|
||||
|
||||
-- Johannes Altmanninger <aclopte@gmail.com> Tue, 05 May 2026 15:24:27 +0800
|
||||
|
||||
fish (4.6.0-1) stable; urgency=medium
|
||||
|
||||
* Release of new version 4.6.0.
|
||||
|
||||
@@ -10,6 +10,8 @@ Build-Depends: debhelper-compat (= 13),
|
||||
gettext,
|
||||
libpcre2-dev,
|
||||
rustc (>= 1.85) | rustc-web (>= 1.85) | rustc-1.85,
|
||||
# pkg-config is needed for the pcre2 crate to find the pcre2 system library
|
||||
pkgconf | pkg-config,
|
||||
python3-sphinx,
|
||||
# Test dependencies
|
||||
locales-all,
|
||||
|
||||
@@ -98,14 +98,14 @@ pub fn target_os_is_cygwin() -> bool {
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! as_os_strs {
|
||||
[ $( $x:expr, )* ] => {
|
||||
[ $( $x:expr ),* $(,)? ] => {
|
||||
{
|
||||
use std::ffi::OsStr;
|
||||
fn as_os_str<S: AsRef<OsStr> + ?Sized>(s: &S) -> &OsStr {
|
||||
s.as_ref()
|
||||
}
|
||||
&[
|
||||
$( as_os_str($x), )*
|
||||
[
|
||||
$( as_os_str($x) ),*
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
unix::ffi::OsStrExt as _,
|
||||
},
|
||||
sync::{
|
||||
Arc, OnceLock,
|
||||
Arc, LazyLock,
|
||||
atomic::{AtomicI32, AtomicU32, Ordering},
|
||||
},
|
||||
time,
|
||||
@@ -398,7 +398,7 @@ fn escape_string_url(input: &wstr) -> WString {
|
||||
for byte in narrow {
|
||||
if (byte & 0x80) == 0 {
|
||||
let c = char::from_u32(u32::from(byte)).unwrap();
|
||||
if c.is_alphanumeric() || [b'/', b'.', b'~', b'-', b'_'].contains(&byte) {
|
||||
if c.is_alphanumeric() || b"/.~-_".contains(&byte) {
|
||||
// The above characters don't need to be encoded.
|
||||
out.push(c);
|
||||
continue;
|
||||
@@ -534,8 +534,8 @@ enum Mode {
|
||||
let mut to_append_or_none = Some(c);
|
||||
if mode == Mode::Unquoted {
|
||||
match c {
|
||||
'\\' => {
|
||||
if !ignore_backslashes {
|
||||
'\\'
|
||||
if !ignore_backslashes => {
|
||||
// Backslashes (escapes) are complicated and may result in errors, or
|
||||
// appending INTERNAL_SEPARATORs, so we have to handle them specially.
|
||||
if let Some(escape_chars) = read_unquoted_escape(
|
||||
@@ -555,28 +555,25 @@ enum Mode {
|
||||
// We've already appended, don't append anything else.
|
||||
to_append_or_none = None;
|
||||
}
|
||||
}
|
||||
'~' => {
|
||||
'~'
|
||||
if unescape_special
|
||||
&& (input_position == 0 || Some(input_position) == potential_word_start)
|
||||
{
|
||||
=> {
|
||||
to_append_or_none = Some(HOME_DIRECTORY);
|
||||
}
|
||||
}
|
||||
'%' => {
|
||||
'%'
|
||||
// Note that this only recognizes %self if the string is literally %self.
|
||||
// %self/foo will NOT match this.
|
||||
if allow_percent_self
|
||||
&& unescape_special
|
||||
&& input_position == 0
|
||||
&& input == PROCESS_EXPAND_SELF_STR
|
||||
{
|
||||
=> {
|
||||
to_append_or_none = Some(PROCESS_EXPAND_SELF);
|
||||
input_position += PROCESS_EXPAND_SELF_STR.len() - 1; // skip over 'self's
|
||||
}
|
||||
}
|
||||
'*' => {
|
||||
if unescape_special {
|
||||
'*'
|
||||
if unescape_special => {
|
||||
// In general, this is ANY_STRING. But as a hack, if the last appended char
|
||||
// is ANY_STRING, delete the last char and store ANY_STRING_RECURSIVE to
|
||||
// reflect the fact that ** is the recursive wildcard.
|
||||
@@ -588,14 +585,12 @@ enum Mode {
|
||||
to_append_or_none = Some(ANY_STRING);
|
||||
}
|
||||
}
|
||||
}
|
||||
'?' => {
|
||||
if unescape_special && !feature_test(FeatureFlag::QuestionMarkNoGlob) {
|
||||
'?'
|
||||
if unescape_special && !feature_test(FeatureFlag::QuestionMarkNoGlob) => {
|
||||
to_append_or_none = Some(ANY_CHAR);
|
||||
}
|
||||
}
|
||||
'$' => {
|
||||
if unescape_special {
|
||||
'$'
|
||||
if unescape_special => {
|
||||
let is_cmdsub = input_position + 1 < input.len()
|
||||
&& input.char_at(input_position + 1) == '(';
|
||||
if !is_cmdsub {
|
||||
@@ -603,18 +598,16 @@ enum Mode {
|
||||
vars_or_seps.push(input_position);
|
||||
}
|
||||
}
|
||||
}
|
||||
'{' => {
|
||||
if unescape_special {
|
||||
'{'
|
||||
if unescape_special => {
|
||||
brace_count += 1;
|
||||
to_append_or_none = Some(BRACE_BEGIN);
|
||||
// We need to store where the brace *ends up* in the output.
|
||||
braces.push(result.len());
|
||||
potential_word_start = Some(input_position + 1);
|
||||
}
|
||||
}
|
||||
'}' => {
|
||||
if unescape_special {
|
||||
'}'
|
||||
if unescape_special => {
|
||||
// HACK: The completion machinery sometimes hands us partial tokens.
|
||||
// We can't parse them properly, but it shouldn't hurt,
|
||||
// so we don't assert here.
|
||||
@@ -646,19 +639,16 @@ enum Mode {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
',' => {
|
||||
if unescape_special && brace_count > 0 {
|
||||
','
|
||||
if unescape_special && brace_count > 0 => {
|
||||
to_append_or_none = Some(BRACE_SEP);
|
||||
vars_or_seps.push(input_position);
|
||||
potential_word_start = Some(input_position + 1);
|
||||
}
|
||||
}
|
||||
' ' => {
|
||||
if unescape_special && brace_count > 0 {
|
||||
' '
|
||||
if unescape_special && brace_count > 0 => {
|
||||
to_append_or_none = Some(BRACE_SPACE);
|
||||
}
|
||||
}
|
||||
'\'' => {
|
||||
mode = Mode::SingleQuotes;
|
||||
to_append_or_none = if unescape_special {
|
||||
@@ -743,11 +733,9 @@ enum Mode {
|
||||
}
|
||||
}
|
||||
}
|
||||
'$' => {
|
||||
if unescape_special {
|
||||
to_append_or_none = Some(VARIABLE_EXPAND_SINGLE);
|
||||
vars_or_seps.push(input_position);
|
||||
}
|
||||
'$' if unescape_special => {
|
||||
to_append_or_none = Some(VARIABLE_EXPAND_SINGLE);
|
||||
vars_or_seps.push(input_position);
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
@@ -1030,9 +1018,8 @@ pub fn read_unquoted_escape(
|
||||
/// session. We err on the side of assuming it's not a console session. This approach isn't
|
||||
/// bullet-proof and that's OK.
|
||||
pub fn is_console_session() -> bool {
|
||||
static IS_CONSOLE_SESSION: OnceLock<bool> = OnceLock::new();
|
||||
// TODO(terminal-workaround)
|
||||
*IS_CONSOLE_SESSION.get_or_init(|| {
|
||||
static IS_CONSOLE_SESSION: LazyLock<bool> = LazyLock::new(||
|
||||
// No console session on Apple, and ttyname may hang (#12506).
|
||||
!cfg!(apple)
|
||||
&& nix::unistd::ttyname(unsafe { std::os::fd::BorrowedFd::borrow_raw(STDIN_FILENO) })
|
||||
@@ -1049,8 +1036,8 @@ pub fn is_console_session() -> bool {
|
||||
// and that $TERM is simple, e.g. `xterm` or `vt100`, not `xterm-something` or `sun-color`.
|
||||
is_console_tty
|
||||
&& env::var_os("TERM").is_none_or(|t| !t.as_bytes().contains(&b'-'))
|
||||
})
|
||||
})
|
||||
}));
|
||||
*IS_CONSOLE_SESSION
|
||||
}
|
||||
|
||||
/// Exits without invoking destructors (via _exit), useful for code after fork.
|
||||
@@ -1373,11 +1360,6 @@ pub fn new(value: T, on_drop: F) -> Self {
|
||||
Self(Some((value, on_drop)))
|
||||
}
|
||||
|
||||
/// Invokes the callback, consuming the ScopeGuard.
|
||||
pub fn commit(guard: Self) {
|
||||
std::mem::drop(guard);
|
||||
}
|
||||
|
||||
/// Cancels the invocation of the callback, returning the original wrapped value.
|
||||
pub fn cancel(mut guard: Self) -> T {
|
||||
let (value, _) = guard.0.take().expect("Should always have Some value");
|
||||
@@ -1410,12 +1392,7 @@ fn drop(&mut self) {
|
||||
/// A trait expressing what ScopeGuard can do. This is necessary because our scoped cells return an
|
||||
/// `impl Trait` object and therefore methods on ScopeGuard which take a self parameter cannot be
|
||||
/// used.
|
||||
pub trait ScopeGuarding: DerefMut + Sized {
|
||||
/// Invokes the callback, consuming the guard.
|
||||
fn commit(guard: Self) {
|
||||
std::mem::drop(guard);
|
||||
}
|
||||
}
|
||||
pub trait ScopeGuarding: DerefMut + Sized {}
|
||||
|
||||
impl<T, F: FnOnce(T)> ScopeGuarding for ScopeGuard<T, F> {}
|
||||
|
||||
@@ -1574,17 +1551,17 @@ fn test_scope_guard() {
|
||||
counter.fetch_add(1, relaxed);
|
||||
});
|
||||
assert_eq!(counter.load(relaxed), 0);
|
||||
std::mem::drop(guard);
|
||||
drop(guard);
|
||||
assert_eq!(counter.load(relaxed), 1);
|
||||
}
|
||||
// commit also invokes the callback.
|
||||
// The callback is invoked on drop
|
||||
{
|
||||
let guard = ScopeGuard::new(123, |arg| {
|
||||
assert_eq!(arg, 123);
|
||||
counter.fetch_add(1, relaxed);
|
||||
});
|
||||
assert_eq!(counter.load(relaxed), 1);
|
||||
ScopeGuard::commit(guard);
|
||||
drop(guard);
|
||||
assert_eq!(counter.load(relaxed), 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,14 +63,23 @@ pub fn wcsfilecmp(a: &wstr, b: &wstr) -> Ordering {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Sort dashes after Z - see #5634
|
||||
let mut acl = if ac == '-' { '[' } else { ac };
|
||||
let mut bcl = if bc == '-' { '[' } else { bc };
|
||||
let transform = |c| {
|
||||
// Sort dashes after Z - see #5634
|
||||
if c == '-' {
|
||||
return '[';
|
||||
}
|
||||
if c == '/' {
|
||||
return '\0';
|
||||
}
|
||||
c
|
||||
};
|
||||
let ac = transform(ac);
|
||||
let bc = transform(bc);
|
||||
// TODO Compare the tail (enabled by Rust's Unicode support).
|
||||
acl = acl.to_uppercase().next().unwrap();
|
||||
bcl = bcl.to_uppercase().next().unwrap();
|
||||
let ac = ac.to_uppercase().next().unwrap();
|
||||
let bc = bc.to_uppercase().next().unwrap();
|
||||
|
||||
match acl.cmp(&bcl) {
|
||||
match ac.cmp(&bc) {
|
||||
Ordering::Equal => {
|
||||
ai += 1;
|
||||
bi += 1;
|
||||
@@ -133,9 +142,9 @@ pub fn wcsfilecmp_glob(a: &wstr, b: &wstr) -> Ordering {
|
||||
}
|
||||
|
||||
// TODO Compare the tail (enabled by Rust's Unicode support).
|
||||
let acl = ac.to_lowercase().next().unwrap();
|
||||
let bcl = bc.to_lowercase().next().unwrap();
|
||||
match acl.cmp(&bcl) {
|
||||
let ac = ac.to_lowercase().next().unwrap();
|
||||
let bc = bc.to_lowercase().next().unwrap();
|
||||
match ac.cmp(&bc) {
|
||||
Ordering::Equal => {
|
||||
ai += 1;
|
||||
bi += 1;
|
||||
@@ -314,5 +323,8 @@ macro_rules! validate {
|
||||
validate!("a00b", "a0b", Ordering::Less);
|
||||
validate!("a0b", "a00b", Ordering::Greater);
|
||||
validate!("a-b", "azb", Ordering::Greater);
|
||||
validate!("a", "a b", Ordering::Less);
|
||||
validate!("a/", "a b/", Ordering::Less);
|
||||
validate!("a/b", "a b", Ordering::Less); // Note this is arbitrary.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,12 @@ repository.workspace = true
|
||||
|
||||
[dependencies]
|
||||
anstyle.workspace = true
|
||||
anyhow.workspace = true
|
||||
clap.workspace = true
|
||||
fish-build-helper.workspace = true
|
||||
fish-common.workspace = true
|
||||
fish-tempfile.workspace = true
|
||||
fish-widestring.workspace = true
|
||||
ignore.workspace = true
|
||||
pcre2.workspace = true
|
||||
walkdir.workspace = true
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use anstyle::{AnsiColor, Style};
|
||||
use anyhow::{Context, Result, bail};
|
||||
use clap::Args;
|
||||
use std::{
|
||||
io::{ErrorKind, Write},
|
||||
@@ -25,12 +26,12 @@ pub struct FormatArgs {
|
||||
paths: Vec<PathBuf>,
|
||||
}
|
||||
|
||||
pub fn format(args: FormatArgs) {
|
||||
pub fn format(args: FormatArgs) -> Result<()> {
|
||||
if !args.all && args.paths.is_empty() {
|
||||
println!(
|
||||
"{YELLOW}warning: No paths specified. Nothing to do. Use the \"--all\" flag to consider all eligible files.{YELLOW:#}"
|
||||
);
|
||||
return;
|
||||
return Ok(());
|
||||
}
|
||||
if !args.force && !args.check {
|
||||
match Command::new("git")
|
||||
@@ -39,16 +40,22 @@ pub fn format(args: FormatArgs) {
|
||||
{
|
||||
Ok(output) => {
|
||||
if !output.stdout.is_empty() {
|
||||
std::io::stdout().write_all(&output.stdout).unwrap();
|
||||
std::io::stdout()
|
||||
.write_all(&output.stdout)
|
||||
.context("Could not write to stdout.")?;
|
||||
print!(
|
||||
"You have uncommitted changes (listed above). Are you sure you want to format? (y/N): "
|
||||
);
|
||||
std::io::stdout().flush().unwrap();
|
||||
std::io::stdout()
|
||||
.flush()
|
||||
.context("Could not flush stdout.")?;
|
||||
let mut response = String::new();
|
||||
std::io::stdin().read_line(&mut response).unwrap();
|
||||
std::io::stdin()
|
||||
.read_line(&mut response)
|
||||
.context("Could not read from stdin.")?;
|
||||
if response.trim_end() != "y" {
|
||||
println!("Exiting without formatting.");
|
||||
return;
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -58,22 +65,25 @@ pub fn format(args: FormatArgs) {
|
||||
"{YELLOW}warning: Did not find git, will proceed without checking for unstaged changes.{YELLOW:#}"
|
||||
)
|
||||
} else {
|
||||
fail!("Failed to run git status:\n{e}")
|
||||
bail!("Failed to run git status:\n{e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
format_fish(&args);
|
||||
format_python(&args);
|
||||
format_rust(&args);
|
||||
format_fish(&args)?;
|
||||
format_python(&args)?;
|
||||
format_rust(&args)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn run_formatter(formatter: &mut Command, name: &str) {
|
||||
fn run_formatter(formatter: &mut Command, name: &str) -> Result<()> {
|
||||
println!("=== Running {GREEN}{name}{GREEN:#}");
|
||||
match formatter.status() {
|
||||
Ok(exit_status) => {
|
||||
if !exit_status.success() {
|
||||
fail!("{name:?}: Files are not formatted correctly.");
|
||||
if exit_status.success() {
|
||||
Ok(())
|
||||
} else {
|
||||
bail!("{name:?}: Files are not formatted correctly.");
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
@@ -81,15 +91,16 @@ fn run_formatter(formatter: &mut Command, name: &str) {
|
||||
eprintln!(
|
||||
"{YELLOW}Formatter not found: {name:?}. Skipping associated files.{YELLOW:#}"
|
||||
);
|
||||
Ok(())
|
||||
} else {
|
||||
fail!("Error occurred while running {name:?}:\n{e}")
|
||||
Err(e).with_context(|| format!("Error occurred while running {name:?}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn format_fish(args: &FormatArgs) {
|
||||
let mut fish_paths = files_with_extension(&args.paths, "fish");
|
||||
fn format_fish(args: &FormatArgs) -> Result<()> {
|
||||
let mut fish_paths = files_with_extension(&args.paths, "fish")?;
|
||||
if args.all {
|
||||
let workspace_root = fish_build_helper::workspace_root();
|
||||
let fish_formatting_dirs = ["benchmarks", "build_tools", "etc", "share"];
|
||||
@@ -98,10 +109,10 @@ fn format_fish(args: &FormatArgs) {
|
||||
.iter()
|
||||
.map(|dir_name| workspace_root.join(dir_name)),
|
||||
"fish",
|
||||
));
|
||||
)?);
|
||||
};
|
||||
if fish_paths.is_empty() {
|
||||
return;
|
||||
return Ok(());
|
||||
}
|
||||
// TODO: make `fish_indent` available as a Rust library function, to avoid needing a
|
||||
// `fish_indent` binary in `$PATH`.
|
||||
@@ -113,40 +124,40 @@ fn format_fish(args: &FormatArgs) {
|
||||
}
|
||||
formatter.arg("--");
|
||||
formatter.args(fish_paths);
|
||||
run_formatter(&mut formatter, "fish_indent");
|
||||
run_formatter(&mut formatter, "fish_indent")
|
||||
}
|
||||
|
||||
fn format_python(args: &FormatArgs) {
|
||||
fn format_python(args: &FormatArgs) -> Result<()> {
|
||||
let mut formatter = Command::new("ruff");
|
||||
formatter.arg("format");
|
||||
if args.check {
|
||||
formatter.arg("--check");
|
||||
}
|
||||
let mut python_files = files_with_extension(&args.paths, "py");
|
||||
let mut python_files = files_with_extension(&args.paths, "py")?;
|
||||
|
||||
if args.all {
|
||||
python_files.push(fish_build_helper::workspace_root().to_owned());
|
||||
};
|
||||
if python_files.is_empty() {
|
||||
return;
|
||||
return Ok(());
|
||||
}
|
||||
formatter.args(python_files);
|
||||
run_formatter(&mut formatter, "ruff format");
|
||||
run_formatter(&mut formatter, "ruff format")
|
||||
}
|
||||
|
||||
fn format_rust(args: &FormatArgs) {
|
||||
fn format_rust(args: &FormatArgs) -> Result<()> {
|
||||
let rustfmt_status = Command::new("cargo")
|
||||
.arg("fmt")
|
||||
.arg("--version")
|
||||
.stdout(Stdio::null())
|
||||
.status()
|
||||
.unwrap();
|
||||
.context("Failed to run cargo")?;
|
||||
if !rustfmt_status.success() {
|
||||
eprintln!(
|
||||
"{YELLOW}Please install \"rustfmt\" to format Rust, e.g. via:\n\
|
||||
rustup component add rustfmt{YELLOW:#}"
|
||||
);
|
||||
return;
|
||||
return Ok(());
|
||||
}
|
||||
if args.all {
|
||||
let mut formatter = Command::new("cargo");
|
||||
@@ -155,16 +166,17 @@ fn format_rust(args: &FormatArgs) {
|
||||
if args.check {
|
||||
formatter.arg("--check");
|
||||
}
|
||||
run_formatter(&mut formatter, "cargo fmt");
|
||||
run_formatter(&mut formatter, "cargo fmt")?;
|
||||
}
|
||||
let rust_files = files_with_extension(&args.paths, "rs");
|
||||
if !rust_files.is_empty() {
|
||||
let mut formatter = Command::new("rustfmt");
|
||||
if args.check {
|
||||
formatter.arg("--check");
|
||||
formatter.arg("--files-with-diff");
|
||||
}
|
||||
formatter.args(rust_files);
|
||||
run_formatter(&mut formatter, "rustfmt");
|
||||
let rust_files = files_with_extension(&args.paths, "rs")?;
|
||||
if rust_files.is_empty() {
|
||||
return Ok(());
|
||||
}
|
||||
let mut formatter = Command::new("rustfmt");
|
||||
if args.check {
|
||||
formatter.arg("--check");
|
||||
formatter.arg("--files-with-diff");
|
||||
}
|
||||
formatter.args(rust_files);
|
||||
run_formatter(&mut formatter, "rustfmt")
|
||||
}
|
||||
|
||||
548
crates/xtask/src/gettext.rs
Normal file
548
crates/xtask/src/gettext.rs
Normal file
@@ -0,0 +1,548 @@
|
||||
use crate::{CARGO, CommandExt, files_with_extension};
|
||||
use anyhow::{Context as _, Result, bail};
|
||||
use clap::{Args, Subcommand};
|
||||
use fish_build_helper::po_dir;
|
||||
use pcre2::bytes::Regex;
|
||||
use std::{
|
||||
fs::OpenOptions,
|
||||
io::{Write as _, stdout},
|
||||
path::{Path, PathBuf},
|
||||
process::Command,
|
||||
thread::spawn,
|
||||
};
|
||||
|
||||
#[derive(Args)]
|
||||
pub struct GettextArgs {
|
||||
/// Path to the directory into which the messages from the Rust sources have been extracted.
|
||||
/// If this is not specified, fish will be compiled with the `gettext-extract` feature to
|
||||
/// obtain the messages.
|
||||
#[arg(long)]
|
||||
rust_extraction_dir: Option<PathBuf>,
|
||||
|
||||
#[command(subcommand)]
|
||||
task: Task,
|
||||
}
|
||||
|
||||
#[derive(Subcommand)]
|
||||
enum Task {
|
||||
/// Check whether the PO files are up to date.
|
||||
/// Prints a diff and exits non-zero if they are outdated.
|
||||
/// Considers all our PO files by default, also allows explicitly specifying which files to
|
||||
/// consider.
|
||||
Check { paths: Vec<PathBuf> },
|
||||
/// Add a PO file for a new language.
|
||||
New {
|
||||
/// An ISO 639-1 language identifier (ISO 639-2 if the former does not exits),
|
||||
/// optionally followed by and underscore and an ISO 3166-1 country code to specify the variant,
|
||||
/// e.g. `de` or `pt_BR`.
|
||||
language: String,
|
||||
},
|
||||
/// Update PO files.
|
||||
/// This will delete entries for msgids which are no longer used in the sources and introduce
|
||||
/// new, untranslated entries for messages which do not have an entry yet.
|
||||
/// This tool should run every time a change to the messages localized via gettext occurs,
|
||||
/// including fish script files, where many strings are implicitly localized.
|
||||
/// Considers all our PO files by default, also allows explicitly specifying which files to
|
||||
/// consider.
|
||||
Update { paths: Vec<PathBuf> },
|
||||
}
|
||||
|
||||
fn get_po_paths<P: AsRef<Path>>(specified_paths: &[P]) -> Result<Vec<PathBuf>> {
|
||||
let extension = "po";
|
||||
if specified_paths.is_empty() {
|
||||
files_with_extension([po_dir()], extension)
|
||||
} else {
|
||||
files_with_extension(specified_paths, extension)
|
||||
}
|
||||
}
|
||||
|
||||
fn update_po_file<P: AsRef<Path>, Q: AsRef<Path>>(file_to_update: P, template: Q) -> Result<()> {
|
||||
Command::new("msgmerge")
|
||||
.args([
|
||||
"--no-wrap",
|
||||
"--update",
|
||||
"--no-fuzzy-matching",
|
||||
"--backup=none",
|
||||
"--quiet",
|
||||
])
|
||||
.arg(file_to_update.as_ref())
|
||||
.arg(template.as_ref())
|
||||
.run()?;
|
||||
let msgattrib_output_file = fish_tempfile::new_file().context("Failed to create temp file")?;
|
||||
Command::new("msgattrib")
|
||||
.args(["--no-wrap", "--no-obsolete"])
|
||||
.arg("-o")
|
||||
.arg(msgattrib_output_file.path())
|
||||
.arg(file_to_update.as_ref())
|
||||
.run()?;
|
||||
crate::copy_file(msgattrib_output_file.path(), file_to_update.as_ref())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn gettext(args: GettextArgs) -> Result<()> {
|
||||
let template = match args.rust_extraction_dir {
|
||||
Some(dir) => template::Template::new(dir)?,
|
||||
None => {
|
||||
let temp_dir = fish_tempfile::new_dir().context("Failed to create temp file")?;
|
||||
Command::new(CARGO)
|
||||
.args([
|
||||
"check",
|
||||
"--workspace",
|
||||
"--all-targets",
|
||||
"--features=gettext-extract",
|
||||
])
|
||||
.env("FISH_GETTEXT_EXTRACTION_DIR", temp_dir.path())
|
||||
.run()?;
|
||||
template::Template::new(temp_dir.path())?
|
||||
}
|
||||
};
|
||||
let mut template_file = fish_tempfile::new_file().context("Failed to create temp file")?;
|
||||
template_file
|
||||
.get_mut()
|
||||
.write_all(template.serialize())
|
||||
.with_context(|| format!("Failed to write to temp file {:?}", template_file.path()))?;
|
||||
template_file
|
||||
.get_mut()
|
||||
.flush()
|
||||
.with_context(|| format!("Failed to flush temporary file {:?}", template_file.path()))?;
|
||||
|
||||
match args.task {
|
||||
Task::Check { paths } => {
|
||||
let mut thread_handles = vec![];
|
||||
for path in get_po_paths(&paths)? {
|
||||
let template_path_buf = template_file.path().to_owned();
|
||||
let handle = spawn(move || -> Result<Option<Vec<u8>>> {
|
||||
let tmp_copy =
|
||||
fish_tempfile::new_file().context("Failed to create temp file")?;
|
||||
crate::copy_file(&path, tmp_copy.path())?;
|
||||
update_po_file(tmp_copy.path(), template_path_buf)?;
|
||||
let diff_output = Command::new("diff")
|
||||
.arg("-u")
|
||||
.arg(&path)
|
||||
.arg(tmp_copy.path())
|
||||
.output()
|
||||
.context("Failed to run diff")?;
|
||||
if diff_output.status.success() {
|
||||
Ok(None)
|
||||
} else {
|
||||
Ok(Some(diff_output.stdout))
|
||||
}
|
||||
});
|
||||
thread_handles.push(handle);
|
||||
}
|
||||
let mut found_diff = false;
|
||||
let mut error = None;
|
||||
for handle in thread_handles {
|
||||
// SAFETY: `handle.join()` only returns `Err` if the thread panicked.
|
||||
// Our threads should not panic, and if they do, it's OK to deal with the unexpected
|
||||
// behavior by panicking here as well.
|
||||
match handle.join().unwrap() {
|
||||
Ok(None) => {}
|
||||
Ok(Some(diff)) => {
|
||||
found_diff = true;
|
||||
stdout()
|
||||
.write_all(&diff)
|
||||
.context("Could not write to stdout")?;
|
||||
}
|
||||
Err(e) => {
|
||||
error = Some(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
if let Some(e) = error {
|
||||
return Err(e);
|
||||
}
|
||||
if found_diff {
|
||||
bail!("Not all files are up to date");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
Task::New { language } => {
|
||||
let language_regex = Regex::new("^[a-z]{2,3}(_[A-Z]{2})?$").unwrap();
|
||||
if !language_regex.is_match(language.as_bytes()).unwrap() {
|
||||
bail!(
|
||||
"The language name '{language}' does not match the expected format.\n\
|
||||
It needs to be a two-letter ISO 639-1 language code, \
|
||||
or a three-letter ISO 639-2 language code \
|
||||
if no ISO 639-1 code exists for the language.\n\
|
||||
Optionally, the language code can be followed be an underscore \
|
||||
followed by an ISO 3166-1 country code to indicate a regional variant.\n\
|
||||
Check the existing file names in {:?} for examples.",
|
||||
po_dir()
|
||||
);
|
||||
}
|
||||
// TODO (MSRV>=1.91): use with_added_extension instead of with_extension
|
||||
let po_path = po_dir().join(&language).with_extension("po");
|
||||
let mut new_po_file = OpenOptions::new()
|
||||
.create_new(true)
|
||||
.write(true)
|
||||
.open(&po_path)
|
||||
.with_context(|| format!("Failed to create file at {po_path:?}"))?;
|
||||
let mut header = String::new();
|
||||
let line_prefix = "# fish-note-sections: ";
|
||||
let lines = [
|
||||
"Translations are divided into sections, each starting with a fish-section-* pseudo-message.",
|
||||
"The first few sections are more important.",
|
||||
"Ignore the tier3 sections unless you have a lot of time.",
|
||||
];
|
||||
for line in lines {
|
||||
use std::fmt::Write as _;
|
||||
let _ = writeln!(header, "{line_prefix}{line}");
|
||||
}
|
||||
new_po_file
|
||||
.write_all(header.as_bytes())
|
||||
.with_context(|| format!("Failed to write to {po_path:?}"))?;
|
||||
new_po_file
|
||||
.write_all(template.serialize())
|
||||
.with_context(|| format!("Failed to write to {po_path:?}"))?;
|
||||
Ok(())
|
||||
}
|
||||
Task::Update { paths } => {
|
||||
let mut thread_handles = vec![];
|
||||
for path in get_po_paths(&paths)? {
|
||||
let template_path_buf = template_file.path().to_owned();
|
||||
let handle =
|
||||
spawn(move || -> Result<()> { update_po_file(path, template_path_buf) });
|
||||
thread_handles.push(handle);
|
||||
}
|
||||
let mut error = None;
|
||||
for handle in thread_handles {
|
||||
// SAFETY: `handle.join()` only returns `Err` if the thread panicked.
|
||||
// Our threads should not panic, and if they do, it's OK to deal with the unexpected
|
||||
// behavior by panicking here as well.
|
||||
if let Err(e) = handle.join().unwrap() {
|
||||
error = Some(e);
|
||||
}
|
||||
}
|
||||
if let Some(e) = error {
|
||||
return Err(e);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mod template {
|
||||
use crate::{CommandExt as _, files_with_extension};
|
||||
use anyhow::{Context as _, Result, bail};
|
||||
use fish_build_helper::workspace_root;
|
||||
use fish_common::{UnescapeFlags, unescape_string};
|
||||
use fish_widestring::{str2wcstring, wcs2bytes};
|
||||
use pcre2::bytes::Regex;
|
||||
use std::{
|
||||
collections::{HashMap, HashSet},
|
||||
fmt::Display,
|
||||
fs::OpenOptions,
|
||||
io::Read as _,
|
||||
path::Path,
|
||||
process::Command,
|
||||
sync::LazyLock,
|
||||
};
|
||||
|
||||
// Gettext tools require this header to know which encoding is used.
|
||||
const MINIMAL_HEADER: &str = r#"msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
"#;
|
||||
|
||||
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
|
||||
enum LocalizationTier {
|
||||
Tier1,
|
||||
Tier2,
|
||||
Tier3,
|
||||
}
|
||||
|
||||
impl TryFrom<&str> for LocalizationTier {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(value: &str) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
"tier1" => Ok(Self::Tier1),
|
||||
"tier2" => Ok(Self::Tier2),
|
||||
"tier3" => Ok(Self::Tier3),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for LocalizationTier {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str(match self {
|
||||
Self::Tier1 => "tier1",
|
||||
Self::Tier2 => "tier2",
|
||||
Self::Tier3 => "tier3",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct FishScriptMessages {
|
||||
explicit: HashSet<String>,
|
||||
implicit: HashSet<String>,
|
||||
}
|
||||
|
||||
pub struct Template {
|
||||
content: Vec<u8>,
|
||||
}
|
||||
|
||||
impl Template {
|
||||
pub fn serialize(&self) -> &[u8] {
|
||||
&self.content
|
||||
}
|
||||
|
||||
/// Create a gettext template.
|
||||
/// `rust_extraction_dir` must be the path to a directory which contains the messages
|
||||
/// extracted from the Rust sources.
|
||||
pub fn new<P: AsRef<Path>>(rust_extraction_dir: P) -> Result<Self> {
|
||||
let mut template = Self {
|
||||
content: Vec::from(MINIMAL_HEADER.as_bytes()),
|
||||
};
|
||||
template.add_rust_messages(rust_extraction_dir)?;
|
||||
template.add_fish_script_messages()?;
|
||||
// TODO: keep internal set of msgids to avoid having to run msguniq. requires parsing
|
||||
// gettext-extraction output
|
||||
let msguniq_output = Command::new("msguniq")
|
||||
.args(["--no-wrap"])
|
||||
.run_with_stdio(template.content)?;
|
||||
Ok(Template {
|
||||
content: msguniq_output,
|
||||
})
|
||||
}
|
||||
|
||||
/// Expects `extraction_dir` to contain only files whose content are single PO entries which can be
|
||||
/// concatenated into a valid PO file.
|
||||
/// If this is the case, the messages are de-duplicated and sorted by `msguniq`.
|
||||
/// The result is appended to `template`, with a leading section marker.
|
||||
/// On failure, the process aborts.
|
||||
fn add_rust_messages<P: AsRef<Path>>(&mut self, extraction_dir: P) -> Result<()> {
|
||||
let extraction_dir = extraction_dir.as_ref();
|
||||
let mut concatenated_content = Vec::from(MINIMAL_HEADER.as_bytes());
|
||||
|
||||
// Concatenate the content of all files in `extraction_dir` into `concatenated_content`.
|
||||
for entry_result in extraction_dir
|
||||
.read_dir()
|
||||
.with_context(|| format!("Failed to read directory {extraction_dir:?}"))?
|
||||
{
|
||||
let entry = entry_result
|
||||
.with_context(|| format!("Failed to get entry in {extraction_dir:?}"))?;
|
||||
let entry_path = entry.path();
|
||||
if !entry
|
||||
.file_type()
|
||||
.with_context(|| format!("Failed to get file type of {entry_path:?}"))?
|
||||
.is_file()
|
||||
{
|
||||
bail!("Entry in {extraction_dir:?} is not a regular file");
|
||||
}
|
||||
let mut file = OpenOptions::new()
|
||||
.read(true)
|
||||
.open(&entry_path)
|
||||
.with_context(|| format!("Failed to open file {entry_path:?}"))?;
|
||||
file.read_to_end(&mut concatenated_content)
|
||||
.with_context(|| format!("Failed to read file {entry_path:?}"))?;
|
||||
}
|
||||
|
||||
// Get rid of duplicates and sort.
|
||||
let msguniq_output = Command::new("msguniq")
|
||||
.args(["--no-wrap", "--sort-output"])
|
||||
.env("LC_ALL", "C.UTF-8")
|
||||
.run_with_stdio(concatenated_content)?;
|
||||
// The Header entry needs to be removed again,
|
||||
// because it is added outside of this function.
|
||||
let expected_prefix = MINIMAL_HEADER.as_bytes();
|
||||
let actual_prefix = &msguniq_output[..expected_prefix.len()];
|
||||
if expected_prefix != actual_prefix {
|
||||
bail!(
|
||||
"Prefix of msguniq output does not match expected header.\nExpected bytes:\n{expected_prefix:02x?}\nActual bytes:\n{actual_prefix:02x?}"
|
||||
);
|
||||
}
|
||||
self.mark_section("tier1-from-rust");
|
||||
self.content
|
||||
.extend_from_slice(&msguniq_output[expected_prefix.len()..]);
|
||||
self.content.push(b'\n');
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn mark_section(&mut self, section_name: &str) {
|
||||
self.content
|
||||
.extend_from_slice("msgid \"fish-section-".as_bytes());
|
||||
self.content.extend_from_slice(section_name.as_bytes());
|
||||
self.content
|
||||
.extend_from_slice("\"\nmsgstr \"\"\n\n".as_bytes());
|
||||
}
|
||||
|
||||
fn append_messages(&mut self, msgids: &HashSet<String>) -> Result<()> {
|
||||
let mut unescaped_msgids = HashSet::new();
|
||||
for msgid in msgids {
|
||||
let unescaped_wstring = unescape_string(
|
||||
&str2wcstring(msgid),
|
||||
fish_common::UnescapeStringStyle::Script(UnescapeFlags::default()),
|
||||
)
|
||||
.with_context(|| format!("Failed to unescape the following string:\n{msgid}"))?;
|
||||
unescaped_msgids.insert(
|
||||
String::from_utf8(wcs2bytes(&unescaped_wstring))
|
||||
.context("Parsed msgid is not valid UTF-8")?,
|
||||
);
|
||||
}
|
||||
let mut unescaped_msgids = Vec::from_iter(unescaped_msgids);
|
||||
unescaped_msgids.sort();
|
||||
for msgid in &unescaped_msgids {
|
||||
self.content
|
||||
.extend_from_slice(format_msgid_for_po(msgid).as_bytes());
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn add_script_tier(
|
||||
&mut self,
|
||||
tier: LocalizationTier,
|
||||
messages: FishScriptMessages,
|
||||
) -> Result<()> {
|
||||
if !messages.explicit.is_empty() {
|
||||
self.mark_section(&format!("{tier}-from-script-explicitly-added"));
|
||||
self.append_messages(&messages.explicit)?;
|
||||
}
|
||||
if !messages.implicit.is_empty() {
|
||||
self.mark_section(&format!("{tier}-from-script-implicitly-added"));
|
||||
self.append_messages(&messages.implicit)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn add_fish_script_messages(&mut self) -> Result<()> {
|
||||
let share_dir = workspace_root().join("share");
|
||||
let relevant_file_paths = files_with_extension(
|
||||
[
|
||||
share_dir.join("config.fish"),
|
||||
share_dir.join("completions"),
|
||||
share_dir.join("functions"),
|
||||
],
|
||||
"fish",
|
||||
)?;
|
||||
let mut extracted_messages = HashMap::new();
|
||||
for path in relevant_file_paths {
|
||||
extract_messages_from_fish_script(path, &mut extracted_messages)?;
|
||||
}
|
||||
let mut messages_sorted_by_tier: Vec<_> = extracted_messages.into_iter().collect();
|
||||
messages_sorted_by_tier.sort_by_key(|(tier, _)| *tier);
|
||||
for (tier, messages) in messages_sorted_by_tier {
|
||||
self.add_script_tier(tier, messages)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn find_localization_tier<P: AsRef<Path>>(
|
||||
input: &str,
|
||||
path: P,
|
||||
) -> Result<Option<LocalizationTier>> {
|
||||
static L10N_ANNOTATION: LazyLock<Regex> = LazyLock::new(|| {
|
||||
Regex::new(r"(?:^|\n)# localization: (?<annotation_value>.*)\n").unwrap()
|
||||
});
|
||||
if let Some(annotation) = L10N_ANNOTATION.captures(input.as_bytes()).unwrap() {
|
||||
// SAFETY: `tier` is the name of a capture group in the regex whose captures we are looking
|
||||
// at. The capture is done on the bytes of an UTF-8 encoded string, so the result will also
|
||||
// be UTF-8 encoded, and the sub-slice we are looking at will start and end at codepoint
|
||||
// boundaries.
|
||||
let annotation_value =
|
||||
std::str::from_utf8(annotation.name("annotation_value").unwrap().as_bytes())
|
||||
.unwrap();
|
||||
if let Ok(tier) = LocalizationTier::try_from(annotation_value) {
|
||||
return Ok(Some(tier));
|
||||
}
|
||||
if annotation_value.starts_with("skip") {
|
||||
return Ok(None);
|
||||
}
|
||||
bail!(
|
||||
"Unexpected localization annotation in file {:?}: {annotation_value}",
|
||||
path.as_ref()
|
||||
);
|
||||
}
|
||||
let dirname = path
|
||||
.as_ref()
|
||||
.parent()
|
||||
.with_context(|| {
|
||||
format!(
|
||||
"Tried to get the parent of a path which does not have a parent: {:?}",
|
||||
path.as_ref()
|
||||
)
|
||||
})?
|
||||
.file_name()
|
||||
.with_context(|| {
|
||||
format!(
|
||||
"The parent of {:?} does not have a filename component",
|
||||
path.as_ref()
|
||||
)
|
||||
})?;
|
||||
let command_name = path
|
||||
.as_ref()
|
||||
.file_stem()
|
||||
.with_context(|| format!("The path {:?} does not have a file stem", path.as_ref()))?;
|
||||
if dirname == "functions"
|
||||
&& command_name
|
||||
.to_str()
|
||||
.is_some_and(|name| name.starts_with("fish_"))
|
||||
{
|
||||
return Ok(Some(LocalizationTier::Tier1));
|
||||
}
|
||||
if dirname != "completions" {
|
||||
bail!(
|
||||
"Missing localization tier for function file {:?}",
|
||||
path.as_ref()
|
||||
);
|
||||
}
|
||||
// TODO (MSRV>=1.91): use with_added_extension instead of with_extension
|
||||
let doc_path = workspace_root()
|
||||
.join("doc_src")
|
||||
.join("cmds")
|
||||
.join(command_name)
|
||||
.with_extension("rst");
|
||||
let doc_path_exists = std::fs::exists(&doc_path)
|
||||
.with_context(|| format!("Failed to check whether a file exists at {doc_path:?}"))?;
|
||||
Ok(Some(if doc_path_exists {
|
||||
LocalizationTier::Tier1
|
||||
} else {
|
||||
LocalizationTier::Tier3
|
||||
}))
|
||||
}
|
||||
|
||||
fn extract_messages_from_fish_script<P: AsRef<Path>>(
|
||||
path: P,
|
||||
extracted_messages: &mut HashMap<LocalizationTier, FishScriptMessages>,
|
||||
) -> Result<()> {
|
||||
let path = path.as_ref();
|
||||
let file_content = std::fs::read_to_string(path)
|
||||
.with_context(|| format!("Failed to read from {path:?}"))?;
|
||||
let Some(tier) = find_localization_tier(&file_content, path)? else {
|
||||
return Ok(());
|
||||
};
|
||||
// TODO: use proper parser instead of regex
|
||||
static EXPLICIT_MESSAGE: LazyLock<Regex> =
|
||||
LazyLock::new(|| Regex::new(r#"\( *_ (?<message>(['"]).+?(?<!\\)\2) *\)"#).unwrap());
|
||||
static IMPLICIT_MESSAGE: LazyLock<Regex> = LazyLock::new(|| {
|
||||
Regex::new(r#"(?:^|\n)(?:\s|and |or )*(?:complete|function).*? (?:-d|--description) (?<message>(['"]).+?(?<!\\)\2)"#).unwrap()
|
||||
});
|
||||
let messages_at_tier = extracted_messages.entry(tier).or_default();
|
||||
for message in EXPLICIT_MESSAGE.captures_iter(file_content.as_bytes()) {
|
||||
let message =
|
||||
std::str::from_utf8(message.unwrap().name("message").unwrap().as_bytes()).unwrap();
|
||||
messages_at_tier.explicit.insert(message.to_owned());
|
||||
}
|
||||
for message in IMPLICIT_MESSAGE.captures_iter(file_content.as_bytes()) {
|
||||
let message =
|
||||
std::str::from_utf8(message.unwrap().name("message").unwrap().as_bytes()).unwrap();
|
||||
messages_at_tier.implicit.insert(message.to_owned());
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn format_msgid_for_po(msgid: &str) -> String {
|
||||
let escaped_msgid = msgid.replace("\\", "\\\\").replace("\"", "\\\"");
|
||||
format!(
|
||||
"\
|
||||
msgid \"{escaped_msgid}\"\n\
|
||||
msgstr \"\"\n\
|
||||
\n\
|
||||
"
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,70 +1,101 @@
|
||||
use std::{
|
||||
ffi::OsStr,
|
||||
io::Write,
|
||||
path::{Path, PathBuf},
|
||||
process::Command,
|
||||
process::{Command, Stdio},
|
||||
};
|
||||
|
||||
use anyhow::{Context, Result, bail};
|
||||
use walkdir::WalkDir;
|
||||
|
||||
macro_rules! fail {
|
||||
($($arg:tt)+) => {{
|
||||
eprintln!($($arg)+);
|
||||
std::process::exit(1);
|
||||
}}
|
||||
}
|
||||
|
||||
pub mod format;
|
||||
pub mod gettext;
|
||||
pub mod shellcheck;
|
||||
|
||||
pub trait CommandExt {
|
||||
fn run_or_fail(&mut self);
|
||||
fn run(&mut self) -> Result<()>;
|
||||
fn run_with_stdio(&mut self, stdin: Vec<u8>) -> Result<Vec<u8>>;
|
||||
}
|
||||
|
||||
impl CommandExt for Command {
|
||||
fn run_or_fail(&mut self) {
|
||||
match self.status() {
|
||||
Ok(exit_status) => {
|
||||
if !exit_status.success() {
|
||||
fail!("Command did not run successfully: {:?}", self.get_program())
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
fail!("Failed to run command: {err}")
|
||||
}
|
||||
fn run(&mut self) -> Result<()> {
|
||||
if !self
|
||||
.status()
|
||||
.with_context(|| format!("Failed to run {:?}", self.get_program()))?
|
||||
.success()
|
||||
{
|
||||
bail!("Command did not run successfully: {:?}", self.get_program())
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn run_with_stdio(&mut self, stdin: Vec<u8>) -> Result<Vec<u8>> {
|
||||
let command_name = self.get_program().to_owned();
|
||||
let mut child = self
|
||||
.stdin(Stdio::piped())
|
||||
.stdout(Stdio::piped())
|
||||
.spawn()
|
||||
.with_context(|| format!("Failed to run {command_name:?}"))?;
|
||||
child
|
||||
.stdin
|
||||
.take()
|
||||
.unwrap()
|
||||
.write_all(&stdin)
|
||||
.with_context(|| format!("Failed to write to stdin of {command_name:?}"))?;
|
||||
let command_output = child
|
||||
.wait_with_output()
|
||||
.with_context(|| format!("Failed to read stdout of {command_name:?}"))?;
|
||||
if !command_output.status.success() {
|
||||
bail!("{command_name:?} failed");
|
||||
}
|
||||
Ok(command_output.stdout)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn cargo<I, S>(cargo_args: I)
|
||||
pub const CARGO: &str = env!("CARGO");
|
||||
|
||||
pub fn cargo<I, S>(cargo_args: I) -> Result<()>
|
||||
where
|
||||
I: IntoIterator<Item = S>,
|
||||
S: AsRef<OsStr>,
|
||||
{
|
||||
Command::new(env!("CARGO")).args(cargo_args).run_or_fail();
|
||||
Command::new(CARGO).args(cargo_args).run()
|
||||
}
|
||||
|
||||
fn get_matching_files<P: AsRef<Path>, I: IntoIterator<Item = P>, M: Fn(&Path) -> bool>(
|
||||
all_paths: I,
|
||||
matcher: M,
|
||||
) -> Vec<PathBuf> {
|
||||
all_paths
|
||||
.into_iter()
|
||||
.flat_map(WalkDir::new)
|
||||
.filter_map(|res| {
|
||||
let entry = res.unwrap();
|
||||
let path = entry.path();
|
||||
if entry.file_type().is_file() && matcher(path) {
|
||||
Some(path.to_owned())
|
||||
} else {
|
||||
None
|
||||
) -> Result<Vec<PathBuf>> {
|
||||
let mut matching_files = vec![];
|
||||
for path in all_paths {
|
||||
for dir_entry in WalkDir::new(path.as_ref()) {
|
||||
let dir_entry = dir_entry
|
||||
.with_context(|| format!("Failed to check paths at {:?}", path.as_ref()))?;
|
||||
let path = dir_entry.path();
|
||||
if dir_entry.file_type().is_file() && matcher(path) {
|
||||
matching_files.push(path.to_owned());
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
Ok(matching_files)
|
||||
}
|
||||
|
||||
fn files_with_extension<P: AsRef<Path>, I: IntoIterator<Item = P>>(
|
||||
all_paths: I,
|
||||
extension: &str,
|
||||
) -> Vec<PathBuf> {
|
||||
) -> Result<Vec<PathBuf>> {
|
||||
let matcher = |p: &Path| p.extension().is_some_and(|e| e == extension);
|
||||
get_matching_files(all_paths, matcher)
|
||||
}
|
||||
|
||||
fn copy_file<P: AsRef<Path>, Q: AsRef<Path>>(from: P, to: Q) -> Result<()> {
|
||||
std::fs::copy(&from, &to)
|
||||
.with_context(|| {
|
||||
format!(
|
||||
"Failed to copy from {:?} to {:?}",
|
||||
from.as_ref(),
|
||||
to.as_ref()
|
||||
)
|
||||
})
|
||||
.map(|_| ())
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
use anyhow::{Context, Result};
|
||||
use clap::{Parser, Subcommand};
|
||||
use fish_build_helper::as_os_strs;
|
||||
use std::{path::PathBuf, process::Command};
|
||||
use xtask::{CommandExt as _, cargo, format::FormatArgs};
|
||||
use xtask::{CommandExt, cargo, format::FormatArgs, gettext::GettextArgs, shellcheck::shellcheck};
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(
|
||||
@@ -20,6 +21,8 @@ enum Task {
|
||||
Check,
|
||||
/// Format files or check if they are correctly formatted.
|
||||
Format(FormatArgs),
|
||||
/// Work on the gettext PO files.
|
||||
Gettext(GettextArgs),
|
||||
/// Build HTML docs
|
||||
HtmlDocs {
|
||||
/// Path to a fish_indent executable. If none is specified, fish_indent will be built.
|
||||
@@ -28,53 +31,63 @@ enum Task {
|
||||
},
|
||||
/// Build man pages
|
||||
ManPages,
|
||||
/// Run ShellCheck on non-fish shell scripts
|
||||
#[command(name = "shellcheck")]
|
||||
ShellCheck,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
fn main() -> Result<()> {
|
||||
let cli = Cli::parse();
|
||||
match cli.task {
|
||||
Task::Check => run_checks(),
|
||||
Task::Format(format_args) => xtask::format::format(format_args),
|
||||
Task::Gettext(gettext_args) => xtask::gettext::gettext(gettext_args),
|
||||
Task::HtmlDocs { fish_indent } => build_html_docs(fish_indent),
|
||||
Task::ManPages => cargo(["build", "--package", "fish-build-man-pages"]),
|
||||
Task::ShellCheck => shellcheck(),
|
||||
}
|
||||
}
|
||||
|
||||
fn run_checks() {
|
||||
fn run_checks() -> Result<()> {
|
||||
let repo_root_dir = fish_build_helper::workspace_root();
|
||||
let check_script = repo_root_dir.join("build_tools").join("check.sh");
|
||||
Command::new(check_script).run_or_fail();
|
||||
Command::new(check_script).run()
|
||||
}
|
||||
|
||||
fn build_html_docs(fish_indent: Option<PathBuf>) {
|
||||
let fish_indent_path = fish_indent.unwrap_or_else(|| {
|
||||
// Build fish_indent if no existing one is specified.
|
||||
cargo([
|
||||
"build",
|
||||
"--bin",
|
||||
"fish_indent",
|
||||
"--profile",
|
||||
"dev",
|
||||
"--no-default-features",
|
||||
]);
|
||||
fish_build_helper::fish_build_dir()
|
||||
.join("debug")
|
||||
.join("fish_indent")
|
||||
});
|
||||
fn build_html_docs(fish_indent: Option<PathBuf>) -> Result<()> {
|
||||
let fish_indent_path = match fish_indent {
|
||||
Some(path) => path,
|
||||
None => {
|
||||
// Build fish_indent if no existing one is specified.
|
||||
cargo([
|
||||
"build",
|
||||
"--bin",
|
||||
"fish_indent",
|
||||
"--profile",
|
||||
"dev",
|
||||
"--no-default-features",
|
||||
])?;
|
||||
fish_build_helper::fish_build_dir()
|
||||
.join("debug")
|
||||
.join("fish_indent")
|
||||
}
|
||||
};
|
||||
// Set path so `sphinx-build` can find `fish_indent`.
|
||||
// Create tempdir to store symlink to fish_indent.
|
||||
// This is done to avoid adding other binaries to the PATH.
|
||||
let tempdir = fish_tempfile::new_dir().unwrap();
|
||||
let tempdir = fish_tempfile::new_dir().context("Failed to create tempdir")?;
|
||||
std::os::unix::fs::symlink(
|
||||
std::fs::canonicalize(fish_indent_path).unwrap(),
|
||||
std::fs::canonicalize(&fish_indent_path).with_context(|| {
|
||||
format!("Failed to canonicalize path to `fish_indent`: {fish_indent_path:?}")
|
||||
})?,
|
||||
tempdir.path().join("fish_indent"),
|
||||
)
|
||||
.unwrap();
|
||||
let new_path = format!(
|
||||
"{}:{}",
|
||||
tempdir.path().to_str().unwrap(),
|
||||
fish_build_helper::env_var("PATH").unwrap()
|
||||
);
|
||||
.context("Failed to create symlink for fish_indent")?;
|
||||
let mut new_path = tempdir.path().as_os_str().to_owned();
|
||||
if let Some(current_path) = std::env::var_os("PATH") {
|
||||
new_path.push(":");
|
||||
new_path.push(current_path);
|
||||
}
|
||||
let doc_src_dir = fish_build_helper::workspace_root().join("doc_src");
|
||||
let doctrees_dir = fish_build_helper::fish_doc_dir().join(".doctrees-html");
|
||||
let html_dir = fish_build_helper::fish_doc_dir().join("html");
|
||||
@@ -94,5 +107,5 @@ fn build_html_docs(fish_indent: Option<PathBuf>) {
|
||||
Command::new(option_env!("FISH_SPHINX").unwrap_or("sphinx-build"))
|
||||
.env("PATH", new_path)
|
||||
.args(args)
|
||||
.run_or_fail();
|
||||
.run()
|
||||
}
|
||||
|
||||
52
crates/xtask/src/shellcheck.rs
Normal file
52
crates/xtask/src/shellcheck.rs
Normal file
@@ -0,0 +1,52 @@
|
||||
use anyhow::{Context, Result};
|
||||
use fish_build_helper::workspace_root;
|
||||
use ignore::Walk;
|
||||
use pcre2::bytes::Regex;
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{BufRead, BufReader},
|
||||
path::{Path, PathBuf},
|
||||
process::Command,
|
||||
sync::LazyLock,
|
||||
};
|
||||
|
||||
use crate::CommandExt;
|
||||
|
||||
pub fn shellcheck() -> Result<()> {
|
||||
Command::new("shellcheck")
|
||||
.args(files_to_check()?)
|
||||
.current_dir(workspace_root())
|
||||
.run()
|
||||
}
|
||||
|
||||
fn is_shell_script<P: AsRef<Path>>(path: P) -> Result<bool> {
|
||||
let file = File::open(&path).with_context(|| format!("Failed to open {:?}", path.as_ref()))?;
|
||||
let mut first_line = String::new();
|
||||
let Ok(_) = BufReader::new(file).read_line(&mut first_line) else {
|
||||
return Ok(false);
|
||||
};
|
||||
static SHEBANG_REGEX: LazyLock<Regex> = LazyLock::new(|| Regex::new("^#!.*[^i]sh").unwrap());
|
||||
Ok(SHEBANG_REGEX
|
||||
.is_match(first_line.trim().as_bytes())
|
||||
.unwrap())
|
||||
}
|
||||
|
||||
fn files_to_check() -> Result<Vec<PathBuf>> {
|
||||
let mut files = vec![];
|
||||
for dir_entry in Walk::new(workspace_root()) {
|
||||
let dir_entry = dir_entry.context("Error traversing workspace")?;
|
||||
if !dir_entry
|
||||
.file_type()
|
||||
.with_context(|| format!("Failed to determine file type of {dir_entry:?}"))?
|
||||
.is_file()
|
||||
{
|
||||
continue;
|
||||
}
|
||||
let path = dir_entry.into_path();
|
||||
if !is_shell_script(&path)? {
|
||||
continue;
|
||||
}
|
||||
files.push(path);
|
||||
}
|
||||
Ok(files)
|
||||
}
|
||||
32
deny.toml
32
deny.toml
@@ -3,22 +3,22 @@
|
||||
confidence-threshold = 0.93
|
||||
unused-allowed-license = "allow" # don't warn for unused licenses in this list
|
||||
allow = [
|
||||
"BSD-2-Clause",
|
||||
"BSD-3-Clause",
|
||||
"BSL-1.0",
|
||||
"CC0-1.0",
|
||||
"GPL-2.0",
|
||||
"GPL-2.0-only",
|
||||
"ISC",
|
||||
"LGPL-2.0",
|
||||
"LGPL-2.0-or-later",
|
||||
"MIT",
|
||||
"MPL-2.0",
|
||||
"PSF-2.0",
|
||||
"Unicode-DFS-2016",
|
||||
"Unicode-3.0",
|
||||
"WTFPL",
|
||||
"Zlib",
|
||||
"BSD-2-Clause",
|
||||
"BSD-3-Clause",
|
||||
"BSL-1.0",
|
||||
"CC0-1.0",
|
||||
"GPL-2.0",
|
||||
"GPL-2.0-only",
|
||||
"ISC",
|
||||
"LGPL-2.0",
|
||||
"LGPL-2.0-or-later",
|
||||
"MIT",
|
||||
"MPL-2.0",
|
||||
"PSF-2.0",
|
||||
"Unicode-DFS-2016",
|
||||
"Unicode-3.0",
|
||||
"WTFPL",
|
||||
"Zlib",
|
||||
]
|
||||
|
||||
[sources.allow-org]
|
||||
|
||||
@@ -60,6 +60,8 @@ The event handler switches (``on-event``, ``on-variable``, ``on-job-exit``, ``on
|
||||
|
||||
Functions names cannot be reserved words. These are elements of fish syntax or builtin commands which are essential for the operations of the shell. Current reserved words are ``[``, ``_``, ``and``, ``argparse``, ``begin``, ``break``, ``builtin``, ``case``, ``command``, ``continue``, ``else``, ``end``, ``eval``, ``exec``, ``for``, ``function``, ``if``, ``not``, ``or``, ``read``, ``return``, ``set``, ``status``, ``string``, ``switch``, ``test``, ``time``, and ``while``.
|
||||
|
||||
Care should be taken when creating a function of the same name as an existing shell builtin or common program. If the function behaves differently, it is very common for problems to occur within fish or in scripts written by others. Consider writing an :doc:`abbreviation <abbr>` if you are wanting to replace one tool with another for interactive use.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
|
||||
@@ -11,8 +11,10 @@ Synopsis
|
||||
Description
|
||||
-----------
|
||||
|
||||
``set_color`` is used to control the color and styling of text in the terminal.
|
||||
*VALUE* describes that styling.
|
||||
``set_color`` controls the color and styling of text in the terminal.
|
||||
It writes non-printing color and text style escape sequences to standard output.
|
||||
|
||||
*VALUE* describes the styling.
|
||||
*VALUE* can be a reserved color name like **red** or an RGB color value given as 3 or 6 hexadecimal digits ("F27" or "FF2277").
|
||||
A special keyword **normal** resets text formatting to terminal defaults, however it is not recommended and the **--reset** option is preferred as it is less confusing and more future-proof.
|
||||
|
||||
@@ -93,7 +95,9 @@ Notes
|
||||
3. Because of the risk of confusion, ``set_color --reset`` is recommended over ``set_color normal``.
|
||||
4. Setting the background color only affects subsequently written characters. Fish provides no way to set the background color for the entire terminal window. Configuring the window background color (and other attributes such as its opacity) has to be done using whatever mechanisms the terminal provides. Look for a config option.
|
||||
5. Some terminals use the ``--bold`` escape sequence to switch to a brighter color set rather than increasing the weight of text.
|
||||
6. ``set_color`` works by printing sequences of characters to standard output. If used in command substitution or a pipe, these characters will also be captured. This may or may not be desirable. Checking the exit status of ``isatty stdout`` before using ``set_color`` can be useful to decide not to colorize output in a script.
|
||||
6. If you use ``set_color`` in a command substitution or a pipe, these characters will also be captured.
|
||||
This may or may not be desirable.
|
||||
Checking the exit status of ``isatty stdout`` before using ``set_color`` can be useful to decide not to colorize output in a script.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
@@ -17,6 +17,9 @@ BuildRequires: /usr/bin/sphinx-build
|
||||
# OBS: add eg "FileProvides: /usr/bin/sphinx-build python3-sphinx python3-Sphinx" to project config
|
||||
BuildRequires: /usr/bin/man
|
||||
# OBS: add eg "FileProvides: /usr/bin/man man-db man" to project config
|
||||
# pkg-config is needed for the pcre2 crate to find the pcre2 system librar
|
||||
BuildRequires: /usr/bin/pkg-config
|
||||
# OBS: add eg "FileProvides: /usr/bin/pkg-config pkgconf-pkg-config pkg-config" to project config
|
||||
BuildRequires: cmake >= 3.15
|
||||
|
||||
# for tests
|
||||
|
||||
@@ -3698,9 +3698,6 @@ msgstr ""
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5318,12 +5315,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6122,9 +6125,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8069,6 +8069,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9068,6 +9071,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9794,6 +9800,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11933,9 +11942,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16859,6 +16865,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23093,6 +23102,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23243,6 +23255,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24635,12 +24650,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24977,6 +24998,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26102,9 +26132,6 @@ msgstr "Aus Archiv extrahieren"
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27380,9 +27407,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28175,9 +28199,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28214,12 +28235,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31469,6 +31484,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32279,9 +32297,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33431,6 +33446,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34055,6 +34073,9 @@ msgstr "Zeilen enden mit Null-Byte"
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34325,9 +34346,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35930,9 +35948,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36056,6 +36071,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38519,6 +38537,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40490,9 +40511,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr "Nicht-reguläre Dateien öffnen"
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41150,6 +41168,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42464,9 +42491,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43151,9 +43175,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43793,6 +43814,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44765,9 +44789,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46730,9 +46751,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr "at-Warteschlange nur einmal verarbeiten"
|
||||
|
||||
@@ -46916,9 +46934,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46988,9 +47003,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47003,9 +47015,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47624,6 +47633,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48374,6 +48386,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49073,6 +49091,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50711,6 +50732,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51524,9 +51548,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr "Neue Bugs abrufen"
|
||||
|
||||
@@ -51863,9 +51884,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54464,9 +54482,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57266,9 +57281,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59609,6 +59621,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59960,6 +59975,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60116,6 +60134,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64709,6 +64730,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64916,9 +64940,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72443,9 +72464,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3698,9 +3698,6 @@ msgstr "vi-like key bindings for fish"
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5318,12 +5315,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6122,9 +6125,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8069,6 +8069,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9068,6 +9071,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9794,6 +9800,9 @@ msgstr "Cancel any scheduled actions on the packages"
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11933,9 +11942,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16859,6 +16865,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23093,6 +23102,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23243,6 +23255,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24635,12 +24650,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24977,6 +24998,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26102,9 +26132,6 @@ msgstr "Extract from archive"
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27380,9 +27407,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28175,9 +28199,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28214,12 +28235,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31469,6 +31484,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32279,9 +32297,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33431,6 +33446,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34055,6 +34073,9 @@ msgstr "Lines end with 0 byte"
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34325,9 +34346,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35930,9 +35948,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36056,6 +36071,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38519,6 +38537,9 @@ msgstr "Mount all available ZFS filesystems"
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40490,9 +40511,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr "Open non-regular files"
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41150,6 +41168,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42464,9 +42491,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43151,9 +43175,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43793,6 +43814,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44765,9 +44789,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46730,9 +46751,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr "Process at queue only once"
|
||||
|
||||
@@ -46916,9 +46934,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46988,9 +47003,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47003,9 +47015,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47624,6 +47633,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48374,6 +48386,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49073,6 +49091,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50711,6 +50732,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51524,9 +51548,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr "Retrieve fresh bugs"
|
||||
|
||||
@@ -51863,9 +51884,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr "Revert to the received value if available"
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54464,9 +54482,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57266,9 +57281,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59609,6 +59621,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59960,6 +59975,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60116,6 +60134,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64709,6 +64730,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64916,9 +64940,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72443,9 +72464,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3698,9 +3698,6 @@ msgstr ""
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5318,12 +5315,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6122,9 +6125,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8069,6 +8069,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9068,6 +9071,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9794,6 +9800,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11933,9 +11942,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16859,6 +16865,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23093,6 +23102,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23243,6 +23255,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24635,12 +24650,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24977,6 +24998,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26102,9 +26132,6 @@ msgstr ""
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27380,9 +27407,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28175,9 +28199,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28214,12 +28235,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31469,6 +31484,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32279,9 +32297,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33431,6 +33446,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34055,6 +34073,9 @@ msgstr ""
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34325,9 +34346,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35930,9 +35948,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36056,6 +36071,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38519,6 +38537,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40490,9 +40511,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41150,6 +41168,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42464,9 +42491,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43151,9 +43175,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43793,6 +43814,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44765,9 +44789,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46730,9 +46751,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr ""
|
||||
|
||||
@@ -46916,9 +46934,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46988,9 +47003,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47003,9 +47015,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47624,6 +47633,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48374,6 +48386,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49073,6 +49091,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50711,6 +50732,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51524,9 +51548,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr ""
|
||||
|
||||
@@ -51863,9 +51884,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54464,9 +54482,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57266,9 +57281,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59609,6 +59621,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59960,6 +59975,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60116,6 +60134,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64709,6 +64730,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64916,9 +64940,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72443,9 +72464,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3827,9 +3827,6 @@ msgstr ""
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5447,12 +5444,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr "Ajouter une ligne Signed-off-by dans le message de validation"
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6251,9 +6254,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8198,6 +8198,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr "Demander confirmation avant de tuer un processus"
|
||||
|
||||
@@ -9197,6 +9200,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9923,6 +9929,9 @@ msgstr "Annuler toute action programmée pour un paquet"
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr "Annuler les tâches de l’utilisateur"
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -12062,9 +12071,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16988,6 +16994,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23222,6 +23231,9 @@ msgstr "Afficher l’arborescence des périphériques USB physiques"
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23372,6 +23384,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24764,12 +24779,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -25106,6 +25127,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26231,9 +26261,6 @@ msgstr "Extraire les fichiers d’une archive"
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27509,9 +27536,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28304,9 +28328,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28343,12 +28364,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31598,6 +31613,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr "Importer un fichier cue et le stocker dans le bloc CUESHEET"
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr "Importer toutes les étiquettes d’un serveur distant avec git fetch <nom>"
|
||||
|
||||
@@ -32408,9 +32426,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33560,6 +33575,9 @@ msgstr "Terminer la connexion actuelle depuis le périphérique et le faire se r
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr "Terminer la connexion actuelle depuis l’hôte et le faire se reconnecter"
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr "Ne tuer que les processus appartenant à l’utilisateur spécifié. Les noms des commandes sont alors optionnels"
|
||||
|
||||
@@ -34184,6 +34202,9 @@ msgstr "Utiliser \\0 comme fin de ligne"
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34454,9 +34475,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -36059,9 +36077,6 @@ msgstr "Lister les informations statistiques du serveur"
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36185,6 +36200,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38648,6 +38666,9 @@ msgstr "Monter tous les systèmes de fichiers ZFS disponibles"
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr "Monter tous les volumes montables d’un disque"
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40619,9 +40640,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr "Ouvrir même les fichiers spéciaux"
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41279,6 +41297,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42593,9 +42620,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43280,9 +43304,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43922,6 +43943,9 @@ msgstr "Empêcher l’utilisation, de quelque manière que ce soit, les registre
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44894,9 +44918,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46859,9 +46880,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr "Traiter la file at une seule fois"
|
||||
|
||||
@@ -47045,9 +47063,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -47117,9 +47132,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47132,9 +47144,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47753,6 +47762,9 @@ msgstr "Obtenir seulement les noms de paquet"
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48503,6 +48515,12 @@ msgstr "Redémarrer l’ordinateur"
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr "Redémarrer sur l’interface d’administration de l’EFI"
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr "Redémarrer le périphérique, possiblement vers le chargeur d’amorçage ou le programme de récupération"
|
||||
|
||||
@@ -49202,6 +49220,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50840,6 +50861,9 @@ msgstr "Demander l’ID du serveur de noms"
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51653,9 +51677,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr "Récupérer les nouveaux bogues"
|
||||
|
||||
@@ -51992,9 +52013,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr "Revenir à la valeur reçue, le cas échéant"
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54593,9 +54611,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr "Sélectionner le périphérique que lsusb doit examiner"
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57395,9 +57410,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr "Définir les surveillances"
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59738,6 +59750,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr "Afficher les propriétés des machines"
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -60089,6 +60104,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr "Afficher l’adresse email de l’auteur au lieu de son nom"
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr "Afficher la branche et les informations de suivi même en format concis"
|
||||
|
||||
@@ -60245,6 +60263,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64838,6 +64859,9 @@ msgstr "Arrêter l’appairage au périphérique spécifié"
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -65045,9 +65069,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72572,9 +72593,6 @@ msgstr "Surveiller les modifications d’une clé ou d’un dossier"
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3701,9 +3701,6 @@ msgstr "fish 用の vi 風キーバインド"
|
||||
msgid "wait for app to exit"
|
||||
msgstr "アプリが終了するまで待機"
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5321,12 +5318,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6125,9 +6128,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8072,6 +8072,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9071,6 +9074,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9797,6 +9803,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11936,9 +11945,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16862,6 +16868,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23096,6 +23105,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23246,6 +23258,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24638,12 +24653,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24980,6 +25001,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26105,9 +26135,6 @@ msgstr ""
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27383,9 +27410,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28178,9 +28202,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28217,12 +28238,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31472,6 +31487,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32282,9 +32300,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33434,6 +33449,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34058,6 +34076,9 @@ msgstr ""
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34328,9 +34349,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35933,9 +35951,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36059,6 +36074,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38522,6 +38540,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40493,9 +40514,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41153,6 +41171,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42467,9 +42494,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43154,9 +43178,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43796,6 +43817,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44768,9 +44792,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46733,9 +46754,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr ""
|
||||
|
||||
@@ -46919,9 +46937,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46991,9 +47006,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47006,9 +47018,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47627,6 +47636,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48377,6 +48389,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49076,6 +49094,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50714,6 +50735,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51527,9 +51551,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr ""
|
||||
|
||||
@@ -51866,9 +51887,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54467,9 +54485,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57269,9 +57284,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59612,6 +59624,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59963,6 +59978,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60119,6 +60137,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64712,6 +64733,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64919,9 +64943,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72446,9 +72467,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3694,9 +3694,6 @@ msgstr ""
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5314,12 +5311,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6118,9 +6121,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8065,6 +8065,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9064,6 +9067,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9790,6 +9796,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11929,9 +11938,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16855,6 +16861,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23089,6 +23098,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23239,6 +23251,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24631,12 +24646,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24973,6 +24994,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26098,9 +26128,6 @@ msgstr ""
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27376,9 +27403,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28171,9 +28195,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28210,12 +28231,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31465,6 +31480,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32275,9 +32293,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33427,6 +33442,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34051,6 +34069,9 @@ msgstr ""
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34321,9 +34342,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35926,9 +35944,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36052,6 +36067,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38515,6 +38533,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40486,9 +40507,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41146,6 +41164,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42460,9 +42487,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43147,9 +43171,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43789,6 +43810,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44761,9 +44785,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46726,9 +46747,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr ""
|
||||
|
||||
@@ -46912,9 +46930,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46984,9 +46999,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -46999,9 +47011,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47620,6 +47629,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48370,6 +48382,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49069,6 +49087,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50707,6 +50728,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51520,9 +51544,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr ""
|
||||
|
||||
@@ -51859,9 +51880,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54460,9 +54478,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57262,9 +57277,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59605,6 +59617,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59956,6 +59971,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60112,6 +60130,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64705,6 +64726,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64912,9 +64936,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72439,9 +72460,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3699,9 +3699,6 @@ msgstr ""
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5319,12 +5316,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6123,9 +6126,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8070,6 +8070,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9069,6 +9072,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9795,6 +9801,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11934,9 +11943,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16860,6 +16866,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23094,6 +23103,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23244,6 +23256,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24636,12 +24651,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24978,6 +24999,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26103,9 +26133,6 @@ msgstr "Extract from archive"
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27381,9 +27408,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28176,9 +28200,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28215,12 +28236,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31470,6 +31485,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32280,9 +32298,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33432,6 +33447,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34056,6 +34074,9 @@ msgstr "Lines end with 0 byte"
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34326,9 +34347,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35931,9 +35949,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36057,6 +36072,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38520,6 +38538,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40491,9 +40512,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr "Open non-regular files"
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41151,6 +41169,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42465,9 +42492,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43152,9 +43176,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43794,6 +43815,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44766,9 +44790,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46731,9 +46752,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr ""
|
||||
|
||||
@@ -46917,9 +46935,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46989,9 +47004,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47004,9 +47016,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47625,6 +47634,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48375,6 +48387,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49074,6 +49092,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50712,6 +50733,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51525,9 +51549,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr ""
|
||||
|
||||
@@ -51864,9 +51885,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54465,9 +54483,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57267,9 +57282,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59610,6 +59622,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59961,6 +59976,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60117,6 +60135,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64710,6 +64731,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64917,9 +64941,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72444,9 +72465,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3695,9 +3695,6 @@ msgstr ""
|
||||
msgid "wait for app to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5315,12 +5312,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6119,9 +6122,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8066,6 +8066,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9065,6 +9068,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9791,6 +9797,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11930,9 +11939,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16856,6 +16862,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23090,6 +23099,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23240,6 +23252,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24632,12 +24647,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24974,6 +24995,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26099,9 +26129,6 @@ msgstr "Hämta från arkiv"
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27377,9 +27404,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28172,9 +28196,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28211,12 +28232,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31466,6 +31481,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32276,9 +32294,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33428,6 +33443,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34052,6 +34070,9 @@ msgstr "Rader slutar ned nolltecken"
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34322,9 +34343,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35927,9 +35945,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36053,6 +36068,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38516,6 +38534,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40487,9 +40508,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr "Öppna icke-reguljär fil"
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41147,6 +41165,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42461,9 +42488,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43148,9 +43172,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43790,6 +43811,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44762,9 +44786,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46727,9 +46748,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr "Processa 'at'-kö bara en gång"
|
||||
|
||||
@@ -46913,9 +46931,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46985,9 +47000,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47000,9 +47012,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47621,6 +47630,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48371,6 +48383,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49070,6 +49088,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50708,6 +50729,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51521,9 +51545,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr "Hämta färska buggar"
|
||||
|
||||
@@ -51860,9 +51881,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54461,9 +54479,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57263,9 +57278,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59606,6 +59618,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59957,6 +59972,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60113,6 +60131,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64706,6 +64727,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64913,9 +64937,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72440,9 +72461,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3719,9 +3719,6 @@ msgstr "fish 中类似 vi 的键位绑定"
|
||||
msgid "wait for app to exit"
|
||||
msgstr "等待应用程序退出"
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5339,12 +5336,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6143,9 +6146,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8090,6 +8090,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9089,6 +9092,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9815,6 +9821,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11954,9 +11963,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr "编译并运行一个可执行产品"
|
||||
|
||||
@@ -16880,6 +16886,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23114,6 +23123,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23264,6 +23276,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24656,12 +24671,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24998,6 +25019,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26123,9 +26153,6 @@ msgstr ""
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27401,9 +27428,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28196,9 +28220,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28235,12 +28256,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31490,6 +31505,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32300,9 +32318,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33452,6 +33467,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34076,6 +34094,9 @@ msgstr ""
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34346,9 +34367,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35951,9 +35969,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36077,6 +36092,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38540,6 +38558,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40511,9 +40532,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41171,6 +41189,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42485,9 +42512,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43172,9 +43196,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43814,6 +43835,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44786,9 +44810,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46751,9 +46772,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr ""
|
||||
|
||||
@@ -46937,9 +46955,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -47009,9 +47024,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47024,9 +47036,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47645,6 +47654,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48395,6 +48407,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49094,6 +49112,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50732,6 +50753,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51545,9 +51569,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr ""
|
||||
|
||||
@@ -51884,9 +51905,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54485,9 +54503,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57287,9 +57302,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59630,6 +59642,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59981,6 +59996,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60137,6 +60155,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64730,6 +64751,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64937,9 +64961,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72464,9 +72485,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3696,9 +3696,6 @@ msgstr "vi 風格的按鍵綁定"
|
||||
msgid "wait for app to exit"
|
||||
msgstr "等待應用程式結束"
|
||||
|
||||
msgid "fish-section-tier3-from-script-explicitly-added"
|
||||
msgstr ""
|
||||
|
||||
msgid "fish-section-tier3-from-script-implicitly-added"
|
||||
msgstr ""
|
||||
|
||||
@@ -5316,12 +5313,18 @@ msgstr ""
|
||||
msgid "Add OFFSET to file positions in hexdump"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Requires dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line at the end of the merge commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Signed-off-by line to the commit message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Wants dependencies to a target unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Winelib to import"
|
||||
msgstr ""
|
||||
|
||||
@@ -6120,9 +6123,6 @@ msgstr ""
|
||||
msgid "Additional `Cargo.toml` to sync and vendor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional directories to search for fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional flag for strings inside the argument number ARG of keyword WORD"
|
||||
msgstr ""
|
||||
|
||||
@@ -8067,6 +8067,9 @@ msgstr ""
|
||||
msgid "Ask the server to reimport files for UTIs claimed by the listed plugin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the service manager to exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ask the user for confirmation before killing a process"
|
||||
msgstr ""
|
||||
|
||||
@@ -9066,6 +9069,9 @@ msgstr ""
|
||||
msgid "Bind mount a file or directory from the host in the container"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mount a path into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bind mounts src into CHROOTDIR/dest"
|
||||
msgstr ""
|
||||
|
||||
@@ -9792,6 +9798,9 @@ msgstr ""
|
||||
msgid "Cancel jobs owned by username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel one or more jobs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel pairing with device"
|
||||
msgstr ""
|
||||
|
||||
@@ -11931,9 +11940,6 @@ msgstr ""
|
||||
msgid "Compile all the methods in an assembly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile an input file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Compile and run an executable product"
|
||||
msgstr ""
|
||||
|
||||
@@ -16857,6 +16863,9 @@ msgstr ""
|
||||
msgid "Disable the docs title"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the enable one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable the eval extension"
|
||||
msgstr ""
|
||||
|
||||
@@ -23091,6 +23100,9 @@ msgstr ""
|
||||
msgid "Dump the relocated contents of of specified section"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump the systemd manager environment block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dump tree structures from a given device"
|
||||
msgstr ""
|
||||
|
||||
@@ -23241,6 +23253,9 @@ msgstr ""
|
||||
msgid "Edit a property with an external editor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit a unit file or drop-in snippet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit an entry"
|
||||
msgstr ""
|
||||
|
||||
@@ -24633,12 +24648,18 @@ msgstr ""
|
||||
msgid "Enable/Disable colored error messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable a unit depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable advertising with given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable agent with given capability"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable all units depending on preset configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable/disable bucket access logging"
|
||||
msgstr ""
|
||||
|
||||
@@ -24975,6 +24996,15 @@ msgstr ""
|
||||
msgid "Ensure value is of given type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate emergency mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate rescue mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter and isolate the default mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter commit message as a string"
|
||||
msgstr ""
|
||||
|
||||
@@ -26100,9 +26130,6 @@ msgstr ""
|
||||
msgid "Extract into directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract just one field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extract most recent versions of files"
|
||||
msgstr ""
|
||||
|
||||
@@ -27378,9 +27405,6 @@ msgstr ""
|
||||
msgid "Force a complete refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a downgrade to an older version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force a fixed checksum block-size"
|
||||
msgstr ""
|
||||
|
||||
@@ -28173,9 +28197,6 @@ msgstr ""
|
||||
msgid "Format of the list command output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format of the output: text or json"
|
||||
msgstr ""
|
||||
|
||||
@@ -28212,12 +28233,6 @@ msgstr ""
|
||||
msgid "Format the print file with a shaded header: date, time, job name, and page no."
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to emit diagnostics in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to serialize in"
|
||||
msgstr ""
|
||||
|
||||
msgid "Format to use for the output"
|
||||
msgstr ""
|
||||
|
||||
@@ -31467,6 +31482,9 @@ msgstr ""
|
||||
msgid "Import cuesheet and store in CUESHEET block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import environment variables into the service manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import every tag from a remote with git fetch <name>"
|
||||
msgstr ""
|
||||
|
||||
@@ -32277,9 +32295,6 @@ msgstr ""
|
||||
msgid "Initialize a new or existing Terraform configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Initialize a new repository for the given version control system"
|
||||
msgstr ""
|
||||
|
||||
@@ -33429,6 +33444,9 @@ msgstr ""
|
||||
msgid "Kick current connection from host side and make it reconnect."
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kill only processes the specified user owns. Command names are optional"
|
||||
msgstr ""
|
||||
|
||||
@@ -34053,6 +34071,9 @@ msgstr ""
|
||||
msgid "Linewrap entries as width[,indent1[,indent2]]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link a unit file into the unit search path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Link against framework (Darwin)"
|
||||
msgstr ""
|
||||
|
||||
@@ -34323,9 +34344,6 @@ msgstr ""
|
||||
msgid "List all directories from which unit files may be loaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all discovered fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "List all dist-tags"
|
||||
msgstr ""
|
||||
|
||||
@@ -35928,9 +35946,6 @@ msgstr ""
|
||||
msgid "List stemcells"
|
||||
msgstr ""
|
||||
|
||||
msgid "List style variants of each family"
|
||||
msgstr ""
|
||||
|
||||
msgid "List subcommands"
|
||||
msgstr ""
|
||||
|
||||
@@ -36054,6 +36069,9 @@ msgstr ""
|
||||
msgid "List the files that are supplied by the named package"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the host and all running local containers"
|
||||
msgstr ""
|
||||
|
||||
msgid "List the installed extensions"
|
||||
msgstr ""
|
||||
|
||||
@@ -38517,6 +38535,9 @@ msgstr ""
|
||||
msgid "Mount an entire disk (all mountable volumes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount an image into the mount namespace of a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mount as mountable"
|
||||
msgstr ""
|
||||
|
||||
@@ -40488,9 +40509,6 @@ msgstr ""
|
||||
msgid "Open non-regular files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open output file after compilation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open package repository page in the browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -41148,6 +41166,15 @@ msgstr ""
|
||||
msgid "Output in RFC 2822 format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with date precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with nanosecond precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in RFC 3339 format with second precision"
|
||||
msgstr ""
|
||||
|
||||
msgid "Output in an easy-to-parse format for scripts"
|
||||
msgstr ""
|
||||
|
||||
@@ -42462,9 +42489,6 @@ msgstr ""
|
||||
msgid "Path to config file. Default ~/.config/mariner/config.yaml"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to custom CA certificate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Path to db to use"
|
||||
msgstr ""
|
||||
|
||||
@@ -43149,9 +43173,6 @@ msgstr ""
|
||||
msgid "Pixel storage type [type]"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pixels per inch for PNG export"
|
||||
msgstr ""
|
||||
|
||||
msgid "Place comment block with TAG (or those preceding keyword lines) in output file"
|
||||
msgstr ""
|
||||
|
||||
@@ -43791,6 +43812,9 @@ msgstr ""
|
||||
msgid "Prevent including compiler-rt symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prevent override"
|
||||
msgstr ""
|
||||
|
||||
@@ -44763,9 +44787,6 @@ msgstr ""
|
||||
msgid "Print help for `zig`"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help for the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help info and exit"
|
||||
msgstr ""
|
||||
|
||||
@@ -46728,9 +46749,6 @@ msgstr ""
|
||||
msgid "Process all users' calendars and mail the results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process an input file to extract metadata"
|
||||
msgstr ""
|
||||
|
||||
msgid "Process at queue only once"
|
||||
msgstr ""
|
||||
|
||||
@@ -46914,9 +46932,6 @@ msgstr ""
|
||||
msgid "Produce output in JSON format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce performance timings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Produce report on all TAGs"
|
||||
msgstr ""
|
||||
|
||||
@@ -46986,9 +47001,6 @@ msgstr ""
|
||||
msgid "Project author"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project language"
|
||||
msgstr ""
|
||||
|
||||
@@ -47001,9 +47013,6 @@ msgstr ""
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project root (for absolute paths)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project type"
|
||||
msgstr ""
|
||||
|
||||
@@ -47622,6 +47631,9 @@ msgstr ""
|
||||
msgid "Query the specified service"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query the unit that owns a process"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query to select investment transactions"
|
||||
msgstr ""
|
||||
|
||||
@@ -48372,6 +48384,12 @@ msgstr ""
|
||||
msgid "Reboot to EFI setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot userspace"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot via kexec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboots the device, optionally into the bootloader or recovery program"
|
||||
msgstr ""
|
||||
|
||||
@@ -49071,6 +49089,9 @@ msgstr ""
|
||||
msgid "Reload server configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the configuration of the system manager"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reload the default keys"
|
||||
msgstr ""
|
||||
|
||||
@@ -50709,6 +50730,9 @@ msgstr ""
|
||||
msgid "Request a subset of objects from server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request a unit reload its configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request allocation of a pseudo TTY for stdio"
|
||||
msgstr ""
|
||||
|
||||
@@ -51522,9 +51546,6 @@ msgstr ""
|
||||
msgid "Retrieve current host IP address and place it under a configurable project property"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve exactly one element"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retrieve fresh bugs"
|
||||
msgstr ""
|
||||
|
||||
@@ -51861,9 +51882,6 @@ msgstr ""
|
||||
msgid "Revert to the received value if available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revert to the version from before the last update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Review the control file before creating a .deb"
|
||||
msgstr ""
|
||||
|
||||
@@ -54462,9 +54480,6 @@ msgstr ""
|
||||
msgid "Selects which device lsusb will examine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Self update the Typst CLI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Semantic version category for new version"
|
||||
msgstr ""
|
||||
|
||||
@@ -57264,9 +57279,6 @@ msgstr ""
|
||||
msgid "Set watches"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set when to use color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set where to write formatted output"
|
||||
msgstr ""
|
||||
|
||||
@@ -59607,6 +59619,9 @@ msgstr ""
|
||||
msgid "Show properties of machines"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of one or more units, jobs, or the manager itself"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show properties of systemd-timedated"
|
||||
msgstr ""
|
||||
|
||||
@@ -59958,6 +59973,9 @@ msgstr ""
|
||||
msgid "Show the author email instead of author name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the backing files of one or more units"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the branch and tracking info even in short-format"
|
||||
msgstr ""
|
||||
|
||||
@@ -60114,6 +60132,9 @@ msgstr ""
|
||||
msgid "Show the manual page"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the manual page for a unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show the menubar"
|
||||
msgstr ""
|
||||
|
||||
@@ -64707,6 +64728,9 @@ msgstr ""
|
||||
msgid "Stop playing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing one or more units from starting"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop preventing package modification"
|
||||
msgstr ""
|
||||
|
||||
@@ -64914,9 +64938,6 @@ msgstr ""
|
||||
msgid "String as the value for the given key"
|
||||
msgstr ""
|
||||
|
||||
msgid "String key-value pair for `sys.inputs`"
|
||||
msgstr ""
|
||||
|
||||
msgid "String literal mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -72441,9 +72462,6 @@ msgstr ""
|
||||
msgid "Watch a specific file or directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch an input file and recompile on changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Watch and list new logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ dependencies = []
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"sphinx>=9.1", # updatecli.d/python.yml
|
||||
"sphinx-markdown-builder",
|
||||
"sphinx>=9.1", # updatecli.d/python.yml
|
||||
"sphinx-markdown-builder",
|
||||
]
|
||||
|
||||
[tool.uv.sources]
|
||||
|
||||
@@ -5,6 +5,9 @@ if date --version >/dev/null 2>/dev/null
|
||||
complete -c date -s I -l iso-8601 -d "Use ISO 8601 output format" -x -a "date hours minutes seconds"
|
||||
complete -c date -s s -l set -d "Set time" -x
|
||||
complete -c date -s R -l rfc-2822 -d "Output in RFC 2822 format"
|
||||
complete -c date -l rfc-3339=date -d "Output in RFC 3339 format with date precision"
|
||||
complete -c date -l rfc-3339=second -d "Output in RFC 3339 format with second precision"
|
||||
complete -c date -l rfc-3339=ns -d "Output in RFC 3339 format with nanosecond precision"
|
||||
complete -c date -s r -l reference -d "Display last modification time of file" -r
|
||||
complete -c date -s u -l utc -d "Print/set UTC time" -f
|
||||
complete -c date -l universal -d "Print/set UTC time" -f
|
||||
|
||||
@@ -1 +1 @@
|
||||
complete sudo-rs --wraps sudo
|
||||
__fish_complete_sudo sudo-rs
|
||||
|
||||
@@ -1,63 +1 @@
|
||||
#
|
||||
# Completion for sudo
|
||||
#
|
||||
|
||||
function __fish_sudo_print_remaining_args
|
||||
set -l tokens (commandline -xpc | string escape) (commandline -ct)
|
||||
set -e tokens[1]
|
||||
# These are all the options mentioned in the man page for Todd Miller's "sudo.ws" sudo (in that order).
|
||||
# If any other implementation has different options, this should be harmless, since they shouldn't be used anyway.
|
||||
set -l opts A/askpass b/background C/close-from= E/preserve-env='?'
|
||||
# Note that "-h" is both "--host" (which takes an option) and "--help" (which doesn't).
|
||||
# But `-h` as `--help` only counts when it's the only argument (`sudo -h`),
|
||||
# so any argument completion after that should take it as "--host".
|
||||
set -a opts e/edit g/group= H/set-home h/host= 1-help
|
||||
set -a opts i/login K/remove-timestamp k/reset-timestamp l/list n/non-interactive
|
||||
set -a opts P/preserve-groups p/prompt= S/stdin s/shell U/other-user=
|
||||
set -a opts u/user= T/command-timeout= V/version v/validate
|
||||
argparse -s $opts -- $tokens 2>/dev/null
|
||||
# The remaining argv is the subcommand with all its options, which is what
|
||||
# we want.
|
||||
if test -n "$argv"
|
||||
and not string match -qr '^-' $argv[1]
|
||||
string join0 -- $argv
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
function __fish_sudo_no_subcommand
|
||||
not __fish_sudo_print_remaining_args >/dev/null
|
||||
end
|
||||
|
||||
function __fish_complete_sudo_subcommand
|
||||
set -l args (__fish_sudo_print_remaining_args | string split0)
|
||||
set -lx -a PATH /usr/local/sbin /sbin /usr/sbin
|
||||
__fish_complete_subcommand --commandline $args
|
||||
end
|
||||
|
||||
# All these options should be valid for GNU and OSX sudo
|
||||
complete -c sudo -n __fish_no_arguments -s h -d "Display help and exit"
|
||||
complete -c sudo -n __fish_no_arguments -s V -d "Display version information and exit"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s A -d "Ask for password via the askpass or \$SSH_ASKPASS program"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s C -d "Close all file descriptors greater or equal to the given number" -xa "0 1 2 255"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s E -d "Preserve environment"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s H -d "Set home"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s K -d "Remove the credential timestamp entirely"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s P -d "Preserve group vector"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s S -d "Read password from stdin"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s b -d "Run command in the background"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s e -rF -d Edit
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s g -a "(__fish_complete_groups)" -x -d "Run command as group"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s i -d "Run a login shell"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s k -d "Reset or ignore the credential timestamp"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s l -d "List the allowed and forbidden commands for the given user"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s n -d "Do not prompt for a password - if one is needed, fail"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s p -d "Specify a custom password prompt"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s s -d "Run the given command in a shell"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s u -a "(__fish_complete_users)" -x -d "Run command as user"
|
||||
complete -c sudo -n __fish_sudo_no_subcommand -s v -n __fish_no_arguments -d "Validate the credentials, extending timeout"
|
||||
|
||||
# Complete the command we are executed under sudo
|
||||
complete -c sudo -x -n 'not __fish_seen_argument -s e' -a "(__fish_complete_sudo_subcommand)"
|
||||
__fish_complete_sudo sudo
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
set -l systemd_version (systemctl --version | string match "systemd*" | string replace -r "\D*(\d+)\D.*" '$1')
|
||||
set -l commands list-units list-sockets start stop reload restart try-restart reload-or-restart reload-or-try-restart \
|
||||
isolate kill is-active is-failed status show get-cgroup-attr set-cgroup-attr unset-cgroup-attr set-cgroup help \
|
||||
reset-failed list-unit-files enable disable is-enabled reenable preset mask unmask link load list-jobs cancel dump \
|
||||
list-dependencies snapshot delete daemon-reload daemon-reexec show-environment set-environment unset-environment \
|
||||
reset-failed list-unit-files enable disable is-enabled reenable preset mask unmask link list-jobs cancel \
|
||||
list-dependencies daemon-reload daemon-reexec show-environment set-environment unset-environment \
|
||||
default rescue emergency halt poweroff reboot kexec exit suspend suspend-then-hibernate hibernate hybrid-sleep switch-root \
|
||||
list-timers set-property import-environment get-default list-automounts is-system-running try-reload-or-restart freeze \
|
||||
thaw mount-image bind clean
|
||||
if test $systemd_version -gt 208 2>/dev/null
|
||||
set commands $commands cat
|
||||
if test $systemd_version -gt 217 2>/dev/null
|
||||
set commands $commands edit
|
||||
end
|
||||
thaw mount-image bind clean set-default cat list-machines preset-all add-wants add-requires edit
|
||||
if test $systemd_version -gt 243 2>/dev/null
|
||||
set commands $commands log-level log-target service-watchdogs
|
||||
end
|
||||
if test $systemd_version -gt 246 2>/dev/null
|
||||
set commands $commands service-log-level service-log-target
|
||||
end
|
||||
if test $systemd_version -gt 253 2>/dev/null
|
||||
set commands $commands list-paths soft-reboot whoami
|
||||
end
|
||||
if test $systemd_version -gt 255 2>/dev/null
|
||||
set commands $commands sleep
|
||||
end
|
||||
|
||||
set -l types services sockets mounts service_paths targets automounts timers
|
||||
|
||||
function __fish_systemd_properties
|
||||
@@ -28,23 +35,51 @@ end
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a "$commands"
|
||||
|
||||
#### Units commands
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a start -d 'Start one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a stop -d 'Stop one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a restart -d 'Restart one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a reload-or-restart -d 'Reload units if supported or restart them'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a try-reload-or-restart -d 'Reload units if supported or restart them, if running'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a status -d 'Runtime status about one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a enable -d 'Enable one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a disable -d 'Disable one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a isolate -d 'Start a unit and dependencies and disable all others'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a set-default -d 'Set the default target to boot into'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a get-default -d 'Show the default target to boot into'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a set-property -d 'Sets one or more properties of a unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a list-automounts -d 'List automount units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a is-system-running -d 'Return if system is running/starting/degraded'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a freeze -d 'Freeze units with the cgroup freezer'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a thaw -d 'Unfreeze frozen units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a add-requires -d 'Add Requires dependencies to a target unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a add-wants -d 'Add Wants dependencies to a target unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a bind -d 'Bind mount a path into the mount namespace of a unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a cancel -d 'Cancel one or more jobs'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a cat -d 'Show the backing files of one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a clean -d 'Remove config/state/logs for the given units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a daemon-reload -d 'Reload the configuration of the system manager'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a default -d 'Enter and isolate the default mode'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a disable -d 'Disable one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a edit -d 'Edit a unit file or drop-in snippet'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a enable -d 'Enable one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a emergency -d 'Enter and isolate emergency mode'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a exit -d 'Ask the service manager to exit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a freeze -d 'Freeze units with the cgroup freezer'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a get-default -d 'Show the default target to boot into'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a help -d 'Show the manual page for a unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a import-environment -d 'Import environment variables into the service manager'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a isolate -d 'Start a unit and dependencies and disable all others'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a is-system-running -d 'Return if system is running/starting/degraded'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a kexec -d 'Reboot via kexec'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a kill -d 'Kill one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a link -d 'Link a unit file into the unit search path'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a list-automounts -d 'List automount units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a list-machines -d 'List the host and all running local containers'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a mask -d 'Prevent one or more units from starting'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a mount-image -d 'Mount an image into the mount namespace of a unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a preset -d 'Enable/disable a unit depending on preset configuration'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a preset-all -d 'Enable/disable all units depending on preset configuration'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a reenable -d 'Disable the enable one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a reload -d 'Request a unit reload its configuration'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a reload-or-restart -d 'Reload units if supported or restart them'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a rescue -d 'Enter and isolate rescue mode'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a restart -d 'Restart one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a set-default -d 'Set the default target to boot into'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a set-property -d 'Sets one or more properties of a unit'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a show -d 'Show properties of one or more units, jobs, or the manager itself'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a show-environment -d 'Dump the systemd manager environment block'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a soft-reboot -d 'Reboot userspace'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a start -d 'Start one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a status -d 'Runtime status about one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a stop -d 'Stop one or more units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a thaw -d 'Unfreeze frozen units'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a try-reload-or-restart -d 'Reload units if supported or restart them, if running'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a unmask -d 'Stop preventing one or more units from starting'
|
||||
complete -f -c systemctl -n "not __fish_seen_subcommand_from $commands" -a whoami -d 'Query the unit that owns a process'
|
||||
|
||||
# Command completion done via argparse.
|
||||
complete -c systemctl -a '(__fish_systemctl)' -f
|
||||
@@ -87,13 +122,9 @@ complete -x -c systemctl -s M -l machine -d 'Execute operation on a VM or contai
|
||||
complete -f -c systemctl -s h -l help -d 'Print a short help and exit'
|
||||
complete -f -c systemctl -l version -d 'Print a short version and exit'
|
||||
complete -f -c systemctl -l no-pager -d 'Do not pipe output into a pager'
|
||||
|
||||
# New options since systemd 220
|
||||
if test $systemd_version -gt 219 2>/dev/null
|
||||
complete -f -c systemctl -l firmware-setup -n "__fish_seen_subcommand_from reboot" -d "Reboot to EFI setup"
|
||||
complete -f -c systemctl -l now -n "__fish_seen_subcommand_from enable" -d "Also start unit"
|
||||
complete -f -c systemctl -l now -n "__fish_seen_subcommand_from disable mask" -d "Also stop unit"
|
||||
end
|
||||
complete -f -c systemctl -l firmware-setup -n "__fish_seen_subcommand_from reboot" -d "Reboot to EFI setup"
|
||||
complete -f -c systemctl -l now -n "__fish_seen_subcommand_from enable" -d "Also start unit"
|
||||
complete -f -c systemctl -l now -n "__fish_seen_subcommand_from disable mask" -d "Also stop unit"
|
||||
|
||||
# New options since systemd 242
|
||||
if test $systemd_version -ge 242 2>/dev/null
|
||||
|
||||
@@ -1,52 +1 @@
|
||||
set -l commands compile watch init query fonts update help
|
||||
|
||||
# global options
|
||||
complete -c typst -n __fish_use_subcommand -f -l color -d 'Set when to use color' -a 'auto always never'
|
||||
complete -c typst -n __fish_use_subcommand -r -l cert -d 'Path to custom CA certificate'
|
||||
complete -c typst -n __fish_use_subcommand -f -l version -s v -d 'Print version'
|
||||
|
||||
# help option/subcommand
|
||||
complete -c typst -f -l help -s h -d 'Print help'
|
||||
complete -c typst -f -n __fish_use_subcommand -a help -d 'Print help for the given subcommand(s)'
|
||||
complete -c typst -n '__fish_seen_subcommand_from help' -x -a "$commands"
|
||||
|
||||
# subcommands
|
||||
complete -c typst -n __fish_use_subcommand -f -a compile -d 'Compile an input file'
|
||||
complete -c typst -n __fish_use_subcommand -f -a watch -d 'Watch an input file and recompile on changes'
|
||||
complete -c typst -n __fish_use_subcommand -f -a init -d 'Initialize a new project'
|
||||
complete -c typst -n __fish_use_subcommand -f -a query -d 'Process an input file to extract metadata'
|
||||
complete -c typst -n __fish_use_subcommand -f -a fonts -d 'List all discovered fonts'
|
||||
complete -c typst -n __fish_use_subcommand -f -a update -d 'Self update the Typst CLI'
|
||||
|
||||
complete -c typst -n "__fish_seen_subcommand_from $commands" -x
|
||||
|
||||
# common subcommand options
|
||||
# FIXME: only one input file
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -ka '(__fish_complete_suffix .typ)' -d 'Input file'
|
||||
#complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -d 'Output file'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -l root -a '(__fish_complete_directories)' -d 'Project root (for absolute paths)'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -l input -d 'String key-value pair for `sys.inputs`'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w query fonts' -x -l font-path -a '(__fish_complete_directories)' -d 'Additional directories to search for fonts'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -l diagnostic-format -a 'human short' -d 'Format to emit diagnostics in'
|
||||
|
||||
# compile/watch subcommands
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -x -l format -s f -a 'pdf png svg' -d 'Format of the output file'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -l open -d 'Open output file after compilation'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -x -l ppi -d 'Pixels per inch for PNG export'
|
||||
complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -l timings -d 'Produce performance timings'
|
||||
|
||||
# init subcommand
|
||||
complete -c typst -n '__fish_seen_subcommand_from init' -n '__fish_is_nth_token 2' -x -d 'Template to use'
|
||||
complete -c typst -n '__fish_seen_subcommand_from init' -n '__fish_is_nth_token 3' -x -a '(__fish_complete_directories)' -d 'Project directory'
|
||||
|
||||
# query subcommand
|
||||
complete -c typst -n '__fish_seen_subcommand_from query' -x -l field -d 'Extract just one field'
|
||||
complete -c typst -n '__fish_seen_subcommand_from query' -f -l one -d 'Retrieve exactly one element'
|
||||
complete -c typst -n '__fish_seen_subcommand_from query' -x -l format -a 'json yaml' -d 'Format to serialize in'
|
||||
|
||||
# fonts subcommand
|
||||
complete -c typst -n '__fish_seen_subcommand_from fonts' -f -l variants -d 'List style variants of each family'
|
||||
|
||||
# update subcommand
|
||||
complete -c typst -n '__fish_seen_subcommand_from update' -f -l force -d 'Force a downgrade to an older version'
|
||||
complete -c typst -n '__fish_seen_subcommand_from update' -f -l revert -d 'Revert to the version from before the last update'
|
||||
typst completions fish | source
|
||||
|
||||
@@ -11,7 +11,7 @@ complete -c wget -s a -l append-output -d "Append all messages to logfile"
|
||||
complete -c wget -s d -l debug -d "Turn on debug output"
|
||||
complete -c wget -s q -l quiet -d "Quiet mode"
|
||||
complete -c wget -s v -l verbose -d "Verbose mode"
|
||||
complete -c wget -l non-verbose -d "Turn off verbose without being completely quiet"
|
||||
complete -c wget -l no-verbose -d "Turn off verbose without being completely quiet"
|
||||
complete -c wget -o nv -d "Turn off verbose without being completely quiet"
|
||||
complete -c wget -s i -l input-file -d "Read URLs from file" -r
|
||||
complete -c wget -s F -l force-html -d "Force input to be treated as HTML"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# localization: tier1
|
||||
|
||||
# This file does some internal fish setup.
|
||||
# It is not recommended to remove or edit it.
|
||||
#
|
||||
@@ -36,8 +38,8 @@ status get-file __fish_build_paths.fish | source
|
||||
|
||||
# Compute the directories for vendor configuration. We want to include
|
||||
# all of XDG_DATA_DIRS, as well as the __extra_* dirs defined above.
|
||||
set -l xdg_data_dirs
|
||||
if set -q XDG_DATA_DIRS
|
||||
set -l xdg_data_dirs /usr/local/share/fish /usr/share/fish
|
||||
if test -n "$XDG_DATA_DIRS"
|
||||
set --path xdg_data_dirs $XDG_DATA_DIRS
|
||||
set xdg_data_dirs (string replace -r '([^/])/$' '$1' -- $xdg_data_dirs)/fish
|
||||
end
|
||||
@@ -207,7 +209,9 @@ end
|
||||
if status is-interactive
|
||||
__fish_migrate
|
||||
end
|
||||
fish_config theme choose default --no-override
|
||||
if status is-interactive || set -qgx __fish_force_load_default_theme
|
||||
fish_config theme choose default --no-override
|
||||
end
|
||||
|
||||
# As last part of initialization, source the conf directories.
|
||||
# Implement precedence (User > Admin > Extra (e.g. vendors) > Fish) by basically doing "basename".
|
||||
|
||||
62
share/functions/__fish_complete_sudo.fish
Normal file
62
share/functions/__fish_complete_sudo.fish
Normal file
@@ -0,0 +1,62 @@
|
||||
# localization: tier3
|
||||
function __fish_sudo_print_remaining_args
|
||||
set -l tokens (commandline -xpc | string escape) (commandline -ct)
|
||||
set -e tokens[1]
|
||||
# These are all the options mentioned in the man page for Todd Miller's "sudo.ws" sudo (in that order).
|
||||
# If any other implementation has different options, this should be harmless, since they shouldn't be used anyway.
|
||||
set -l opts A/askpass b/background C/close-from= E/preserve-env='?'
|
||||
# Note that "-h" is both "--host" (which takes an option) and "--help" (which doesn't).
|
||||
# But `-h` as `--help` only counts when it's the only argument (`sudo -h`),
|
||||
# so any argument completion after that should take it as "--host".
|
||||
set -a opts e/edit g/group= H/set-home h/host= 1-help
|
||||
set -a opts i/login K/remove-timestamp k/reset-timestamp l/list n/non-interactive
|
||||
set -a opts P/preserve-groups p/prompt= S/stdin s/shell U/other-user=
|
||||
set -a opts u/user= T/command-timeout= V/version v/validate
|
||||
argparse -s $opts -- $tokens 2>/dev/null
|
||||
# The remaining argv is the subcommand with all its options, which is what
|
||||
# we want.
|
||||
if test -n "$argv"
|
||||
and not string match -qr '^-' $argv[1]
|
||||
string join0 -- $argv
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
function __fish_sudo_no_subcommand
|
||||
not __fish_sudo_print_remaining_args >/dev/null
|
||||
end
|
||||
|
||||
function __fish_complete_sudo_subcommand
|
||||
set -l args (__fish_sudo_print_remaining_args | string split0)
|
||||
set -lx -a PATH /usr/local/sbin /sbin /usr/sbin
|
||||
__fish_complete_subcommand --commandline $args
|
||||
end
|
||||
|
||||
function __fish_complete_sudo -a sudo
|
||||
# All these options should be valid for GNU and OSX sudo
|
||||
complete -c $sudo -n __fish_no_arguments -s h -d "Display help and exit"
|
||||
complete -c $sudo -n __fish_no_arguments -s V -d "Display version information and exit"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s A -d "Ask for password via the askpass or \$SSH_ASKPASS program"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s C -d "Close all file descriptors greater or equal to the given number" -xa "0 1 2 255"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s E -d "Preserve environment"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s H -d "Set home"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s K -d "Remove the credential timestamp entirely"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s P -d "Preserve group vector"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s S -d "Read password from stdin"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s b -d "Run command in the background"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s e -rF -d Edit
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s g -a "(__fish_complete_groups)" -x -d "Run command as group"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s i -d "Run a login shell"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s k -d "Reset or ignore the credential timestamp"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s l -d "List the allowed and forbidden commands for the given user"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s n -d "Do not prompt for a password - if one is needed, fail"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s p -d "Specify a custom password prompt"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s s -d "Run the given command in a shell"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s u -a "(__fish_complete_users)" -x -d "Run command as user"
|
||||
complete -c $sudo -n __fish_sudo_no_subcommand -s v -n __fish_no_arguments -d "Validate the credentials, extending timeout"
|
||||
|
||||
# Complete the command we are executed under sudo
|
||||
complete -c $sudo -x -n 'not __fish_seen_argument -s e' -a "(__fish_complete_sudo_subcommand)"
|
||||
end
|
||||
@@ -12,7 +12,7 @@ function __fish_edit_command_if_at_cursor --description 'If cursor is at the com
|
||||
or return 1
|
||||
set -l command_path (command -v -- $command)
|
||||
or return 1
|
||||
test -w $command_path
|
||||
test -r $command_path
|
||||
or return 1
|
||||
string match -q 'text/*' (file --brief --mime-type -L -- $command_path)
|
||||
or return 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# localization: skip(private)
|
||||
# Helper function for completions that need to enumerate Linux modules
|
||||
function __fish_print_modules
|
||||
find /lib/modules/(uname -r)/{kernel,misc} -type f 2>/dev/null | sed -e 's$/.*/\([^/.]*\).*$\1$'
|
||||
find /lib/modules/(uname -r)/{kernel,misc,updates} -type f 2>/dev/null | sed -e 's$/.*/\([^/.]*\).*$\1$'
|
||||
end
|
||||
|
||||
@@ -382,7 +382,6 @@ function __fish_config_theme_choose
|
||||
end
|
||||
end
|
||||
if not $need_hook || test -n "$fish_terminal_color_theme" ||
|
||||
# comment to work around fish_indent bug
|
||||
{
|
||||
$theme_is_color_theme_aware && test -z "$fish_terminal_color_theme"
|
||||
}
|
||||
|
||||
@@ -91,9 +91,8 @@ function funced --description 'Edit function definition'
|
||||
# Repeatedly edit until it either parses successfully, or the user cancels
|
||||
# If the editor command itself fails, we assume the user cancelled or the file
|
||||
# could not be edited, and we do not try again
|
||||
set -l checksum (__fish_md5 "$tmpname")
|
||||
while true
|
||||
set -l checksum (__fish_md5 "$tmpname")
|
||||
|
||||
if not $editor $tmpname
|
||||
echo (_ "Editing failed or was cancelled")
|
||||
else
|
||||
|
||||
@@ -56,6 +56,7 @@ tt {
|
||||
.tab:hover,
|
||||
#tab_contents .master_element:hover,
|
||||
.color_scheme_choice_container:hover,
|
||||
.data_table > tr:hover,
|
||||
.prompt_choices_list > .ng-scope:hover {
|
||||
background-color: #DDE;
|
||||
}
|
||||
@@ -284,6 +285,7 @@ tt {
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.data_table_row {}
|
||||
@@ -310,7 +312,8 @@ tt {
|
||||
}
|
||||
|
||||
.history_delete {
|
||||
width: 20px;
|
||||
width: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.data_table_cell,
|
||||
|
||||
@@ -100,13 +100,14 @@ def is_chromeos_garcon():
|
||||
return False
|
||||
|
||||
|
||||
def run_fish_cmd(text, strict=False):
|
||||
def run_fish_cmd(text, strict=False, env=None):
|
||||
print("$ " + text)
|
||||
p = subprocess.Popen(
|
||||
[FISH_BIN_PATH],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
env=env,
|
||||
)
|
||||
out, err = p.communicate(text.encode("utf-8"))
|
||||
out = out.decode("utf-8", "replace")
|
||||
@@ -811,7 +812,8 @@ class FishConfigHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||
TERMINAL_COLOR_THEME
|
||||
)
|
||||
+ "or __fish_color_theme=unknown __fish_apply_theme\n"
|
||||
+ "__fish_theme_export_for_webconfig"
|
||||
+ "__fish_theme_export_for_webconfig",
|
||||
env=os.environ | {"__fish_force_load_default_theme": "1"},
|
||||
)
|
||||
assert err == ""
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ mod tests {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_abbreviations() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
let parser = TestParser::new();
|
||||
{
|
||||
let mut abbrs = abbrs_get_set();
|
||||
@@ -424,7 +424,7 @@ macro_rules! validate {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn rename_abbrs() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
|
||||
with_abbrs_mut(|abbrs_g| {
|
||||
let mut add = |name: &wstr, repl: &wstr, position: Position| {
|
||||
|
||||
18
src/ast.rs
18
src/ast.rs
@@ -1965,11 +1965,11 @@ fn spaces(&self) -> usize {
|
||||
/// Return the parser's status.
|
||||
fn status(&mut self) -> ParserStatus {
|
||||
if self.unwinding {
|
||||
ParserStatus::unwinding
|
||||
ParserStatus::Unwinding
|
||||
} else if self.flags.leave_unterminated && self.peek_type(0) == ParseTokenType::Terminate {
|
||||
ParserStatus::unsourcing
|
||||
ParserStatus::Unsourcing
|
||||
} else {
|
||||
ParserStatus::ok
|
||||
ParserStatus::Ok
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1977,7 +1977,7 @@ fn status(&mut self) -> ParserStatus {
|
||||
fn unsource_leaves(&mut self) -> bool {
|
||||
matches!(
|
||||
self.status(),
|
||||
ParserStatus::unsourcing | ParserStatus::unwinding
|
||||
ParserStatus::Unsourcing | ParserStatus::Unwinding
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2734,15 +2734,15 @@ fn visit_maybe_newlines(&mut self, nls: &mut MaybeNewlines) {
|
||||
/// The status of our parser.
|
||||
enum ParserStatus {
|
||||
/// Parsing is going just fine, thanks for asking.
|
||||
ok,
|
||||
Ok,
|
||||
|
||||
/// We have exhausted the token stream, but the caller was OK with an incomplete parse tree.
|
||||
/// All further leaf nodes should have the unsourced flag set.
|
||||
unsourcing,
|
||||
Unsourcing,
|
||||
|
||||
/// We encountered an parse error and are "unwinding."
|
||||
/// Do not consume any tokens until we get back to a list type which stops unwinding.
|
||||
unwinding,
|
||||
Unwinding,
|
||||
}
|
||||
|
||||
/// Return tokenizer flags corresponding to parse tree flags.
|
||||
@@ -2832,7 +2832,7 @@ mod tests {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_ast_parse() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
let src = L!("echo");
|
||||
let ast = ast::parse(src, ParseTreeFlags::default(), None);
|
||||
assert!(!ast.any_error);
|
||||
@@ -2889,7 +2889,7 @@ fn test_is_same_node() {
|
||||
}
|
||||
|
||||
// Run with cargo +nightly bench --features=benchmark
|
||||
#[cfg(feature = "benchmark")]
|
||||
#[cfg(all(nightly, feature = "benchmark"))]
|
||||
#[cfg(test)]
|
||||
mod bench {
|
||||
extern crate test;
|
||||
|
||||
@@ -54,8 +54,8 @@ enum AssetDir {
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum AutoloadPath {
|
||||
OnDisk(WString),
|
||||
Embedded(String),
|
||||
Path(WString),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -102,10 +102,7 @@ pub fn resolve_command(&mut self, cmd: &wstr, env: &dyn Environment) -> Autoload
|
||||
.unwrap_or_default(),
|
||||
);
|
||||
match result {
|
||||
AutoloadResult::Path(AutoloadPath::Embedded(_)) => {
|
||||
flogf!(autoload, "Embedded: %s", cmd);
|
||||
}
|
||||
AutoloadResult::Path(AutoloadPath::Path(ref path)) => {
|
||||
AutoloadResult::Path(AutoloadPath::OnDisk(ref path)) => {
|
||||
flogf!(
|
||||
autoload,
|
||||
"Loading %s from var %s from path %s",
|
||||
@@ -114,6 +111,9 @@ pub fn resolve_command(&mut self, cmd: &wstr, env: &dyn Environment) -> Autoload
|
||||
path
|
||||
);
|
||||
}
|
||||
AutoloadResult::Path(AutoloadPath::Embedded(_)) => {
|
||||
flogf!(autoload, "Embedded: %s", cmd);
|
||||
}
|
||||
AutoloadResult::Loaded | AutoloadResult::Pending | AutoloadResult::None => {}
|
||||
}
|
||||
result
|
||||
@@ -126,10 +126,10 @@ pub fn perform_autoload(path: &AutoloadPath, parser: &Parser) {
|
||||
// We do the useful part of what exec_subshell does ourselves
|
||||
// - we source the file.
|
||||
// We don't create a buffer or check ifs or create a read_limit
|
||||
let prev_statuses = parser.get_last_statuses();
|
||||
let prev_statuses = parser.last_statuses();
|
||||
let _put_back = ScopeGuard::new((), |()| parser.set_last_statuses(prev_statuses));
|
||||
match path {
|
||||
AutoloadPath::Path(p) => {
|
||||
AutoloadPath::OnDisk(p) => {
|
||||
let script_source = L!("source ").to_owned() + &escape(p)[..];
|
||||
parser.eval(&script_source, &IoChain::new());
|
||||
}
|
||||
@@ -219,8 +219,8 @@ fn resolve_command_impl(&mut self, cmd: &wstr, paths: &[WString]) -> AutoloadRes
|
||||
};
|
||||
|
||||
let file_id = match &file {
|
||||
AutoloadableFileInfo::FileInfo(file) => &file.file_id,
|
||||
AutoloadableFileInfo::EmbeddedPath(_) => &INVALID_FILE_ID,
|
||||
AutoloadableFileInfo::OnDisk { file_id, .. } => file_id,
|
||||
AutoloadableFileInfo::Embedded { .. } => &INVALID_FILE_ID,
|
||||
};
|
||||
|
||||
// Is this file the same as what we previously autoloaded?
|
||||
@@ -236,8 +236,8 @@ fn resolve_command_impl(&mut self, cmd: &wstr, paths: &[WString]) -> AutoloadRes
|
||||
self.autoloaded_files
|
||||
.insert(cmd.to_owned(), file_id.clone());
|
||||
AutoloadResult::Path(match file {
|
||||
AutoloadableFileInfo::FileInfo(path) => AutoloadPath::Path(path.path),
|
||||
AutoloadableFileInfo::EmbeddedPath(path) => AutoloadPath::Embedded(path),
|
||||
AutoloadableFileInfo::OnDisk { path, .. } => AutoloadPath::OnDisk(path),
|
||||
AutoloadableFileInfo::Embedded { path } => AutoloadPath::Embedded(path),
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -246,20 +246,12 @@ fn resolve_command_impl(&mut self, cmd: &wstr, paths: &[WString]) -> AutoloadRes
|
||||
const AUTOLOAD_STALENESS_INTERVALL: u64 = 15;
|
||||
|
||||
/// Represents a file that we might want to autoload.
|
||||
#[derive(Clone)]
|
||||
struct FileInfo {
|
||||
/// The path to the file.
|
||||
path: WString,
|
||||
/// The metadata for the file.
|
||||
file_id: FileId,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
enum AutoloadableFileInfo {
|
||||
/// An on-disk file.
|
||||
FileInfo(FileInfo),
|
||||
OnDisk { path: WString, file_id: FileId },
|
||||
/// An embedded file.
|
||||
EmbeddedPath(String),
|
||||
Embedded { path: String },
|
||||
}
|
||||
|
||||
// A timestamp is a monotonic point in time.
|
||||
@@ -329,7 +321,7 @@ fn check(
|
||||
|
||||
// Check hits.
|
||||
if let Some(value) = self.known_files.get(cmd) {
|
||||
let embedded = matches!(value.file, AutoloadableFileInfo::EmbeddedPath(_));
|
||||
let embedded = matches!(value.file, AutoloadableFileInfo::Embedded { .. });
|
||||
if allow_stale
|
||||
|| embedded
|
||||
|| Self::is_fresh(value.last_checked, Self::current_timestamp())
|
||||
@@ -431,7 +423,7 @@ fn locate_file(
|
||||
let file_id = file_id_for_path(&path);
|
||||
if file_id != INVALID_FILE_ID {
|
||||
// Found it.
|
||||
return Some(AutoloadableFileInfo::FileInfo(FileInfo { path, file_id }));
|
||||
return Some(AutoloadableFileInfo::OnDisk { path, file_id });
|
||||
}
|
||||
}
|
||||
None
|
||||
@@ -445,11 +437,11 @@ fn locate_asset(&self, cmd: &wstr, asset_dir: AssetDir) -> Option<AutoloadableFi
|
||||
}
|
||||
let narrow = wcs2bytes(cmd);
|
||||
let cmdstr = std::str::from_utf8(&narrow).ok()?;
|
||||
let p = match asset_dir {
|
||||
let path = match asset_dir {
|
||||
AssetDir::Functions => "functions/".to_owned() + cmdstr + ".fish",
|
||||
AssetDir::Completions => "completions/".to_owned() + cmdstr + ".fish",
|
||||
};
|
||||
has_asset(&p).then_some(AutoloadableFileInfo::EmbeddedPath(p))
|
||||
has_asset(&path).then_some(AutoloadableFileInfo::Embedded { path })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,7 +455,7 @@ mod tests {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_autoload() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
use crate::fds::wopen_cloexec;
|
||||
use fish_widestring::wcs2zstring;
|
||||
use nix::fcntl::OFlag;
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
},
|
||||
eprintf, err_fmt,
|
||||
event::{self, Event},
|
||||
fds::heightenize_fd,
|
||||
flog::{self, activate_flog_categories_by_pattern, flog, flogf, set_flog_file_fd},
|
||||
fprintf, function,
|
||||
history::{self, start_private_mode},
|
||||
@@ -203,7 +204,7 @@ fn run_command_list(parser: &Parser, cmds: &[OsString]) -> Result<(), libc::c_in
|
||||
if !errored {
|
||||
// Construct a parsed source ref.
|
||||
let ps = Arc::new(ParsedSource::new(cmd_wcs, ast));
|
||||
let _ = parser.eval_parsed_source(&ps, &IoChain::new(), None, BlockType::top, false);
|
||||
let _ = parser.eval_parsed_source(&ps, &IoChain::new(), None, BlockType::Top, false);
|
||||
retval = Ok(());
|
||||
} else {
|
||||
let backtrace = parser.get_backtrace(&cmd_wcs, &errors);
|
||||
@@ -517,11 +518,7 @@ fn throwing_main() -> i32 {
|
||||
// TODO(MSRV>=1.88): feature(let_chains)
|
||||
if let Some(path) = &opts.profile_startup_output {
|
||||
if opts.profile_startup_output != opts.profile_output {
|
||||
parser.emit_profiling(path);
|
||||
|
||||
// If we are profiling both, ensure the startup data only
|
||||
// ends up in the startup file.
|
||||
parser.clear_profiling();
|
||||
parser.flush_profiling(path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -564,11 +561,11 @@ fn throwing_main() -> i32 {
|
||||
}
|
||||
res = reader_read(parser, libc::STDIN_FILENO, &IoChain::new());
|
||||
} else {
|
||||
let n = wcs2bytes(&args[my_optind]);
|
||||
let filename = &args[my_optind];
|
||||
let n = wcs2bytes(filename);
|
||||
let path = OsStr::from_bytes(&n);
|
||||
my_optind += 1;
|
||||
// Rust sets cloexec by default, see above
|
||||
// We don't need autoclose_fd_t when we use File, it will be closed on drop.
|
||||
match File::open(path) {
|
||||
Err(e) => {
|
||||
flogf!(
|
||||
@@ -579,24 +576,23 @@ fn throwing_main() -> i32 {
|
||||
eprintf!("%s\n", e);
|
||||
}
|
||||
Ok(f) => {
|
||||
let list = &args[my_optind..];
|
||||
parser.set_var(
|
||||
L!("argv"),
|
||||
ParserEnvSetMode::default(),
|
||||
list.iter().map(|s| s.to_owned()).collect(),
|
||||
);
|
||||
let rel_filename = &args[my_optind - 1];
|
||||
let _filename_push = parser
|
||||
.library_data
|
||||
.scoped_set(Some(Arc::new(rel_filename.to_owned())), |s| {
|
||||
&mut s.current_filename
|
||||
});
|
||||
res = reader_read(parser, f.as_raw_fd(), &IoChain::new());
|
||||
if res.is_err() {
|
||||
flog!(
|
||||
warning,
|
||||
wgettext_fmt!("Error while reading file %s", path.to_string_lossy())
|
||||
if let Ok(f) = heightenize_fd(f.into(), true).map(File::from) {
|
||||
let list = &args[my_optind..];
|
||||
parser.set_var(
|
||||
L!("argv"),
|
||||
ParserEnvSetMode::default(),
|
||||
list.iter().map(|s| s.to_owned()).collect(),
|
||||
);
|
||||
let _filename_push = parser
|
||||
.current_filename
|
||||
.scoped_replace(Some(Arc::new(filename.to_owned())));
|
||||
res = reader_read(parser, f.as_raw_fd(), &IoChain::new());
|
||||
if res.is_err() {
|
||||
flog!(
|
||||
warning,
|
||||
wgettext_fmt!("Error while reading file %s", path.to_string_lossy())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -605,7 +601,7 @@ fn throwing_main() -> i32 {
|
||||
let exit_status = if res.is_err() {
|
||||
STATUS_CMD_UNKNOWN
|
||||
} else {
|
||||
parser.get_last_status()
|
||||
parser.last_status()
|
||||
};
|
||||
|
||||
event::fire(
|
||||
@@ -621,7 +617,7 @@ fn throwing_main() -> i32 {
|
||||
);
|
||||
|
||||
if let Some(profile_output) = opts.profile_output {
|
||||
parser.emit_profiling(&profile_output);
|
||||
parser.flush_profiling(&profile_output);
|
||||
}
|
||||
|
||||
history::save_all();
|
||||
|
||||
@@ -173,7 +173,6 @@ fn abbr_show(opts: &Options, streams: &mut IoStreams, parser: &Parser) -> Builti
|
||||
streams.out.append(&bytes2wcstring(&highlight_and_colorize(
|
||||
&result,
|
||||
&parser.context(),
|
||||
parser.vars(),
|
||||
)));
|
||||
} else {
|
||||
streams.out.append(&result);
|
||||
|
||||
@@ -168,7 +168,6 @@ fn list_one(
|
||||
streams.out.append(&bytes2wcstring(&highlight_and_colorize(
|
||||
&out,
|
||||
&parser.context(),
|
||||
parser.vars(),
|
||||
)));
|
||||
} else {
|
||||
streams.out.append(&out);
|
||||
|
||||
@@ -25,7 +25,7 @@ pub fn breakpoint(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr])
|
||||
{
|
||||
if parser
|
||||
.block_at_index(1)
|
||||
.is_none_or(|b| b.typ() == BlockType::breakpoint)
|
||||
.is_none_or(|b| b.typ() == BlockType::Breakpoint)
|
||||
{
|
||||
err_str!("Command not valid at an interactive prompt")
|
||||
.cmd(cmd)
|
||||
@@ -38,5 +38,5 @@ pub fn breakpoint(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr])
|
||||
let io_chain = &streams.io_chain;
|
||||
reader_read(parser, STDIN_FILENO, io_chain)?;
|
||||
parser.pop_block(bpb);
|
||||
BuiltinResult::from_dynamic(parser.get_last_status())
|
||||
BuiltinResult::from_dynamic(parser.last_status())
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
use errno::Errno;
|
||||
use libc::{EACCES, ELOOP, ENOENT, ENOTDIR, EPERM};
|
||||
use nix::unistd::fchdir;
|
||||
use std::sync::Arc;
|
||||
|
||||
// The cd builtin. Changes the current directory to the one specified or to $HOME if none is
|
||||
// specified. The directory can be relative to any directory in the CDPATH variable.
|
||||
@@ -83,46 +82,35 @@ pub fn cd(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> Built
|
||||
let res = wopen_dir(&norm_dir, BEST_O_SEARCH).map_err(|err| err as i32);
|
||||
|
||||
let res = res.and_then(|fd| {
|
||||
match fchdir(&fd) {
|
||||
Ok(()) => Ok(fd),
|
||||
fchdir(&fd).map_err(|_|
|
||||
// nix::Result::Err contains nix::errno::Errno, which does not offer an API for
|
||||
// converting to a raw int.
|
||||
Err(_) => Err(errno::errno().0),
|
||||
}
|
||||
errno::errno().0)
|
||||
});
|
||||
|
||||
let fd = match res {
|
||||
Ok(fd) => fd,
|
||||
Err(err) => {
|
||||
// Some errors we skip and only report if nothing worked.
|
||||
// ENOENT in particular is very low priority
|
||||
// - if in another directory there was a *file* by the correct name
|
||||
// we prefer *that* error because it's more specific
|
||||
if err == ENOENT {
|
||||
let tmp = wreadlink(&norm_dir);
|
||||
// clippy doesn't like this is_some/unwrap pair, but using if let is harder to read IMO
|
||||
#[allow(clippy::unnecessary_unwrap)]
|
||||
if broken_symlink.is_empty() && tmp.is_some() {
|
||||
broken_symlink = norm_dir;
|
||||
broken_symlink_target = tmp.unwrap();
|
||||
} else if best_errno == 0 {
|
||||
best_errno = errno::errno().0;
|
||||
}
|
||||
continue;
|
||||
} else if err == ENOTDIR {
|
||||
best_errno = err;
|
||||
continue;
|
||||
if let Err(err) = res {
|
||||
// Some errors we skip and only report if nothing worked.
|
||||
// ENOENT in particular is very low priority
|
||||
// - if in another directory there was a *file* by the correct name
|
||||
// we prefer *that* error because it's more specific
|
||||
if err == ENOENT {
|
||||
let tmp = wreadlink(&norm_dir);
|
||||
// clippy doesn't like this is_some/unwrap pair, but using if let is harder to read IMO
|
||||
// TODO: if-let-chains
|
||||
if let Some(tmp) = tmp.filter(|_| broken_symlink.is_empty()) {
|
||||
broken_symlink = norm_dir;
|
||||
broken_symlink_target = tmp;
|
||||
} else if best_errno == 0 {
|
||||
best_errno = errno::errno().0;
|
||||
}
|
||||
continue;
|
||||
} else if err == ENOTDIR {
|
||||
best_errno = err;
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
};
|
||||
|
||||
// We need to keep around the fd for this directory, in the parser.
|
||||
let dir_fd = Arc::new(fd);
|
||||
|
||||
// Stash the fd for the cwd in the parser.
|
||||
parser.libdata_mut().cwd_fd = Some(dir_fd);
|
||||
best_errno = err;
|
||||
break;
|
||||
}
|
||||
|
||||
parser.set_var_and_fire(
|
||||
L!("PWD"),
|
||||
|
||||
@@ -692,7 +692,12 @@ pub fn commandline(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr])
|
||||
.finish(streams);
|
||||
return Err(STATUS_CMD_ERROR);
|
||||
}
|
||||
transient = parser.libdata().transient_commandline.clone().unwrap();
|
||||
transient = parser
|
||||
.libdata()
|
||||
.transient_commandline
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.clone();
|
||||
current_buffer = &transient;
|
||||
current_cursor_pos = transient.len();
|
||||
} else if parser.interactive_initialized.load() || is_interactive_session() {
|
||||
|
||||
@@ -231,7 +231,6 @@ fn builtin_complete_print(
|
||||
streams.out.append(&bytes2wcstring(&highlight_and_colorize(
|
||||
&repr,
|
||||
&parser.context(),
|
||||
parser.vars(),
|
||||
)));
|
||||
} else {
|
||||
streams.out.append(&repr);
|
||||
|
||||
@@ -18,7 +18,7 @@ fn disown_job(cmd: &wstr, streams: &mut IoStreams, j: &Job) {
|
||||
}
|
||||
|
||||
// Stopped disowned jobs must be manually signaled; explain how to do so.
|
||||
let pgid = j.get_pgid();
|
||||
let pgid = j.pgid();
|
||||
if j.is_stopped() {
|
||||
if let Some(pgid) = pgid {
|
||||
let _ = killpg(pgid.as_nix_pid(), Some(Signal::SIGCONT));
|
||||
@@ -35,7 +35,7 @@ fn disown_job(cmd: &wstr, streams: &mut IoStreams, j: &Job) {
|
||||
// We cannot directly remove the job from the jobs() list as `disown` might be called
|
||||
// within the context of a subjob which will cause the parent job to crash in exec_job().
|
||||
// Instead, we set a flag and the parser removes the job from the jobs list later.
|
||||
j.mut_flags().disown_requested = true;
|
||||
j.flags_mut().disown_requested = true;
|
||||
add_disowned_job(j);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ pub fn eval(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> Bui
|
||||
&new_cmd,
|
||||
&ios,
|
||||
streams.job_group.as_ref(),
|
||||
BlockType::top,
|
||||
BlockType::Top,
|
||||
false,
|
||||
);
|
||||
let status = if res.was_empty {
|
||||
|
||||
@@ -1206,39 +1206,6 @@ fn read_file(mut f: impl Read) -> Result<WString, ()> {
|
||||
Ok(bytes2wcstring(&buf))
|
||||
}
|
||||
|
||||
fn highlight_role_to_string(role: HighlightRole) -> &'static wstr {
|
||||
match role {
|
||||
HighlightRole::normal => L!("normal"),
|
||||
HighlightRole::error => L!("error"),
|
||||
HighlightRole::command => L!("command"),
|
||||
HighlightRole::keyword => L!("keyword"),
|
||||
HighlightRole::statement_terminator => L!("statement_terminator"),
|
||||
HighlightRole::param => L!("param"),
|
||||
HighlightRole::option => L!("option"),
|
||||
HighlightRole::comment => L!("comment"),
|
||||
HighlightRole::search_match => L!("search_match"),
|
||||
HighlightRole::operat => L!("operat"),
|
||||
HighlightRole::escape => L!("escape"),
|
||||
HighlightRole::quote => L!("quote"),
|
||||
HighlightRole::redirection => L!("redirection"),
|
||||
HighlightRole::autosuggestion => L!("autosuggestion"),
|
||||
HighlightRole::selection => L!("selection"),
|
||||
HighlightRole::pager_progress => L!("pager_progress"),
|
||||
HighlightRole::pager_background => L!("pager_background"),
|
||||
HighlightRole::pager_prefix => L!("pager_prefix"),
|
||||
HighlightRole::pager_completion => L!("pager_completion"),
|
||||
HighlightRole::pager_description => L!("pager_description"),
|
||||
HighlightRole::pager_secondary_background => L!("pager_secondary_background"),
|
||||
HighlightRole::pager_secondary_prefix => L!("pager_secondary_prefix"),
|
||||
HighlightRole::pager_secondary_completion => L!("pager_secondary_completion"),
|
||||
HighlightRole::pager_secondary_description => L!("pager_secondary_description"),
|
||||
HighlightRole::pager_selected_background => L!("pager_selected_background"),
|
||||
HighlightRole::pager_selected_prefix => L!("pager_selected_prefix"),
|
||||
HighlightRole::pager_selected_completion => L!("pager_selected_completion"),
|
||||
HighlightRole::pager_selected_description => L!("pager_selected_description"),
|
||||
}
|
||||
}
|
||||
|
||||
// Entry point for Pygments CSV output.
|
||||
// Our output is a newline-separated string.
|
||||
// Each line is of the form `start,end,role`
|
||||
@@ -1281,14 +1248,7 @@ struct TokenRange {
|
||||
// Now render these to a string.
|
||||
let mut result = String::with_capacity(token_ranges.len() * 32);
|
||||
for range in token_ranges {
|
||||
writeln!(
|
||||
result,
|
||||
"{},{},{}",
|
||||
range.start,
|
||||
range.end,
|
||||
highlight_role_to_string(range.role)
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(result, "{},{},{}", range.start, range.end, range.role).unwrap();
|
||||
}
|
||||
result.into_bytes()
|
||||
}
|
||||
@@ -1320,20 +1280,20 @@ fn prettify(streams: &mut IoStreams, src: &wstr, do_indent: bool) -> WString {
|
||||
/// for the various colors.
|
||||
fn html_class_name_for_color(spec: HighlightSpec) -> &'static wstr {
|
||||
match spec.foreground {
|
||||
HighlightRole::normal => L!("fish_color_normal"),
|
||||
HighlightRole::error => L!("fish_color_error"),
|
||||
HighlightRole::command => L!("fish_color_command"),
|
||||
HighlightRole::statement_terminator => L!("fish_color_statement_terminator"),
|
||||
HighlightRole::param => L!("fish_color_param"),
|
||||
HighlightRole::option => L!("fish_color_option"),
|
||||
HighlightRole::comment => L!("fish_color_comment"),
|
||||
HighlightRole::search_match => L!("fish_color_search_match"),
|
||||
HighlightRole::operat => L!("fish_color_operator"),
|
||||
HighlightRole::escape => L!("fish_color_escape"),
|
||||
HighlightRole::quote => L!("fish_color_quote"),
|
||||
HighlightRole::redirection => L!("fish_color_redirection"),
|
||||
HighlightRole::autosuggestion => L!("fish_color_autosuggestion"),
|
||||
HighlightRole::selection => L!("fish_color_selection"),
|
||||
HighlightRole::Normal => L!("fish_color_normal"),
|
||||
HighlightRole::Error => L!("fish_color_error"),
|
||||
HighlightRole::Command => L!("fish_color_command"),
|
||||
HighlightRole::StatementTerminator => L!("fish_color_statement_terminator"),
|
||||
HighlightRole::Param => L!("fish_color_param"),
|
||||
HighlightRole::Option => L!("fish_color_option"),
|
||||
HighlightRole::Comment => L!("fish_color_comment"),
|
||||
HighlightRole::SearchMatch => L!("fish_color_search_match"),
|
||||
HighlightRole::Operat => L!("fish_color_operator"),
|
||||
HighlightRole::Escape => L!("fish_color_escape"),
|
||||
HighlightRole::Quote => L!("fish_color_quote"),
|
||||
HighlightRole::Redirection => L!("fish_color_redirection"),
|
||||
HighlightRole::Autosuggestion => L!("fish_color_autosuggestion"),
|
||||
HighlightRole::Selection => L!("fish_color_selection"),
|
||||
_ => L!("fish_color_other"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
print_help::print_help,
|
||||
proc::set_interactive_session,
|
||||
reader::{
|
||||
check_exit_loop_maybe_warning, reader_init, safe_reader_set_exit_signal, set_shell_modes,
|
||||
terminal_init,
|
||||
check_exit_loop_maybe_warning, reader_init, set_shell_modes,
|
||||
signal_safe_reader_set_exit_signal, terminal_init,
|
||||
},
|
||||
threads,
|
||||
topic_monitor::topic_monitor_init,
|
||||
@@ -98,7 +98,7 @@ fn process_input(
|
||||
use QueryResultEvent::*;
|
||||
let kevt = match input_queue.readch() {
|
||||
CharEvent::Implicit(ImplicitEvent::Eof) => {
|
||||
safe_reader_set_exit_signal(libc::SIGHUP);
|
||||
signal_safe_reader_set_exit_signal(libc::SIGHUP);
|
||||
continue;
|
||||
}
|
||||
CharEvent::Key(kevt) => kevt,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
use crate::parse_execution::varname_error;
|
||||
use crate::parse_tree::NodeRef;
|
||||
use crate::parser_keywords::parser_keywords_is_reserved;
|
||||
use crate::proc::Pid;
|
||||
use crate::proc::{InternalJobId, Pid};
|
||||
use crate::signal::Signal;
|
||||
use crate::{err_fmt, err_str, function};
|
||||
use nix::unistd::getpid;
|
||||
@@ -59,12 +59,12 @@ fn default() -> Self {
|
||||
|
||||
/// Return the internal_job_id for a pid, or None if none.
|
||||
/// This looks through both active and finished jobs.
|
||||
fn job_id_for_pid(pid: Pid, parser: &Parser) -> Option<u64> {
|
||||
fn job_id_for_pid(pid: Pid, parser: &Parser) -> Option<InternalJobId> {
|
||||
if let Some(job) = parser.job_get_from_pid(pid) {
|
||||
Some(job.internal_job_id)
|
||||
} else {
|
||||
parser
|
||||
.get_wait_handles()
|
||||
.wait_handles()
|
||||
.get_by_pid(pid)
|
||||
.map(|h| h.internal_job_id)
|
||||
}
|
||||
@@ -154,9 +154,9 @@ fn add_named_argument(
|
||||
let caller_id = if parser.scope().is_subshell {
|
||||
parser.scope().caller_id
|
||||
} else {
|
||||
0
|
||||
InternalJobId::default()
|
||||
};
|
||||
if caller_id == 0 {
|
||||
if caller_id == InternalJobId::default() {
|
||||
err_str!("calling job for event handler not found")
|
||||
.cmd(cmd)
|
||||
.finish(streams);
|
||||
@@ -317,7 +317,7 @@ pub fn function(
|
||||
}
|
||||
|
||||
// Extract the current filename.
|
||||
let definition_file = parser.libdata().current_filename.clone();
|
||||
let definition_file = parser.current_filename.borrow().clone();
|
||||
|
||||
// Ensure inherit_vars is unique and then populate it.
|
||||
opts.inherit_vars.sort_unstable();
|
||||
@@ -337,7 +337,7 @@ pub fn function(
|
||||
func_node,
|
||||
named_arguments: opts.named_arguments,
|
||||
// Function descriptions are extracted from scripts in `share` via
|
||||
// `build_tools/fish_xgettext.fish`.
|
||||
// `cargo xtask gettext update`.
|
||||
description: LocalizableString::from_external_source(opts.description),
|
||||
inherit_vars: inherit_vars.into_boxed_slice(),
|
||||
shadow_scope: opts.shadow_scope,
|
||||
@@ -366,13 +366,13 @@ pub fn function(
|
||||
for ed in &opts.events {
|
||||
match *ed {
|
||||
EventDescription::ProcessExit { pid: Some(pid) } => {
|
||||
let wh = parser.get_wait_handles().get_by_pid(pid);
|
||||
let wh = parser.wait_handles().get_by_pid(pid);
|
||||
if let Some(status) = wh.and_then(|wh| wh.status()) {
|
||||
event::fire(parser, event::Event::process_exit(pid, status));
|
||||
}
|
||||
}
|
||||
EventDescription::JobExit { pid: Some(pid), .. } => {
|
||||
let wh = parser.get_wait_handles().get_by_pid(pid);
|
||||
let wh = parser.wait_handles().get_by_pid(pid);
|
||||
if let Some(wh) = wh {
|
||||
if wh.is_completed() {
|
||||
event::fire(parser, event::Event::job_exit(pid, wh.internal_job_id));
|
||||
|
||||
@@ -436,7 +436,6 @@ pub fn functions(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -
|
||||
streams.out.append(&bytes2wcstring(&highlight_and_colorize(
|
||||
&def,
|
||||
&parser.context(),
|
||||
parser.vars(),
|
||||
)));
|
||||
} else {
|
||||
streams.out.append(&def);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
/// Used for the fish `_` builtin for requesting translations.
|
||||
/// For scripts in `share/`, the corresponding strings are extracted from the scripts using
|
||||
/// `build_tools/fish_xgettext.fish`.
|
||||
/// `cargo xtask gettext update`.
|
||||
/// Strings not present in our repo would require a custom MO file for translation to be possible.
|
||||
pub fn gettext(_parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -> BuiltinResult {
|
||||
for arg in &argv[1..] {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
use crate::builtins::error::Error;
|
||||
use crate::history::in_private_mode;
|
||||
use crate::history::{self, History, history_session_id};
|
||||
use crate::history::{self, History, history_id};
|
||||
use crate::reader::commandline_get_state;
|
||||
use crate::{err_fmt, err_str};
|
||||
|
||||
@@ -256,7 +256,7 @@ pub fn history(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) ->
|
||||
// from webconfig.py.
|
||||
let history = commandline_get_state(true)
|
||||
.history
|
||||
.unwrap_or_else(|| History::with_name(&history_session_id(parser.vars())));
|
||||
.unwrap_or_else(|| History::new(history_id(parser.vars())));
|
||||
|
||||
// If a history command hasn't already been specified via a flag check the first word.
|
||||
// Note that this can be simplified after we eliminate allowing subcommands as flags.
|
||||
@@ -288,7 +288,6 @@ pub fn history(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) ->
|
||||
opts.case_sensitive,
|
||||
opts.null_terminate,
|
||||
opts.reverse,
|
||||
&parser.context().cancel_checker,
|
||||
opts.color.enabled(streams),
|
||||
) {
|
||||
status = Err(STATUS_CMD_ERROR);
|
||||
|
||||
@@ -44,7 +44,7 @@ fn cpu_use(j: &Job) -> f64 {
|
||||
|
||||
/// Print information about the specified job.
|
||||
fn builtin_jobs_print(j: &Job, mode: JobsPrintMode, header: bool, streams: &mut IoStreams) {
|
||||
let pgid = match j.get_pgid() {
|
||||
let pgid = match j.pgid() {
|
||||
Some(pgid) => pgid.to_string(),
|
||||
None => "-".to_owned(),
|
||||
};
|
||||
|
||||
@@ -151,7 +151,7 @@ fn path_out(streams: &mut IoStreams, opts: &Options<'_>, s: impl AsRef<wstr>) {
|
||||
if !opts.null_out {
|
||||
streams
|
||||
.out
|
||||
.append_with_separation(s, SeparationType::explicitly, true);
|
||||
.append_with_separation(s, SeparationType::Explicitly, true);
|
||||
} else {
|
||||
let mut output = WString::with_capacity(s.len() + 1);
|
||||
output.push_utfstr(s);
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
use crate::{builtins::error::Error, env::Environment as _, err_fmt, wutil::wrealpath};
|
||||
|
||||
// The pwd builtin. Respect -P to resolve symbolic links. Respect -L to not do that (the default).
|
||||
const short_options: &wstr = L!("LPh");
|
||||
const long_options: &[WOption] = &[
|
||||
const SHORT_OPTIONS: &wstr = L!("LPh");
|
||||
const LONG_OPTIONS: &[WOption] = &[
|
||||
wopt(L!("help"), NoArgument, 'h'),
|
||||
wopt(L!("logical"), NoArgument, 'L'),
|
||||
wopt(L!("physical"), NoArgument, 'P'),
|
||||
@@ -16,7 +16,7 @@ pub fn pwd(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -> Buil
|
||||
let cmd = argv[0];
|
||||
let argc = argv.len();
|
||||
let mut resolve_symlinks = false;
|
||||
let mut w = WGetopter::new(short_options, long_options, argv);
|
||||
let mut w = WGetopter::new(SHORT_OPTIONS, LONG_OPTIONS, argv);
|
||||
while let Some(opt) = w.next_opt() {
|
||||
match opt {
|
||||
'L' => resolve_symlinks = false,
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
common::valid_var_name,
|
||||
env::{EnvMode, EnvVar, EnvVarFlags, Environment as _, READ_BYTE_LIMIT},
|
||||
err_fmt, err_str,
|
||||
history::{HistoryId, MemoryHistoryId},
|
||||
input_common::{DecodeState, InvalidPolicy, decode_utf8},
|
||||
nix::isatty,
|
||||
parse_execution::varname_error,
|
||||
@@ -261,7 +262,11 @@ fn read_interactive(
|
||||
let old_modes = set_shell_modes_temporarily(inputfd);
|
||||
|
||||
// Keep in-memory history only.
|
||||
reader_push(parser, L!(""), conf);
|
||||
reader_push(
|
||||
parser,
|
||||
HistoryId::Memory(MemoryHistoryId::BuiltinRead),
|
||||
conf,
|
||||
);
|
||||
let _modifiable_commandline = parser.scope().readonly_commandline.then(|| {
|
||||
parser.push_scope(|s| {
|
||||
s.readonly_commandline = false;
|
||||
|
||||
@@ -16,8 +16,8 @@ struct Options {
|
||||
no_symlinks: bool,
|
||||
}
|
||||
|
||||
const short_options: &wstr = L!("+hs");
|
||||
const long_options: &[WOption] = &[
|
||||
const SHORT_OPTIONS: &wstr = L!("+hs");
|
||||
const LONG_OPTIONS: &[WOption] = &[
|
||||
wopt(L!("no-symlinks"), NoArgument, 's'),
|
||||
wopt(L!("help"), NoArgument, 'h'),
|
||||
];
|
||||
@@ -31,7 +31,7 @@ fn parse_options(
|
||||
|
||||
let mut opts = Options::default();
|
||||
|
||||
let mut w = WGetopter::new(short_options, long_options, args);
|
||||
let mut w = WGetopter::new(SHORT_OPTIONS, LONG_OPTIONS, args);
|
||||
|
||||
while let Some(c) = w.next_opt() {
|
||||
match c {
|
||||
|
||||
@@ -106,7 +106,7 @@ pub fn parse_return_value(
|
||||
return ControlFlow::Break(Err(STATUS_INVALID_ARGS));
|
||||
}
|
||||
if optind == args.len() {
|
||||
ControlFlow::Continue(parser.get_last_status())
|
||||
ControlFlow::Continue(parser.last_status())
|
||||
} else {
|
||||
match fish_wcstoi(args[optind]) {
|
||||
Ok(i) => ControlFlow::Continue(i),
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
err_fmt, err_str,
|
||||
event::{self, Event},
|
||||
expand::{expand_escape_string, expand_escape_variable},
|
||||
history::{History, history_session_id},
|
||||
history::{History, history_id},
|
||||
parse_execution::varname_error,
|
||||
parser::ParserEnvSetMode,
|
||||
wutil::wcstoi::wcstoi_partial,
|
||||
@@ -567,7 +567,7 @@ fn list(opts: &Options, parser: &Parser, streams: &mut IoStreams) -> BuiltinResu
|
||||
if !names_only {
|
||||
let mut val = WString::new();
|
||||
if opts.shorten_ok && key == "history" {
|
||||
let history = History::with_name(&history_session_id(parser.vars()));
|
||||
let history = History::new(history_id(parser.vars()));
|
||||
for i in 1..history.size() {
|
||||
if val.len() >= 64 {
|
||||
break;
|
||||
|
||||
@@ -557,7 +557,7 @@ pub fn builtin_print_help(parser: &Parser, streams: &mut IoStreams, cmd: &wstr)
|
||||
&cmd,
|
||||
streams.io_chain,
|
||||
streams.job_group.as_ref(),
|
||||
BlockType::top,
|
||||
BlockType::Top,
|
||||
false,
|
||||
);
|
||||
if res.status.normal_exited() && res.status.exit_code() == 2 {
|
||||
@@ -950,7 +950,7 @@ pub fn builtin_break_continue(
|
||||
// This is checked in the AST but we may be invoked dynamically, e.g. just via "eval break".
|
||||
let mut has_loop = false;
|
||||
for b in parser.blocks_iter_rev() {
|
||||
if [BlockType::while_block, BlockType::for_block].contains(&b.typ()) {
|
||||
if [BlockType::WhileBlock, BlockType::ForBlock].contains(&b.typ()) {
|
||||
has_loop = true;
|
||||
break;
|
||||
}
|
||||
@@ -967,9 +967,9 @@ pub fn builtin_break_continue(
|
||||
|
||||
// Mark the status in the libdata.
|
||||
parser.libdata_mut().loop_status = if is_break {
|
||||
LoopStatus::breaks
|
||||
LoopStatus::Breaks
|
||||
} else {
|
||||
LoopStatus::continues
|
||||
LoopStatus::Continues
|
||||
};
|
||||
Ok(SUCCESS)
|
||||
}
|
||||
|
||||
@@ -72,8 +72,8 @@ pub fn source(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
|
||||
|
||||
let sb = parser.push_block(Block::source_block(func_filename.clone()));
|
||||
let _filename_push = parser
|
||||
.library_data
|
||||
.scoped_set(Some(func_filename.clone()), |s| &mut s.current_filename);
|
||||
.current_filename
|
||||
.scoped_replace(Some(func_filename.clone()));
|
||||
|
||||
// Construct argv for the sourced file from our remaining args.
|
||||
// This is slightly subtle. If this is a bare `source` with no args then `argv + optind` already
|
||||
@@ -87,7 +87,7 @@ pub fn source(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
|
||||
parser.pop_block(sb);
|
||||
|
||||
match retval {
|
||||
Ok(_) => BuiltinResult::from_dynamic(parser.get_last_status()),
|
||||
Ok(_) => BuiltinResult::from_dynamic(parser.last_status()),
|
||||
Err(err) => {
|
||||
let esc = escape(&func_filename);
|
||||
err_fmt!(
|
||||
|
||||
@@ -91,9 +91,9 @@ fn to_wstr(self) -> &'static wstr {
|
||||
/// Values that may be returned from the test-feature option to status.
|
||||
#[repr(i32)]
|
||||
enum TestFeatureRetVal {
|
||||
TEST_FEATURE_ON,
|
||||
TEST_FEATURE_OFF,
|
||||
TEST_FEATURE_NOT_RECOGNIZED,
|
||||
On,
|
||||
Off,
|
||||
NotRecognized,
|
||||
}
|
||||
|
||||
struct StatusCmdOpts {
|
||||
@@ -431,12 +431,12 @@ pub fn status(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
|
||||
.finish(streams);
|
||||
return Err(STATUS_INVALID_ARGS);
|
||||
}
|
||||
let mut retval = TestFeatureRetVal::TEST_FEATURE_NOT_RECOGNIZED;
|
||||
let mut retval = TestFeatureRetVal::NotRecognized;
|
||||
for md in features::METADATA {
|
||||
if md.name == args[0] {
|
||||
retval = match feature_test(md.flag) {
|
||||
true => TestFeatureRetVal::TEST_FEATURE_ON,
|
||||
false => TestFeatureRetVal::TEST_FEATURE_OFF,
|
||||
true => TestFeatureRetVal::On,
|
||||
false => TestFeatureRetVal::Off,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -626,7 +626,7 @@ pub fn status(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
|
||||
// streams.out.append_format(L"%d\n", parser.get_lineno(opts.level));
|
||||
streams
|
||||
.out
|
||||
.appendln(&parser.get_lineno_for_display().to_wstring());
|
||||
.appendln(&parser.lineno_for_display().to_wstring());
|
||||
}
|
||||
STATUS_IS_INTERACTIVE => {
|
||||
if is_interactive_session() {
|
||||
|
||||
@@ -152,9 +152,16 @@ enum StringError<'a> {
|
||||
}
|
||||
|
||||
enum RegexError {
|
||||
Compile(WString, pcre2::Error),
|
||||
InvalidCaptureGroupName(WString),
|
||||
InvalidEscape(WString),
|
||||
Compile {
|
||||
pattern: WString,
|
||||
error: pcre2::Error,
|
||||
},
|
||||
InvalidCaptureGroupName {
|
||||
name: WString,
|
||||
},
|
||||
InvalidEscape {
|
||||
replacement: WString,
|
||||
},
|
||||
}
|
||||
|
||||
impl RegexError {
|
||||
@@ -163,14 +170,15 @@ fn print_error(&self, args: &[&wstr], streams: &mut IoStreams) {
|
||||
let subcmd = args[0];
|
||||
use RegexError::*;
|
||||
match self {
|
||||
Compile(pattern, e) => {
|
||||
Compile { pattern, error } => {
|
||||
// TODO: This is misaligned if `pattern` contains characters which are not exactly 1
|
||||
// terminal cell wide.
|
||||
let mut marker: WString =
|
||||
" ".repeat(e.offset().unwrap_or(0).saturating_sub(1)).into();
|
||||
let mut marker: WString = " "
|
||||
.repeat(error.offset().unwrap_or(0).saturating_sub(1))
|
||||
.into();
|
||||
marker.push('^');
|
||||
|
||||
err_fmt!(Error::REGEX_COMPILE, e.error_message())
|
||||
err_fmt!(Error::REGEX_COMPILE, error.error_message())
|
||||
.append_to_msg('\n')
|
||||
.append_to_msg(&err_raw!(pattern).subcmd(cmd, subcmd).to_string())
|
||||
.append_to_msg('\n')
|
||||
@@ -178,15 +186,15 @@ fn print_error(&self, args: &[&wstr], streams: &mut IoStreams) {
|
||||
.subcmd(cmd, subcmd)
|
||||
.finish(streams);
|
||||
}
|
||||
InvalidCaptureGroupName(name) => {
|
||||
InvalidCaptureGroupName { name } => {
|
||||
err_fmt!(
|
||||
"Modification of read-only variable \"%s\" is not allowed",
|
||||
name
|
||||
)
|
||||
.finish(streams);
|
||||
}
|
||||
InvalidEscape(pattern) => {
|
||||
err_fmt!("Invalid escape sequence in pattern \"%s\"", pattern)
|
||||
InvalidEscape { replacement } => {
|
||||
err_fmt!("Invalid escape sequence in pattern \"%s\"", replacement)
|
||||
.subcmd(cmd, subcmd)
|
||||
.finish(streams);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ fn handle(
|
||||
|
||||
streams
|
||||
.out
|
||||
.append_with_separation(arg, SeparationType::explicitly, want_newline);
|
||||
.append_with_separation(arg, SeparationType::Explicitly, want_newline);
|
||||
appended += arg.len();
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ fn handle(
|
||||
if self.allow_empty && appended == 0 {
|
||||
streams.out.append_with_separation(
|
||||
L!(""),
|
||||
SeparationType::explicitly,
|
||||
SeparationType::Explicitly,
|
||||
true, /* historical behavior is to always print a newline */
|
||||
);
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "escape"], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "escape", ""], STATUS_CMD_OK, "''\n");
|
||||
validate!(["string", "escape", "-n", ""], STATUS_CMD_OK, "\n");
|
||||
|
||||
@@ -113,7 +113,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "join"], STATUS_INVALID_ARGS, "");
|
||||
validate!(["string", "join", ""], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "join", "", "", "", ""], STATUS_CMD_OK, "\n");
|
||||
|
||||
@@ -87,7 +87,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "length"], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "length", ""], STATUS_CMD_ERROR, "0\n");
|
||||
validate!(["string", "length", "", "", ""], STATUS_CMD_ERROR, "0\n0\n0\n");
|
||||
|
||||
@@ -234,7 +234,10 @@ fn new(
|
||||
// the capture group names are valid variable names
|
||||
.block_utf_pattern_directive(true)
|
||||
.build(pattern.as_char_slice())
|
||||
.map_err(|e| RegexError::Compile(pattern.to_owned(), e))?;
|
||||
.map_err(|error| RegexError::Compile {
|
||||
pattern: pattern.to_owned(),
|
||||
error,
|
||||
})?;
|
||||
|
||||
Self::validate_capture_group_names(regex.capture_names())?;
|
||||
|
||||
@@ -315,7 +318,7 @@ fn validate_capture_group_names(
|
||||
for name in capture_group_names.iter().filter_map(|n| n.as_ref()) {
|
||||
let wname = str2wcstring(name);
|
||||
if EnvVar::flags_for(&wname).contains(EnvVarFlags::READ_ONLY) {
|
||||
return Err(RegexError::InvalidCaptureGroupName(wname));
|
||||
return Err(RegexError::InvalidCaptureGroupName { name: wname });
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
@@ -427,7 +430,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "match"], STATUS_INVALID_ARGS, "");
|
||||
validate!(["string", "match", ""], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "match", "", ""], STATUS_CMD_OK, "\n");
|
||||
|
||||
@@ -160,12 +160,8 @@ fn interpret_escape(arg: &'args wstr) -> Option<WString> {
|
||||
let mut cursor = arg;
|
||||
while !cursor.is_empty() {
|
||||
if cursor.char_at(0) == '\\' {
|
||||
if let Some(escape_len) = read_unquoted_escape(cursor, &mut result, true, false) {
|
||||
cursor = cursor.slice_from(escape_len);
|
||||
} else {
|
||||
// invalid escape
|
||||
return None;
|
||||
}
|
||||
let escape_len = read_unquoted_escape(cursor, &mut result, true, false)?;
|
||||
cursor = cursor.slice_from(escape_len);
|
||||
} else {
|
||||
result.push(cursor.char_at(0));
|
||||
cursor = cursor.slice_from(1);
|
||||
@@ -187,13 +183,19 @@ fn new(
|
||||
// allowed to be user-controlled here
|
||||
.block_utf_pattern_directive(true)
|
||||
.build(pattern.as_char_slice())
|
||||
.map_err(|e| RegexError::Compile(pattern.to_owned(), e))?;
|
||||
.map_err(|error| RegexError::Compile {
|
||||
pattern: pattern.to_owned(),
|
||||
error,
|
||||
})?;
|
||||
|
||||
let replacement = if feature_test(FeatureFlag::StringReplaceBackslash) {
|
||||
replacement.to_owned()
|
||||
} else {
|
||||
Self::interpret_escape(replacement)
|
||||
.ok_or_else(|| RegexError::InvalidEscape(replacement.to_owned()))?
|
||||
Self::interpret_escape(replacement).ok_or_else(|| {
|
||||
RegexError::InvalidEscape {
|
||||
replacement: replacement.to_owned(),
|
||||
}
|
||||
})?
|
||||
};
|
||||
Self::Regex {
|
||||
replacement,
|
||||
@@ -285,7 +287,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "replace", ""], STATUS_INVALID_ARGS, "");
|
||||
validate!(["string", "replace", "", ""], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "replace", "", "", ""], STATUS_CMD_ERROR, "\n");
|
||||
|
||||
@@ -268,14 +268,14 @@ fn handle(
|
||||
if let Some(val) = splits.get(*field) {
|
||||
streams
|
||||
.out
|
||||
.append_with_separation(val, SeparationType::explicitly, true);
|
||||
.append_with_separation(val, SeparationType::Explicitly, true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for split in splits {
|
||||
streams
|
||||
.out
|
||||
.append_with_separation(&split, SeparationType::explicitly, true);
|
||||
.append_with_separation(&split, SeparationType::Explicitly, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -299,7 +299,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "split"], STATUS_INVALID_ARGS, "");
|
||||
validate!(["string", "split", ":"], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "split", ".", "www.ch.ic.ac.uk"], STATUS_CMD_OK, "www\nch\nic\nac\nuk\n");
|
||||
|
||||
@@ -130,7 +130,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "sub"], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "sub", "abcde"], STATUS_CMD_OK, "abcde\n");
|
||||
validate!(["string", "sub", "-l", "x", "abcde"], STATUS_INVALID_ARGS, "");
|
||||
|
||||
@@ -105,7 +105,7 @@ mod tests {
|
||||
#[serial]
|
||||
#[rustfmt::skip]
|
||||
fn plain() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
validate!(["string", "trim"], STATUS_CMD_ERROR, "");
|
||||
validate!(["string", "trim", ""], STATUS_CMD_ERROR, "\n");
|
||||
validate!(["string", "trim", " "], STATUS_CMD_OK, "\n");
|
||||
|
||||
@@ -1261,7 +1261,7 @@ fn test_test() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_test_builtin() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
test_test_brackets();
|
||||
test_test();
|
||||
}
|
||||
|
||||
@@ -169,7 +169,6 @@ pub fn r#type(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -> B
|
||||
streams.out.append(&bytes2wcstring(&highlight_and_colorize(
|
||||
&def,
|
||||
&parser.context(),
|
||||
parser.vars(),
|
||||
)));
|
||||
} else {
|
||||
streams.out.append(&def);
|
||||
|
||||
@@ -78,7 +78,7 @@ fn find_wait_handles(
|
||||
|
||||
fn get_all_wait_handles(parser: &Parser) -> Vec<WaitHandleRef> {
|
||||
// Get wait handles for reaped jobs.
|
||||
let mut result = parser.get_wait_handles().get_list();
|
||||
let mut result = parser.wait_handles().get_list();
|
||||
|
||||
// Get wait handles for running jobs.
|
||||
for j in &*parser.jobs() {
|
||||
|
||||
@@ -286,7 +286,7 @@ pub fn is_windows_subsystem_for_linux(v: WSL) -> bool {
|
||||
Some(WSL::V1)
|
||||
});
|
||||
|
||||
wsl.map(|wsl| v == WSL::Any || wsl == v).unwrap_or(false)
|
||||
wsl.is_some_and(|wsl| v == WSL::Any || wsl == v)
|
||||
}
|
||||
|
||||
/// Test if the given char is valid in a variable name.
|
||||
@@ -467,7 +467,7 @@ fn test_escape_no_printables() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_escape_quotes() {
|
||||
let _cleanup = test_init();
|
||||
test_init();
|
||||
macro_rules! validate {
|
||||
($cmd:expr, $quote:expr, $no_tilde:expr, $expected:expr) => {
|
||||
assert_eq!(
|
||||
@@ -707,11 +707,11 @@ macro_rules! check_decode {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "benchmark")]
|
||||
#[cfg(all(nightly, feature = "benchmark"))]
|
||||
#[cfg(test)]
|
||||
mod bench {
|
||||
extern crate test;
|
||||
use crate::common::bytes2wcstring;
|
||||
use fish_widestring::bytes2wcstring;
|
||||
use test::Bencher;
|
||||
|
||||
#[bench]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user