cli/pkg/cmd/extensions/extension.go
2021-07-20 13:13:20 -07:00

47 lines
846 B
Go

package extensions
import (
"errors"
"os"
"path/filepath"
"strings"
)
type Extension struct {
path string
url string
updateAvailable bool
}
func (e *Extension) Name() string {
return strings.TrimPrefix(filepath.Base(e.path), "gh-")
}
func (e *Extension) Path() string {
return e.path
}
func (e *Extension) URL() string {
return e.url
}
func (e *Extension) IsLocal() bool {
dir := filepath.Dir(e.path)
fileInfo, err := os.Lstat(dir)
if err != nil {
return false
}
// Check if extension is a symlink
if fileInfo.Mode()&os.ModeSymlink != 0 {
return true
}
// Check if extension does not have a git directory
if _, err = os.Stat(filepath.Join(dir, ".git")); errors.Is(err, os.ErrNotExist) {
return true
}
return false
}
func (e *Extension) UpdateAvailable() bool {
return e.updateAvailable
}