diff --git a/README.md b/README.md index 5ee507e..6186082 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,60 @@ # go-coreutils -This is an education project that attempts to reimplement the GNU coreutils in Go. You can find the full manual here: - -https://www.gnu.org/software/coreutils/manual/coreutils.html \ No newline at end of file +This is an education project that attempts to reimplement the GNU coreutils in Go. You can find the full manual here: + +https://www.gnu.org/software/coreutils/manual/coreutils.html + +## Go Packages to Teach + +* bufio, io -- https://pkg.go.dev/bufio@go1.25.3 +* container -- heap, list, or ring +* sha512 -- https://pkg.go.dev/crypto/sha512@go1.25.3 +* image -- maybe an imagemagick? +* maps -- https://pkg.go.dev/maps@go1.25.3 +* net -- https://pkg.go.dev/net@go1.25.3 +* os -- https://pkg.go.dev/os@go1.25.3 +* path -- probably all of them use it +* regex -- https://pkg.go.dev/regexp@go1.25.3 +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 +* strconv -- https://pkg.go.dev/strconv@go1.25.3 +* time -- https://pkg.go.dev/time@go1.25.3 + +## Every Project Must Use + +* testing -- https://pkg.go.dev/testing@go1.25.3 +* flag -- https://pkg.go.dev/flag + +## Possible Tools + +* cat -- already made +* od -- already made +* wc -- https://www.gnu.org/software/coreutils/manual/coreutils.html#wc-invocation + - io, regex +* tr - https://www.gnu.org/software/coreutils/manual/coreutils.html#tr-invocation +* date - https://www.gnu.org/software/coreutils/manual/coreutils.html#date-invocation +* numfmt -- https://www.gnu.org/software/coreutils/manual/coreutils.html#numfmt-invocation + - strconv, strings, flags +* sha2sum -- https://www.gnu.org/software/coreutils/manual/coreutils.html#sha2-utilities + - sha512, bufio, io, time +* stat, du - https://www.gnu.org/software/coreutils/manual/coreutils.html#stat-invocation + - os, stat + +* head, tail, split -- https://www.gnu.org/software/coreutils/manual/coreutils.html#Output-of-parts-of-files + - os, strings, bufio +* sort, uniq, comm -- https://www.gnu.org/software/coreutils/manual/coreutils.html#uniq-invocation + - maps, slices +* cut -- https://www.gnu.org/software/coreutils/manual/coreutils.html#join-invocation + - bufio, strings, slices, maybe maps +* nohup -- https://www.gnu.org/software/coreutils/manual/coreutils.html#nohup-invocation + - os, bufio, io +* ls - https://www.gnu.org/software/coreutils/manual/coreutils.html#ls-invocation + - path, root.fs, regex + + +* curl vs wget -- https://curl.se/ + -- net/http, bufio, path +* grep -- https://www.gnu.org/software/grep/manual/ + -- os, regex, strings, slices +* find -- https://www.gnu.org/software/findutils/manual/html_mono/find.html + - path, regex, os diff --git a/outline.txt b/outline.txt new file mode 100644 index 0000000..b0058fa --- /dev/null +++ b/outline.txt @@ -0,0 +1,118 @@ +31 _cat_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html +* bufio, io -- https://pkg.go.dev/bufio@go1.25.3 +* Mention using these in all of them: + * testing -- https://pkg.go.dev/testing@go1.25.3 + * flag -- https://pkg.go.dev/flag + +32 _od_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html +* bufio, io -- https://pkg.go.dev/bufio@go1.25.3 + +33 _wc_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/wc-invocation.html +* bufio, io -- https://pkg.go.dev/bufio@go1.25.3 + +34 _tr_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.html +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 + +35 _date_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html +* time -- https://pkg.go.dev/time@go1.25.3 + +36 _numfmt_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/numfmt-invocation.html +* strings -- https://pkg.go.dev/strings@go1.25.3 +* strconv -- https://pkg.go.dev/strconv@go1.25.3 + +37 _sha2sum_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html +* sha512 -- https://pkg.go.dev/crypto/sha512@go1.25.3 + +38 _stat_ Then _du_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html +* os -- https://pkg.go.dev/os@go1.25.3 +* path -- probably all of them use it +* regex -- https://pkg.go.dev/regexp@go1.25.3 + +39 _head_, _tail_, and _split_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/head-invocation.html +* https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation.html +* https://www.gnu.org/software/coreutils/manual/html_node/split-invocation.html +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 + +40 _sort_, and _uniq_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html +* https://www.gnu.org/software/coreutils/manual/html_node/uniq-invocation.html +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 +* maps -- https://pkg.go.dev/maps@go1.25.3 + +41 _cut_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/cut-invocation.html +* bufio, io -- https://pkg.go.dev/bufio@go1.25.3 +* maps -- https://pkg.go.dev/maps@go1.25.3 +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 + +42 _nohup_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/nohup-invocation.html +* os -- https://pkg.go.dev/os@go1.25.3 + +43 _ls_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html +* os -- https://pkg.go.dev/os@go1.25.3 +* path -- probably all of them use it +* regex -- https://pkg.go.dev/regexp@go1.25.3 + +44 _curl_ or _wget_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* Not sure which one to go with so try both. +* https://www.gnu.org/software/wget/manual/html_node/index.html +* https://curl.se/ +* net -- https://pkg.go.dev/net@go1.25.3 + +45 _grep_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/grep/manual/html_node/index.html +* os -- https://pkg.go.dev/os@go1.25.3 +* path -- probably all of them use it +* regex -- https://pkg.go.dev/regexp@go1.25.3 +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 + +46 _find_ +* My implemention is at https://lcthw.dev/go/go-coreutils +* https://www.gnu.org/software/findutils/manual/html_mono/find.html +* os -- https://pkg.go.dev/os@go1.25.3 +* path -- probably all of them use it +* regex -- https://pkg.go.dev/regexp@go1.25.3 +* slices -- https://pkg.go.dev/slices@go1.25.3 +* strings -- https://pkg.go.dev/strings@go1.25.3 + +47 Conclusion +* Finish the course and talk about where to go next. +* https://pion.ly/ +* https://ebitengine.org/ +* https://github.com/charmbracelet/bubbletea +* https://caddyserver.com/ +* https://github.com/chromedp/chromedp +* https://pocketbase.io/ +* https://github.com/fyne-io/fyne +* https://gioui.org/