400 Commits

Author SHA1 Message Date
Michael Stapelberg 05762f796b packer: initialize pack.Pack correctly in sudo child process
fixes https://github.com/gokrazy/gokrazy/issues/170
2023-02-06 22:47:48 +01:00
Mark Drayton b369a67fef pull in latest gokrazy/updater for gok run flag passing 2023-02-06 20:54:01 +01:00
Mark Drayton 8c7ed9ae16 gok: pass command line flags to run 2023-02-06 20:54:01 +01:00
Michael Stapelberg 2ab27fd29e pull in latest gokrazy/internal
related to https://github.com/gokrazy/tools/issues/47
2023-02-06 08:44:32 +01:00
Michael Stapelberg 2b269a6d8d correctly plumb through config struct to GenerateSBOM 2023-02-05 21:43:49 +01:00
Michael Stapelberg 20bd48bfb6 include SBOM as /etc/gokrazy/sbom.json
related to https://github.com/gokrazy/gokrazy/issues/167
2023-02-05 16:14:49 +01:00
Michael Stapelberg f9ec9d9abf pull in latest gokrazy/internal
related to https://github.com/gokrazy/gokrazy/issues/167
2023-02-05 16:04:18 +01:00
Damiano Donati 7e4c5df8fb gok overwrite: add gaf as output format
gaf is the new gokrazy archive format output type.
It is immagined for storage and upgrade.
A single, uncompressed zip archive files that contains:
- the MBR image (mbr.img)
- the boot image (boot.img)
- the root image (root.img)
- the SBOM of the gokrazy build (sbom.json)

