mirror of
https://github.com/sbrow/envr.git
synced 2025-12-29 23:47:39 -05:00
feat: Added new check command.
This commit is contained in:
11
app/db.go
11
app/db.go
@@ -326,8 +326,15 @@ func (db *Db) Delete(path string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finds .env files in the filesystem that aren't present in the database.
|
// Finds .env files in the filesystem that aren't present in the database.
|
||||||
func (db *Db) Scan() ([]string, error) {
|
// path overrides the already configured
|
||||||
all_paths, err := db.cfg.scan()
|
func (db *Db) Scan(paths []string) ([]string, error) {
|
||||||
|
cfg := db.cfg
|
||||||
|
|
||||||
|
if paths != nil {
|
||||||
|
cfg.ScanConfig.Include = paths
|
||||||
|
}
|
||||||
|
|
||||||
|
all_paths, err := cfg.scan()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []string{}, err
|
return []string{}, err
|
||||||
}
|
}
|
||||||
|
|||||||
109
cmd/check.go
Normal file
109
cmd/check.go
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/sbrow/envr/app"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
var checkCmd = &cobra.Command{
|
||||||
|
Use: "check [path]",
|
||||||
|
Short: "check if files in the current directory are backed up",
|
||||||
|
// TODO: Long description for new check command
|
||||||
|
Args: cobra.MaximumNArgs(1),
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
// Accept an optional path arg, default to current working directory
|
||||||
|
var checkPath string
|
||||||
|
if len(args) > 0 {
|
||||||
|
checkPath = args[0]
|
||||||
|
} else {
|
||||||
|
cwd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get current working directory: %w", err)
|
||||||
|
}
|
||||||
|
checkPath = cwd
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get absolute path
|
||||||
|
absPath, err := filepath.Abs(checkPath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get absolute path: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open database
|
||||||
|
db, err := app.Open()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to open database: %w", err)
|
||||||
|
}
|
||||||
|
defer db.Close(app.ReadOnly)
|
||||||
|
|
||||||
|
// Check if the path is a file or directory
|
||||||
|
info, err := os.Stat(absPath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to stat path: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var filesInPath []string
|
||||||
|
|
||||||
|
if info.IsDir() {
|
||||||
|
// Find .env files in the specified directory
|
||||||
|
if err := db.CanScan(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scan only the specified path for .env files
|
||||||
|
filesInPath, err = db.Scan([]string{absPath})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to scan path for env files: %w", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Path is a file, just check this specific file
|
||||||
|
filesInPath = []string{absPath}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get all backed up files from the database
|
||||||
|
envFiles, err := db.List()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to list files from database: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check which files are not backed up
|
||||||
|
var notBackedUp []string
|
||||||
|
for _, file := range filesInPath {
|
||||||
|
isBackedUp := false
|
||||||
|
for _, envFile := range envFiles {
|
||||||
|
if envFile.Path == file {
|
||||||
|
isBackedUp = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !isBackedUp {
|
||||||
|
notBackedUp = append(notBackedUp, file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Display results
|
||||||
|
if len(notBackedUp) == 0 {
|
||||||
|
if len(filesInPath) == 0 {
|
||||||
|
fmt.Println("No .env files found in the specified directory.")
|
||||||
|
} else {
|
||||||
|
fmt.Println("✓ All .env files in the directory are backed up.")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Printf("Found %d .env file(s) that are not backed up:\n", len(notBackedUp))
|
||||||
|
for _, file := range notBackedUp {
|
||||||
|
fmt.Printf(" %s\n", file)
|
||||||
|
}
|
||||||
|
fmt.Println("\nRun 'envr sync' to back up these files.")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
rootCmd.AddCommand(checkCmd)
|
||||||
|
}
|
||||||
@@ -28,7 +28,7 @@ var scanCmd = &cobra.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
files, err := db.Scan()
|
files, err := db.Scan(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ at before, restore your backup with:
|
|||||||
### SEE ALSO
|
### SEE ALSO
|
||||||
|
|
||||||
* [envr backup](envr_backup.md) - Import a .env file into envr
|
* [envr backup](envr_backup.md) - Import a .env file into envr
|
||||||
|
* [envr check](envr_check.md) - check if files in the current directory are backed up
|
||||||
* [envr deps](envr_deps.md) - Check for missing binaries
|
* [envr deps](envr_deps.md) - Check for missing binaries
|
||||||
* [envr edit-config](envr_edit-config.md) - Edit your config with your default editor
|
* [envr edit-config](envr_edit-config.md) - Edit your config with your default editor
|
||||||
* [envr init](envr_init.md) - Set up envr
|
* [envr init](envr_init.md) - Set up envr
|
||||||
|
|||||||
18
docs/cli/envr_check.md
Normal file
18
docs/cli/envr_check.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
## envr check
|
||||||
|
|
||||||
|
check if files in the current directory are backed up
|
||||||
|
|
||||||
|
```
|
||||||
|
envr check [path] [flags]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
|
```
|
||||||
|
-h, --help help for check
|
||||||
|
```
|
||||||
|
|
||||||
|
### SEE ALSO
|
||||||
|
|
||||||
|
* [envr](envr.md) - Manage your .env files.
|
||||||
|
|
||||||
Reference in New Issue
Block a user