feat: add adb&fastboot completions (#834)

Although all correct commands have been added where possible, some
instructions may be missing
This commit is contained in:
undefined 2024-05-11 00:05:44 +08:00 committed by GitHub
parent afde2592a6
commit f1b0432ad9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 516 additions and 0 deletions

View File

@ -0,0 +1,304 @@
def "nu-complete adb one-device-args" [] {
[SERIAL USB]
}
def "nu-complete adb compression-algorithm" [] {
[any none brotli lz4 zstd]
}
def "nu-complete adb sync-partations" [] {
[all data odm oem product system system_ext vendor]
}
def "nu-complete adb wait-for-state" [] {
[-device -recovery -rescue -sideload -bootloader -disconnect]
}
def "nu-complete adb wait-for-transport" [] {
[-usb -local -any]
}
def "nu-complete adb reboot-type" [] {
[
bootloader
recovery
edl
sideload # Reboots into recovery and automatically starts sideload mode.
sideload-auto-reboot
" "
]
}
export extern "adb" [
-a # listen on all network interfaces, not just localhost
-d # use USB device (error if multiple devices connected)
-e # use TCP/IP device (error if multiple TCP/IP devices available)
-s: string # use device with given serial (overrides $ANDROID_SERIAL)
-t: string # use device with given transport id
-H: string # name of adb server host [default=localhost]
-P: int # port of adb server [default=5037]
-L: string # listen on given socket for adb server [default=tcp:localhost:5037]
--exit-on-write-error # exit if stdout is closed
]
# Show this help message.
export extern "adb help" []
# Show version number.
export extern "adb version" []
# Connect to a device via TCP/IP [default PORT=5555].
export extern "adb connect" [
host_port: string # Connect to a device via TCP/IP [default PORT=5555].
]
# Disconnect from given TCP/IP device [default PORT=5555], or all.
export extern "adb disconnect" [
host_port?: string # Disconnect device via TCP/IP [default PORT=5555] (disconnec all if no ip given).
]
# Pair with a device for secure TCP/IP communication.
export extern "adb pair" [
host_port: string # Connect to a device via TCP/IP [default PORT=5555].
PAIRING_CODE: string
]
export extern "adb forward" [
--list # List all forward socket connections.
--no-rebind
LOCAL_REMOTE: string # Forward socket connection using one of the followings. tcp:PORT (local may be “tcp:0” to pick any open port. localreserved:UNIX_DOMAIN_SOCKET_NAME. localfilesystem:UNIX_DOMAIN_SOCKET_NAME. jdwp:PROCESS PID (remote only). vsock:CID:PORT (remote only). acceptfd:FD (listen only). dev:DEVICE_NAME. dev-raw:DEVICE_NAME. (open device in raw mode)**.
--remove: string # Remove specific forward socket connection.
--remove-all # Remove all forward socket connections.
]
export extern "adb reverse" [
--list # List all forward socket connections.
--no-rebind
LOCAL_REMOTE: string # Forward socket connection using one of the followings. tcp:PORT (local may be “tcp:0” to pick any open port. localreserved:UNIX_DOMAIN_SOCKET_NAME. localfilesystem:UNIX_DOMAIN_SOCKET_NAME. jdwp:PROCESS PID (remote only). vsock:CID:PORT (remote only). acceptfd:FD (listen only). dev:DEVICE_NAME. dev-raw:DEVICE_NAME. (open device in raw mode)**.
--remove: string # Remove specific forward socket connection.
--remove-all # Remove all forward socket connections.
]
export extern "adb mdns" [
check # Check if mdns discovery is available.
services # List all discovered services.
]
# List connected devices.
export extern "adb devices" [
-l # Use long output.
]
# Push a single package to the device and install it
export extern "adb install" [
Package: string
-r # Replace existing application.
-t # Allow test packages.
-d # Allow version code downgrade (debuggable packages only).
-p # Partial application install (install-multiple only).
-g # Grant all runtime permissions.
--abi:string # Override platform's default ABI.
--instant # Cause the app to be installed as an ephemeral install app.
--no-streaming # Always push APK to device and invoke Package Manager as separate steps.
--streaming # Force streaming APK directly into Package Manager.
--fastdeploy # Use fast deploy.
--no-fastdeploy # Prevent use of fast deploy.
--force-agent # Force update of deployment agent when using fast deploy.
--date-check-agent # Update deployment agent when local version is newer and using fast deploy.
--version-check-agent # Update deployment agent when local version has different version code and using fast deploy.
--local-agent # Locate agent files from local source build (instead of SDK location). See also adb shell pm help for more options.
]
# Push one or more packages to the device and install them atomically
export extern "adb install-multiple" [
Package: string
-r # Replace existing application.
-t # Allow test packages.
-d # Allow version code downgrade (debuggable packages only).
-p # Partial application install (install-multiple only).
-g # Grant all runtime permissions.
--abi:string # Override platform's default ABI.
--instant # Cause the app to be installed as an ephemeral install app.
--no-streaming # Always push APK to device and invoke Package Manager as separate steps.
--streaming # Force streaming APK directly into Package Manager.
--fastdeploy # Use fast deploy.
--no-fastdeploy # Prevent use of fast deploy.
--force-agent # Force update of deployment agent when using fast deploy.
--date-check-agent # Update deployment agent when local version is newer and using fast deploy.
--version-check-agent # Update deployment agent when local version has different version code and using fast deploy.
--local-agent # Locate agent files from local source build (instead of SDK location). See also adb shell pm help for more options.
]
export extern "adb install-multi-package" [
Package: string
-r # Replace existing application.
-t # Allow test packages.
-d # Allow version code downgrade (debuggable packages only).
-p # Partial application install (install-multiple only).
-g # Grant all runtime permissions.
--abi:string # Override platform's default ABI.
--instant # Cause the app to be installed as an ephemeral install app.
--no-streaming # Always push APK to device and invoke Package Manager as separate steps.
--streaming # Force streaming APK directly into Package Manager.
--fastdeploy # Use fast deploy.
--no-fastdeploy # Prevent use of fast deploy.
--force-agent # Force update of deployment agent when using fast deploy.
--date-check-agent # Update deployment agent when local version is newer and using fast deploy.
--version-check-agent # Update deployment agent when local version has different version code and using fast deploy.
--local-agent # Locate agent files from local source build (instead of SDK location). See also adb shell pm help for more options.
]
# Remove specified application from the device
export extern "adb uninstall" [
APPLICATION_ID: string # Remove this APPLICATION_ID from the device.
-k
]
# Run remote shell command (interactive shell if no command given)
export extern "adb shell" [
-e # Choose escape character, or “none”; default ~.
-n # Don't read from stdin
-T # Disable pty allocation.
-t # Allocate a pty if on a tty (-tt force pty allocation).
-x # Disable remote exit codes and stdout/stderr separation.
COMMAND?:string # Run emulator console COMMAND
]
# Copy local files/directories to device.
export extern "adb push" [
--sync # Only push files that are newer on the host than the device.
-n # Dry run, push files to device without storing to the filesystem.
-z:string@"nu-complete adb compression-algorithm" # enable compression with a specified algorithm (any/none/brotli/lz4/zstd).
-Z # Disable compression.
]
# Copy files/dirs from device
export extern "adb pull" [
-a # preserve file timestamp and mode.
--sync # Only push files that are newer on the host than the device.
-n # Dry run. Push files to device without storing to the filesystem.
-z:string@"nu-complete adb compression-algorithm" # enable compression with a specified algorithm (any/none/brotli/lz4/zstd).
-Z # Disable compression.
...remote: string
local: string
]
# Sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
export extern "adb sync" [
parations: string@"nu-complete adb sync-partations"
-n # Dry run. Push files to device without storing to the filesystem.
-z:string@"nu-complete adb compression-algorithm" # enable compression with a specified algorithm (any/none/brotli/lz4/zstd).
-Z # Disable compression.
-l # List files that would be copied, but don't copy them.
]
# Ensure that there is a server running.
export extern "adb start-server" [ # only allowed with 'start-server' or 'server nodaemon',
--one-device: string@"nu-complete adb one-device-args" #server will only connect to one USB device, specified by a serial number or USB device address.
]
# Kill the server if it is running.
export extern "adb kill-server" []
# Close connection from host or device side to force reconnect.
export extern "adb reconnect" [
device?: string
]
# Close connection from device side to force reconnect.
export extern "adb reconnect device" []
# Reset offline/unauthorized devices to force reconnect.
export extern "adb reconnect offline" []
# Attach a detached USB device identified by its SERIAL number.
export extern "adb attach" [
SERIAL: string
]
# Detach from a USB device identified by its SERIAL to allow use by other processes.
export extern "adb detach" [
SERIAL: string
]
# list features supported by adb server.
export extern "adb host-features" []
# list features supported by both adb server and device.
export extern "adb features" []
# Write bugreport
export extern "adb bugreport" [
PATH: string # PATH [default=bugreport.zip]; if PATH is a directory, the bug report is saved in that directory. devices that don't support zipped bug reports output to stdout.
]
# List pids of processes hosting a JDWP transport.
export extern "adb jdwp" []
# Show device log (logcat --help for more).
export extern "adb logcat" []
# Disable dm-verity checking on userdebug builds.
export extern "adb disable-verity" []
# Re-enable dm-verity checking on userdebug builds.
export extern "adb enable-verity" []
# Generate adb public/private key; private key stored in FILE.
export extern "adb keygen" [
FILE: string
]
# Wait for device to be in a given state.
export extern "adb wait-for" [
STATE: string@"nu-complete adb wait-for-state"
TRANSPORT: string@"nu-complete adb wait-for-transport"
]
# Print offline | bootloader | device.
export extern "adb get-state" []
# Print SERIAL_NUMBER.
export extern "adb get-serialno" []
# Print DEVICE_PATH.
export extern "adb get-devpath" []
# Remount partitions read-write.
export extern "adb remount" [
-R # Automatically reboot the device.
]
# Reboot the device; defaults to booting system image but supports bootloader and recovery too.
export extern "adb reboot" [
type:string@"nu-complete adb reboot-type"
]
# Sideload the given full OTA package
export extern "adb sideload" [
OTAPACKAGE: string
]
# Restart adbd with root permissions.
export extern "adb root" []
# Restart adbd without root permissions.
export extern "adb unroot" []
# Restart adbd listening on USB.
export extern "adb usb" []
# Restart adbd listening on TCP on PORT.
export extern "adb tcpip" [
PORT:string
]

View File

@ -0,0 +1,24 @@
# SDK Platform Tools completions
A Nushell extern definition and completers for [Android Debugger Bridge `adb`](https://developer.android.com/tools/adb).
This module provides extern definitions for almost all of the `adb` commands and their flags.
## Usage
simply import the extern definitions with
```nu
use path/to/adb-completions.nu * # don't forget the star `*`
```
or
```nu
source path/to/adb-completions.nu
```
Once imported completions will be available for commands, flags, options, and some values as well.
Display the commands by entering the `→ tab` key in the command line after `adb`or any of it's command options.

View File

@ -0,0 +1,164 @@
# Flash all partitions from $ANDROID_PRODUCT_OUT. On A/B devices, flashed slot is set as active. Secondary images may be flashed to inactive slot.
export extern "fastboot flashall" []
# Flash given partition, using the image from $ANDROID_PRODUCT_OUT if no filename is given.
export extern "fastboot flash" [
partation: string
filename?: string # [Default: $ANDROID_PRODUCT_OUT]
]
# Flash all partitions from an update.zip package.
export extern "fastboot update" [
ZIP: string
]
# List devices in bootloader
export extern "fastboot devices" [
-l # with device paths
]
# ===================Basics========================================== #
# Lock partitions for flashing
export extern "fastboot flashing lock" []
# Unlock partitions for flashing
export extern "fastboot flashing unlock" []
# Lock 'critical' bootloader partitions.
export extern "fastboot flashing lock_critical" []
# Unlock 'critical' bootloader partitions.
export extern "fastboot flashing unlock_critical" []
# Check whether unlocking is allowed (1) or not(0).
export extern "fastboot flashing get_unlock_ability" []
# =========================advanced=================================== #
# Erase a flash partition.
export extern "fastboot erase" [
paration: string
]
# Format a flash partition.
export extern "fastboot format" [
partation: string
]
# Set the active slot.
export extern "fastboot set_active" [
slot_name: string
]
# Execute OEM-specific command.
export extern "fastboot oem" [
command: string
]
# Wipe a GSI installation (fastbootd only).
export extern "fastboot gsi wipe" []
# Disable a GSI installation (fastbootd only).
export extern "fastboot gsi disable" []
# Show status of a GSI installation (fastbootd only).
export extern "fastboot gsi status" []
# Wipe the super partition. This will reset it to contain an empty set of default dynamic partitions.
export extern "fastboot wipe-super" [
super_empty: string
]
# Create a logical partition with the given name and size, in the super partition.
export extern "fastboot create-logical-partition" [
name: string
size: string
]
# Change the size of the named logical partition.
export extern "fastboot resize-logical-partition" [
name: string
size: string
]
# Delete a logical partition with the given name.
export extern "fastboot delete-logical-partition" [
name: string
]
# On devices that support snapshot-based updates, cancel an in-progress update. This may make the device unbootable until it is reflashed.
export extern "fastboot snapshot-update cancel" []
# On devices that support snapshot-based updates, finish an in-progress update if it is in the "merging" phase.
export extern "fastboot snapshot-update merge" []
# Fetch a partition image from the device.
export extern "fastboot fetch" [
PARTITION: string
OUT_FILE: string
]
# Download and boot kernel from RAM.
export extern "fastboot boot" [
kernel: string
ramdisk?: string
second_ramdisk?: string
]
# Create boot image and flash it.
export extern "fastboot flash:raw" [
partation: string
kernel: string
ramdisk?: string
second_ramdisk?: string
--dtb:string # Specify path to DTB for boot image header version 2.
--cmdline:string # Override kernel command line.
--kernel-offset:string # Set kernel offset (default: 0x00008000).
--ramdisk-offset:string # Set ramdisk offset (default: 0x01000000).
--tags-offset:string # Set tags offset (default: 0x00000100).
--dtb-offset:string # Set dtb offset (default: 0x01100000).
--page-size:string # Set flash page size (default: 2048).
--header-version:string # Set boot image header version.
--os-version:string # Set boot image OS version (default: 0.0.0). MAJOR[.MINOR[.PATCH]]
--os-patch-level: string # Set boot image OS security patch level. YYYY-MM-DD
]
# Sends given file to stage for the next command.
export extern "fastboot stage" [
IN_FILE: string
]
# Writes data staged by the last command to a file.
export extern "fastboot get_staged" [
OUT_FILE:string
]
export extern "fastboot" [
-w # Wipe userdata.
-s: string # Specify a USB/Network device. [ SERIAL | tcp|udp:HOST[:PORT] ]
-S:string # Break into sparse files no larger than SIZE. SIZE[K|M|G]
--force # Force a flash operation that may be unsafe.
--slot: string # Use SLOT; 'all' for both slots, 'other' for non-current slot (default: current active slot).
--set-active:string # Sets the active slot before rebooting.
--skip-secondary # Don't flash secondary slots in flashall/update.
--skip-reboot # Don't reboot device after flashing.
--disable-verity # Sets disable-verity when flashing vbmeta.
--disable-verification # Sets disable-verification when flashing vbmeta.
--disable-super-optimization # Disables optimizations on flashing super partition.
--disable-fastboot-info # Will collects tasks from image list rather than $OUT/fastboot-info.txt
--fs-options # Enable filesystem features. OPTION supports casefold, projid, compress
--unbuffered # Don't buffer input or output.
--verbose(-v) # Verbose output.
--version # Display version.
--help(-h) # Show help message.
]

View File

@ -0,0 +1,24 @@
# SDK Platform Tools completions
A Nushell extern definition and completers for [SDK Platform Tools `fastboot`](https://developer.android.com/tools/releases/platform-tools).
This module provides extern definitions for almost all of the `fastboot` commands and their flags.
## Usage
simply import the extern definitions with
```nu
use path/to/fastboot-completions.nu * # don't forget the star `*`
```
or
```nu
source path/to/fastboot-completions.nu
```
Once imported completions will be available for commands, flags, options, and some values as well.
Display the commands by entering the `→ tab` key in the command line after `fastboot` or any of it's command options.