Versions in this module Expand all Collapse all v0 v0.4.3 Mar 22, 2026 Changes in this version type BuildCmd + Live bool + type FileWatcher struct + Errors chan error + Events chan string + func NewFileWatcher(dir string, excludes []string) (*FileWatcher, error) + func (w *FileWatcher) Close() error + func (w *FileWatcher) Run(ctx context.Context) type Spinner + func (s *Spinner) Cancel() v0.4.2 Mar 16, 2026 v0.4.1 Mar 16, 2026 v0.4.0 Mar 16, 2026 Changes in this version + var TexliveVersions = []string type Config + Texlive string type CreateProjectResponse + Texlive string type Document + Texlive string type InitCmd + Texlive string type UI + func NewUIWithTTYOptions(out io.Writer, outIsTTY, stdinIsTTY bool, in io.Reader) *UI + func (ui *UI) IsInteractive() bool v0.3.0 Mar 13, 2026 v0.2.0 Mar 13, 2026 v0.1.0 Mar 13, 2026 Changes in this version + const DefaultAPIURL + var AllowedCompilers = []string + var CredentialsFilePath = credentialsFilePath + var ErrAuthorizationPending = fmt.Errorf("authorization pending") + var ErrDeviceCodeExpired = fmt.Errorf("device code expired") + var ErrTokenConflict = fmt.Errorf("token name already exists") + var ErrTokenNotFound = fmt.Errorf("token not found") + var KeyringGet = keyring.Get + var KeyringSet = keyring.Set + var NewInstanceClientFn = func(instanceURL, jwt string) *InstanceClient + var OpenBrowser = openBrowser + var PollInterval = 5 * time.Second + var RunBuild = runBuild + func FormatSize(bytes int64) string + func HashContent(data []byte) string + func ResolveAPIURL(cfg Config) string + func ResolveAuth() (string, error) + func TotalSize(files []FileEntry) int64 + type APIClient struct + func NewAPIClient(baseURL, apiKey string) *APIClient + func NewUnauthenticatedAPIClient(baseURL string) *APIClient + func (c *APIClient) CreateAPIToken(name string, expiresIn *int64) (APITokenResponse, error) + func (c *APIClient) CreateProject(name, distVersion, projectKey string) (CreateProjectResponse, error) + func (c *APIClient) DeleteAPIToken(tokenID string) error + func (c *APIClient) GetSession(projectID, distributionVersion string) (SessionResponse, error) + func (c *APIClient) ListAPITokens() ([]APITokenListItem, error) + func (c *APIClient) PollToken(deviceCode string) (TokenResponse, error) + func (c *APIClient) RefreshToken(jwt string) (TokenResponse, error) + func (c *APIClient) RequestDeviceCode() (DeviceCodeResponse, error) + func (c *APIClient) SetHTTPClient(hc *http.Client) + func (c *APIClient) Whoami() (WhoamiResponse, error) + type APIError struct + Body string + StatusCode int + func (e *APIError) Error() string + type APITokenListItem struct + CreatedAt string + ExpiresAt *string + ID string + LastUsedAt *string + Name string + Prefix string + type APITokenResponse struct + CreatedAt string + ExpiresAt *string + ID string + Name string + Prefix string + Token string + type BuildCmd struct + Args struct{ ... } + NoCache bool + UI *UI + Yes bool + func (cmd *BuildCmd) Execute(args []string) error + type BuildDoneEvent struct + BuildID string + Message string + PdfURL string + Status string + func ParseSSEStream(reader io.Reader, onLog func(string)) (BuildDoneEvent, error) + type Config struct + APIURL string + Compiler string + DistributionVersion string + Documents []Document + ProjectKey string + func LoadConfig(dir string) (Config, error) + func ParseConfig(content string) (Config, error) + func (c Config) DocumentByName(name string) (Document, bool) + type CreateProjectResponse struct + DistributionVersion string + ID string + Name string + type DeviceCodeResponse struct + DeviceCode string + ExpiresIn int + Interval int + UserCode string + VerificationURL string + type Document struct + Compiler string + Directory string + DistributionVersion string + Main string + Name string + Output string + func DiscoverDocuments(dir string) ([]Document, error) + type FileEntry struct + Hash string + Path string + Size int64 + func CollectFiles(dir string) ([]FileEntry, error) + type InitCmd struct + Compiler string + DistVersion string + Main string + UI *UI + func (cmd *InitCmd) Execute(args []string) error + type InstanceClient struct + func NewInstanceClient(instanceURL, jwt string) *InstanceClient + func (c *InstanceClient) Build(projectID, main, directory, distVersion, compiler string, ...) (BuildDoneEvent, error) + func (c *InstanceClient) BuildWithArgs(projectID, main, directory, distVersion, compiler string, args []string, ...) (BuildDoneEvent, error) + func (c *InstanceClient) DownloadPDF(projectID, buildID, outputPath string) error + func (c *InstanceClient) SetHTTPClient(hc *http.Client) + func (c *InstanceClient) Sync(projectID string, files []FileEntry) (SyncResult, error) + func (c *InstanceClient) Upload(projectID, projectDir string, filePaths []string, ...) error + func (c *InstanceClient) UploadRaw(projectID string, tarData []byte) error + type LoginCmd struct + UI *UI + func (cmd *LoginCmd) Execute(args []string) error + type Options struct + Build BuildCmd + Init InitCmd + Login LoginCmd + Status StatusCmd + Token TokenCmd + type ProgressBar struct + func (pb *ProgressBar) Abort() + func (pb *ProgressBar) Done() + func (pb *ProgressBar) Reader(r io.Reader) io.Reader + func (pb *ProgressBar) Update(fraction float64) + type SessionResponse struct + CacheCold bool + InstanceURL string + JWT string + type Spinner struct + func (s *Spinner) Fail(errMsg string) + func (s *Spinner) Stop(successMsg string) + type StatusCmd struct + UI *UI + func (cmd *StatusCmd) Execute(args []string) error + type SyncResult struct + Missing []string + type TokenCmd struct + Create TokenCreateCmd + Delete TokenDeleteCmd + List TokenListCmd + type TokenCreateCmd struct + ExpiresIn string + Name string + NoExpiry bool + UI *UI + func (cmd *TokenCreateCmd) Execute(args []string) error + type TokenDeleteCmd struct + UI *UI + func (cmd *TokenDeleteCmd) Execute(args []string) error + type TokenErrorResponse struct + Error string + type TokenListCmd struct + UI *UI + func (cmd *TokenListCmd) Execute(args []string) error + type TokenResponse struct + ExpiresAt string + JWT string + type UI struct + func NewUI(out io.Writer) *UI + func NewUIWithOptions(out io.Writer, isTTY bool, in io.Reader) *UI + func (ui *UI) Confirm(msg string) (bool, error) + func (ui *UI) DimInfo(msg string) + func (ui *UI) Errorf(format string, args ...any) + func (ui *UI) IsTTY() bool + func (ui *UI) Log(line string) + func (ui *UI) Out() io.Writer + func (ui *UI) Progress(label string, total int64) *ProgressBar + func (ui *UI) Select(label string, options []string) (int, error) + func (ui *UI) SelectDocuments(docs []Document) ([]Document, error) + func (ui *UI) SelectOne(label string, options []string) (int, error) + func (ui *UI) Spin(msg string) *Spinner + func (ui *UI) Status(msg string) + func (ui *UI) Success(msg string) + func (ui *UI) TextInput(label string) (string, error) + type WhoamiResponse struct + AuthMethod string + Email string + ExpiresAt *string + UserID string