It is lighter in size than a "full" disk image (it doesn't have the
partition filling bits).
It contains all the necessary bits to upgrade a gokrazy instance (all it
takes is the 3 imgs).
It can be directly accessed for a single file extraction (non compressed
zip property).
It can be easily unarchived by gokrazy appliances (cheap unzipping).
It is easy to verify what the build contains (SBOM alongside to be read).
2023-02-05 13:51:32 +01:00
Damiano Donati 239461d80e packer: use Pack as receiver for Main and logic 2023-02-05 13:51:32 +01:00
Damiano Donati db4f55e31a gok sbom: prefactor mv GenerateSBOM to internal/packer 2023-02-05 13:51:32 +01:00
Michael Stapelberg ca01203cad gok: add sbom subcommand 2023-01-29 21:55:42 +01:00
Michael Stapelberg 86691439bf drop github.com/gokrazy/gokrazy dependency
This should not make a difference with Go modules enabled,
which should be the case for all running gokrazy installations.
2023-01-29 19:42:57 +01:00
Michael Stapelberg ce2433aa1a gok: move code to internal/gok 2023-01-29 19:30:23 +01:00
Mark Drayton a515c601c0 parttable: pass HOME env var to sudo (#44)
Without passing $HOME into the `sudo` invocation the instance parent
directory detection
(https://github.com/gokrazy/internal/blob/main/instanceflag/instanceflag.go#L19)
fails:

  $ gok -i test overwrite --full /dev/sdc
  [..]
  2023/01/25 22:13:04 partitioning /dev/sdc (GPT + Hybrid MBR)
  2023/01/25 22:13:04 Using sudo to gain permission to format /dev/sdc
  2023/01/25 22:13:04 If you prefer, cancel and use: sudo setfacl -m u:${USER}:rw /dev/sdc
  2023/01/25 22:13:04 open os.UserHomeDir failed: $HOME is not defined/gokrazy/test/config.json: no such file or directory
  2023/01/25 22:13:04 exit status 1

This commit does the necessary passing.
2023-01-25 23:22:13 +01:00
Michael Stapelberg 5499f548a3 pull in latest gokrazy/internal for httpclient.For fix 2023-01-22 18:31:59 +01:00
Michael Stapelberg d5f9cee29d gok: use config.NewStruct()
related to https://github.com/gokrazy/tools/issues/43
2023-01-17 19:05:43 +01:00
Michael Stapelberg 45ce7ad200 implement 'gok get' subcommand
fixes https://github.com/gokrazy/gokrazy/issues/162
2023-01-15 18:27:02 +01:00
Michael Stapelberg d9681ee8cb gok run, logs: remove --update flag in favor of --instance 2023-01-15 17:15:52 +01:00
Michael Stapelberg f354e13fdf packer: get host fallback from instance hostname, not update host
The instance hostname is the logical hostname of the instance, e.g. consrv,
whereas the update hostname is the way to cross the network to get to said
instance, e.g. consrv.monkey-turtle.ts.net (on port 2345).
2023-01-15 16:55:25 +01:00
Michael Stapelberg bdb14f7080 use new httpclient.For() instead of GetHTTPClientForInstance() 2023-01-15 16:41:49 +01:00
Michael Stapelberg 5e5fb5cf29 packer: use the httpclient package directly 2023-01-15 16:26:10 +01:00
Michael Stapelberg 4f93af68c8 packer: set HTTP(S)Port fallback values after host-specific fallback 2023-01-15 16:15:42 +01:00
Michael Stapelberg c61213349c provide a programmatic entry point to the gok CLI
This interfaces with spf13/cobra without typing ourselves to its types, and
exerting control (for better of for worse) about what aspects one can control.

With this, we can move the code in cmd to internal/
2023-01-15 15:55:51 +01:00
Michael Stapelberg 10ba0192aa gok new: generate a machine-id(5) by default 2023-01-15 14:44:44 +01:00
Michael Stapelberg e11eeb6a52 localtime: document why time/tzdata does not help 2023-01-15 14:12:11 +01:00
Michael Stapelberg b89d9dc6e0 README: remove outdated documentation, reference website 2023-01-14 09:28:20 +01:00
Michael Stapelberg 8c217798be pull in latest gokrazy/internal 2023-01-14 09:12:25 +01:00
Michael Stapelberg a84f008488 identify gokrazy packer vs. gok in log output 2023-01-10 20:41:41 +01:00
Michael Stapelberg 8f9863a4c2 Config.Update.Hostname: fall back to Config.Hostname if empty 2023-01-07 18:59:26 +01:00
Michael Stapelberg 8471dd27bc internal: pull cert.pem/key.pem fix 2023-01-07 18:50:11 +01:00
Michael Stapelberg 444a52a283 gok add: store go.mod at package level for local disk additions
This way, non-local and local operate at the same hierarchy level, which means
you can switch from non-local to local override.
2023-01-07 18:50:11 +01:00
Michael Stapelberg b169c0894c use two dashes for flags in error messages
That way, they work for cobra (gok) and Go flag parsing (gokr-packer).
2023-01-07 18:50:11 +01:00
Michael Stapelberg 9ed9d3b936 internal/version: pull git revision out of module version, too
Before this commit, the version would be blank when built as a Go module.
2023-01-07 18:50:11 +01:00
Michael Stapelberg 41ef295683 pull in latest gokrazy/internal 2023-01-07 18:50:11 +01:00
Michael Stapelberg 05070adf9d gokr-packer: convert common -update URLs to config.Update fields 2023-01-07 18:50:11 +01:00
Michael Stapelberg 12d755c6e9 gok run: read instance config to set build flags/tags 2023-01-07 16:16:46 +01:00
Michael Stapelberg 2cce27b0b0 add Makefile with a few example invocation make targets 2023-01-07 16:16:46 +01:00
Michael Stapelberg 7d22eb8e32 add integration test for gokr-packer and its migration path 2023-01-07 16:16:46 +01:00
Michael Stapelberg 5b3aa31300 populate PackageConfig for packer logic / writing config.json 2023-01-07 16:16:46 +01:00
Michael Stapelberg 2b958254f0 gok add: copy replace directives from local go.mod
This fixes the build of github.com/evcc-io/evcc, which doesn’t build without
the replace directives from its go.mod file.
2023-01-07 16:16:46 +01:00
Michael Stapelberg e3e0c0fb2a gok add: create go.mod in non-local mode, too
The go tool needs a go.mod to function.
2023-01-07 16:16:46 +01:00
Michael Stapelberg 1b8e74f331 gok add: use go mod edit instead of go get for adding require line
Adding the require line using `go get` does not work for
https://github.com/evcc-io/evcc as of commit
504ed7172efdd6e849985280a21feccbbf455b9d:

panic: internal error: can't find reason for requirement on
github.com/rogpeppe/go-internal@v1.6.1.
2023-01-07 16:16:46 +01:00
Michael Stapelberg 496c018caf remove Env 2023-01-07 16:01:39 +01:00
Michael Stapelberg 1194a73d20 group commands in gok help output 2023-01-07 16:01:39 +01:00
Michael Stapelberg d4fa52f791 uppercase HTTP(S) 2023-01-07 16:01:39 +01:00
Michael Stapelberg ec011de8da gok new: create config.json with 0600 permissions
The instance config contains the device password.
2023-01-07 16:01:39 +01:00
Michael Stapelberg c72e5e19f4 rename instance_dir to parent_dir, to make its role clearer 2023-01-07 16:01:39 +01:00
Michael Stapelberg dc4131ed8b implement gok add 2023-01-07 16:01:39 +01:00
Michael Stapelberg a2832b7d25 move left-over flags 2023-01-07 16:01:39 +01:00
Michael Stapelberg 3a96e0840b implement gok edit 2023-01-07 16:01:39 +01:00