scrum

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2017 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	First iteration = iota
	Last
)

Variables

View Source
var (
	SlackParams = slack.PostMessageParameters{AsUser: true}
)

Functions

This section is empty.

Types

type Config

type Config struct {
	Timezone string       `json:"timezone"`
	Teams    []TeamConfig `json:"teams"`
}

Config is the configuration format

func (*Config) ToTeams

func (c *Config) ToTeams() []*Team

type ConfigurationProvider

type ConfigurationProvider interface {
	Config() *Config
	OnChange(handler func(cfg *Config))
}

func NewConfigWatcher

func NewConfigWatcher(file string) ConfigurationProvider

type QuestionSet

type QuestionSet struct {
	Questions                 []string
	ReportSchedule            cron.Schedule
	FirstReminderBeforeReport time.Duration
	LastReminderBeforeReport  time.Duration
}

type QuestionSetConfig

type QuestionSetConfig struct {
	Questions                 []string `json:"questions"`
	ReportScheduleCron        string   `json:"report_schedule_cron"`
	FirstReminderBeforeReport string   `json:"first_reminder_limit"`
	LastReminderBeforeReport  string   `json:"last_reminder_limit"`
}

type Report

type Report struct {
	User string
	Team string
	// questions / answers
	Answers map[string]string
}

type ScrumReminderJob

type ScrumReminderJob struct {
	*TeamState
	*QuestionSet
	// contains filtered or unexported fields
}

func (ScrumReminderJob) AddToOutOfOffice

func (m ScrumReminderJob) AddToOutOfOffice(team string, username string)

func (ScrumReminderJob) DeleteLastReport

func (m ScrumReminderJob) DeleteLastReport(user string) bool

func (ScrumReminderJob) GetQuestionSetsForTeam

func (m ScrumReminderJob) GetQuestionSetsForTeam(team string) []*QuestionSet

func (ScrumReminderJob) GetTeamsForUser

func (m ScrumReminderJob) GetTeamsForUser(username string) []string

func (ScrumReminderJob) RemoveFromOutOfOffice

func (m ScrumReminderJob) RemoveFromOutOfOffice(team string, username string)

func (*ScrumReminderJob) Run

func (job *ScrumReminderJob) Run()

func (ScrumReminderJob) SaveReport

func (m ScrumReminderJob) SaveReport(report *Report, qs *QuestionSet)

type ScrumReportJob

type ScrumReportJob struct {
	*TeamState
	*QuestionSet
}

func (ScrumReportJob) AddToOutOfOffice

func (m ScrumReportJob) AddToOutOfOffice(team string, username string)

func (ScrumReportJob) DeleteLastReport

func (m ScrumReportJob) DeleteLastReport(user string) bool

func (ScrumReportJob) GetQuestionSetsForTeam

func (m ScrumReportJob) GetQuestionSetsForTeam(team string) []*QuestionSet

func (ScrumReportJob) GetTeamsForUser

func (m ScrumReportJob) GetTeamsForUser(username string) []string

func (ScrumReportJob) RemoveFromOutOfOffice

func (m ScrumReportJob) RemoveFromOutOfOffice(team string, username string)

func (*ScrumReportJob) Run

func (job *ScrumReportJob) Run()

func (ScrumReportJob) SaveReport

func (m ScrumReportJob) SaveReport(report *Report, qs *QuestionSet)

type Service

type Service interface {
	DeleteLastReport(username string) bool
	GetTeamsForUser(username string) []string
	GetQuestionSetsForTeam(team string) []*QuestionSet
	SaveReport(report *Report, qs *QuestionSet)
	AddToOutOfOffice(team string, username string)
	RemoveFromOutOfOffice(team string, username string)
}

func NewService

func NewService(configurationProvider ConfigurationProvider, slackBotAPI *slack.Client) Service

type Team

type Team struct {
	Name          string
	Channel       string
	Members       []string
	QuestionsSets []*QuestionSet
	Timezone      *time.Location
	OutOfOffice   []string
}

type TeamConfig

type TeamConfig struct {
	Name         string              `json:"name"`
	Channel      string              `json:"channel"`
	Members      []string            `json:"members"`
	QuestionSets []QuestionSetConfig `json:"question_sets"`
	Timezone     string              `json:"timezone"`
}

TeamConfig is the file format for the configuration of a team in json

{
"channel": "analyticsinternal",
"name": "Usage Analytics",
"members": ["@jrochette", "@pastjean", "@lbourdages", "@gbergeron", "@mlachapelle", "@aemond", "@gprovost"],
"question_sets": [{
  "questions":  [
    "What did you do yesterday? _(jira if needed)_",
    "What will you do today?",
    "Are you being blocked by someone for a review? who ? why ?"
  ],
"report_schedule_cron": "0 0 8 * * MON",
"first_reminder_limit": "+55m",
"last_reminder_limit": "+65m"
}

func (*TeamConfig) ToTeam

func (tc *TeamConfig) ToTeam() *Team

type TeamState

type TeamState struct {
	*Team
	*cron.Cron
	// contains filtered or unexported fields
}

func (TeamState) AddToOutOfOffice

func (m TeamState) AddToOutOfOffice(team string, username string)

func (TeamState) DeleteLastReport

func (m TeamState) DeleteLastReport(user string) bool

func (TeamState) GetQuestionSetsForTeam

func (m TeamState) GetQuestionSetsForTeam(team string) []*QuestionSet

func (TeamState) GetTeamsForUser

func (m TeamState) GetTeamsForUser(username string) []string

func (TeamState) RemoveFromOutOfOffice

func (m TeamState) RemoveFromOutOfOffice(team string, username string)

func (TeamState) SaveReport

func (m TeamState) SaveReport(report *Report, qs *QuestionSet)

Jump to

Keyboard shortcuts

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