APFS parser written in pure Go

Overview

[WIP] go-apfs ūüöß

Go Go Reference GitHub

APFS parser written in pure Go


Originally from this ipsw branch

Install

go get github.com/blacktop/go-apfs

apfs cli

Install

go install github.com/blacktop/go-apfs/cmd/apfs

OR download from Releases (coming soon)

Build

git clone https://github.com/blacktop/go-apfs.git
cd go-apfs
make build

List files

Extract filesystem DMG from IPSW

‚ĚĮ unzip -l IPSW | grep dmg
‚ĚĮ unzip -p IPSW APFS.dmg > APFS.dmg

List the / directory

‚ĚĮ apfs ls APFS.dmg

DT_DIR - 06Jun21 02:54:21 - .ba
DT_DIR - 06Jun21 02:54:22 - .mb
DT_DIR - 06Jun21 02:54:22 - Applications
DT_DIR - 06Jun21 02:54:54 - Developer
DT_DIR - 06Jun21 02:54:54 - Library
DT_DIR - 06Jun21 02:55:03 - System
DT_DIR - 06Jun21 03:01:39 - bin
DT_DIR - 06Jun21 03:01:39 - cores
DT_DIR - 06Jun21 03:01:39 - dev
DT_DIR - 06Jun21 03:01:39 - private
DT_DIR - 06Jun21 03:01:39 - sbin
DT_DIR - 06Jun21 03:01:39 - usr
DT_LNK - 06Jun21 03:01:39 - etc
DT_LNK - 06Jun21 03:01:39 - tmp
DT_LNK - 06Jun21 03:01:53 - var
DT_REG - 06Jun21 02:54:21 - .file

Copy files

‚ĚĮ apfs cp APFS.dmg /System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64e
‚ĚĮ ls -lah dyld_shared_cache_arm64e

-rwxr-xr-x  1 blacktop  staff   1.4G Sep  9 23:56 dyld_shared_cache_arm64e

Spec

Supports up to version 2020-06-22 of the specification

License

Apache 2.0 Copyright (c) 2021 blacktop

