parent
8822e8fac2
commit
a0d1313b7f
@ -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 |
||||
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 |
||||
|
||||
@ -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/ |
||||
Loading…
Reference in new issue