Documentation
¶
Index ¶
- func ValidateFeatureFlags(flags []*FeatureFlag) error
- type Config
- type DocumentType
- type DocumentTypeCheck
- type DocumentTypeCustomField
- type DocumentTypeLink
- type DocumentTypes
- type Email
- type FeatureFlag
- type FeatureFlags
- type GoogleWorkspace
- type GoogleWorkspaceOAuth2
- type Indexer
- type Postgres
- type Product
- type Products
- type Server
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ValidateFeatureFlags ¶
func ValidateFeatureFlags(flags []*FeatureFlag) error
ValidateFeatureFlags validates the feature flags defined in the config.
Types ¶
type Config ¶
type Config struct {
// Algolia configures Hermes to work with Algolia.
Algolia *algolia.Config `hcl:"algolia,block"`
// BaseURL is the base URL used for building links.
BaseURL string `hcl:"base_url,optional"`
// DocumentTypes contain available document types.
DocumentTypes *DocumentTypes `hcl:"document_types,block"`
// Email configures Hermes to send email notifications.
Email *Email `hcl:"email,block"`
// FeatureFlags contain available feature flags.
FeatureFlags *FeatureFlags `hcl:"feature_flags,block"`
// GoogleAnalyticsTagID is the tag ID for Google Analytics
GoogleAnalyticsTagID string `hcl:"google_analytics_tag_id,optional"`
// GoogleWorkspace configures Hermes to work with Google Workspace.
GoogleWorkspace *GoogleWorkspace `hcl:"google_workspace,block"`
// Indexer contains the configuration for the Hermes indexer.
Indexer *Indexer `hcl:"indexer,block"`
// Okta configures Hermes to work with Okta.
Okta *oktaalb.Config `hcl:"okta,block"`
// Products contain available products.
Products *Products `hcl:"products,block"`
// Postgres configures PostgreSQL as the app database.
Postgres *Postgres `hcl:"postgres,block"`
// Server contains the configuration for the Hermes server.
Server *Server `hcl:"server,block"`
// ShortenerBaseURL is the base URL for building short links.
ShortenerBaseURL string `hcl:"shortener_base_url,optional"`
}
Config contains the Hermes configuration.
type DocumentType ¶
type DocumentType struct {
// Name is the name of the document type, which is generally an abbreviation.
// Example: "RFC"
Name string `hcl:"name,label" json:"name"`
// LongName is the longer name for the document type.
// Example: "Request for Comments"
LongName string `hcl:"long_name,optional" json:"longName"`
// Description is the description of the document type.
// Example: "Create a Request for Comments document to present a proposal to
// colleagues for their review and feedback."
Description string `hcl:"description,optional" json:"description"`
// Template is the Google file ID for the document template used for this
// document type.
Template string `hcl:"template"`
// MoreInfoLink defines a link to more info for the document type.
// Example: "When should I create an RFC?"
MoreInfoLink *DocumentTypeLink `hcl:"more_info_link,block" json:"moreInfoLink"`
// Checks are document type checks, which require acknowledging a check box
// in order to publish a document.
Checks []*DocumentTypeCheck `hcl:"check,block" json:"checks"`
// CustomFields are custom fields specific to the document type.
CustomFields []*DocumentTypeCustomField `hcl:"custom_field,block" json:"customFields"`
}
DocumentType is a document type (e.g., "RFC", "PRD").
type DocumentTypeCheck ¶
type DocumentTypeCheck struct {
// Label is the document type check label.
Label string `hcl:"label" json:"label"`
// HelperText contains more details for the document type check.
HelperText string `hcl:"helper_text,optional" json:"helperText"`
// Links contain document type check links.
Links []*DocumentTypeLink `hcl:"link,block" json:"links"`
}
DocumentTypeCheck is a document type check, which require acknowledging a check box in order to publish a document.
type DocumentTypeCustomField ¶
type DocumentTypeCustomField struct {
// Name is the name of the custom field. This is used as the custom field
// identifier.
Name string `hcl:"name" json:"name"`
// ReadOnly is true if the custom field can only be read.
ReadOnly bool `hcl:"read_only,optional" json:"readOnly"`
// Type is the type of custom field. Valid values are "people", "person", and
// "string".
Type string `hcl:"type" json:"type"`
}
type DocumentTypeLink ¶
type DocumentTypeLink struct {
// Text is the displayed text for a document type link.
Text string `hcl:"text" json:"text"`
// URL is the URL that the document type link links to.
URL string `hcl:"url" json:"url"`
}
DocumentTypeLink is a document type link.
type DocumentTypes ¶
type DocumentTypes struct {
// DocumentType defines a document type.
DocumentType []*DocumentType `hcl:"document_type,block"`
}
DocumentTypes contain available document types.
type Email ¶
type Email struct {
// Enabled enables sending email notifications.
Enabled bool `hcl:"enabled,optional"`
// FromAddress is the email address to send emails from.
FromAddress string `hcl:"from_address,optional"`
}
Email configures Hermes to send email notifications.
type FeatureFlag ¶
type FeatureFlag struct {
// Name is the name of the feature flag
Name string `hcl:"name,label"`
// Enabled enables the feature flag.
// Since the default value of uninitialized bool is false,
// *bool is used to check whether Enabled is set or not.
Enabled *bool `hcl:"enabled,optional"`
// Percentage defines the percentage of users that will have
// the feature flag enabled.
Percentage int `hcl:"percentage,optional"`
}
type FeatureFlags ¶
type FeatureFlags struct {
// FeatureFlag defines a feature flag in Hermes.
FeatureFlag []*FeatureFlag `hcl:"flag,block"`
}
FeatureFlags contain available feature flags.
type GoogleWorkspace ¶
type GoogleWorkspace struct {
// Auth contains the authentication configuration for Google Workspace.
Auth *gw.Config `hcl:"auth,block"`
// CreateDocShortcuts enables creating a shortcut in the appropriate (per doc
// type and product) Shared Drive folder when a document is published.
CreateDocShortcuts bool `hcl:"create_doc_shortcuts,optional"`
// DocsFolder is the folder that contains all published documents.
DocsFolder string `hcl:"docs_folder"`
// DraftsFolder is the folder that contains all document drafts.
DraftsFolder string `hcl:"drafts_folder"`
// OAuth2 is the configuration to use OAuth 2.0 to access Google Workspace
// APIs.
OAuth2 *GoogleWorkspaceOAuth2 `hcl:"oauth2,block"`
// ShortcutsFolder is the folder that contains document shortcuts organized
// into doc type and product subfolders.
ShortcutsFolder string `hcl:"shortcuts_folder"`
}
GoogleWorkspace is the configuration to work with Google Workspace.
type GoogleWorkspaceOAuth2 ¶
type GoogleWorkspaceOAuth2 struct {
// ClientID is the client ID obtained from the Google API Console Credentials
// page.
ClientID string `hcl:"client_id,optional"`
// HD is the allowed domain associated with the authenticating user.
HD string `hcl:"hd,optional"`
// RedirectURI is an authorized redirect URI for the given client_id as
// specified in the Google API Console Credentials page.
RedirectURI string `hcl:"redirect_uri,optional"`
}
GoogleWorkspaceOAuth2 is the configuration to use OAuth 2.0 to access Google Workspace APIs.
type Indexer ¶
type Indexer struct {
// MaxParallelDocs is the maximum number of documents that will be
// simultaneously indexed.
MaxParallelDocs int `hcl:"max_parallel_docs,optional"`
// UpdateDocHeaders enables the indexer to automatically update document
// headers for Hermes-managed documents with Hermes document metadata.
UpdateDocHeaders bool `hcl:"update_doc_headers,optional"`
// UpdateDraftHeaders enables the indexer to automatically update document
// headers for draft documents with Hermes document metadata.
UpdateDraftHeaders bool `hcl:"update_draft_headers,optional"`
}
Indexer contains the configuration for the Hermes indexer.
type Postgres ¶
type Postgres struct {
// Host is the database name.
DBName string `hcl:"dbname"`
// Host is the name of host to connect to.
Host string `hcl:"host"`
// Password is the password to be used.
Password string `hcl:"password"`
// Port is the port number to connect to at the server host.
Port int `hcl:"port"`
// Host is the PostgreSQL user name to connect as.
User string `hcl:"user"`
}
Postgres configures PostgreSQL as the app database.
type Product ¶
type Product struct {
// Name is the name of the product.
Name string `hcl:"name,label" json:"name"`
// Abbreviation is the abbreviation (usually a few uppercase letters).
Abbreviation string `hcl:"abbreviation" json:"abbreviation"`
}
Product is a product/area.