project

package
v1.39.1-alpha.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2022 License: BSD-3-Clause Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// WakaTimeProjectFile is the special file which if present should contain the project name and optional branch name
	// that will be used instead of the auto-detected project and branch names.
	WakaTimeProjectFile = ".wakatime-project"
)

Variables

This section is empty.

Functions

func Filter added in v1.35.1

func Filter(h heartbeat.Heartbeat, config FilterConfig) error

Filter determines, following the passed in configurations, if a heartbeat should be skipped.

func FindFileOrDirectory added in v1.18.10

func FindFileOrDirectory(directory, filename string) (string, bool)

FindFileOrDirectory searches for a file or directory named `filename`. Search starts in `directory` and will traverse through all parent directories. `directory` may also be a file, and in that case will start from the file's directory.

func WithDetection

func WithDetection(config Config) heartbeat.HandleOption

WithDetection finds the current project and branch. First looks for a .wakatime-project file. Second, uses the --project arg. Third, uses the folder name from a revision control repository. Last, uses the --alternate-project arg.

func WithFiltering added in v1.35.1

func WithFiltering(config FilterConfig) heartbeat.HandleOption

WithFiltering initializes and returns a heartbeat handle option, which can be used in a heartbeat processing pipeline to filter heartbeats following the provided configurations.

func Write

func Write(folder, project string) error

Write saves wakatime project file.

Types

type Config

type Config struct {
	// Patterns contains the overridden project name per path.
	MapPatterns []MapPattern
	// SubmodulePatterns contains the paths to validate for submodules.
	SubmodulePatterns []regex.Regex
	// ShouldObfuscateProject determines if the project name should be obfuscated according some rules.
	ShouldObfuscateProject bool
}

Config contains project detection configurations.

type Detecter

type Detecter interface {
	Detect() (Result, bool, error)
	String() string
}

Detecter is a common interface for project.

type Err

type Err string

Err handles a custom error when finding for project and branch names.

func (Err) Error

func (e Err) Error() string

Error implements error interface.

type File

type File struct {
	Filepath string
}

File contains file data.

func (File) Detect

func (f File) Detect() (Result, bool, error)

Detect get information from a .wakatime-project file about the project for a given file. First line of .wakatime-project sets the project name. Second line sets the current branch name.

func (File) String

func (File) String() string

String returns its name.

type FilterConfig added in v1.35.1

type FilterConfig struct {
	// ExcludeUnknownProject determines if heartbeat should be skipped when the project cannot be detected.
	ExcludeUnknownProject bool
}

FilterConfig contains project filtering configurations.

type Git

type Git struct {
	// Filepath contains the entity path.
	Filepath string
	// SubmodulePatterns will be matched against the submodule path and if matching, will skip it.
	SubmodulePatterns []regex.Regex
}

Git contains git data.

func (Git) Detect

func (g Git) Detect() (Result, bool, error)

Detect gets information about the git project for a given file. It tries to return a project and branch name.

func (Git) String

func (Git) String() string

String returns its name.

type Map

type Map struct {
	Filepath string
	Patterns []MapPattern
}

Map contains map data.

func (Map) Detect

func (m Map) Detect() (Result, bool, error)

Detect use the ~/.wakatime.cfg file to set custom project names by matching files with regex patterns. Project maps go under the [projectmap] config section.

For example:

[projectmap]
/home/user/projects/foo = new project name
/home/user/projects/bar(\d+)/ = project{0}

Will result in file '/home/user/projects/foo/src/main.c' to have project name 'new project name' and file '/home/user/projects/bar42/main.c' to have project name 'project42'.

func (Map) String

func (Map) String() string

String returns its name.

type MapPattern

type MapPattern struct {
	// Name is the project name.
	Name string
	// Regex is the regular expression for a specific path.
	Regex regex.Regex
}

MapPattern contains [projectmap] data.

type Mercurial

type Mercurial struct {
	// Filepath contains the entity path.
	Filepath string
}

Mercurial contains mercurial data.

func (Mercurial) Detect

func (m Mercurial) Detect() (Result, bool, error)

Detect gets information about the mercurial project for a given file.

func (Mercurial) String

func (Mercurial) String() string

String returns its name.

type Result

type Result struct {
	Project string
	Branch  string
	Folder  string
}

Result contains the result of Detect().

func Detect

func Detect(entity string, patterns []MapPattern) Result

Detect finds the current project and branch from config plugins.

func DetectWithRevControl

func DetectWithRevControl(entity string, submodulePatterns []regex.Regex) Result

DetectWithRevControl finds the current project and branch from rev control.

type Subversion

type Subversion struct {
	// Filepath contains the entity path.
	Filepath string
}

Subversion contains svn data.

func (Subversion) Detect

func (s Subversion) Detect() (Result, bool, error)

Detect gets information about the svn project for a given file.

func (Subversion) String

func (Subversion) String() string

String returns its name.

type Tfvc added in v1.6.0

type Tfvc struct {
	// Filepath contains the entity path.
	Filepath string
}

Tfvc contains tfvc data.

func (Tfvc) Detect added in v1.6.0

func (t Tfvc) Detect() (Result, bool, error)

Detect gets information about the tfvc project for a given file.

func (Tfvc) String added in v1.6.0

func (Tfvc) String() string

String returns its name.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL