Documentation
¶
Overview ¶
Package deeplink reads the address of a page of the DataTug web app (https://datatug.app/...) into what the terminal UI needs to open the same project and page: `datatug ui --deep-link <address>`.
The address shapes are those of the web app's project-address library (datatug/datatug-apps libs/datatug/project-address):
- GitHub: /project/github.com/<owner>/<repo>[/<dir>…][/-/<page>…][?ref=<ref>], and the legacy …/<repo>/tree/<ref>[/<dir>…][/-/<page>…] and …/<repo>/blob/<ref>[/<dir>…]/datatug-project.json;
- any store: /store/<storeId>/project/<projectId>[/<page>…];
- a DataTug Cloud project of a Space: /space/<spaceId>/store/firestore/project/<projectId>[/<page>…].
Parse is pure: it makes no request and touches no file.
Index ¶
Constants ¶
const Usage = "https://datatug.app/project/github.com/<owner>/<repo>[/<dir>…][/-/<page>…]"
Usage is the form an address must have, for messages.
Variables ¶
var ErrInvalid = errors.New("invalid DataTug web address")
ErrInvalid is wrapped by every error of Parse. The error text never repeats the address: it may hold credentials or a query.
Functions ¶
This section is empty.
Types ¶
type GitHubProject ¶
type GitHubProject struct {
// Owner and Repo are lower case.
Owner, Repo string
// Folder is the repository-relative directory of the project; "" is the
// repository root.
Folder string
// Ref is the branch, tag or commit, "" for the default branch.
Ref string
}
GitHubProject locates a project in a GitHub repository.
type Kind ¶
type Kind int
Kind is what an address names.
const ( // KindNone is a page of the web app that is not a project (home, sign-in…): // the terminal UI opens on its normal start screen. KindNone Kind = iota // KindGitHub is a project in a GitHub repository. KindGitHub // KindAgent is a project served by a `datatug serve` agent on this machine. KindAgent // KindCloud is a DataTug Cloud (Firestore) project. KindCloud // KindBrowser is a project stored in the browser of the web app. KindBrowser // KindOtherStore is a project of a store the terminal UI does not know. KindOtherStore )
type Link ¶
type Link struct {
Kind Kind
// GitHub is set for KindGitHub.
GitHub GitHubProject
// StoreID and ProjectID are set for every project kind but KindGitHub;
// SpaceID only for a Space project of DataTug Cloud.
StoreID, ProjectID, SpaceID string
// Page is the page of the project, as decoded segments (["query", "q1"]);
// empty for the project's home.
Page []string
}
Link is a parsed address.
func Parse ¶
Parse reads an address of the web app: https://datatug.app/… or, for a development build of the web app, http://localhost:<port>/….