Skip to content

Commit

Permalink
added list of directories to ignore during study session
Browse files Browse the repository at this point in the history
  • Loading branch information
gottenheim committed Oct 26, 2023
1 parent e249f0f commit 544bd4b
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 9 deletions.
6 changes: 6 additions & 0 deletions cmd/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,9 @@ func GetDirectoryFlags(cmd *cobra.Command, fs afero.Fs, flagNames []string) ([]s

return dirs, nil
}

func GetDirectoriesToIgnore(cmd *cobra.Command, flagName string) []string {
dirsToIgnore, _ := cmd.Flags().GetStringArray(flagName)

return dirsToIgnore
}
7 changes: 6 additions & 1 deletion cmd/study_cards.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
const dirFlag = "dir"
const newCardsFlag = "new-cards"
const cardsToRemindFlag = "cards-to-remind"
const ignoreDir = "ignore-dir"

var studyCardsCmd = &cobra.Command{
Use: "study-cards",
Expand All @@ -32,7 +33,9 @@ var studyCardsCmd = &cobra.Command{

fmt.Printf("Directory used to discover cards: %s\n", cardsDir)

cardRepo := fs_repo.NewFileCardRepository(osFs)
dirsToIgnore := GetDirectoriesToIgnore(cmd, ignoreDir)

cardRepo := fs_repo.NewFileCardRepositoryWithIgnoredDirs(osFs, dirsToIgnore)
timeSource := datetime.NewOsTimeSource()

useCase := use_cases.NewStudyCardsSession(timeSource, cardRepo, interactor.NewCommandLineInteractor())
Expand All @@ -54,6 +57,8 @@ func init() {
studyCardsCmd.Flags().String(dirFlag, "", "Card directory")
studyCardsCmd.MarkFlagRequired(dirFlag)

studyCardsCmd.Flags().StringArray(ignoreDir, []string{}, "Directory to ignore")

studyCardsCmd.Flags().Int(newCardsFlag, 0, "Count of new cards to study today")
studyCardsCmd.MarkFlagRequired(newCardsFlag)

Expand Down
2 changes: 1 addition & 1 deletion cmd/version_cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ var showVersionCmd = &cobra.Command{
Use: "version",
Short: "Shows version number",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("1.0.7")
fmt.Println("1.0.8")
},
}

Expand Down
42 changes: 35 additions & 7 deletions details/fs_repo/file_card_repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,15 @@ import (
)

type fileCardRepository struct {
fs afero.Fs
fs afero.Fs
dirsToIgnore []string
}

func NewFileCardRepositoryWithIgnoredDirs(fs afero.Fs, dirsToIgnore []string) *fileCardRepository {
return &fileCardRepository{
fs: fs,
dirsToIgnore: dirsToIgnore,
}
}

func NewFileCardRepository(fs afero.Fs) *fileCardRepository {
Expand Down Expand Up @@ -159,13 +167,19 @@ func (r *fileCardRepository) readCardArtifacts(cardPath string) ([]card.CardArti
var artifacts []card.CardArtifact

err := afero.Walk(r.fs, cardPath, func(filePath string, info os.FileInfo, err error) error {
if info != nil && !info.IsDir() && !r.isServiceFile(filePath) {
fileContents, err := afero.ReadFile(r.fs, filePath)
if err != nil {
return err
if info != nil {
if r.isIgnoredDirectory(info) {
return filepath.SkipDir
}

if !info.IsDir() && !r.isServiceFile(filePath) {
fileContents, err := afero.ReadFile(r.fs, filePath)
if err != nil {
return err
}
fileName := path.Base(filePath)
artifacts = append(artifacts, card.NewCardArtifact(fileName, fileContents))
}
fileName := path.Base(filePath)
artifacts = append(artifacts, card.NewCardArtifact(fileName, fileContents))
}
return nil
})
Expand All @@ -180,3 +194,17 @@ func (r *fileCardRepository) readCardArtifacts(cardPath string) ([]card.CardArti
func (r *fileCardRepository) isServiceFile(fileName string) bool {
return filepath.Base(fileName)[0] == '.'
}

func (r *fileCardRepository) isIgnoredDirectory(fileInfo os.FileInfo) bool {
if !fileInfo.IsDir() {
return false
}

for _, dirToIgnore := range r.dirsToIgnore {
if fileInfo.Name() == dirToIgnore {
return true
}
}

return false
}
25 changes: 25 additions & 0 deletions details/fs_repo/file_card_repo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,28 @@ func TestReadCardActivities(t *testing.T) {

config.AssertIdenticalYamlStrings(t, string(initialActivitiesBinary), string(actualActivitiesBinary))
}

func TestSkippingIgnoredDirectoriesDuringArtifactReading(t *testing.T) {
fakeFs, err := fs.NewFakeFs([]fs.FakeFileEntry{
fs.NewFakeFileEntry("/home/user/books/cpp/02", "source.cpp", `source code artifact`),
fs.NewFakeFileEntry("/home/user/books/cpp/02", "header.h", `header artifact`),
fs.NewFakeFileEntry("/home/user/books/cpp/02/bin", "ignored", `file that must be ignored`),
})

if err != nil {
t.Fatal(err)
}

repo := fs_repo.NewFileCardRepositoryWithIgnoredDirs(fakeFs, []string{"bin", "obj"})

c, err := repo.Get("/home/user/books/cpp", "02")

if err != nil {
t.Fatal(err)
}

ignoredFile := c.FindArtifactByName("ignored")
if ignoredFile != nil {
t.Fatal("File in ignored directory must not be included into card")
}
}

0 comments on commit 544bd4b

Please sign in to comment.