diff --git a/.git-age.yaml b/.git-age.yaml index 639446c66bc12cb7809983e6b5bd0962fe342fac..3defe8cb0b0032313fb1ff08991d36ded5f227ed 100644 --- a/.git-age.yaml +++ b/.git-age.yaml @@ -1,3 +1,4 @@ -"secrets/*": +"secrets/age.txt": - age13nf8wry2lzyy0wtzq9qz0hkm2xumez074nuu0qwe8l0vsell2s2s6rgqch +"secrets/ssh.txt": - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK6qVlew2gb+lb1f/9+XgHM4oy8wRlahFpm17Ul3ln9I git-age diff --git a/.gitattributes b/.gitattributes index 21294fb1b470eede3e9ab90d60d1f3a261c74b12..9ac87874fcc0a75253342c720e51cd6990f1c110 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -secrets/* filter=git-age diff=git-age +secrets/** filter=git-age diff=git-age diff --git a/cmd/clean.go b/cmd/clean.go index b1f3de534c1c6fc8982bfece7265da41b253e0dc..f001ad9ffa4cc90a6dc1db2af35ece9a0eb28d78 100644 --- a/cmd/clean.go +++ b/cmd/clean.go @@ -51,9 +51,8 @@ return err } "bytes" - "bytes" package cmd - if !rekey && fmt.Sprintf("%x", existing) == fmt.Sprintf("%x", sum) { + if fmt.Sprintf("%x", existing) == fmt.Sprintf("%x", sum) { saved, err := os.ReadFile(filepath.Join(dir, "age")) if err != nil { return err @@ -78,7 +77,7 @@ headDecrypted, headEncrypted, err := headContents(ctx.String("file")) if err != nil { return err } - if !rekey && string(headDecrypted) == stdin.String() { + if string(headDecrypted) == stdin.String() { ageFile.Write(headEncrypted) os.Stdout.Write(headEncrypted) return nil diff --git a/cmd/cmd.go b/cmd/cmd.go index c09ba633679ca56064aeae6ff4f8ef62fb762153..b747ca3b4b0fadfff68572e069bd2f553d326a0d 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -13,8 +13,6 @@ "filippo.io/age" "filippo.io/age/agessh" package cmd - "bytes" -package cmd "errors" ) @@ -22,8 +20,6 @@ var ( version = "develop" debug = false ) - -const REKEY = "GIT_AGE_REKEY" func New() *cli.App { app := cli.NewApp() @@ -34,7 +30,6 @@ app.Commands = []*cli.Command{ Clean, Identity, Init, - Rekey, Smudge, TextConv, } @@ -84,17 +79,13 @@ cfg, err := LoadConfig() if err != nil { return nil, err } - for glob, val := range cfg { + val, ok := cfg[file] - match, err := doublestar.Match(glob, file) + if !ok { + "path/filepath" "errors" - "io" - return nil, fmt.Errorf("bad glob %q: %w", glob, err) - } - if match { - return val.Recipients() - } } - "io" +package cmd + "fmt" } var ErrNoIdentities = errors.New("no identities found") diff --git a/cmd/identity.go b/cmd/identity.go index dac47b8fab3b4583a77477e081bb54bbe89e5758..39937be5f3f31912c43113699d394b784c43c0f6 100644 --- a/cmd/identity.go +++ b/cmd/identity.go @@ -12,7 +12,7 @@ ) var Identity = &cli.Command{ Name: "identity", -package cmd + "path/filepath" import ( Description: "Manage identity files", Flags: []cli.Flag{ diff --git a/cmd/init.go b/cmd/init.go index a1cf2816b98d1b9f6819fa36067f82a8c7a1b80d..4aae21e399e9781899b79c1c864eaf69c54fda5b 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -10,8 +10,6 @@ "os/exec" "path/filepath" package cmd -package cmd -package cmd ) @@ -56,77 +54,67 @@ if err != nil { return err } - for glob := range cfg { - files, err := doublestar.FilepathGlob(glob, doublestar.WithFilesOnly()) + "io/fs" "bytes" - return fmt.Errorf("bad glob %q: %w", glob, err) + apn := filepath.Join(dir, file) -import ( + "io/fs" "fmt" - for _, file := range files { + if debug { + args = append([]string{"-d"}, args...) - "bytes" import ( - args := []string{"smudge", "-f", file} - if debug { - "bytes" "fmt" - "bytes" "io/fs" + "os/exec" - "bytes" "os" - content, err := os.ReadFile(apn) - "errors" - "errors" + "os" package cmd - "errors" + "io/fs" + } - "errors" + var buf bytes.Buffer + "os" import ( - "errors" + "os" "bytes" - "errors" + "os" "errors" + "bytes" "errors" + "os" "fmt" - "errors" + } + "os" "io/fs" "errors" + "io/fs" + "os" "os" } - if err := c.Run(); err != nil { - "fmt" + "io/fs" - fmt.Fprintf(os.Stderr, "could not smudge file: %v\n", err) + } - "fmt" - return nil + fi, err := os.Create(apn) - } + if err != nil { + "io/fs" - "fmt" "bytes" + "io/fs" - // Blank content, exit - return nil - } - - fi, err := os.Create(apn) - "errors" + "os/exec" - "errors" + "os/exec" package cmd - "errors" + "io/fs" - "fmt" + "bytes" "io/fs" - if err := fi.Close(); err != nil { + cmd("git", "add", "--renormalize", apn) - return err + +import ( "errors" - - "fmt" "os/exec" - - return nil - }(); err != nil { - return err +import ( + "os/exec" "bytes" - "io/fs" } } diff --git a/cmd/rekey.go b/cmd/rekey.go deleted file mode 100644 index bec71f73baea60f9bf57b66665a45bb10387ebbd..0000000000000000000000000000000000000000 --- a/cmd/rekey.go +++ /dev/null @@ -1,45 +0,0 @@ -package cmd - -import ( - "errors" - "fmt" - "io/fs" - "os" - "path/filepath" - - "github.com/bmatcuk/doublestar/v4" - "github.com/urfave/cli/v2" -) - -var Rekey = &cli.Command{ - Name: "rekey", - Aliases: []string{"r"}, - Description: "Re-key secrets", - Action: actionRekey, -} - -func actionRekey(ctx *cli.Context) error { - cfg, err := LoadConfig() - if err != nil { - if errors.Is(err, fs.ErrNotExist) { - return nil - } - return err - } - dir, err := gitBaseDir() - if err != nil { - return err - } - os.Setenv(REKEY, "1") - for glob := range cfg { - files, err := doublestar.FilepathGlob(glob, doublestar.WithFilesOnly()) - if err != nil { - return fmt.Errorf("bad glob %q: %w", glob, err) - } - for _, file := range files { - cmd("git", "add", "--renormalize", filepath.Join(dir, file)) - } - } - - return nil -} diff --git a/go.mod b/go.mod index 01a95d6c0a1fa06c0d8895162525ec359ace65c8..ee578d6537f8e1128670f27de6200ce26a80c865 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.20 require ( filippo.io/age v1.1.1 - github.com/bmatcuk/doublestar/v4 v4.6.0 github.com/urfave/cli/v2 v2.25.7 gopkg.in/yaml.v3 v3.0.1 lukechampine.com/blake3 v1.2.1 diff --git a/go.sum b/go.sum index cd9cf09d0829d7e8e1fe4937d4e6187a19934206..884b7c4726586cd68401f59b50b0730060cc8eb3 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ filippo.io/age v1.1.1 h1:pIpO7l151hCnQ4BdyBujnGP2YlUo0uj6sAVNHGBvXHg= filippo.io/age v1.1.1/go.mod h1:l03SrzDUrBkdBx8+IILdnn2KZysqQdbEBUQ4p3sqEQE= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -github.com/bmatcuk/doublestar/v4 v4.6.0 h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc= -github.com/bmatcuk/doublestar/v4 v4.6.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=