commit 23904e0cd94f0f33b29263ed17db6ea990cde86c Author: Zichao Lin Date: Mon Jul 11 11:28:28 2022 +0800 Initial commit diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..96a0234 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# Require maintainer's :+1: for changes to the .github/ repo-config files +# mainly due to https://github.com/probot/settings privilege escalation +.github/* @pages-themes/maintainers diff --git a/.github/config.yml b/.github/config.yml new file mode 100644 index 0000000..4b1bcab --- /dev/null +++ b/.github/config.yml @@ -0,0 +1,20 @@ +# Behaviorbot config. See https://github.com/behaviorbot/ for more information. +# Note: Please Don't edit this file directly. +# Edit https://github.com/pages-themes/maintenance-scripts instead. + +# Configuration for update-docs - https://github.com/behaviorbot/update-docs +updateDocsComment: "Thanks for the pull request! If you are making any changes to the user-facing functionality, please be sure to update the documentation in the `README` or `docs/` folder alongside your change. :heart:" + +# Configuration for request-info - https://github.com/behaviorbot/request-info +requestInfoReplyComment: Thanks for this. Do you mind providing a bit more information about what problem you're trying to solve? +requestInfoLabelToAdd: more-information-needed + +# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome +#newIssueWelcomeComment: > +# Welcome! + +# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome +newPRWelcomeComment: Welcome! Congrats on your first pull request to the Cayman theme. If you haven't already, please be sure to check out [the contributing guidelines](https://github.com/pages-themes/cayman/blob/master/docs/CONTRIBUTING.md). + +# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge +firstPRMergeComment: "Congrats on getting your first pull request to the Cayman theme merged! Without amazing humans like you submitting pull requests, we couldn’t run this project. You rock! :tada:

