├── .gitignore
├── COPYING
├── PackageInfo.g
├── README.html
├── README.md
├── _config.yml
├── _data
└── package.yml
├── _includes
└── button-bibtex.html
├── _layouts
└── default.html
├── doc
├── chap0.html
├── chap0.txt
└── chap0_mj.html
├── images
├── arrow-down.png
└── octocat-small.png
├── index.md
├── javascripts
└── scale.fix.js
├── setup-gh-pages
├── stylesheets
├── pygment_trac.css
└── styles.css
└── update.g
/.gitignore:
--------------------------------------------------------------------------------
1 | _site
--------------------------------------------------------------------------------
/COPYING:
--------------------------------------------------------------------------------
1 | The GitHubPagesForGAP package is free software; you can redistribute
2 | and/or modify it under the terms of the GNU General Public License as
3 | published by the Free Software Foundation; either version 2 of the
4 | License, or (at your opinion) any later version.
5 |
6 | The GitHubPagesForGAP package is distributed in the hope that it will
7 | be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8 | of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9 | General Public License for more details.
10 |
11 | Version 2 of the GNU General Public License follows.
12 |
13 | GNU GENERAL PUBLIC LICENSE
14 | Version 2, June 1991
15 |
16 | Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 | Everyone is permitted to copy and distribute verbatim copies
19 | of this license document, but changing it is not allowed.
20 |
21 | Preamble
22 |
23 | The licenses for most software are designed to take away your
24 | freedom to share and change it. By contrast, the GNU General Public
25 | License is intended to guarantee your freedom to share and change free
26 | software--to make sure the software is free for all its users. This
27 | General Public License applies to most of the Free Software
28 | Foundation's software and to any other program whose authors commit to
29 | using it. (Some other Free Software Foundation software is covered by
30 | the GNU Lesser General Public License instead.) You can apply it to
31 | your programs, too.
32 |
33 | When we speak of free software, we are referring to freedom, not
34 | price. Our General Public Licenses are designed to make sure that you
35 | have the freedom to distribute copies of free software (and charge for
36 | this service if you wish), that you receive source code or can get it
37 | if you want it, that you can change the software or use pieces of it
38 | in new free programs; and that you know you can do these things.
39 |
40 | To protect your rights, we need to make restrictions that forbid
41 | anyone to deny you these rights or to ask you to surrender the rights.
42 | These restrictions translate to certain responsibilities for you if you
43 | distribute copies of the software, or if you modify it.
44 |
45 | For example, if you distribute copies of such a program, whether
46 | gratis or for a fee, you must give the recipients all the rights that
47 | you have. You must make sure that they, too, receive or can get the
48 | source code. And you must show them these terms so they know their
49 | rights.
50 |
51 | We protect your rights with two steps: (1) copyright the software, and
52 | (2) offer you this license which gives you legal permission to copy,
53 | distribute and/or modify the software.
54 |
55 | Also, for each author's protection and ours, we want to make certain
56 | that everyone understands that there is no warranty for this free
57 | software. If the software is modified by someone else and passed on, we
58 | want its recipients to know that what they have is not the original, so
59 | that any problems introduced by others will not reflect on the original
60 | authors' reputations.
61 |
62 | Finally, any free program is threatened constantly by software
63 | patents. We wish to avoid the danger that redistributors of a free
64 | program will individually obtain patent licenses, in effect making the
65 | program proprietary. To prevent this, we have made it clear that any
66 | patent must be licensed for everyone's free use or not licensed at all.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | GNU GENERAL PUBLIC LICENSE
72 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
73 |
74 | 0. This License applies to any program or other work which contains
75 | a notice placed by the copyright holder saying it may be distributed
76 | under the terms of this General Public License. The "Program", below,
77 | refers to any such program or work, and a "work based on the Program"
78 | means either the Program or any derivative work under copyright law:
79 | that is to say, a work containing the Program or a portion of it,
80 | either verbatim or with modifications and/or translated into another
81 | language. (Hereinafter, translation is included without limitation in
82 | the term "modification".) Each licensee is addressed as "you".
83 |
84 | Activities other than copying, distribution and modification are not
85 | covered by this License; they are outside its scope. The act of
86 | running the Program is not restricted, and the output from the Program
87 | is covered only if its contents constitute a work based on the
88 | Program (independent of having been made by running the Program).
89 | Whether that is true depends on what the Program does.
90 |
91 | 1. You may copy and distribute verbatim copies of the Program's
92 | source code as you receive it, in any medium, provided that you
93 | conspicuously and appropriately publish on each copy an appropriate
94 | copyright notice and disclaimer of warranty; keep intact all the
95 | notices that refer to this License and to the absence of any warranty;
96 | and give any other recipients of the Program a copy of this License
97 | along with the Program.
98 |
99 | You may charge a fee for the physical act of transferring a copy, and
100 | you may at your option offer warranty protection in exchange for a fee.
101 |
102 | 2. You may modify your copy or copies of the Program or any portion
103 | of it, thus forming a work based on the Program, and copy and
104 | distribute such modifications or work under the terms of Section 1
105 | above, provided that you also meet all of these conditions:
106 |
107 | a) You must cause the modified files to carry prominent notices
108 | stating that you changed the files and the date of any change.
109 |
110 | b) You must cause any work that you distribute or publish, that in
111 | whole or in part contains or is derived from the Program or any
112 | part thereof, to be licensed as a whole at no charge to all third
113 | parties under the terms of this License.
114 |
115 | c) If the modified program normally reads commands interactively
116 | when run, you must cause it, when started running for such
117 | interactive use in the most ordinary way, to print or display an
118 | announcement including an appropriate copyright notice and a
119 | notice that there is no warranty (or else, saying that you provide
120 | a warranty) and that users may redistribute the program under
121 | these conditions, and telling the user how to view a copy of this
122 | License. (Exception: if the Program itself is interactive but
123 | does not normally print such an announcement, your work based on
124 | the Program is not required to print an announcement.)
125 |
126 | These requirements apply to the modified work as a whole. If
127 | identifiable sections of that work are not derived from the Program,
128 | and can be reasonably considered independent and separate works in
129 | themselves, then this License, and its terms, do not apply to those
130 | sections when you distribute them as separate works. But when you
131 | distribute the same sections as part of a whole which is a work based
132 | on the Program, the distribution of the whole must be on the terms of
133 | this License, whose permissions for other licensees extend to the
134 | entire whole, and thus to each and every part regardless of who wrote it.
135 |
136 | Thus, it is not the intent of this section to claim rights or contest
137 | your rights to work written entirely by you; rather, the intent is to
138 | exercise the right to control the distribution of derivative or
139 | collective works based on the Program.
140 |
141 | In addition, mere aggregation of another work not based on the Program
142 | with the Program (or with a work based on the Program) on a volume of
143 | a storage or distribution medium does not bring the other work under
144 | the scope of this License.
145 |
146 | 3. You may copy and distribute the Program (or a work based on it,
147 | under Section 2) in object code or executable form under the terms of
148 | Sections 1 and 2 above provided that you also do one of the following:
149 |
150 | a) Accompany it with the complete corresponding machine-readable
151 | source code, which must be distributed under the terms of Sections
152 | 1 and 2 above on a medium customarily used for software interchange; or,
153 |
154 | b) Accompany it with a written offer, valid for at least three
155 | years, to give any third party, for a charge no more than your
156 | cost of physically performing source distribution, a complete
157 | machine-readable copy of the corresponding source code, to be
158 | distributed under the terms of Sections 1 and 2 above on a medium
159 | customarily used for software interchange; or,
160 |
161 | c) Accompany it with the information you received as to the offer
162 | to distribute corresponding source code. (This alternative is
163 | allowed only for noncommercial distribution and only if you
164 | received the program in object code or executable form with such
165 | an offer, in accord with Subsection b above.)
166 |
167 | The source code for a work means the preferred form of the work for
168 | making modifications to it. For an executable work, complete source
169 | code means all the source code for all modules it contains, plus any
170 | associated interface definition files, plus the scripts used to
171 | control compilation and installation of the executable. However, as a
172 | special exception, the source code distributed need not include
173 | anything that is normally distributed (in either source or binary
174 | form) with the major components (compiler, kernel, and so on) of the
175 | operating system on which the executable runs, unless that component
176 | itself accompanies the executable.
177 |
178 | If distribution of executable or object code is made by offering
179 | access to copy from a designated place, then offering equivalent
180 | access to copy the source code from the same place counts as
181 | distribution of the source code, even though third parties are not
182 | compelled to copy the source along with the object code.
183 |
184 | 4. You may not copy, modify, sublicense, or distribute the Program
185 | except as expressly provided under this License. Any attempt
186 | otherwise to copy, modify, sublicense or distribute the Program is
187 | void, and will automatically terminate your rights under this License.
188 | However, parties who have received copies, or rights, from you under
189 | this License will not have their licenses terminated so long as such
190 | parties remain in full compliance.
191 |
192 | 5. You are not required to accept this License, since you have not
193 | signed it. However, nothing else grants you permission to modify or
194 | distribute the Program or its derivative works. These actions are
195 | prohibited by law if you do not accept this License. Therefore, by
196 | modifying or distributing the Program (or any work based on the
197 | Program), you indicate your acceptance of this License to do so, and
198 | all its terms and conditions for copying, distributing or modifying
199 | the Program or works based on it.
200 |
201 | 6. Each time you redistribute the Program (or any work based on the
202 | Program), the recipient automatically receives a license from the
203 | original licensor to copy, distribute or modify the Program subject to
204 | these terms and conditions. You may not impose any further
205 | restrictions on the recipients' exercise of the rights granted herein.
206 | You are not responsible for enforcing compliance by third parties to
207 | this License.
208 |
209 | 7. If, as a consequence of a court judgment or allegation of patent
210 | infringement or for any other reason (not limited to patent issues),
211 | conditions are imposed on you (whether by court order, agreement or
212 | otherwise) that contradict the conditions of this License, they do not
213 | excuse you from the conditions of this License. If you cannot
214 | distribute so as to satisfy simultaneously your obligations under this
215 | License and any other pertinent obligations, then as a consequence you
216 | may not distribute the Program at all. For example, if a patent
217 | license would not permit royalty-free redistribution of the Program by
218 | all those who receive copies directly or indirectly through you, then
219 | the only way you could satisfy both it and this License would be to
220 | refrain entirely from distribution of the Program.
221 |
222 | If any portion of this section is held invalid or unenforceable under
223 | any particular circumstance, the balance of the section is intended to
224 | apply and the section as a whole is intended to apply in other
225 | circumstances.
226 |
227 | It is not the purpose of this section to induce you to infringe any
228 | patents or other property right claims or to contest validity of any
229 | such claims; this section has the sole purpose of protecting the
230 | integrity of the free software distribution system, which is
231 | implemented by public license practices. Many people have made
232 | generous contributions to the wide range of software distributed
233 | through that system in reliance on consistent application of that
234 | system; it is up to the author/donor to decide if he or she is willing
235 | to distribute software through any other system and a licensee cannot
236 | impose that choice.
237 |
238 | This section is intended to make thoroughly clear what is believed to
239 | be a consequence of the rest of this License.
240 |
241 | 8. If the distribution and/or use of the Program is restricted in
242 | certain countries either by patents or by copyrighted interfaces, the
243 | original copyright holder who places the Program under this License
244 | may add an explicit geographical distribution limitation excluding
245 | those countries, so that distribution is permitted only in or among
246 | countries not thus excluded. In such case, this License incorporates
247 | the limitation as if written in the body of this License.
248 |
249 | 9. The Free Software Foundation may publish revised and/or new versions
250 | of the General Public License from time to time. Such new versions will
251 | be similar in spirit to the present version, but may differ in detail to
252 | address new problems or concerns.
253 |
254 | Each version is given a distinguishing version number. If the Program
255 | specifies a version number of this License which applies to it and "any
256 | later version", you have the option of following the terms and conditions
257 | either of that version or of any later version published by the Free
258 | Software Foundation. If the Program does not specify a version number of
259 | this License, you may choose any version ever published by the Free Software
260 | Foundation.
261 |
262 | 10. If you wish to incorporate parts of the Program into other free
263 | programs whose distribution conditions are different, write to the author
264 | to ask for permission. For software which is copyrighted by the Free
265 | Software Foundation, write to the Free Software Foundation; we sometimes
266 | make exceptions for this. Our decision will be guided by the two goals
267 | of preserving the free status of all derivatives of our free software and
268 | of promoting the sharing and reuse of software generally.
269 |
270 | NO WARRANTY
271 |
272 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
273 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
274 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
275 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
276 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
277 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
278 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
279 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
280 | REPAIR OR CORRECTION.
281 |
282 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
283 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
284 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
285 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
286 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
287 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
288 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
289 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
290 | POSSIBILITY OF SUCH DAMAGES.
291 |
292 | END OF TERMS AND CONDITIONS
293 |
--------------------------------------------------------------------------------
/PackageInfo.g:
--------------------------------------------------------------------------------
1 | #############################################################################
2 | ##
3 | ## Demo PackageInfo.g for the GitHubPagesForGAP
4 | ##
5 |
6 | SetPackageInfo( rec(
7 |
8 | PackageName := "GitHubPagesForGAP",
9 |
10 | Subtitle := "A GitHub Pages generator for GAP packages",
11 | Version := "0.4",
12 | Date := "10/04/2025", # dd/mm/yyyy format
13 | License := "0BSD",
14 |
15 | Persons := [
16 | rec(
17 | LastName := "Horn",
18 | FirstNames := "Max",
19 | IsAuthor := true,
20 | IsMaintainer := true,
21 | Email := "mhorn@rptu.de",
22 | WWWHome := "https://www.quendi.de/math",
23 | GitHubUsername:= "fingolfin",
24 | PostalAddress := Concatenation(
25 | "Fachbereich Mathematik\n",
26 | "RPTU Kaiserslautern-Landau\n",
27 | "Gottlieb-Daimler-Straße 48\n",
28 | "67663 Kaiserslautern\n",
29 | "Germany" ),
30 | Place := "Kaiserslautern, Germany",
31 | Institution := "RPTU Kaiserslautern-Landau"
32 | ),
33 |
34 | rec(
35 | LastName := "Thor",
36 | FirstNames := "A. U.",
37 | IsAuthor := true,
38 | IsMaintainer := false,
39 | #Email := "author@example.com",
40 | ),
41 |
42 | rec(
43 | LastName := "Itor",
44 | FirstNames := "Jan",
45 | IsAuthor := false,
46 | IsMaintainer := true,
47 | #Email := "janitor@example.com",
48 | ),
49 | ],
50 |
51 | Status := "other",
52 |
53 | # The following are not strictly necessary in your own PackageInfo.g
54 | # (in the sense that update.g only looks at the usual fields
55 | # like PackageWWWHome, ArchiveURL etc.). But they are convenient
56 | # if you use exactly the scheme for your package website that we propose.
57 | GithubUser := "gap-system",
58 | GithubRepository := ~.PackageName,
59 | GithubWWW := Concatenation("https://github.com/", ~.GithubUser, "/", ~.GithubRepository),
60 |
61 | PackageWWWHome := Concatenation("https://", ~.GithubUser, ".github.io/", ~.GithubRepository, "/"),
62 | README_URL := Concatenation( ~.PackageWWWHome, "README.md" ),
63 | PackageInfoURL := Concatenation( ~.PackageWWWHome, "PackageInfo.g" ),
64 | # The following assumes you are using the Github releases system. If not, adjust
65 | # it accordingly.
66 | ArchiveURL := Concatenation(~.GithubWWW,
67 | "/releases/download/v", ~.Version, "/",
68 | ~.GithubRepository, "-", ~.Version),
69 |
70 | ArchiveFormats := ".tar.gz .tar.bz2",
71 |
72 | AbstractHTML :=
73 | "This is a pseudo package that contains no actual\
74 | GAP code. Instead, it is a template for other\
75 | GAP packages that allows to quickly setup GitHub Pages.",
76 |
77 | PackageDoc := rec(
78 | BookName := "GitHubPagesForGAP",
79 | ArchiveURLSubset := ["doc"],
80 | HTMLStart := "doc/chap0.html",
81 | PDFFile := "doc/manual.pdf",
82 | SixFile := "doc/manual.six",
83 | LongTitle := "A GitHub Pages generator for GAP packages",
84 | ),
85 |
86 | # The following dependencies are fake and for testing / demo purposes
87 | Dependencies := rec(
88 | GAP := ">=4.8.1",
89 | NeededOtherPackages := [
90 | ["GAPDoc", ">= 1.2"],
91 | ["IO", ">= 4.1"],
92 | ],
93 | SuggestedOtherPackages := [["orb", ">= 4.2"]],
94 | ExternalConditions := []
95 | ),
96 |
97 | AvailabilityTest := ReturnTrue,
98 |
99 | Keywords := ["GitHub Pages", "GAP"]
100 |
101 | ));
102 |
103 |
104 |
--------------------------------------------------------------------------------
/README.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 | {% capture my_include %}{% include_relative {{ site.data.package.readme }} %}{% endcapture %}
5 | {% if site.data.package.readme == 'README.md' %}
6 | {{ my_include | markdownify }}
7 | {% else %}
{{ my_include }}
{% endif %}
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # GitHubPagesForGAP
2 |
3 | This repository can be used to quickly set up a website hosted by
4 | [GitHub](https://github.com/) for GAP packages using a GitHub repository.
5 | Specifically, this uses [GitHub pages](https://pages.github.com/)
6 | by adding a `gh-pages` branch to your package repository which
7 | contains data generated from the `PackageInfo.g` file of your package.
8 |
9 | ## Initial setup
10 |
11 | The easiest way to do this is to run the `setup-gh-pages` shell script
12 | provided in the [GitHubPagesForGAP]() from within a git clone of your
13 | package's GitHub repository.
14 |
15 | In case this does not work, or if you want to really know what's going
16 | on, you can also follow the manual instructions described after the fold.
17 |
18 | ------
19 |
20 | The following instructions assume you do not already have a `gh-pages`
21 | branch in your repository. If you do have one, you should delete it before
22 | following these instructions.
23 |
24 | 1. Go into your clone of your package repository.
25 |
26 | 2. Setup a `gh-pages` branch in a `gh-pages` subdirectory.
27 |
28 | Users with a recent enough git version (recommended is >= 2.7.0)
29 | can do this using a "worktree", via the following commands:
30 |
31 | ```sh
32 | # Add a new remote pointing to the GitHubPagesForGAP repository
33 | git remote add -f gh-gap https://github.com/gap-system/GitHubPagesForGAP
34 |
35 | # Create a fresh gh-pages branch from the new remote
36 | git branch gh-pages gh-gap/gh-pages --no-track
37 |
38 | # Create a new worktree and change into it
39 | git worktree add gh-pages gh-pages
40 | cd gh-pages
41 | ```
42 |
43 | Everybody else should instead do the following, with the URL
44 | in the initial clone command suitably adjusted:
45 |
46 | ```sh
47 | # Create a fresh clone of your repository, and change into it
48 | git clone https://github.com/USERNAME/REPOSITORY gh-pages
49 | cd gh-pages
50 |
51 | # Add a new remote pointing to the GitHubPagesForGAP repository
52 | git remote add gh-gap https://github.com/gap-system/GitHubPagesForGAP
53 | git fetch gh-gap
54 |
55 | # Create a fresh gh-pages branch from the new remote
56 | git checkout -b gh-pages gh-gap/gh-pages --no-track
57 | ```
58 |
59 | 5. Add in copies of your `PackageInfo.g`, `README` (or `README.md`) and manual:
60 |
61 | ```
62 | cp -f ../PackageInfo.g ../README* .
63 | cp -f ../doc/*.{css,html,js,txt} doc/
64 | ```
65 |
66 | 6. Now run the `update.g` GAP script. This extracts data from your
67 | `PackageInfo.g` file and puts that data into `_data/package.yml`.
68 | From this, the website template can populate the web pages with
69 | some sensible default values.
70 |
71 | ```
72 | gap update.g
73 | ```
74 |
75 | 7. Commit and push everything.
76 |
77 | ```
78 | git add PackageInfo.g README* doc/ _data/package.yml
79 | git commit -m "Setup gh-pages based on GitHubPagesForGAP"
80 | git push --set-upstream origin gh-pages
81 | ```
82 |
83 | That's it. You can now see your new package website under
84 | https://USERNAME.github.io/REPOSITORY/ (of course after
85 | adjusting USERNAME and REPOSITORY suitably).
86 |
87 |
88 | ## Using an existing gh-pages branch
89 |
90 | If you previously set up [GitHubPagesForGAP]() and thus already have a `gh-pages`
91 | branch, you may on occasion have need to make a fresh clone of your package
92 | repository, and then also would like to recreate the `gh-pages` directory.
93 |
94 | The easiest way to do this is to run the `setup-gh-pages` shell script
95 | provided in the [GitHubPagesForGAP]() from within a git clone of your
96 | package's GitHub repository.
97 |
98 | In case this does not work, or if you want to really know what's going
99 | on, you can also follow the manual instructions described after the fold.
100 |
101 | ------
102 |
103 | Users with a recent enough git version (recommended is >= 2.7)
104 | can do this using a "worktree", via the following commands:
105 |
106 | ```sh
107 | git branch gh-pages origin/gh-pages
108 | git worktree add gh-pages gh-pages
109 | ```
110 |
111 | If you are using an older version of git, you can instead use a second clone
112 | of your repository instead:
113 |
114 | ```sh
115 | git clone -b gh-pages https://github.com/USERNAME/REPOSITORY gh-pages
116 | ```
117 |
118 |
119 | ## Adjusting the content and layout
120 |
121 | [GitHubPagesForGAP]() tries to automatically provide good defaults for
122 | most packages. However, you can tweak everything about it:
123 |
124 | * To adjust the page layout, edit the files `stylesheets/styles.css`
125 | and `_layouts/default.html`.
126 |
127 | * To adjust the content of the front page, edit `index.md` (resp.
128 | for the content of the sidebar, edit `_layouts/default.html`
129 |
130 | * You can also add additional pages, in various formats (HTML,
131 | Markdown, Textile, ...).
132 |
133 | For details, please consult the [Jekyll](http://jekyllrb.com/)
134 | manual.
135 |
136 |
137 | ## Testing the site locally
138 |
139 | If you would like to test your site on your own machine, without
140 | uploading it to GitHub (where it is visible to the public), you can do
141 | so by installing [Jekyll](http://jekyllrb.com/), the static web site
142 | generator used by GitHub to power GitHub Pages.
143 |
144 | Once you have installed Jekyll as described on its homepage, you can
145 | test the website locally as follows:
146 |
147 | 1. Go to the `gh-pages` directory we created above.
148 |
149 | 2. Run jekyll (this launches a tiny web server on your machine):
150 |
151 | ```
152 | jekyll serve -w
153 | ```
154 |
155 | 3. Visit the URL http://localhost:4000 in a web browser.
156 |
157 |
158 | ## Updating after you made a release
159 |
160 | Whenever you make a release of your package (and perhaps more often than
161 | that), you will want to update your website. The easiest way is to use
162 | the `release` script from the [ReleaseTools][], which performs all
163 | the necessary steps for you, except for the very last of actually
164 | publishing the package (and it can do even that for you, if you
165 | pass the `-p` option to it).
166 |
167 | However, you can also do it manually. The steps for doing it are quite
168 | similar to the above:
169 |
170 | 1. Go to the `gh-pages` directory we created above.
171 |
172 | 2. Add in copies of your `PackageInfo.g`, `README` (or `README.md`) and manual:
173 |
174 | ```
175 | cp -f ../PackageInfo.g ../README* .
176 | cp -f ../doc/*.{css,html,js,txt} doc/
177 | ```
178 |
179 | 3. Now run the `update.g` GAP script.
180 |
181 | 4. Commit and push the work we have just done.
182 |
183 | ```
184 | git add PackageInfo.g README* doc/ _data/package.yml
185 | git commit -m "Update web pages"
186 | git push
187 | ```
188 |
189 | A few seconds after you have done this, your changes will be online
190 | under https://USERNAME.github.io/REPOSITORY/ .
191 |
192 |
193 | ## Updating to a newer version of GitHubPagesForGAP
194 |
195 | Normally you should not have to ever do this. However, if you really want to,
196 | you can attempt to update to the most recent version of [GitHubPagesForGAP]() via
197 | the following instructions. The difficulty of such an update depends on how
198 | much you tweaked the site after initially cloning [GitHubPagesForGAP]().
199 |
200 | 1. Go to the `gh-pages` directory we created above.
201 | Make sure that there are no uncommitted changes, as they will be lost
202 | when following these instructions.
203 |
204 | 2. Make sure the `gh-gap` remote exists and has the correct URL. If in doubt,
205 | just re-add it:
206 | ```
207 | git remote remove gh-gap
208 | git remote add gh-gap https://github.com/gap-system/GitHubPagesForGAP
209 | ```
210 |
211 | 3. Attempt to merge the latest GitHubPagesForGAP.
212 | ```
213 | git pull gh-gap gh-pages
214 | ```
215 |
216 | 4. If this produced no errors and just worked, skip to the next step.
217 | But it is quite likely that you will have conflicts in the file
218 | `_data/package.yml`, or in your `README` or `PackageInfo.g` files.
219 | These can usually be resolved by entering this:
220 | ```
221 | cp ../PackageInfo.g ../README* .
222 | gap update.g
223 | git add PackageInfo.g README* _data/package.yml
224 | ```
225 | If you are lucky, these were the only conflicts (check with `git status`).
226 | If no merge conflicts remain, finish with this command:
227 | ```
228 | git commit -m "Merge gh-gap/gh-pages"
229 | ```
230 | If you still have merge conflicts, and don't know how to resolve them, or
231 | get stuck some other way, you can abort the merge process and revert to the
232 | original state by issuing this command:
233 | ```
234 | git merge --abort
235 | ```
236 |
237 | 5. You should be done now. Don't forget to push your changes if you want them
238 | to become public.
239 |
240 |
241 | ## Packages using GitHubPagesForGAP
242 |
243 | The majority of packages listed on use
244 | [GitHubPagesForGAP](). If you want some specific examples, here are some:
245 |
246 | *
247 | *
248 | *
249 | *
250 | *
251 | *
252 | *
253 | *
254 | *
255 |
256 |
257 | ## Contact
258 |
259 | Please submit bug reports, suggestions for improvements and patches via
260 | the [issue tracker](https://github.com/gap-system/GitHubPagesForGAP/issues).
261 |
262 | You can also contact me directly via [email](max@quendi.de).
263 |
264 | Copyright (c) 2013-2025 Max Horn
265 |
266 | [GitHubPagesForGAP]: https://github.com/gap-system/GitHubPagesForGAP
267 | [ReleaseTools]: https://github.com/gap-system/ReleaseTools
268 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | markdown: kramdown
2 | highlighter: rouge
3 |
--------------------------------------------------------------------------------
/_data/package.yml:
--------------------------------------------------------------------------------
1 | name: GitHubPagesForGAP
2 | version: "0.2"
3 | license: "0BSD"
4 | date: 2017-02-04
5 | description: |
6 | A GitHub Pages generator for GAP packages
7 |
8 | authors:
9 | - name: Max Horn
10 | url: http://www.quendi.de/math
11 | - name: A. U. Thor
12 |
13 | maintainers:
14 | - name: Max Horn
15 | url: http://www.quendi.de/math
16 | - name: Jan Itor
17 |
18 | GAP: ">=4.8.1"
19 |
20 | needed-pkgs:
21 | - name: "GAPDoc"
22 | version: ">= 1.2"
23 | url: "http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc"
24 | - name: "IO"
25 | version: ">= 4.1"
26 | url: "https://gap-packages.github.io/io"
27 |
28 | suggested-pkgs:
29 | - name: "orb"
30 | version: ">= 4.2"
31 | url: "https://gap-packages.github.io/orb"
32 |
33 | www: https://gap-system.github.io/GitHubPagesForGAP/
34 | readme: README.md
35 | packageinfo: https://gap-system.github.io/GitHubPagesForGAP/PackageInfo.g
36 | github: https://github.com/gap-system/GitHubPagesForGAP
37 |
38 | downloads:
39 | - name: .tar.gz
40 | url: https://github.com/gap-system/GitHubPagesForGAP/releases/download/v0.2/GitHubPagesForGAP-0.2.tar.gz
41 | - name: .tar.bz2
42 | url: https://github.com/gap-system/GitHubPagesForGAP/releases/download/v0.2/GitHubPagesForGAP-0.2.tar.bz2
43 |
44 | abstract: |
45 | This is a pseudo package that contains no actual GAP code. Instead, it is a template for other GAP packages that allows to quickly setup GitHub Pages.
46 |
47 | status: other
48 | doc-html: doc/chap0.html
49 | doc-pdf: doc/manual.pdf
50 | keywords: |
51 | GitHub Pages, GAP.
52 | citeas: |
53 |
54 | [HTI17] Horn, M., Thor, A. U. and Itor, J.,
55 | GitHubPagesForGAP, A GitHub Pages generator for GAP packages,
56 | Version 0.2
57 | (2017)
58 | (GAP package),
59 | https://gap-system.github.io/GitHubPagesForGAP/.
60 |