kubo/docs
segfault_bits c1fd4d70f5
Some checks failed
CodeQL / codeql (push) Has been cancelled
Docker Check / lint (push) Has been cancelled
Docker Check / build (push) Has been cancelled
Gateway Conformance / gateway-conformance (push) Has been cancelled
Gateway Conformance / gateway-conformance-libp2p-experiment (push) Has been cancelled
Go Build / go-build (push) Has been cancelled
Go Check / go-check (push) Has been cancelled
Go Lint / go-lint (push) Has been cancelled
Go Test / unit-tests (push) Has been cancelled
Go Test / cli-tests (push) Has been cancelled
Go Test / example-tests (push) Has been cancelled
Interop / interop-prep (push) Has been cancelled
Sharness / sharness-test (push) Has been cancelled
Spell Check / spellcheck (push) Has been cancelled
Interop / helia-interop (push) Has been cancelled
Interop / ipfs-webui (push) Has been cancelled
feat(cli): ls --long (#11103)
* Implements the -l/--long flag for the ipfs ls command to display Unix-style
file permissions and modification times, similar to the traditional ls -l.

When the --long flag is used, the output includes:
- File mode/permissions in Unix format (e.g., -rw-r--r--, drwxr-xr-x)
- File hash (CID)
- File size (when --size is also specified)
- Modification time in human-readable format
- File name

The permission string implementation handles all file types and special bits:
- File types: regular (-), directory (d), symlink (l), named pipe (p),
  socket (s), character device (c), block device (b)
- Special permission bits: setuid (s/S), setgid (s/S), sticky (t/T)
  - Lowercase when execute bit is set, uppercase when not set

The timestamp format follows Unix ls conventions:
- Recent files (within 6 months): "Jan 02 15:04"
- Older files: "Jan 02  2006"

Signed-off-by: sneax <paladesh600@gmail.com>

* fix(ls): correct --long flag header order and help text

- fix header column order: was "Mode Hash Size Name ModTime" but data
  outputs "Mode Hash Size ModTime Name", now headers match data order
- remove redundant if/else branch in directory output that had
  identical code in both branches
- add example output to help text showing format with mode, hash,
  size, mtime, and name columns
- document that files without preserved metadata show '----------'
  for mode and '-' for mtime
- add changelog entry for v0.40

* test(ls): add format stability tests for --long flag

add tests to prevent formatting regressions in ipfs ls --long output:

unit tests (core/commands/ls_test.go):
- TestFormatMode: 20 cases covering all file types (regular, dir,
  symlink, pipe, socket, block/char devices) and special permission
  bits (setuid, setgid, sticky with/without execute)
- TestFormatModTime: zero time, old time (year format), future time,
  format length consistency

integration tests (test/cli/ls_test.go):
- explicit full output comparison with deterministic CIDs to catch
  any formatting changes
- header column order verification for --long with --size=true/false
- files without preserved metadata (---------- and - placeholders)
- directory output (trailing slash, d prefix in mode)

requested in: https://github.com/ipfs/kubo/pull/11103#issuecomment-3745043561

* fix(ls): improve --long flag docs and fix minor issues

- improved godocs for formatMode and formatModTime functions
- fixed permBit signature: char rune → char byte (avoids unnecessary cast)
- clarified help text: mode/mtime are optional UnixFS metadata
- documented that times are displayed in UTC
- fixed flaky time test by using 1 month ago instead of 1 hour
- removed hardcoded CID assertion that would break on DAG changes

* fix(ls): show "-" for missing mode in --long output

display "-" instead of "----------" when mode metadata is not preserved.
this avoids ambiguity with Unix mode 0000 and matches how missing mtime
is already displayed. follows common Unix tool conventions (ps, netstat)
where "-" indicates "not available".

---------

Signed-off-by: sneax <paladesh600@gmail.com>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2026-01-16 02:27:32 +01:00
..
changelogs feat(cli): ls --long (#11103) 2026-01-16 02:27:32 +01:00
examples feat(config): add Gateway.MaxRequestDuration option (#11138) 2026-01-15 19:31:16 +01:00
logo docs: kubo logo sources (#10964) 2025-09-09 15:01:52 +02:00
production doc: document reverse proxy bug 2020-06-15 17:01:40 -07:00
specifications Docs fix spelling issues (#10493) 2024-08-26 11:32:07 -07:00
add-code-flow.md Minor wording fixes in docs (#10822) 2025-05-30 15:14:37 -07:00
AUTHORS Updated authors doc 2016-08-18 11:54:48 -07:00
cli-http-api-core-diagram.png docs: README refresh, add cli-http-api-core diagram 2018-08-22 16:09:51 -07:00
command-completion.md feat: add zsh completions (#10040) 2023-08-17 16:43:27 +02:00
config.md feat(pubsub): persistent validation and diagnostic commands (#11110) 2026-01-16 00:27:09 +01:00
content-blocking.md chore: fix typos and comment formatting (#10653) 2025-01-13 18:56:53 +01:00
customizing.md docs(customizing.md): add kubo binary imports description 2023-12-19 19:52:50 -05:00
datastores.md Minor wording fixes in docs (#10822) 2025-05-30 15:14:37 -07:00
debug-guide.md docs:added GOLOG_LOG_LEVEL to debug-guide for logging more info (#10894) 2025-08-05 16:28:09 +02:00
delegated-routing.md docs: clarify Routing.Type=custom as experimental (#11111) 2026-01-11 00:39:30 +01:00
developer-certificate-of-origin Add developer certificate of origin document 2017-06-26 15:36:35 -07:00
developer-guide.md docs: add developer guide for local development workflow (#11128) 2026-01-07 17:09:13 +01:00
EARLY_TESTERS.md docs: update RELEASE_CHECKLIST.md (#10496) 2024-09-11 19:06:54 +02:00
environment-variables.md feat(config): AutoConf with "auto" placeholders (#10883) 2025-08-20 05:59:11 +02:00
experimental-features.md feat(pubsub): persistent validation and diagnostic commands (#11110) 2026-01-16 00:27:09 +01:00
file-transfer.md chore: fix typos and comment formatting (#10653) 2025-01-13 18:56:53 +01:00
fuse.md Update fuse docs with FreeBSD specifics (#10820) 2025-06-02 10:01:26 -07:00
gateway.md feat(config): add Gateway.MaxRequestDuration option (#11138) 2026-01-15 19:31:16 +01:00
generate-authors.sh added AUTHORS file 2015-02-11 07:42:21 -08:00
http-rpc-clients.md docs: updated links and refs to external resources (#10368) 2024-03-16 00:59:22 +01:00
implement-api-bindings.md Minor wording fixes in docs (#10822) 2025-05-30 15:14:37 -07:00
libp2p-resource-management.md Docs fix spelling issues (#10493) 2024-08-26 11:32:07 -07:00
metrics.md feat: enable DHT Provide Sweep by default (#10955) 2025-11-12 23:55:17 +01:00
p2p-tunnels.md feat(p2p): add --foreground flag to listen and forward commands (#11099) 2026-01-09 19:22:43 +01:00
plugins.md feat: telemetry plugin (#10866) 2025-08-18 20:46:05 +02:00
provide-stats.md docs: note sweep+accelerated DHT client limitation (#11084) 2025-11-28 23:10:56 +01:00
README.md docs: add developer guide for local development workflow (#11128) 2026-01-07 17:09:13 +01:00
RELEASE_CHECKLIST.md docs: update release checklist based on v0.38.0 learnings (#11007) 2025-10-09 03:27:20 +02:00
RELEASE_ISSUE_TEMPLATE.md docs: update RELEASE_CHECKLIST.md (#10496) 2024-09-11 19:06:54 +02:00
releases_thunderdome.md docs: update RELEASE_CHECKLIST.md (#10496) 2024-09-11 19:06:54 +02:00
releases.md Minor wording fixes in docs (#10822) 2025-05-30 15:14:37 -07:00
telemetry.md feat(telemetry): collect high level provide DHT sweep settings (#11056) 2025-11-13 01:28:15 +01:00
transports.md refactor: kubo in ./docs 2022-07-06 23:45:25 +02:00
windows.md docs: updated links and refs to external resources (#10368) 2024-03-16 00:59:22 +01:00

Developer Documentation and Guides

If you are looking for User Documentation & Guides, please visit docs.ipfs.tech or check General Documentation.

If youre experiencing an issue with IPFS, please follow our issue guide when filing an issue!

Otherwise, check out the following guides to using and developing IPFS:

General Documentation

Developing kubo

Guides

Advanced User Guides

Other