mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-21 02:55:37 -08:00
parent
e4319b9584
commit
8dcd200e3e
|
@ -356,9 +356,16 @@ func (env *ShellEnvironment) HasFiles(pattern string) bool {
|
||||||
env.log(Error, "HasFiles", err.Error())
|
env.log(Error, "HasFiles", err.Error())
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
hasFiles := len(matches) > 0
|
for _, match := range matches {
|
||||||
env.debugF("HasFiles", func() string { return strconv.FormatBool(hasFiles) })
|
f, _ := os.Stat(match)
|
||||||
return hasFiles
|
if f.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
env.log(Debug, "HasFiles", "true")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
env.log(Debug, "HasFiles", "false")
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *ShellEnvironment) HasFilesInDir(dir, pattern string) bool {
|
func (env *ShellEnvironment) HasFilesInDir(dir, pattern string) bool {
|
||||||
|
@ -397,10 +404,13 @@ func (env *ShellEnvironment) HasFileInParentDirs(pattern string, depth uint) boo
|
||||||
|
|
||||||
func (env *ShellEnvironment) HasFolder(folder string) bool {
|
func (env *ShellEnvironment) HasFolder(folder string) bool {
|
||||||
defer env.trace(time.Now(), "HasFolder", folder)
|
defer env.trace(time.Now(), "HasFolder", folder)
|
||||||
_, err := os.Stat(folder)
|
f, err := os.Stat(folder)
|
||||||
hasFolder := !os.IsNotExist(err)
|
if err != nil {
|
||||||
env.debugF("HasFolder", func() string { return strconv.FormatBool(hasFolder) })
|
env.log(Debug, "HasFolder", "false")
|
||||||
return hasFolder
|
return false
|
||||||
|
}
|
||||||
|
env.debugF("HasFolder", func() string { return strconv.FormatBool(f.IsDir()) })
|
||||||
|
return f.IsDir()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *ShellEnvironment) ResolveSymlink(path string) (string, error) {
|
func (env *ShellEnvironment) ResolveSymlink(path string) (string, error) {
|
||||||
|
|
|
@ -17,7 +17,8 @@ func (d *Dart) Init(props properties.Properties, env environment.Environment) {
|
||||||
d.language = language{
|
d.language = language{
|
||||||
env: env,
|
env: env,
|
||||||
props: props,
|
props: props,
|
||||||
extensions: []string{"*.dart", "pubspec.yaml", "pubspec.yml", "pubspec.lock", ".dart_tool"},
|
extensions: []string{"*.dart", "pubspec.yaml", "pubspec.yml", "pubspec.lock"},
|
||||||
|
folders: []string{".dart_tool"},
|
||||||
commands: []*cmd{
|
commands: []*cmd{
|
||||||
{
|
{
|
||||||
executable: "dart",
|
executable: "dart",
|
||||||
|
|
|
@ -58,6 +58,7 @@ type language struct {
|
||||||
props properties.Properties
|
props properties.Properties
|
||||||
env environment.Environment
|
env environment.Environment
|
||||||
extensions []string
|
extensions []string
|
||||||
|
folders []string
|
||||||
commands []*cmd
|
commands []*cmd
|
||||||
versionURLTemplate string
|
versionURLTemplate string
|
||||||
exitCode int
|
exitCode int
|
||||||
|
@ -89,11 +90,14 @@ const (
|
||||||
HomeEnabled properties.Property = "home_enabled"
|
HomeEnabled properties.Property = "home_enabled"
|
||||||
// LanguageExtensions the list of extensions to validate
|
// LanguageExtensions the list of extensions to validate
|
||||||
LanguageExtensions properties.Property = "extensions"
|
LanguageExtensions properties.Property = "extensions"
|
||||||
|
// LanguageFolders the list of folders to validate
|
||||||
|
LanguageFolders properties.Property = "folders"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (l *language) Enabled() bool {
|
func (l *language) Enabled() bool {
|
||||||
// override default extensions if needed
|
// override default extensions if needed
|
||||||
l.extensions = l.props.GetStringArray(LanguageExtensions, l.extensions)
|
l.extensions = l.props.GetStringArray(LanguageExtensions, l.extensions)
|
||||||
|
l.folders = l.props.GetStringArray(LanguageFolders, l.folders)
|
||||||
inHomeDir := func() bool {
|
inHomeDir := func() bool {
|
||||||
return l.env.Pwd() == l.env.Home()
|
return l.env.Pwd() == l.env.Home()
|
||||||
}
|
}
|
||||||
|
@ -113,11 +117,11 @@ func (l *language) Enabled() bool {
|
||||||
case DisplayModeEnvironment:
|
case DisplayModeEnvironment:
|
||||||
enabled = l.inLanguageContext()
|
enabled = l.inLanguageContext()
|
||||||
case DisplayModeFiles:
|
case DisplayModeFiles:
|
||||||
enabled = l.hasLanguageFiles()
|
enabled = l.hasLanguageFiles() || l.hasLanguageFolders()
|
||||||
case DisplayModeContext:
|
case DisplayModeContext:
|
||||||
fallthrough
|
fallthrough
|
||||||
default:
|
default:
|
||||||
enabled = l.hasLanguageFiles() || l.inLanguageContext()
|
enabled = l.hasLanguageFiles() || l.hasLanguageFolders() || l.inLanguageContext()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !enabled || !l.props.GetBool(properties.FetchVersion, true) {
|
if !enabled || !l.props.GetBool(properties.FetchVersion, true) {
|
||||||
|
@ -130,18 +134,22 @@ func (l *language) Enabled() bool {
|
||||||
return enabled
|
return enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
// hasLanguageFiles will return true at least one file matching the extensions is found
|
|
||||||
func (l *language) hasLanguageFiles() bool {
|
func (l *language) hasLanguageFiles() bool {
|
||||||
for i, extension := range l.extensions {
|
for _, extension := range l.extensions {
|
||||||
if l.env.HasFiles(extension) {
|
if l.env.HasFiles(extension) {
|
||||||
break
|
return true
|
||||||
}
|
|
||||||
if i == len(l.extensions)-1 {
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
func (l *language) hasLanguageFolders() bool {
|
||||||
|
for _, folder := range l.folders {
|
||||||
|
if l.env.HasFolder(folder) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// setVersion parses the version string returned by the command
|
// setVersion parses the version string returned by the command
|
||||||
|
|
|
@ -27,7 +27,8 @@ func (p *Python) Init(props properties.Properties, env environment.Environment)
|
||||||
p.language = language{
|
p.language = language{
|
||||||
env: env,
|
env: env,
|
||||||
props: props,
|
props: props,
|
||||||
extensions: []string{"*.py", "*.ipynb", "pyproject.toml", "venv.bak", "venv", ".venv"},
|
extensions: []string{"*.py", "*.ipynb", "pyproject.toml", "venv.bak"},
|
||||||
|
folders: []string{".venv", "venv", "virtualenv", "env", "venv-win", "pyenv-win"},
|
||||||
loadContext: p.loadContext,
|
loadContext: p.loadContext,
|
||||||
inContext: p.inContext,
|
inContext: p.inContext,
|
||||||
commands: []*cmd{
|
commands: []*cmd{
|
||||||
|
|
Loading…
Reference in a new issue