Comments
  • feat: Add interactive prompt

    feat: Add interactive prompt

    This PR adds an interactive prompt that I mentioned wanting in a comment on #4. I also fixed some other issues that I had run into, included extraneous newlines in the ls output, and letting cat accept multiple files.

    https://user-images.githubusercontent.com/48231187/159779121-c668e4e2-4e5a-4ee6-be65-a713f1ac1a22.mp4

    opened by CRKatri 8
  • Support for dmgs extracted from IMG4

    Support for dmgs extracted from IMG4

    > tar -xf iPhone14,5_15.4.1_19E258_Restore.ipsw 078-29017-016.dmg                 
    
    > file 078-29017-016.dmg 
    078-29017-016.dmg: IM4P, ramdisk
    
    > ipsw img4 extract 078-29017-016.dmg           
       ‚ÄĘ Parsing Im4p             
          ‚ÄĘ Exracting payload to file 078-29017-016.dmg.payload
    
    > apfs ls 078-29017-016.dmg.payload                           
    Error: found unexpected UDIFResourceFile signure: , expected: koly
    

    As you can see from that, the dmgs extracted from an IM4P can be mounted by hdiutil but not parsed by go-apfs.

    opened by CRKatri 7
  • dpkg conflict with ipsw

    dpkg conflict with ipsw

    Trying to install this alongside with ipsw from the debs results in the following dpkg error,

    Building dependency tree
    Reading state information... Done
    Note, selecting 'go-apfs' instead of './go-apfs_1.0.16_linux_x86_64.deb'
    The following NEW packages will be installed:
      go-apfs
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 0 B/2954 kB of archives.
    After this operation, 6962 kB of additional disk space will be used.
    Get:1 /home/haow6/go-apfs_1.0.16_linux_x86_64.deb go-apfs amd64 1.0.16 [2954 kB]
    (Reading database ... 42651 files and directories currently installed.)
    Preparing to unpack .../go-apfs_1.0.16_linux_x86_64.deb ...
    Unpacking go-apfs (1.0.16) ...
    dpkg: error processing archive /home/haow6/go-apfs_1.0.16_linux_x86_64.deb (--unpack):
     trying to overwrite '/usr/share/doc/ipsw/copyright', which is also in package ipsw 3.1.107
    Errors were encountered while processing:
     /home/haow6/go-apfs_1.0.16_linux_x86_64.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    
    opened by arandomdev 4
  • unknown compression type: CMP_ATTR_UNCOMPRESSED

    unknown compression type: CMP_ATTR_UNCOMPRESSED

    Trying to extract small files from an iOS rootfs dmg gives this error:

    $ apfs cp /data/038-44862-252.dmg /System/Library/FeatureFlags/Domain/Sharing.plist
       ‚®Į unknown compression type: CMP_ATTR_UNCOMPRESSED
    

    (This dmg is from iPhone_4.7_14.5_18E199_Restore.ipsw but any should work to reproduce the issue)

    I speculate that it fails for the exact same set of files that also fail with apfs-fuse (giving "input/output error"), but I haven't done enough testing to be sure.

    opened by nicolas17 4
  • "Unexpected EOF" error

    When extracting /System/Library/FeatureFlags/Global.plist from iPhone_4.7_14.5_18E199_Restore.ipsw rootfs (038-44862-252.dmg), I get an "unexpected EOF" error:

    $ apfs cp 038-44862-252.dmg /System/Library/FeatureFlags/Global.plist
       ‚®Į unexpected EOF           
    

    Running with -V gives confusing log messages, like it was traversing an unrelated directory when the error happened...

    opened by nicolas17 3
  • feat(deps): bump github.com/hashicorp/golang-lru from 0.5.4 to 1.0.1

    feat(deps): bump github.com/hashicorp/golang-lru from 0.5.4 to 1.0.1

    Bumps github.com/hashicorp/golang-lru from 0.5.4 to 1.0.1.

    Release notes

    Sourced from github.com/hashicorp/golang-lru's releases.

    Pointer to v0/v2

    This is a placeholder tag to instruct people to explicitly use v0 tags or use the v2 module.

    Tagging prior to v2

    This is likely the last tag prior to the switch to generics and the v2 package.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • feat(deps): bump github.com/hashicorp/golang-lru from 0.5.4 to 1.0.0

    feat(deps): bump github.com/hashicorp/golang-lru from 0.5.4 to 1.0.0

    Bumps github.com/hashicorp/golang-lru from 0.5.4 to 1.0.0.

    Release notes

    Sourced from github.com/hashicorp/golang-lru's releases.

    Tagging prior to v2

    This is likely the last tag prior to the switch to generics and the v2 package.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • feat(deps): bump github.com/spf13/viper from 1.12.0 to 1.14.0

    feat(deps): bump github.com/spf13/viper from 1.12.0 to 1.14.0

    Bumps github.com/spf13/viper from 1.12.0 to 1.14.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.14.0

    What's Changed

    Enhancements ūüöÄ

    Breaking Changes ūüõ†

    Dependency Updates ‚¨ÜÔłŹ

    Full Changelog: https://github.com/spf13/viper/compare/v1.13.0...v1.14.0

    v1.13.0

    Important: This is the last release supporting Go 1.15.

    What's Changed

    Exciting New Features ūüéČ

    Enhancements ūüöÄ

    Bug Fixes ūüźõ

    Dependency Updates ‚¨ÜÔłŹ

    New Contributors

    ... (truncated)

    Commits
    • b89e554 chore: update crypt
    • db9f89a chore: disable watch on appengine
    • 4b8d148 refactor: use new Has fsnotify method for event matching
    • 2e99a57 refactor: rename watch file to unsupported
    • dcb7f30 feat: fix compilation for all platforms unsupported by fsnotify
    • 2e04739 ci: drop dedicated wasm build
    • b2234f2 ci: add build for aix
    • 52009d3 feat: disable watcher on aix
    • b274f63 build(deps): bump github.com/fsnotify/fsnotify from 1.5.4 to 1.6.0
    • 7c62cfd build(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • feat(deps): bump github.com/spf13/cobra from 1.4.0 to 1.6.0

    feat(deps): bump github.com/spf13/cobra from 1.4.0 to 1.6.0

    Bumps github.com/spf13/cobra from 1.4.0 to 1.6.0.

    Release notes

    Sourced from github.com/spf13/cobra's releases.

    v1.6.0

    Summer 2022 Release

    Some exciting changes make their way to Cobra! Command completions continue to get better and better (including adding --help and --version automatic flags to the completions list). Grouping is now possible in your help output as well! And you can now use the OnFinalize method to cleanup things when all "work" is done. Checkout the full changelog below:


    Features ūüƆ

    Deprecation ūüĎéūüŹľ

    • ExactValidArgs is deprecated (but not being removed entirely). This is abit nuanced, so checkout #1643 for further information and the updated user_guide.md on how this may affect you (and how you can take advantage of the correct behavior in the validators): @‚Äčumarcor #1643

    Bug fixes ūüźõ

    Dependencies ūüó≥ÔłŹ

    Testing ūü§Ē

    Docs ‚úŹÔłŹ

    Misc ūüí≠

    Note: Per #1804, we will be moving away from "seasonal" releases and doing more generic point release targets. Continue to track the milestones and issues in the spf13/cobra GitHub repository for more information!

    Great work everyone! Cobra would never be possible without your contributions! ūüźć

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • feat(deps): bump github.com/vbauerster/mpb/v7 from 7.4.2 to 7.5.3

    feat(deps): bump github.com/vbauerster/mpb/v7 from 7.4.2 to 7.5.3

    Bumps github.com/vbauerster/mpb/v7 from 7.4.2 to 7.5.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • feat(deps): bump github.com/spf13/viper from 1.12.0 to 1.13.0

    feat(deps): bump github.com/spf13/viper from 1.12.0 to 1.13.0

    Bumps github.com/spf13/viper from 1.12.0 to 1.13.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.13.0

    Important: This is the last release supporting Go 1.15.

    What's Changed

    Exciting New Features ūüéČ

    Enhancements ūüöÄ

    Bug Fixes ūüźõ

    Dependency Updates ‚¨ÜÔłŹ

    New Contributors

    Full Changelog: https://github.com/spf13/viper/compare/v1.12.0...v1.13.0

    Commits
    • 57cc9a0 test: fix ini tests
    • 8030d5b build(deps): bump gopkg.in/ini.v1 from 1.66.4 to 1.67.0
    • 312417a Add a DebugTo convenience funtion
    • 202060b Adds support for uint16 with GetUint16
    • 97591f0 build: fix lint violations
    • 9af8dae ci: upgrade golangci-lint
    • 7b4f2b2 ci: add Go 1.19 to CI
    • 601ec81 test: fix toml tests
    • d7f4832 build(deps): bump github.com/pelletier/go-toml/v2 from 2.0.2 to 2.0.5
    • c2f42f3 build(deps): bump github.com/subosito/gotenv from 1.4.0 to 1.4.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • feat(deps): bump goreleaser/goreleaser-action from 3 to 4

    feat(deps): bump goreleaser/goreleaser-action from 3 to 4

    Bumps goreleaser/goreleaser-action from 3 to 4.

    Release notes

    Sourced from goreleaser/goreleaser-action's releases.

    v4.0.0

    What's Changed

    Full Changelog: https://github.com/goreleaser/goreleaser-action/compare/v3...v4.0.0

    v3.2.0

    What's Changed

    • chore: remove workaround for setOutput by @‚Äčcrazy-max (#374)
    • chore(deps): bump @‚Äčactions/core from 1.9.1 to 1.10.0 (#372)
    • chore(deps): bump yargs from 17.5.1 to 17.6.0 (#373)

    Full Changelog: https://github.com/goreleaser/goreleaser-action/compare/v3.1.0...v3.2.0

    v3.1.0

    What's Changed

    • fix: dist resolution from config file by @‚Äčcrazy-max (#369)
    • ci: fix workflow by @‚Äčcrazy-max (#357)
    • docs: bump actions to latest major by @‚Äčcrazy-max (#356)
    • chore(deps): bump crazy-max/ghaction-import-gpg from 4 to 5 (#360)
    • chore(deps): bump ghaction-import-gpg to v5 (#359)
    • chore(deps): bump @‚Äčactions/core from 1.6.0 to 1.8.2 (#358)
    • chore(deps): bump @‚Äčactions/core from 1.8.2 to 1.9.1 (#367)

    Full Changelog: https://github.com/goreleaser/goreleaser-action/compare/v3.0.0...v3.1.0

    Commits
    • 8f67e59 chore: regenerate
    • 78df308 chore(deps): bump minimatch from 3.0.4 to 3.1.2 (#383)
    • 66134d9 Merge remote-tracking branch 'origin/master' into flarco/master
    • 3c08cfd chore(deps): bump yargs from 17.6.0 to 17.6.2
    • 5dc579b docs: add example when using workdir along with upload-artifact (#366)
    • 3b7d1ba feat!: remove auto-snapshot on dirty tag (#382)
    • 23e0ed5 fix: do not override GORELEASER_CURRENT_TAG (#370)
    • 1315dab update build
    • b60ea88 improve install
    • 4d25ab4 Update goreleaser.ts
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • feat(deps): bump github.com/blacktop/lzfse-cgo from 1.1.18 to 1.1.19

    feat(deps): bump github.com/blacktop/lzfse-cgo from 1.1.18 to 1.1.19

    Bumps github.com/blacktop/lzfse-cgo from 1.1.18 to 1.1.19.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • dyld extraction failed on IOS 16 ipsw

    dyld extraction failed on IOS 16 ipsw

    Hi. Thanks a lot for all of your work here !

    Are you going to add support to the new compression method (LZBITMAP) ? I'm failing extracting /root/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64e.28.dyldlinkedit..

    opened by IceCooler148 2
  • Support for raw APFS

    Support for raw APFS

    The new iOS 16.0 ipsws contain cryptexes for divided updates that are in raw APFS dmgs (I think).

    iOS/ipsw/dmgs 
    ‚ěú file 078-37456-031.dmg
    078-37456-031.dmg: Apple File System (APFS), blocksize 4096
    
    iOS/ipsw/dmgs 
    ‚ěú apfs ls 078-37456-031.dmg                                               
    Error: found unexpected UDIFResourceFile signure: , expected: koly
    
    opened by CRKatri 1
  • Add recursive ls

    Add recursive ls

    I would like to get the entire filesystem tree of an APFS dmg. Currently apfs ls only shows a single directory, and running repeated apfs ls foo.dmg /some/directory for every subdirectory found on previous commands is extremely slow. It would be useful if ls had a recursive option. Or maybe a new sub-command...

    opened by nicolas17 3
Releases(v1.0.17)
Owner
null
Pure Go line editor with history, inspired by linenoise

Liner Liner is a command line editor with history. It was inspired by linenoise; everything Unix-like is a VT100 (or is trying very hard to be). If yo

Peter Harris 947 Jan 3, 2023
Readline is a pure go(golang) implementation for GNU-Readline kind library

A powerful readline library in Linux macOS Windows Solaris Guide Demo Shortcut Repos using readline Feedback If you have any questions, please submit

chzyer 1.9k Jan 8, 2023
Source code editor in pure Go.

Editor Source code editor in pure Go. About This is a simple but advanced source code editor As the editor is being developed, the rules of how the UI

Jorge Miguel Pinto 265 Dec 25, 2022
A rich tool for parsing flags and values in pure Golang

A rich tool for parsing flags and values in pure Golang. No additional library is required and you can use everywhere.

ALi.w 14 Jan 25, 2022
A command line http test tool. Maintain the case via git and pure text

httptest A command line http test tool Maintain the api test cases via git and pure text We want to test the APIs via http requests and assert the res

wklken 13 Dec 16, 2022
Pure Go command line prompt with history, kill-ring, and tab completion

Prompt Prompt is a command line prompt editor with history, kill-ring, and tab completion. It was inspired by linenoise and derivatives which eschew u

Peter Mattis 1 Nov 20, 2021
go command line option parser

go-flags: a go library for parsing command line arguments This library provides similar functionality to the builtin flag library of go, but provides

Jesse van den Kieboom 2.3k Jan 4, 2023
Fully featured Go (golang) command line option parser with built-in auto-completion support.

go-getoptions Go option parser inspired on the flexibility of Perl’s GetOpt::Long. Table of Contents Quick overview Examples Simple script Program wit

David Gamba 46 Dec 14, 2022
CONTRIBUTIONS ONLY: A Go (golang) command line and flag parser

CONTRIBUTIONS ONLY What does this mean? I do not have time to fix issues myself. The only way fixes or new features will be added is by people submitt

Alec Thomas 3.3k Dec 29, 2022
Kong is a command-line parser for Go

Kong is a command-line parser for Go Introduction Help Help as a user of a Kong application Defining help in Kong Command handling Switch on the comma

Alec Thomas 1.2k Dec 27, 2022
HAProxy configuration parser

HAProxy configuration parser autogenerated code if you change types/types.go you need to run go run generate/go-generate.go $(pwd) Contributing For co

haproxytech 74 Dec 14, 2022
Brigodier is a command parser & dispatcher, designed and developed for command lines such as for Discord bots or Minecraft chat commands. It is a complete port from Mojang's "brigadier" into Go.

brigodier Brigodier is a command parser & dispatcher, designed and developed to provide a simple and flexible command framework. It can be used in man

Minekube 16 Dec 15, 2022
A simple command line time description parser

Zeit Zeit is an extremely simple command line application to read a natural language time description and output it as a timestamp. The main usecase f

ElKowar 6 Aug 21, 2021
A golang tag key value parser

tag_parser A golang tag key value parser Installation go get github.com/gvassili/tag_parser Example package main import ( "fmt" "github.com/gvass

Gwenael 0 Nov 24, 2021
A Protobuf parser

A Protobuf parser for Go This package contains a cleanroom Protobuf parser for Go using Participle. This was originally an example within Participle.

Alec Thomas 13 Nov 9, 2022
Config File Parser

Config File Parser Speed It was Implemented by binary tree and only suitable for small project. Ignore Any line starting with specific prefix will be

AoXiang Li 1 May 20, 2022
YANG parser and compiler to produce Go language objects

Current support for goyang is for the latest 3 Go releases. goyang YANG parser and compiler for Go programs. The yang package (pkg/yang) is used to co

OpenConfig 203 Dec 12, 2022
Golisp-wtf - A lisp interpreter (still just a parser) implementation in golang. You may yell "What the fuck!?.." when you see the shitty code.

R6RS Scheme Lisp dialect interpreter This is an implementation of a subset of R6RS Scheme Lisp dialect in golang. The work is still in progress. At th

Vladimir Novikov 0 Jan 7, 2022
Ghissue - This repo contains a github issue parser, that is useful for Enterprise Github accounts.

Ghissue - This repo contains a github issue parser, that is useful for Enterprise Github accounts. Sometimes is needed to parse the content of the issue for some data extraction or statistics purposes.

niloofargheibi 1 Feb 6, 2022