diff --git a/.github/config.yml b/.github/config.yml
index dd20aa8e735..cb65f56f35e 100644
--- a/.github/config.yml
+++ b/.github/config.yml
@@ -14,7 +14,7 @@ requestInfoLabelToAdd: more-information-needed
# Welcome!
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
-newPRWelcomeComment: Welcome! Congrats on your first pull request to The Hacker Theme. If you haven't already, please be sure to check out [the contributing guidelines](https://github.com/pages-themes/hacker/blob/master/docs/CONTRIBUTING.md).
+newPRWelcomeComment: Welcome! Congrats on your first pull request to the Hacker theme. If you haven't already, please be sure to check out [the contributing guidelines](https://github.com/pages-themes/hacker/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 Hacker 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/hacker/issues), especially those [labeled `help wanted`](https://github.com/pages-themes/hacker/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)."
+firstPRMergeComment: "Congrats on getting your first pull request to the Hacker 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/hacker/issues), especially those [labeled `help wanted`](https://github.com/pages-themes/hacker/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)."
diff --git a/.github/settings.yml b/.github/settings.yml
index 420815923f6..7c1b11592e1 100644
--- a/.github/settings.yml
+++ b/.github/settings.yml
@@ -26,6 +26,6 @@ branch_protection:
required_status_checks:
strict: true
contexts:
- - "continuous-integration/travis-ci"
+ - "script/cibuild" # GitHub Actions CI workflow
required_pull_request_reviews:
require_code_owner_reviews: true
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 00000000000..0323d522ef3
--- /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: 3.2
+ bundler-cache: true
+ - name: build
+ run: script/bootstrap
+ - name: test
+ run: script/cibuild
diff --git a/.github/workflows/publish-gem.yml b/.github/workflows/publish-gem.yml
new file mode 100644
index 00000000000..2e939a01811
--- /dev/null
+++ b/.github/workflows/publish-gem.yml
@@ -0,0 +1,22 @@
+name: Publish Gem
+
+on:
+ release:
+ types: [released]
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - name: Setup Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: '3.2'
+ - name: Build gem
+ run: |
+ gem build github-pages.gemspec
+ - name: Publish
+ run: |
+ gem push github-pages.gem --key ${{ secrets.PAGES_GEM_PUBLISH }}
diff --git a/.gitignore b/.gitignore
index 4c972ab54b0..822d5aaf017 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ _site
.sass-cache
Gemfile.lock
*.gem
+.jekyll-cache
diff --git a/.rubocop.yml b/.rubocop.yml
new file mode 100644
index 00000000000..15c823df623
--- /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
index c2fa3f9c0ea..a871f2a9172 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,6 @@
language: ruby
cache: bundler
-sudo: false
-rvm: 2.2
+rvm: 2.6
install: script/bootstrap
script: script/cibuild
diff --git a/Gemfile b/Gemfile
index fa75df15632..be173b205f7 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,3 +1,5 @@
-source 'https://rubygems.org/'
+# frozen_string_literal: true
+
+source "https://rubygems.org/"
gemspec
diff --git a/README.md b/README.md
index 801d7a96ecd..4c2fac074ba 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
# The Hacker theme
-[](https://travis-ci.org/pages-themes/hacker) [](https://badge.fury.io/rb/jekyll-theme-hacker)
+[](https://github.com/pages-themes/hacker/actions/workflows/ci.yaml) [](https://badge.fury.io/rb/jekyll-theme-hacker)
*Hacker is a Jekyll theme for GitHub Pages. You can [preview the theme to see what it looks like](http://pages-themes.github.io/hacker), or even [use it today](#usage).*
-
+
## Usage
@@ -13,7 +13,9 @@ To use the Hacker theme:
1. Add the following to your site's `_config.yml`:
```yml
- theme: jekyll-theme-hacker
+ remote_theme: pages-themes/hacker@v0.2.0
+ plugins:
+ - jekyll-remote-theme # add this line to the plugins list if you already have one
```
2. Optionally, if you'd like to preview your site on your computer, add the following to your site's `Gemfile`:
@@ -22,8 +24,6 @@ To use the Hacker theme:
gem "github-pages", group: :jekyll_plugins
```
-
-
## Customizing
### Configuration variables
@@ -38,7 +38,7 @@ 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]
+show_downloads: ["true" or "false" (unquoted) to indicate whether to provide a download URL]
google_analytics: [Your Google Analytics tracking ID]
```
@@ -56,14 +56,38 @@ If you'd like to add your own custom styles:
```
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/hacker/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
+1. For some changes such as a custom `favicon`, you can add custom files in your local `_includes` folder. The files [provided with the theme](https://github.com/pages-themes/hacker/tree/master/_includes) provide a starting point and are included by the [original layout template](https://github.com/pages-themes/hacker/blob/master/_layouts/default.html).
+2. For more extensive changes, [copy the original template](https://github.com/pages-themes/hacker/blob/master/_layouts/default.html) from the theme's repository
(*Pro-tip: click "raw" to make copying easier*)
+3. Create a file called `/_layouts/default.html` in your site
+4. Paste the default layout content copied in the first step
+5. Customize the layout as you'd like
+
+### Customizing Google Analytics code
+
+Google has released several iterations to their Google Analytics code over the years since this theme was first created. If you would like to take advantage of the latest code, paste it into `_includes/head-custom-google-analytics.html` in your Jekyll site.
+
+### 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/hacker/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
@@ -75,7 +99,7 @@ The Hacker theme is intended to make it quick and easy for GitHub Pages users to
## Contributing
-Interested in contributing to Hacker? We'd love your help. Hacker is an open source project, built one contribution at a time by users like you. See [the CONTRIBUTING file](CONTRIBUTING.md) for instructions on how to contribute.
+Interested in contributing to Hacker? We'd love your help. Hacker 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
@@ -89,4 +113,4 @@ If you'd like to preview the theme locally (for example, in the process of propo
### 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.
+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` once before the test script will work.
diff --git a/_includes/head-custom-google-analytics.html b/_includes/head-custom-google-analytics.html
new file mode 100644
index 00000000000..8a3ae5c9ca1
--- /dev/null
+++ b/_includes/head-custom-google-analytics.html
@@ -0,0 +1,10 @@
+{% if site.google_analytics %}
+
+{% endif %}
diff --git a/_includes/head-custom-theme-colors.html b/_includes/head-custom-theme-colors.html
new file mode 100644
index 00000000000..a30e7084adf
--- /dev/null
+++ b/_includes/head-custom-theme-colors.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/_includes/head-custom.html b/_includes/head-custom.html
new file mode 100644
index 00000000000..44cdb83f523
--- /dev/null
+++ b/_includes/head-custom.html
@@ -0,0 +1,12 @@
+
+
+
+{% include head-custom-theme-colors.html %}
+
+
+{% include head-custom-google-analytics.html %}
+
+
+
+
+
diff --git a/_layouts/default.html b/_layouts/default.html
index f8ccdd2f72f..1c8c883a480 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -2,9 +2,10 @@