Skip to content

Commit

Permalink
docs: separating cmd documentation from use cases documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
KaueSabinoSRV17 committed Jul 5, 2023
1 parent 4e0d0cf commit f99c3cb
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 7 deletions.
Binary file added Flower
Binary file not shown.
17 changes: 10 additions & 7 deletions cmd/commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ Copyright © 2023 NAME HERE <EMAIL ADDRESS>
package cmd

import (
"github.com/KaueSabinoSRV17/Flower/use_cases"
"github.com/KaueSabinoSRV17/Flower/internal/commit"
"github.com/KaueSabinoSRV17/Flower/internal/repo"
"github.com/KaueSabinoSRV17/Flower/internal/staging"

"github.com/spf13/cobra"
)
Expand All @@ -20,24 +22,25 @@ var commitCmd = &cobra.Command{
"fix" for a fix and so on.
`,
Run: func(cmd *cobra.Command, args []string) {
repo := use_cases.GetRepository(".")
repo := repo.GetRepository(".")
var message string

unstagedFiles := use_cases.GetUnstaggedFiles(repo)
unstagedFiles := staging.GetUnstaggedFiles(repo)
if len(unstagedFiles) > 0 {
filesToStage := use_cases.AskWhatFilesToAddForStaging(unstagedFiles)
go use_cases.StageFiles(filesToStage, repo)
filesToStage := staging.AskWhatFilesToAddForStaging(unstagedFiles)
go staging.StageFiles(filesToStage, repo)
}

prefix := use_cases.AskCommitPrefix()
prefix := commit.AskCommitPrefix()

if len(args) == 0 {
message = use_cases.ResolveCommitMessage()
message = commit.ResolveCommitMessage()
} else {
message = args[0]
}

use_cases.ConventionalCommit(prefix, message, repo)
commit.ConventionalCommit(prefix, message, repo)
},
}

Expand Down
48 changes: 48 additions & 0 deletions internal/commit/conventional_commit.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package commit

import (
"fmt"
"log"

"github.com/AlecAivazis/survey/v2"
"github.com/go-git/go-git/v5"
)

func AskCommitPrefix() string {
var prefix string
err := survey.AskOne(
&survey.Select{
Message: "Select a Prefix for the commit:",
Options: []string{"chore", "feat", "fix", "refactor", "tests", "docs", "build"},
},
&prefix,
)

if err != nil {
log.Fatal("Could not ask Commit Prefix")
}

return prefix
}

func ResolveCommitMessage() string {
var message string
err := survey.AskOne(
&survey.Input{
Message: "What did you do? (Commit Message):",
},
&message,
)

if err != nil {
log.Fatal("Could not ask Commit Message")
}

return message
}

func ConventionalCommit(prefix string, message string, worktree *git.Worktree) {
formatedMessage := fmt.Sprintf("%s: %s", prefix, message)
worktree.Commit(formatedMessage, &git.CommitOptions{})
fmt.Println("Sucessfully added a commit!")
}
21 changes: 21 additions & 0 deletions internal/repo/repo.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package repo

import (
"log"

"github.com/go-git/go-git/v5"
)

func GetRepository(pathToRepository string) *git.Worktree {
repository, err := git.PlainOpen(pathToRepository)
if err != nil {
log.Fatal("Could not open Git Repo")
}

worktree, err := repository.Worktree()
if err != nil {
log.Fatal("Could not get Work Tree")
}

return worktree
}
46 changes: 46 additions & 0 deletions internal/staging/staging.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package staging

import (
"log"

"github.com/AlecAivazis/survey/v2"
"github.com/go-git/go-git/v5"
)

func GetUnstaggedFiles(worktree *git.Worktree) []string {
status, err := worktree.Status()
if err != nil {
log.Fatal("Could not get Git Status")
}

var modifiedOrUntrackedFiles []string
for file, s := range status {
if s.Worktree == git.Modified || s.Worktree == git.Untracked {
modifiedOrUntrackedFiles = append(modifiedOrUntrackedFiles, file)
}
}

return modifiedOrUntrackedFiles
}

func AskWhatFilesToAddForStaging(files []string) []string {
var filesToAdd []string
prompt := &survey.MultiSelect{
Message: "Chose the files to stage:",
Options: files,
}
err := survey.AskOne(prompt, &filesToAdd)
if err != nil {
log.Fatal("Could not Ask Files to Stage")
}
return filesToAdd
}

func StageFiles(files []string, worktree *git.Worktree) {
for _, file := range files {
_, err := worktree.Add(file)
if err != nil {
log.Fatal("Could not add " + file + " file")
}
}
}

0 comments on commit f99c3cb

Please sign in to comment.