parent
8822e8fac2
commit
a0d1313b7f
@ -1,5 +1,60 @@ |
|||||||
# go-coreutils |
# go-coreutils |
||||||
|
|
||||||
This is an education project that attempts to reimplement the GNU coreutils in Go. You can find the full manual here: |
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 |
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