Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,22 @@ jobs:
enable_prerelease_mode: true
major_pattern: "BREAKING"
minor_pattern: "feat:"
- run: mkdir -p .build
- run: |
export VERSION="${{ steps.version.outputs.version }}"
go generate
- run: mkdir -p .build
- uses: crazy-max/ghaction-xgo@v2
with:
dest: ${{ env.GITHUB_WORKSPACE }}/.build
dest: .build
go_version: 1.25.0
prefix: keydex
targets: windows/386,windows/amd64,linux/386,linux/amd64,darwin/arm64,darwin/amd64
v: true
x: true
- run: ls ${{ env.GITHUB_WORKSPACE }}/.build
- uses: softprops/action-gh-release@v1
with:
tag_name: v${{ steps.version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
fail_on_unmatched_files: true
prerelease: ${{ github.ref != 'refs/heads/main' }}
files: |
${{ env.GITHUB_WORKSPACE }}/.build/*
files: .build/*
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ vendor
coverage.out
.todo
.zed
.build/

# This is autogenerated
pkg/info/info.go
23 changes: 0 additions & 23 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,29 +89,6 @@ interactive input).

</details>

<details>
<summary>Create Database</summary>

**Mismatching passphrase**
1. `keydex new test.kdbx test`
2. Input mismatching passphrases
- **Expected:** mismatching passphrase error

**Create and open the db**
1. `keydex new test.kdbx test`
2. Input correct passphrases
- **Expected:** No mismatching passphrase error
3. Press Y
- **Expected:** Opens TUI

**Create and don't open the db**
1. `keydex new test.kdbx test`
2. Input correct passphrases
- **Expected:** No mismatching passphrase error
3. Press N
- **Expected:** Does not open TUI
</details>

<details>
<summary>Smoke tests</summary>

Expand Down
27 changes: 12 additions & 15 deletions cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,30 +52,29 @@ See "Examples" for more details.`,
}
}

success := false
defer func() {
if !success {
if keyfilepath != "" {
_ = os.Remove(keyfilepath)
}
_ = os.Remove(path)
}
}()

file, err := os.Create(path)
if err != nil {
if keyfilepath != "" {
_ = os.Remove(keyfilepath)
}
return errors.MakeError(`Cannot create file: `+err.Error(), "create")
}

defer file.Close()

db, err := kdbx.NewFromFile(file)
if err != nil {
if keyfilepath != "" {
_ = os.Remove(keyfilepath)
}
os.Remove(path)
return err
}

if err = db.SetPasswordAndKey(passphrase, keyfilepath); err != nil {
if keyfilepath != "" {
_ = os.Remove(keyfilepath)
}
os.Remove(path)
return err
}
rootGroup := db.NewGroup(name)
Expand All @@ -84,13 +83,11 @@ See "Examples" for more details.`,
db.Database.Content.Meta.DatabaseName = name

if err = db.SaveAndUnlockEntries(); err != nil {
if keyfilepath != "" {
_ = os.Remove(keyfilepath)
}
os.Remove(path)
return err
}

success = true

if cli.Confirm("Creation successful. Do you want to open the database?") {
return tui.Run(tui.State{
Entry: nil,
Expand Down
61 changes: 59 additions & 2 deletions docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,72 @@
package main

import (
"archive/tar"
"log"
"os"
"path/filepath"

"github.com/shikaan/keydex/cmd"
"github.com/shikaan/keydex/pkg/info"
"github.com/spf13/cobra/doc"
)

const manpath = "./.build"
const docspath = "./docs"

func main() {
err := doc.GenMarkdownTree(cmd.Root, "./docs")
if err != nil {
if err := os.MkdirAll(docspath, 0o755); err != nil {
log.Fatal(err)
}
if err := os.MkdirAll(manpath, 0o755); err != nil {
log.Fatal(err)
}

if err := doc.GenMarkdownTree(cmd.Root, docspath); err != nil {
log.Fatal(err)
}

hdr := &doc.GenManHeader{Title: info.NAME, Section: "1", Source: info.VERSION, Manual: info.NAME + " manual"}
if err := doc.GenManTree(cmd.Root, hdr, manpath); err != nil {
log.Fatal(err.Error())
}

archive, err := os.Create(filepath.Join(manpath, info.NAME+".1.tar"))
if err != nil {
log.Fatal(err.Error())
}
defer archive.Close()

tw := tar.NewWriter(archive)
defer tw.Close()

pages, err := filepath.Glob(filepath.Join(manpath, "*.1"))
if err != nil {
log.Fatal(err.Error())
}

for _, page := range pages {
data, err := os.ReadFile(page)
if err != nil {
log.Fatal(err.Error())
}

hdr := &tar.Header{
Name: filepath.Base(page),
Mode: 0o644,
Size: int64(len(data)),
}

if err := tw.WriteHeader(hdr); err != nil {
log.Fatal(err.Error())
}

if _, err := tw.Write(data); err != nil {
log.Fatal(err.Error())
}

// if err := os.Remove(page); err != nil {
// log.Fatal(err.Error())
// }
}
}
Loading