If you're interested in tackling another bug or feature, take a look at [the open issues](https://github.com/pages-themes/cayman/issues), especially those [labeled `help wanted`](https://github.com/pages-themes/cayman/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)." diff --git a/.github/no-response.yml b/.github/no-response.yml new file mode 100644 index 0000000..7193eaa --- /dev/null +++ b/.github/no-response.yml @@ -0,0 +1,13 @@ +# Configuration for probot-no-response - https://github.com/probot/no-response + +# Number of days of inactivity before an Issue is closed for lack of response +daysUntilClose: 14 +# Label requiring a response +responseRequiredLabel: more-information-needed +# Comment to post when closing an Issue for lack of response. Set to `false` to disable +closeComment: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000..7c1b115 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,31 @@ +# Repository settings set via https://github.com/probot/settings + +repository: + has_issues: true + has_wiki: false + has_projects: false + has_downloads: false + +labels: + - name: help wanted + oldname: help-wanted + color: 0e8a16 + - name: more-information-needed + color: d93f0b + - name: bug + color: b60205 + - name: feature + color: 1d76db + - name: good first issue + color: "5319e7" + +# Not currently implemented by probot/settings, but manually implemented in script/deploy +branch_protection: + restrictions: null + enforce_admins: false + required_status_checks: + strict: true + contexts: + - "script/cibuild" # GitHub Actions CI workflow + required_pull_request_reviews: + require_code_owner_reviews: true diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..a1aa17e --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,27 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 60 + +# Number of days of inactivity before a stale Issue or Pull Request is closed +daysUntilClose: 7 + +# Issues or Pull Requests with these labels will never be considered stale +exemptLabels: + - pinned + - security + +# Label to use when marking as stale +staleLabel: wontfix + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable +closeComment: false + +# Limit to only `issues` or `pulls` +# only: issues diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..d9249a5 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,18 @@ +on: + push: + pull_request: + types: [opened, synchronize] +jobs: + build: + runs-on: ubuntu-latest + name: script/cibuild + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + bundler-cache: true + - name: build + run: script/bootstrap + - name: test + run: script/cibuild diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cced6c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +_site +.sass-cache +Gemfile.lock +*.gem +.jekyll-cache +.jekyll-cache diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..15c823d --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,11 @@ +inherit_gem: + rubocop-github: + - config/default.yml + +AllCops: + Exclude: + - _site/**/* + - vendor/**/* + +Layout/LineLength: + Enabled: false diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..a871f2a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: ruby +cache: bundler +rvm: 2.6 + +install: script/bootstrap +script: script/cibuild diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..be173b2 --- /dev/null +++ b/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gemspec diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..670154e --- /dev/null +++ b/LICENSE @@ -0,0 +1,116 @@ +CC0 1.0 Universal + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not limited +to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + + v. rights protecting the extraction, dissemination, use and reuse of data in + a Work; + + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time +extensions), (iii) in any current or future medium and for any number of +copies, and (iv) for any purpose whatsoever, including without limitation +commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +the Waiver for the benefit of each member of the public at large and to the +detriment of Affirmer's heirs and successors, fully intending that such Waiver +shall not be subject to revocation, rescission, cancellation, termination, or +any other legal or equitable action to disrupt the quiet enjoyment of the Work +by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account +Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +is so judged Affirmer hereby grants to each affected person a royalty-free, +non transferable, non sublicensable, non exclusive, irrevocable and +unconditional license to exercise Affirmer's Copyright and Related Rights in +the Work (i) in all territories worldwide, (ii) for the maximum duration +provided by applicable law or treaty (including future time extensions), (iii) +in any current or future medium and for any number of copies, and (iv) for any +purpose whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed effective as +of the date CC0 was applied by Affirmer to the Work. Should any part of the +License for any reason be judged legally invalid or ineffective under +applicable law, such partial invalidity or ineffectiveness shall not +invalidate the remainder of the License, and in such case Affirmer hereby +affirms that he or she will not (i) exercise any of his or her remaining +Copyright and Related Rights in the Work or (ii) assert any associated claims +and causes of action with respect to the Work, in either case contrary to +Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + + b. Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without limitation + any person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions + or other rights required for any use of the Work. + + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to this + CC0 or use of the Work. + +For more information, please see + diff --git a/README.md b/README.md new file mode 100644 index 0000000..ffb58a4 --- /dev/null +++ b/README.md @@ -0,0 +1,109 @@ +# The Cayman theme + +[Build Status](https://github.com/pages-themes/cayman/actions/workflows/ci.yaml) [![Gem Version](https://badge.fury.io/rb/jekyll-theme-cayman.svg)](https://badge.fury.io/rb/jekyll-theme-cayman) + +*Cayman is a Jekyll theme for GitHub Pages. You can [preview the theme to see what it looks like](http://pages-themes.github.io/cayman), or even [use it today](#usage).* + +![Thumbnail of Cayman](thumbnail.png) + +## Usage + +To use the Cayman theme: + +1. Add the following to your site's `_config.yml`: + + ```yml + theme: jekyll-theme-cayman + ``` + +2. Optionally, if you'd like to preview your site on your computer, add the following to your site's `Gemfile`: + + ```ruby + gem "github-pages", group: :jekyll_plugins + ``` + +## Customizing + +### Configuration variables + +Cayman will respect the following variables, if set in your site's `_config.yml`: + +```yml +title: [The title of your site] +description: [A short description of your site's purpose] +``` + +Additionally, you may choose to set the following optional variables: + +```yml +show_downloads: ["true" or "false" to indicate whether to provide a download URL] +google_analytics: [Your Google Analytics tracking ID] +``` + +### Stylesheet + +If you'd like to add your own custom styles: + +1. Create a file called `/assets/css/style.scss` in your site +2. Add the following content to the top of the file, exactly as shown: + ```scss + --- + --- + + @import "{{ site.theme }}"; + ``` +3. Add any custom CSS (or Sass, including imports) you'd like immediately after the `@import` line + +*Note: If you'd like to change the theme's Sass variables, you must set new values before the `@import` line in your stylesheet.* + +### Layouts + +If you'd like to change the theme's HTML layout: + +1. [Copy the original template](https://github.com/pages-themes/cayman/blob/master/_layouts/default.html) from the theme's repository
(*Pro-tip: click "raw" to make copying easier*) +2. Create a file called `/_layouts/default.html` in your site +3. Paste the default layout content copied in the first step +4. Customize the layout as you'd like + +### Overriding GitHub-generated URLs + +Templates often rely on URLs supplied by GitHub such as links to your repository or links to download your project. If you'd like to override one or more default URLs: + +1. Look at [the template source](https://github.com/pages-themes/cayman/blob/master/_layouts/default.html) to determine the name of the variable. It will be in the form of `{{ site.github.zip_url }}`. +2. Specify the URL that you'd like the template to use in your site's `_config.yml`. For example, if the variable was `site.github.url`, you'd add the following: + ```yml + github: + zip_url: http://example.com/download.zip + another_url: another value + ``` +3. When your site is built, Jekyll will use the URL you specified, rather than the default one provided by GitHub. + +*Note: You must remove the `site.` prefix, and each variable name (after the `github.`) should be indent with two space below `github:`.* + +For more information, see [the Jekyll variables documentation](https://jekyllrb.com/docs/variables/). + +## Roadmap + +See the [open issues](https://github.com/pages-themes/cayman/issues) for a list of proposed features (and known issues). + +## Project philosophy + +The Cayman theme is intended to make it quick and easy for GitHub Pages users to create their first (or 100th) website. The theme should meet the vast majority of users' needs out of the box, erring on the side of simplicity rather than flexibility, and provide users the opportunity to opt-in to additional complexity if they have specific needs or wish to further customize their experience (such as adding custom CSS or modifying the default layout). It should also look great, but that goes without saying. + +## Contributing + +Interested in contributing to Cayman? We'd love your help. Cayman is an open source project, built one contribution at a time by users like you. See [the CONTRIBUTING file](docs/CONTRIBUTING.md) for instructions on how to contribute. + +### Previewing the theme locally + +If you'd like to preview the theme locally (for example, in the process of proposing a change): + +1. Clone down the theme's repository (`git clone https://github.com/pages-themes/cayman`) +2. `cd` into the theme's directory +3. Run `script/bootstrap` to install the necessary dependencies +4. Run `bundle exec jekyll serve` to start the preview server +5. Visit [`localhost:4000`](http://localhost:4000) in your browser to preview the theme + +### Running tests + +The theme contains a minimal test suite, to ensure a site with the theme would build successfully. To run the tests, simply run `script/cibuild`. You'll need to run `script/bootstrap` one before the test script will work. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..2a062d3 --- /dev/null +++ b/_config.yml @@ -0,0 +1,5 @@ +title: Cayman theme +description: Cayman is a clean, responsive theme for GitHub Pages. +show_downloads: true +google_analytics: +theme: jekyll-theme-cayman \ No newline at end of file diff --git a/_includes/head-custom-google-analytics.html b/_includes/head-custom-google-analytics.html new file mode 100644 index 0000000..8a3ae5c --- /dev/null +++ b/_includes/head-custom-google-analytics.html @@ -0,0 +1,10 @@ +{% if site.google_analytics %} + +{% endif %} diff --git a/_includes/head-custom.html b/_includes/head-custom.html new file mode 100644 index 0000000..f7187e7 --- /dev/null +++ b/_includes/head-custom.html @@ -0,0 +1,9 @@ + + + +{% include head-custom-google-analytics.html %} + + + + + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..ba7224f --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,41 @@ + + + + + +{% seo %} + + + + + + + {% include head-custom.html %} + + + Skip to the content. + + + +
+ {{ content }} + + +
+ + diff --git a/_sass/cayman.scss b/_sass/cayman.scss new file mode 100644 index 0000000..ff073aa --- /dev/null +++ b/_sass/cayman.scss @@ -0,0 +1,4 @@ +// Placeholder file. If your site uses +// @import "{{ site.theme }}"; +// Then using this theme with jekyll-remote-theme will work fine. +@import "jekyll-theme-cayman"; diff --git a/_sass/jekyll-theme-cayman.scss b/_sass/jekyll-theme-cayman.scss new file mode 100644 index 0000000..d3196e4 --- /dev/null +++ b/_sass/jekyll-theme-cayman.scss @@ -0,0 +1,378 @@ +@import "normalize"; +@import "rouge-github"; +@import "variables"; +@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap'); + +@mixin large { + @media screen and (min-width: #{$large-breakpoint}) { + @content; + } +} + +@mixin medium { + @media screen and (min-width: #{$medium-breakpoint}) and (max-width: #{$large-breakpoint}) { + @content; + } +} + +@mixin small { + @media screen and (max-width: #{$medium-breakpoint}) { + @content; + } +} + +* { + box-sizing: border-box; +} + +body { + padding: 0; + margin: 0; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 1.5; + color: $body-text-color; +} + +#skip-to-content { + height: 1px; + width: 1px; + position: absolute; + overflow: hidden; + top: -10px; + + &:focus { + position: fixed; + top: 10px; + left: 10px; + height: auto; + width: auto; + background: invert($body-link-color); + outline: thick solid invert($body-link-color); + } +} + +a { + color: $body-link-color; + text-decoration: none; + + &:hover { + text-decoration: underline; + } +} + +.btn { + display: inline-block; + margin-bottom: 1rem; + color: rgba(255, 255, 255, 0.7); + background-color: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 255, 255, 0.2); + border-style: solid; + border-width: 1px; + border-radius: 0.3rem; + transition: color 0.2s, background-color 0.2s, border-color 0.2s; + + &:hover { + color: rgba(255, 255, 255, 0.8); + text-decoration: none; + background-color: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.3); + } + + + .btn { + margin-left: 1rem; + } + + @include large { + padding: 0.75rem 1rem; + } + + @include medium { + padding: 0.6rem 0.9rem; + font-size: 0.9rem; + } + + @include small { + display: block; + width: 100%; + padding: 0.75rem; + font-size: 0.9rem; + + + .btn { + margin-top: 1rem; + margin-left: 0; + } + } +} + +.page-header { + color: $header-heading-color; + text-align: center; + background-color: $header-bg-color; + background-image: linear-gradient(120deg, $header-bg-color-secondary, $header-bg-color); + + @include large { + padding: 5rem 6rem; + } + + @include medium { + padding: 3rem 4rem; + } + + @include small { + padding: 2rem 1rem; + } +} + +.project-name { + margin-top: 0; + margin-bottom: 0.1rem; + + @include large { + font-size: 3.25rem; + } + + @include medium { + font-size: 2.25rem; + } + + @include small { + font-size: 1.75rem; + } +} + +.project-tagline { + margin-bottom: 2rem; + font-weight: normal; + opacity: 0.7; + + @include large { + font-size: 1.25rem; + } + + @include medium { + font-size: 1.15rem; + } + + @include small { + font-size: 1rem; + } +} + +.main-content { + word-wrap: break-word; + + :first-child { + margin-top: 0; + } + + @include large { + max-width: 64rem; + padding: 2rem 6rem; + margin: 0 auto; + font-size: 1.1rem; + } + + @include medium { + padding: 2rem 4rem; + font-size: 1.1rem; + } + + @include small { + padding: 2rem 1rem; + font-size: 1rem; + } + + kbd { + background-color: #fafbfc; + border: 1px solid #c6cbd1; + border-bottom-color: #959da5; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #959da5; + color: #444d56; + display: inline-block; + font-size: 11px; + line-height: 10px; + padding: 3px 5px; + vertical-align: middle; + } + + img { + max-width: 100%; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + margin-top: 2rem; + margin-bottom: 1rem; + font-weight: normal; + color: $section-headings-color; + } + + p { + margin-bottom: 1em; + } + + code { + padding: 2px 4px; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 0.9rem; + color: $code-text-color; + background-color: $code-bg-color; + border-radius: 0.3rem; + } + + pre { + padding: 0.8rem; + margin-top: 0; + margin-bottom: 1rem; + font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; + color: $code-text-color; + word-wrap: normal; + background-color: $code-bg-color; + border: solid 1px $border-color; + border-radius: 0.3rem; + + > code { + padding: 0; + margin: 0; + font-size: 0.9rem; + color: $code-text-color; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; + } + } + + .highlight { + margin-bottom: 1rem; + + pre { + margin-bottom: 0; + word-break: normal; + } + } + + .highlight pre, + pre { + padding: 0.8rem; + overflow: auto; + font-size: 0.9rem; + line-height: 1.45; + border-radius: 0.3rem; + -webkit-overflow-scrolling: touch; + } + + pre code, + pre tt { + display: inline; + max-width: initial; + padding: 0; + margin: 0; + overflow: initial; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; + + &:before, + &:after { + content: normal; + } + } + + ul, + ol { + margin-top: 0; + } + + blockquote { + padding: 0 1rem; + margin-left: 0; + color: $blockquote-text-color; + border-left: 0.3rem solid $border-color; + + > :first-child { + margin-top: 0; + } + + > :last-child { + margin-bottom: 0; + } + } + + table { + display: block; + width: 100%; + overflow: auto; + word-break: normal; + word-break: keep-all; // For Firefox to horizontally scroll wider tables. + -webkit-overflow-scrolling: touch; + + th { + font-weight: bold; + } + + th, + td { + padding: 0.5rem 1rem; + border: 1px solid $table-border-color; + } + } + + dl { + padding: 0; + + dt { + padding: 0; + margin-top: 1rem; + font-size: 1rem; + font-weight: bold; + } + + dd { + padding: 0; + margin-bottom: 1rem; + } + } + + hr { + height: 2px; + padding: 0; + margin: 1rem 0; + background-color: $hr-border-color; + border: 0; + } +} + +.site-footer { + padding-top: 2rem; + margin-top: 2rem; + border-top: solid 1px $hr-border-color; + + @include large { + font-size: 1rem; + } + + @include medium { + font-size: 1rem; + } + + @include small { + font-size: 0.9rem; + } +} + +.site-footer-owner { + display: block; + font-weight: bold; +} + +.site-footer-credits { + color: $blockquote-text-color; +} diff --git a/_sass/normalize.scss b/_sass/normalize.scss new file mode 100644 index 0000000..30366a6 --- /dev/null +++ b/_sass/normalize.scss @@ -0,0 +1,424 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/_sass/rouge-github.scss b/_sass/rouge-github.scss new file mode 100644 index 0000000..daf76ad --- /dev/null +++ b/_sass/rouge-github.scss @@ -0,0 +1,209 @@ +.highlight table td { padding: 5px; } +.highlight table pre { margin: 0; } +.highlight .cm { + color: #999988; + font-style: italic; +} +.highlight .cp { + color: #999999; + font-weight: bold; +} +.highlight .c1 { + color: #999988; + font-style: italic; +} +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; +} +.highlight .c, .highlight .cd { + color: #999988; + font-style: italic; +} +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} +.highlight .gd { + color: #000000; + background-color: #ffdddd; +} +.highlight .ge { + color: #000000; + font-style: italic; +} +.highlight .gr { + color: #aa0000; +} +.highlight .gh { + color: #999999; +} +.highlight .gi { + color: #000000; + background-color: #ddffdd; +} +.highlight .go { + color: #888888; +} +.highlight .gp { + color: #555555; +} +.highlight .gs { + font-weight: bold; +} +.highlight .gu { + color: #aaaaaa; +} +.highlight .gt { + color: #aa0000; +} +.highlight .kc { + color: #000000; + font-weight: bold; +} +.highlight .kd { + color: #000000; + font-weight: bold; +} +.highlight .kn { + color: #000000; + font-weight: bold; +} +.highlight .kp { + color: #000000; + font-weight: bold; +} +.highlight .kr { + color: #000000; + font-weight: bold; +} +.highlight .kt { + color: #445588; + font-weight: bold; +} +.highlight .k, .highlight .kv { + color: #000000; + font-weight: bold; +} +.highlight .mf { + color: #009999; +} +.highlight .mh { + color: #009999; +} +.highlight .il { + color: #009999; +} +.highlight .mi { + color: #009999; +} +.highlight .mo { + color: #009999; +} +.highlight .m, .highlight .mb, .highlight .mx { + color: #009999; +} +.highlight .sb { + color: #d14; +} +.highlight .sc { + color: #d14; +} +.highlight .sd { + color: #d14; +} +.highlight .s2 { + color: #d14; +} +.highlight .se { + color: #d14; +} +.highlight .sh { + color: #d14; +} +.highlight .si { + color: #d14; +} +.highlight .sx { + color: #d14; +} +.highlight .sr { + color: #009926; +} +.highlight .s1 { + color: #d14; +} +.highlight .ss { + color: #990073; +} +.highlight .s { + color: #d14; +} +.highlight .na { + color: #008080; +} +.highlight .bp { + color: #999999; +} +.highlight .nb { + color: #0086B3; +} +.highlight .nc { + color: #445588; + font-weight: bold; +} +.highlight .no { + color: #008080; +} +.highlight .nd { + color: #3c5d5d; + font-weight: bold; +} +.highlight .ni { + color: #800080; +} +.highlight .ne { + color: #990000; + font-weight: bold; +} +.highlight .nf { + color: #990000; + font-weight: bold; +} +.highlight .nl { + color: #990000; + font-weight: bold; +} +.highlight .nn { + color: #555555; +} +.highlight .nt { + color: #000080; +} +.highlight .vc { + color: #008080; +} +.highlight .vg { + color: #008080; +} +.highlight .vi { + color: #008080; +} +.highlight .nv { + color: #008080; +} +.highlight .ow { + color: #000000; + font-weight: bold; +} +.highlight .o { + color: #000000; + font-weight: bold; +} +.highlight .w { + color: #bbbbbb; +} +.highlight { + background-color: #f8f8f8; +} diff --git a/_sass/variables.scss b/_sass/variables.scss new file mode 100644 index 0000000..bf56450 --- /dev/null +++ b/_sass/variables.scss @@ -0,0 +1,23 @@ +// Breakpoints +$large-breakpoint: 64em !default; +$medium-breakpoint: 42em !default; + +// Headers +$header-heading-color: #fff !default; +$header-bg-color: #159957 !default; +$header-bg-color-secondary: #155799 !default; + +// Text +$section-headings-color: #159957 !default; +$body-text-color: #606c71 !default; +$body-link-color: #1e6bb8 !default; +$blockquote-text-color: #819198 !default; + +// Code +$code-bg-color: #f3f6fa !default; +$code-text-color: #567482 !default; + +// Borders +$border-color: #dce6f0 !default; +$table-border-color: #e9ebec !default; +$hr-border-color: #eff0f1 !default; diff --git a/another-page.md b/another-page.md new file mode 100644 index 0000000..3fb3475 --- /dev/null +++ b/another-page.md @@ -0,0 +1,11 @@ +--- +layout: default +title: Another page +description: This is just another page +--- + +## Welcome to another page + +_yay_ + +[back](./) diff --git a/assets/css/style.scss b/assets/css/style.scss new file mode 100644 index 0000000..46e65d9 --- /dev/null +++ b/assets/css/style.scss @@ -0,0 +1,4 @@ +--- +--- + +@import 'jekyll-theme-cayman'; diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..ab1a9a1 --- /dev/null +++ b/docs/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@github.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 0000000..7ab87e4 --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,88 @@ +# Contributing to the Cayman theme + +Hi there! We're thrilled that you'd like to contribute to the Cayman theme. Your help is essential for keeping it great. + +the Cayman theme is an open source project supported by the efforts of an entire community and built one contribution at a time by users like you. We'd love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated. There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests, helping other users by commenting on issues, or writing code which can be incorporated into the Cayman theme itself. + +Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests. + + +## Looking for support? + +We'd love to help. Check out [the support guidelines](SUPPORT.md). + +## How to report a bug + +Think you found a bug? Please check [the list of open issues](https://github.com/pages-themes/cayman/issues) to see if your bug has already been reported. If it hasn't please [submit a new issue](https://github.com/pages-themes/cayman/issues/new). + +Here are a few tips for writing *great* bug reports: + +* Describe the specific problem (e.g., "widget doesn't turn clockwise" versus "getting an error") +* Include the steps to reproduce the bug, what you expected to happen, and what happened instead +* Check that you are using the latest version of the project and its dependencies +* Include what version of the project your using, as well as any relevant dependencies +* Only include one bug per issue. If you have discovered two bugs, please file two issues +* Even if you don't know how to fix the bug, including a failing test may help others track it down + +**If you find a security vulnerability, do not open an issue. Please email security@github.com instead.** + +## How to suggest a feature or enhancement + +If you find yourself wishing for a feature that doesn't exist in the Cayman theme, you are probably not alone. There are bound to be others out there with similar needs. Many of the features that the Cayman theme has today have been added because our users saw the need. + +Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and goals of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible, including describing the problem you're trying to solve. + +[Open an issue](https://github.com/pages-themes/cayman/issues/new) which describes the feature you would like to see, why you want it, how it should work, etc. + + + +## Your first contribution + +We'd love for you to contribute to the project. Unsure where to begin contributing to the Cayman theme? You can start by looking through these "good first issue" and "help wanted" issues: + +* [Good first issues](https://github.com/pages-themes/cayman/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - issues which should only require a few lines of code and a test or two +* [Help wanted issues](https://github.com/pages-themes/cayman/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - issues which may be a bit more involved, but are specifically seeking community contributions + +*p.s. Feel free to ask for help; everyone is a beginner at first* :smiley_cat: + +## How to propose changes + +Here's a few general guidelines for proposing changes: + +* If you are making visual changes, include a screenshot of what the affected element looks like, both before and after. +* Follow the [Jekyll style guide](https://ben.balter.com/jekyll-style-guide). +* If you are changing any user-facing functionality, please be sure to update the documentation +* Each pull request should implement **one** feature or bug fix. If you want to add or fix more than one thing, submit more than one pull request +* Do not commit changes to files that are irrelevant to your feature or bug fix +* Don't bump the version number in your pull request (it will be bumped prior to release) +* Write [a good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) + +At a high level, [the process for proposing changes](https://guides.github.com/introduction/flow/) is: + +1. [Fork](https://github.com/pages-themes/cayman/fork) and clone the project +2. Configure and install the dependencies: `script/bootstrap` +3. Make sure the tests pass on your machine: `script/cibuild` +4. Create a new branch: `git checkout -b my-branch-name` +5. Make your change, add tests, and make sure the tests still pass +6. Push to your fork and [submit a pull request](https://github.com/pages-themes/cayman/compare) +7. Pat your self on the back and wait for your pull request to be reviewed and merged + +**Interesting in submitting your first Pull Request?** It's easy! You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) + +## Bootstrapping your local development environment + +`script/bootstrap` + +## Running tests + +`script/cibuild` + +## Code of conduct + +This project is governed by [the Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. + +## Additional Resources + +* [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/) +* [Using Pull Requests](https://help.github.com/articles/using-pull-requests/) +* [GitHub Help](https://help.github.com) diff --git a/docs/SUPPORT.md b/docs/SUPPORT.md new file mode 100644 index 0000000..bc5a1ad --- /dev/null +++ b/docs/SUPPORT.md @@ -0,0 +1,9 @@ +## Where to get help + +If you think you've found a bug in the Cayman theme, please [check the existing issues](https://github.com/pages-themes/cayman/issues), and if no one has reported the problem, [open a new issue](https://github.com/pages-themes/cayman/issues/new). + +If you have a general question about the theme, how to implement it, or how to customize it for your site you have two options: + +1. Search for your query on [`support.github.com`](https://support.github.com/?q=pages+Cayman+theme), which will also look for similar topics on [`github.community`](https://github.community/search?q=pages+Cayman+theme) +2. Ask your question of the Jekyll community on [talk.jekyllrb.com](https://talk.jekyllrb.com/) +3. [Contact GitHub Support](https://github.com/contact?form%5Bsubject%5D=GitHub%20Pages%20theme%20pages-themes/cayman) diff --git a/index.md b/index.md new file mode 100644 index 0000000..8611051 --- /dev/null +++ b/index.md @@ -0,0 +1,123 @@ +--- +layout: default +--- + +Text can be **bold**, _italic_, or ~~strikethrough~~. + +[Link to another page](./another-page.html). + +There should be whitespace between paragraphs. + +There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. + +# Header 1 + +This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. + +## Header 2 + +> This is a blockquote following a header. +> +> When something is important enough, you do it even if the odds are not in your favor. + +### Header 3 + +```js +// Javascript code with syntax highlighting. +var fun = function lang(l) { + dateformat.i18n = require('./lang/' + l) + return true; +} +``` + +```ruby +# Ruby code with syntax highlighting +GitHubPages::Dependencies.gems.each do |gem, version| + s.add_dependency(gem, "= #{version}") +end +``` + +#### Header 4 + +* This is an unordered list following a header. +* This is an unordered list following a header. +* This is an unordered list following a header. + +##### Header 5 + +1. This is an ordered list following a header. +2. This is an ordered list following a header. +3. This is an ordered list following a header. + +###### Header 6 + +| head1 | head two | three | +|:-------------|:------------------|:------| +| ok | good swedish fish | nice | +| out of stock | good and plenty | nice | +| ok | good `oreos` | hmm | +| ok | good `zoute` drop | yumm | + +### There's a horizontal rule below this. + +* * * + +### Here is an unordered list: + +* Item foo +* Item bar +* Item baz +* Item zip + +### And an ordered list: + +1. Item one +1. Item two +1. Item three +1. Item four + +### And a nested list: + +- level 1 item + - level 2 item + - level 2 item + - level 3 item + - level 3 item +- level 1 item + - level 2 item + - level 2 item + - level 2 item +- level 1 item + - level 2 item + - level 2 item +- level 1 item + +### Small image + +![Octocat](https://github.githubassets.com/images/icons/emoji/octocat.png) + +### Large image + +![Branching](https://guides.github.com/activities/hello-world/branching.png) + + +### Definition lists can be used with HTML syntax. + +
+
Name
+
Godzilla
+
Born
+
1952
+
Birthplace
+
Japan
+
Color
+
Green
+
+ +``` +Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this. +``` + +``` +The final element. +``` diff --git a/jekyll-theme-cayman.gemspec b/jekyll-theme-cayman.gemspec new file mode 100644 index 0000000..8510d8d --- /dev/null +++ b/jekyll-theme-cayman.gemspec @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +Gem::Specification.new do |s| + s.name = "jekyll-theme-cayman" + s.version = "0.1.1" + s.license = "CC0-1.0" + s.authors = ["Jason Long", "GitHub, Inc."] + s.email = ["opensource+jekyll-theme-cayman@github.com"] + s.homepage = "https://github.com/pages-themes/cayman" + s.summary = "Cayman is a Jekyll theme for GitHub Pages" + + s.files = `git ls-files -z`.split("\x0").select do |f| + f.match(%r{^((_includes|_layouts|_sass|assets)/|(LICENSE|README)((\.(txt|md|markdown)|$)))}i) + end + + s.required_ruby_version = ">= 2.4.0" + + s.platform = Gem::Platform::RUBY + s.add_runtime_dependency "jekyll", "> 3.5", "< 5.0" + s.add_runtime_dependency "jekyll-seo-tag", "~> 2.0" + s.add_development_dependency "html-proofer", "~> 3.0" + s.add_development_dependency "rubocop-github", "~> 0.16" + s.add_development_dependency "w3c_validators", "~> 1.3" +end diff --git a/script/bootstrap b/script/bootstrap new file mode 100644 index 0000000..492e553 --- /dev/null +++ b/script/bootstrap @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +gem install bundler +bundle install diff --git a/script/cibuild b/script/cibuild new file mode 100644 index 0000000..ac94edf --- /dev/null +++ b/script/cibuild @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +bundle exec jekyll build +bundle exec htmlproofer ./_site --check-html --check-sri --url-ignore '/fonts.gstatic.com/' +bundle exec rubocop -D --config .rubocop.yml +bundle exec script/validate-html +gem build jekyll-theme-cayman.gemspec diff --git a/script/release b/script/release new file mode 100644 index 0000000..fb400aa --- /dev/null +++ b/script/release @@ -0,0 +1,42 @@ +#!/bin/sh +# Tag and push a release. + +set -e + +# Make sure we're in the project root. + +cd $(dirname "$0")/.. + +# Make sure the darn thing works + +bundle update + +# Build a new gem archive. + +rm -rf jekyll-theme-cayman-*.gem +gem build -q jekyll-theme-cayman.gemspec + +# Make sure we're on the master branch. + +(git branch | grep -q 'master') || { + echo "Only release from the master branch." + exit 1 +} + +# Figure out what version we're releasing. + +tag=v`ls jekyll-theme-cayman-*.gem | sed 's/^jekyll-theme-cayman-\(.*\)\.gem$/\1/'` + +# Make sure we haven't released this version before. + +git fetch -t origin + +(git tag -l | grep -q "$tag") && { + echo "Whoops, there's already a '${tag}' tag." + exit 1 +} + +# Tag it and bag it. + +gem push jekyll-theme-cayman-*.gem && git tag "$tag" && + git push origin master && git push origin "$tag" diff --git a/script/server b/script/server new file mode 100644 index 0000000..d8c3e15 --- /dev/null +++ b/script/server @@ -0,0 +1,3 @@ +#!/bin/sh + +bundle exec jekyll serve diff --git a/script/validate-html b/script/validate-html new file mode 100644 index 0000000..43d8fca --- /dev/null +++ b/script/validate-html @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "w3c_validators" + +def validator(file) + extension = File.extname(file) + if extension == ".html" + W3CValidators::NuValidator.new + elsif extension == ".css" + W3CValidators::CSSValidator.new + end +end + +def validate(file) + puts "Checking #{file}..." + + path = File.expand_path "../_site/#{file}", __dir__ + results = validator(file).validate_file(path) + + return puts "Valid!" if results.errors.empty? + + results.errors.each { |err| puts err.to_s } + exit 1 +end + +validate "index.html" +validate File.join "assets", "css", "style.css" diff --git a/thumbnail.png b/thumbnail.png new file mode 100644 index 0000000..d06bb2a Binary files /dev/null and b/thumbnail.png differ