xdvdfs
adalah kumpulan alat untuk berinteraksi dengan gambar XDVDFS/XISO.
xdvdfs-cli
adalah alat baris perintah untuk berinteraksi dengan file xiso.
Jika kargo dipasang dengan benar di jalurnya, kargo dapat dipasang dengan:
$ cargo install xdvdfs-cli
Jika tidak, ini dapat dijalankan dari root ruang kerja sebagai proyek default.
Distribusi biner xdvdfs-cli juga tersedia di rilis github.
Menjalankan xdvdfs
tanpa argumen akan memunculkan layar bantuan, menampilkan subperintah yang didukung:
Usage: xdvdfs [COMMAND]
Commands:
ls List files in an image
tree List all files in an image, recursively
md5 Show MD5 checksums for files in an image
checksum Compute deterministic checksum of image contents
info Print information about image metadata
copy-out Copy a file or directory out of the provided image file
unpack Unpack an entire image to a directory
pack Pack an image from a given directory or source ISO image
build-image Pack an image from a given specification
image-spec Manage image spec `xdvdfs.toml` files
compress Pack and compress an image from a given directory or source ISO image
help Print this message or the help of the given subcommand(s)
Menjalankan subperintah dengan tanda -h
akan menampilkan informasi bantuan untuk subperintah spesifik tersebut.
Untuk mengemas gambar dari direktori, jalankan:
$ xdvdfs pack < directory > [optional output path]
Ini akan membuat iso yang cocok 1-ke-1 dengan direktori input.
Gambar dapat dikemas ulang dari image ISO yang ada:
$ xdvdfs pack < input-image > [optional output path]
Ini akan membuat iso yang cocok 1 banding 1 dengan gambar masukan.
Gambar dapat dikemas sambil menulis ulang jalur host ke tujuan berbeda dalam gambar yang mendasarinya menggunakan subperintah xdvdfs build-image
.
Jika fungsi pemetaan ulang jalur tidak diperlukan (yaitu Anda hanya menginginkan aturan /**:/{1}
) maka Anda sebaiknya memilih xdvdfs pack
.
Metode utama untuk mencapai hal ini adalah dengan file xdvdfs.toml
:
[ metadata ]
# Relative path to output iso, if not specified in command [optional]
output = " dist/image.xiso.iso "
# List of host-to-image path mapping rules. At least one rule is required.
# All paths are relative to the provided source path, the `xdvdfs.toml` file,
# or the working directory, in that priority order
# Host paths are matched by glob pattern
# Image paths have fields given by `{x}` substituted, where `x` is the index
# of the glob match, starting at 1. `{0}` matches the entire host path.
# Globs are evaluated in the provided order
[ map_rules ]
# Map contents of the "bin" directory to the image root
bin = " / "
# Map anything in the assets directory to `/assets/`
# Equivalent to `assets = "/assets"`
"assets/**" = " /assets/{1} "
# Map any file in the `sound` subdirectory with name `priority`
# and any extension to the same path in the image
# Note that `{0}` matches the entire relative host path
# Also note that due to the linear ordering of glob matches,
# this takes precedence over the below rule
"sound/priority.*" = " /{0} "
# Map any file in the `sound` subdirectory with extension `a`, `b`, or `c`,
# to `/a/filename`, "/b/filename" or `/c/filename`, based on its filename
# and extension.
"sound/*.{a,b,c}" = " /{2}/{1} "
# but, exclude any files in the `sound` subdirectory with filename `excluded`
# The image path is a don't-care value, and has no effect
"!sound/excluded.*" = " "
# Since globs are evaluated in order, this includes any otherwise excluded
# files in the `sound` subdirectory with name `excluded` and extension `c`
"sound/excluded.c" = " /c/excluded "
Dengan asumsi xdvdfs.toml
dan semua jalur di atas relatif terhadap direktori saat ini, gambar dapat dikemas dengan:
# Produces `dist/image.xiso.iso` with the above configuration
$ xdvdfs build-image
Ada cara lain untuk mengemas gambar dari direktori lain:
# Produces `/dist/image.xiso.iso`
$ xdvdfs build-image < path-to-source-dir >
# Also produces `/dist/image.xiso.iso`
$ xdvdfs build-image < path-to-source-dir > /xdvdfs.toml
# Produces `./dist/output.xiso.iso` in the current directory
$ xdvdfs build-image < path-to-source-dir > dist/output.xiso.iso
# Produces `/dist/image.xiso.iso`, with `xdvdfs.toml` not
# necessarily being in `. Here it is in the current directory
$ xdvdfs build-image -f xdvdfs.toml < path-to-source-dir >
Untuk melihat pemetaan sebenarnya yang diberikan xdvdfs.toml
tanpa benar-benar mengemas gambarnya, gunakan flag -D
atau --dry-run
.
Dimungkinkan juga untuk menyediakan semua konfigurasi file xdvdfs.toml
ke build-image
di baris perintah secara langsung.
-O
untuk menyediakan bidang output
-m :
untuk memberikan aturan peta. Ini bisa diulangi, dan cocokkan dengan urutan yang diberikan. Ini juga dapat digabungkan dengan --dry-run
untuk menguji pemetaan yang berbeda.
Untuk mengonversi sekumpulan opsi baris perintah ke build-image
menjadi file xdvdfs.toml
, gunakan perintah xdvdfs image-spec from
dengan argumen yang sama.
# Outputs equivalent `xdvdfs.toml` to stdout
$ xdvdfs image-spec from -O dist/image.iso -m " bin:/ " -m " assets:/{0} "
# Outputs equivalent `xdvdfs.toml` to a file
$ xdvdfs image-spec from -O dist/image.iso -m " bin:/ " -m " assets:/{0} " xdvdfs.toml
File spesifikasi yang dihasilkan kemudian dapat digunakan dengan build-image
.
Untuk membongkar gambar, jalankan:
$ xdvdfs unpack < path to image > [optional output path]
xdvdfs-cli
mendukung alat utilitas tambahan untuk digunakan dengan gambar.
Memerintah | Tindakan |
---|---|
xdvsfs ls | Mencantumkan file dalam direktori yang ditentukan, defaultnya adalah root |
xdvdfs tree | Mencetak daftar setiap file dalam gambar |
xdvdfs md5 | Mencetak jumlah md5 untuk file tertentu, atau setiap file, dalam gambar |
xdvdfs checksum [path to img1]... | Menghitung checksum untuk semua konten gambar untuk memeriksa integritas terhadap gambar lain |
xdvdfs info | Mencetak info metadata untuk entri direktori tertentu, atau volume root |
xdvdfs copy-out | Menyalin satu file atau direktori dari gambar yang disediakan |
xdvdfs-core
adalah perpustakaan untuk bekerja dengan metadata XDVDFS.
Contoh sederhana membaca file dari jalur tertentu adalah:
async fn read_from_path ( xiso : & Path , file_path : & str ) -> Box < [ u8 ] > {
let mut xiso = std :: fs :: File :: open ( xiso ) . unwrap ( ) ;
let volume = xdvdfs :: read :: read_volume ( & mut xiso ) . await . unwrap ( ) ;
let file_dirent = volume . root_table . walk_path ( & mut xiso , file_path ) . await . unwrap ( ) ;
let data = file_dirent . node . dirent . read_data_all ( & mut xiso ) . await . unwrap ( ) ;
data
}
Perpustakaan ini mendukung no_std. Perangkat blok khusus dapat ditentukan dengan menerapkan ciri-ciri di xdvdfs::blockdev
.
Tanpa fitur alloc
, hanya fitur metadata dasar yang didukung. Fitur alloc
mengaktifkan beberapa fungsi utilitas yang memerlukan alokasi (seperti read_data_all
di atas.
Kode sumber untuk xdvdfs-cli memberikan contoh yang lebih detail tentang cara menggunakan xdvdfs-core di lingkungan dengan std.
Perhatikan bahwa xdvdfs saat ini tidak stabil pada API, dan setelah semver dengan versi utama 0, setiap perubahan versi kecil mungkin menyertakan atau tidak menyertakan perubahan yang dapat menyebabkan gangguan.