Branch

configTypes.ts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
e00eff Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
e00eff Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
b8a3bb Tucker McKnight
e00eff Tucker McKnight
e00eff Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
e00eff Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
/**
 * The ReposConfiguration object contains information about your local repositories,
 * like their name and location on your local filesystem. Add repositories to this
 * configuration object to make a static site for them.
 * 
 * This static site generator works with both git and darcs repositories. Because of the
 * differences between these two version control systems, the configuration for them
 * looks a little different. Both types of configuration objects can be nested underneath
 * the {@link ReposConfiguration.repos} key.
 * 
 * You will also need to set the {@link ReposConfiguration.baseUrl} to the URL of your
 * live website.
 * @example
 * const config: ReposConfiguration = {
 *   baseUrl: "https://repos.tuckerm.us",
 *   repos: {
 *     "My Darcs Project": {
 *       _type: "darcs",
 *       defaultBranch: 'main',
 *       branches: {
 *         'main': {
 *           location: "/home/alice/projects/my_darcs_project",
 *           description: "Main branch of this project."
 *         },
 *         'drafts': {
 *           location: "/home/alice/projects/my_darcs_project_drafts/",
 *           description: "Some things that are a work in progress",
 *         },
 *       },
 *       languageExtensions: {
 *         "njk": "html",
 *       },
 *     },
 *   },
 * }
 */
export type ReposConfiguration = {
  repos: {
    /** An object containing the configuration for your repositories.
    * Each key in this object is a repository name, and the value has several
    * config options for that repository. The required config options describe
    * the path to the repository and which branches should be pulled. See the specific
    * definitions of {@link GitConfig} and {@link DarcsConfig} for more details
    * about what goes in these configuration objects.
    */
    [repoName: string]: GitConfig | DarcsConfig
  },
  /**
  * The root URL where this website will be. E.g.: https://blog.example.com/repos.
  * This URL will be used when a clone or pull command is being shown on your site.
  * @example baseUrl: "https://repos.tuckerm.us"
  */
  baseUrl: string,
  /**
  * The path to put the generated site in. All generated files will be put in this
  * directory, repos for cloning will be put in this directory, and it will be
  * added to the end of all URLs used by the default virtual template.
  * @example path: "/repos"
  */
  path?: string,
}

export type GitConfig = {
  _type: "git",
  /* The absolute path to the repository.
  * @example location: "/home/alice/projects/git_repo"
  */
  location: string,
  description?: string,
  defaultBranch: string,
  branchesToPull: Array<string>,
  languageExtensions?: {
    [fileExtension: string]: string
  }
}

/**
* A configuration object for a darcs repository.
*
* @example
* "My Darcs Project": {
*   _type: "darcs",
*   baseUrl: "https://repos.tuckerm.us",
*   defaultBranch: 'main',
*   branches: {
*     'main': {
*       location: "/home/alice/projects/my_darcs_project",
*       description: "Main branch of this project."
*     },
*     'drafts': {
*       location: "/home/alice/projects/my_darcs_project_drafts/",
*       description: "Some things that are a work in progress",
*     },
*   },
*   languageExtensions: {
*     "njk": "html",
*   },
* }
*/
export type DarcsConfig = {
  /** Must be set to `"darcs"`. */
  _type: "darcs",
  /**
  * The name of the default branch. Should match one of the keys in {@link DarcsConfig.branches}.
  * @example defaultBranch: "main"
  * */
  defaultBranch: string,
  /** The branches of this repository to generate pages for. Since darcs doesn't have
  * branches in the same way that other VCSs do, a "branch" in this case is an entirely
  * separate repository. So, these "branches" are more like repos that are grouped under
  * the same project name. That is why you need to specify a separate location for each
  * branch.
  * @example
  * branches: {
  *   main: {
  *     location: "/home/alice/projects/my-project/main",
  *     description: "The main release branch of this project."
  *   },
  *   drafts: {
  *     location: "/home/alice/projects/my-project/drafts",
  *     description: "Undeployed works-in-progress for this project."
  *   }
  * }
  */
  branches: {
    /**
    * Each key in this object will be the name that is used for that branch.
    */
    [branchName: string]: {
      /**
      * The absolute path to the repository for this branch.
      * @example location: "/home/alice/projects/darcs_repo_main"
      */
      location: string,
      /**
      * A description of this branch. You may want to clarify what this branch is used for here.
      */
      description?: string,
    }
  },
  /**
  * If your repository has any uncommon file extensions that should be treated like a different
  * type of file, list them here. If you include `{njk: "html"}` here, that will tell the
  * syntax highlighter to highlight an `njk` file like an `html` file. The key is the file
  * extension in your code, and the value is the file extension that the syntax highlighter
  * will know about.
  * @example
  * languageExtensions: {
  *   njk: "html",
  *   jss: "js",
  *   madeupformat: "txt"
  * }
  */
  languageExtensions?: {
    [fileExtension: string]: string
  }
}