Skip to content

repo sync #77

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Sep 29, 2020
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions feature-flags.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{
"FEATURE_TEST_TRUE": true,
"FEATURE_TEST_FALSE": false,
"FEATURE_NEW_VERSIONS": true
"FEATURE_TEST_FALSE": false
}
8 changes: 0 additions & 8 deletions includes/article-version-switcher.html
Original file line number Diff line number Diff line change
@@ -2,11 +2,7 @@
<details class="dropdown-withArrow d-inline-block details details-reset mb-4 position-relative close-when-clicked-outside article-versions">
<summary class="d-flex flex-items-center flex-justify-between f4 h5-mktg btn-outline-mktg btn-mktg p-2">
<!-- GitHub.com, Enterprise Server 2.16, etc -->
{% if process.env.FEATURE_NEW_VERSIONS %}
<span class="d-md-none d-xl-inline-block mr-1">{{ site.data.ui.pages.article_version }}</span> {{ allVersions[currentVersion].versionTitle }}
{% else %}
<span class="d-md-none d-xl-inline-block mr-1">{{ site.data.ui.pages.article_version }}</span> {{ productNames[currentVersion] }}
{% endif %}
<svg class="arrow ml-1" width="14px" height="8px" viewBox="0 0 14 8" xml:space="preserve" fill="none" stroke="#1277eb"><path d="M1,1l6.2,6L13,1"></path></svg>
</summary>

@@ -16,11 +12,7 @@
href="{{ permalink.href }}"
class="d-block py-2 {% if currentPath == permalink.href %}link-blue active{% else %}link-gray-dark no-underline{% endif %}"
>
{% if process.env.FEATURE_NEW_VERSIONS %}
{{ allVersions[permalink.pageVersion].versionTitle }}</a>
{% else %}
{{ productNames[permalink.pageVersion] }}</a>
{% endif %}
{% endfor %}
</div>
</details>
3 changes: 0 additions & 3 deletions includes/deprecation-banner.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
{% unless process.env.FEATURE_NEW_VERSIONS %}
{% assign enterpriseServerReleases = enterpriseVersions %}
{% endunless %}
{% if currentVersion contains enterpriseServerReleases.oldestSupported %}
<div class="deprecation-banner border rounded-1 mb-2 bg-yellow-light p-3 border-yellow f5">
<p>
8 changes: 1 addition & 7 deletions includes/header.html
Original file line number Diff line number Diff line change
@@ -44,11 +44,7 @@ <h4 class="text-mono f5 text-normal text-gray d-md-none">{{ site.data.ui.homepag
<div id="current-product" class="d-flex flex-items-center flex-justify-between" style="padding-top: 2px;">
<!-- Product switcher - GitHub.com, Enterprise Server, etc -->
<!-- 404 and 500 error layouts are not real pages so we need to hardcode the name for those -->
{% if process.env.FEATURE_NEW_VERSIONS %}
{{ allProducts[currentProduct].name }}
{% else %}
{{ currentProduct.name }}
{% endif %}
<svg class="arrow ml-md-1" width="14px" height="8px" viewBox="0 0 14 8" xml:space="preserve" fill="none" stroke="#1277eb"><path d="M1,1l6.2,6L13,1"></path></svg>
</div>
</summary>
@@ -57,7 +53,7 @@ <h4 class="text-mono f5 text-normal text-gray d-md-none">{{ site.data.ui.homepag
{% for product in activeProducts %}
<a href="{% unless product.external %}/{{ currentLanguage }}{% endunless %}{{ product.href }}"
class="d-block py-2
{% if process.env.FEATURE_NEW_VERSIONS and product.id == currentProduct %}text-blue-mktg text-underline active{% elsif product.id == currentProduct.id %}text-blue-mktg text-underline active{% else %}link-gray-dark no-underline{% endif %}">
{% if product.id == currentProduct %}text-blue-mktg text-underline active{% elsif product.id == currentProduct.id %}text-blue-mktg text-underline active{% else %}link-gray-dark no-underline{% endif %}">
{{ product.name }}
{% if product.external %}
<span class="ml-1"><svg width="9" height="10" viewBox="0 0 9 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path stroke="#24292e" d="M.646 8.789l8-8M8.5 9V1M1 .643h8"/></svg></span>
@@ -68,10 +64,8 @@ <h4 class="text-mono f5 text-normal text-gray d-md-none">{{ site.data.ui.homepag
</details>
</div>

{% if process.env.FEATURE_NEW_VERSIONS %}
<!-- Versions picker that only appears in the header on homepage/versioned homepages -->
{% include homepage-version-switcher %}
{% endif %}

<div class="d-md-inline-block">

7 changes: 1 addition & 6 deletions includes/landing.html
Original file line number Diff line number Diff line change
@@ -20,12 +20,7 @@ <h1 class="h1-mktg mb-3">{{ site.data.ui.search.need_help }}</h1>
<h3 class="text-mono f5 text-normal text-gray text-md-center mb-4">{{ site.data.ui.homepage.explore_by_product }}</h3>
<div class="d-flex flex-wrap gutter gutter-xl-spacious">
{% for product in activeProducts %}
{% if process.env.FEATURE_NEW_VERSIONS %}
{% assign productVersions = product.versions %}
{% else %}
{% assign productVersions = currentVersion %}
{% endif %}
{% if productVersions contains currentVersion or currentVersion == 'homepage' %}
{% if product.versions contains currentVersion or currentVersion == 'homepage' %}
<div class="d-flex flex-column col-12 col-sm-6 col-lg-3 pb-4">
<a class="btn-mktg flex-auto d-flex flex-items-center btn-outline-mktg btn-large-mktg ws-normal " href="{% unless product.external %}/{{ currentLanguage }}{% endunless %}{% if product.versions contains currentVersion %}/{{currentVersion}}/{{product.id}}{% else %}{{product.href}}{% endif %}">{{ product.name }}
{% if product.external %}
15 changes: 1 addition & 14 deletions includes/sidebar-homepage.html
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
{% if process.env.FEATURE_NEW_VERSIONS %}
{% include all-products-link %}
{% endif %}

{% for product in activeProducts %}

{% if process.env.FEATURE_NEW_VERSIONS %}
{% assign productVersions = product.versions %}
{% else %}
{% assign productVersions = currentVersion %}
{% endif %}

{% if productVersions contains currentVersion or currentVersion == 'homepage' %}
{% if product.versions contains currentVersion or currentVersion == 'homepage' %}
<li
title="{{product.name}}{% if product.external %} (External Site){% endif %}"
class="sidebar-product"
>
{% if process.env.FEATURE_NEW_VERSIONS %}
<a href="{% unless product.external %}/{{currentLanguage}}{% endunless %}{% if product.versions contains currentVersion %}/{{currentVersion}}/{{product.id}}{% else %}{{product.href}}{% endif %}" class="f4 pl-4 pr-5 py-2">
{% else %}
<a href="{% unless product.external %}/{{currentLanguage}}{% endunless %}{{product.href}}" class="f4 pl-4 pr-5 py-2">
{% endif %}
{{ product.name }}
{% if product.external %}
<span class="ml-1"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="octicon" width="16" height="16"> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.75 1C14.8163 1 14.8799 1.02634 14.9268 1.07322C14.9737 1.12011 15 1.1837 15 1.25V5.396C15.0001 5.44551 14.9855 5.49393 14.958 5.53513C14.9305 5.57632 14.8915 5.60843 14.8457 5.62739C14.8 5.64635 14.7497 5.6513 14.7011 5.64162C14.6525 5.63194 14.608 5.60805 14.573 5.573L13.03 4.03L8.53 8.53C8.38783 8.66248 8.19978 8.7346 8.00548 8.73118C7.81118 8.72775 7.62579 8.64903 7.48838 8.51162C7.35097 8.37421 7.27225 8.18882 7.26883 7.99452C7.2654 7.80022 7.33752 7.61217 7.47 7.47L11.97 2.97L10.427 1.427C10.3919 1.39204 10.3681 1.34745 10.3584 1.2989C10.3487 1.25034 10.3536 1.20001 10.3726 1.15427C10.3916 1.10853 10.4237 1.06945 10.4649 1.04199C10.5061 1.01453 10.5545 0.999912 10.604 1H14.75ZM2.75 2C2.28587 2 1.84075 2.18437 1.51256 2.51256C1.18437 2.84075 1 3.28587 1 3.75V13.25C1 14.216 1.784 15 2.75 15H12.25C12.7141 15 13.1592 14.8156 13.4874 14.4874C13.8156 14.1592 14 13.7141 14 13.25V9.75C14 9.55109 13.921 9.36032 13.7803 9.21967C13.6397 9.07902 13.4489 9 13.25 9C13.0511 9 12.8603 9.07902 12.7197 9.21967C12.579 9.36032 12.5 9.55109 12.5 9.75V13.25C12.5 13.3163 12.4737 13.3799 12.4268 13.4268C12.3799 13.4737 12.3163 13.5 12.25 13.5H2.75C2.6837 13.5 2.62011 13.4737 2.57322 13.4268C2.52634 13.3799 2.5 13.3163 2.5 13.25V3.75C2.5 3.6837 2.52634 3.62011 2.57322 3.57322C2.62011 3.52634 2.6837 3.5 2.75 3.5H6.25C6.44891 3.5 6.63968 3.42098 6.78033 3.28033C6.92098 3.13968 7 2.94891 7 2.75C7 2.55109 6.92098 2.36032 6.78033 2.21967C6.63968 2.07902 6.44891 2 6.25 2H2.75Z"></path></svg></span>
4 changes: 0 additions & 4 deletions includes/sidebar-specific-product.html
Original file line number Diff line number Diff line change
@@ -6,11 +6,7 @@
also gets an `is-current-page` class.
-->

{% if process.env.FEATURE_NEW_VERSIONS %}
{% assign product = siteTree[currentLanguage][currentVersion].products[currentProduct] %}
{% else %}
{% assign product = siteTree[currentLanguage][currentVersion].products[currentProduct.id] %}
{% endif %}
{% include all-products-link %}
<li title="{{product.title}}" class="sidebar-product mb-2">
<a href="/{{currentLanguage}}{{product.href}}" class="pl-4 pr-5 pb-1 f4">{{ product.title }}</a>
4 changes: 0 additions & 4 deletions includes/support.html
Original file line number Diff line number Diff line change
@@ -4,11 +4,7 @@
<h4 class="mb-3">
{{ site.data.ui.support.still_need_help }}
</h4>
{% if process.env.FEATURE_NEW_VERSIONS %}
{% if currentVersion contains 'enterprise' %}{% assign isEnterprise = true %}{% else %}{% assign isEnterprise = false %}{% endif %}
{% else %}
{% if currentVersion != 'dotcom' %}{% assign isEnterprise = true %}{% else %}{% assign isEnterprise = false %}{% endif %}
{% endif %}
<a id="ask-community" href="https://github.community" class="btn btn-outline">
{% octicon "people" width="16" %}
{{ site.data.ui.support.ask_community }}
40 changes: 7 additions & 33 deletions lib/all-products.js
Original file line number Diff line number Diff line change
@@ -5,47 +5,29 @@ const { difference } = require('lodash')
const yaml = require('js-yaml')
const contentDir = path.join(process.cwd(), 'content')
const frontmatter = require('@github-docs/frontmatter')
const getApplicableVersions = require('./get-applicable-versions')

let getApplicableVersions
if (process.env.FEATURE_NEW_VERSIONS) {
getApplicableVersions = require('./get-applicable-versions')
}

// the product order is determined by a yml file
// the product order is determined by data/products.yml
const productsFile = path.join(process.cwd(), 'data/products.yml')
const productsYml = yaml.load(fs.readFileSync(productsFile, 'utf8'))
const sortedProductIds = productsYml.productsInOrder

let contentProductIds = fs.readdirSync(contentDir, { withFileTypes: true })
const contentProductIds = fs.readdirSync(contentDir, { withFileTypes: true })
.filter(entry => entry.isDirectory())
.map(entry => entry.name)

// TODO this can be removed when we replace content/enterprise/admin with content/admin
if (!process.env.FEATURE_NEW_VERSIONS) {
contentProductIds = contentProductIds.map(id => id.replace('enterprise', 'enterpriseServer'))
}

assert(difference(sortedProductIds, contentProductIds).length === 0)
assert(difference(contentProductIds, sortedProductIds).length === 0)

const internalProducts = {}

sortedProductIds.forEach(productId => {
const relPath = process.env.FEATURE_NEW_VERSIONS
? productId
: productId === 'enterpriseServer' ? 'enterprise/admin' : productId

const relPath = productId
const dir = path.join('content', relPath)
const toc = path.join(dir, 'index.md')
const { data } = frontmatter(fs.readFileSync(toc, 'utf8'))

let applicableVersions, href
if (process.env.FEATURE_NEW_VERSIONS) {
applicableVersions = getApplicableVersions(data.versions, toc)
href = path.join('/', applicableVersions[0], productId)
} else {
href = path.join('/', relPath)
}
const applicableVersions = getApplicableVersions(data.versions, toc)
const href = path.join('/', applicableVersions[0], productId)

internalProducts[productId] = {
id: productId,
@@ -56,11 +38,7 @@ sortedProductIds.forEach(productId => {
wip: data.wip || false
}

if (process.env.FEATURE_NEW_VERSIONS) {
internalProducts[productId].versions = applicableVersions
} else {
internalProducts[productId].hasEnterpriseUserVersions = productsYml.hasEnterpriseUserVersions.some(id => id === productId)
}
internalProducts[productId].versions = applicableVersions
})

const externalProducts = {
@@ -78,10 +56,6 @@ const externalProducts = {
}
}

if (!process.env.FEATURE_NEW_VERSIONS) {
Object.keys(externalProducts).forEach(id => { externalProducts[id].hasEnterpriseUserVersions = false })
}

const allProducts = Object.assign({}, internalProducts, externalProducts)

module.exports = allProducts
84 changes: 39 additions & 45 deletions lib/all-versions.js
Original file line number Diff line number Diff line change
@@ -1,51 +1,45 @@
const enterpriseServerReleases = require('./enterprise-server-releases')

if (!process.env.FEATURE_NEW_VERSIONS) {
module.exports = ['dotcom'].concat(enterpriseServerReleases.supported)
}

if (process.env.FEATURE_NEW_VERSIONS) {
// version = "plan"@"release"
// example: enterprise-server@2.21
// where "enterprise-server" is the plan and "2.21" is the release
const versionDelimiter = '@'
const latestNonNumberedRelease = 'latest'

const plans = [
{
plan: 'free-pro-team',
planTitle: 'Free, Pro, and Team',
releases: [latestNonNumberedRelease],
latestRelease: latestNonNumberedRelease,
nonEnterpriseDefault: true // permanent way to refer to this plan if the name changes
},
{
plan: 'enterprise-server',
planTitle: 'Enterprise Server',
releases: enterpriseServerReleases.supported,
latestRelease: enterpriseServerReleases.latest,
hasNumberedReleases: true
// version = "plan"@"release"
// example: enterprise-server@2.21
// where "enterprise-server" is the plan and "2.21" is the release
const versionDelimiter = '@'
const latestNonNumberedRelease = 'latest'

const plans = [
{
plan: 'free-pro-team',
planTitle: 'Free, Pro, and Team',
releases: [latestNonNumberedRelease],
latestRelease: latestNonNumberedRelease,
nonEnterpriseDefault: true // permanent way to refer to this plan if the name changes
},
{
plan: 'enterprise-server',
planTitle: 'Enterprise Server',
releases: enterpriseServerReleases.supported,
latestRelease: enterpriseServerReleases.latest,
hasNumberedReleases: true
}
]

const allVersions = {}

// combine the plans and releases to get allVersions object
// e.g. free-pro-team@latest, enterprise-server@2.21, enterprise-server@2.20, etc.
plans.forEach(planObj => {
planObj.releases.forEach(release => {
const version = `${planObj.plan}${versionDelimiter}${release}`

const versionObj = {
version,
versionTitle: planObj.hasNumberedReleases ? `${planObj.planTitle} ${release}` : planObj.planTitle,
latestVersion: `${planObj.plan}${versionDelimiter}${planObj.latestRelease}`,
currentRelease: release
}
]

const allVersions = {}

// combine the plans and releases to get allVersions object
// e.g. free-pro-team@latest, enterprise-server@2.21, enterprise-server@2.20, etc.
plans.forEach(planObj => {
planObj.releases.forEach(release => {
const version = `${planObj.plan}${versionDelimiter}${release}`

const versionObj = {
version,
versionTitle: planObj.hasNumberedReleases ? `${planObj.planTitle} ${release}` : planObj.planTitle,
latestVersion: `${planObj.plan}${versionDelimiter}${planObj.latestRelease}`,
currentRelease: release
}

allVersions[version] = Object.assign(versionObj, planObj)
})
allVersions[version] = Object.assign(versionObj, planObj)
})
})

module.exports = allVersions
}
module.exports = allVersions
4 changes: 1 addition & 3 deletions lib/check-developer-links.js
Original file line number Diff line number Diff line change
@@ -79,9 +79,7 @@ module.exports = async function checkLinks ($, page, context, version, checkedLi

// finding the linked page isn't enough if it's a github.com page; also need to check versions
if (linkedPage.relativePath.startsWith('github')) {
const linkedPageVersions = process.env.FEATURE_NEW_VERSIONS
? getApplicableVersions(linkedPage.versions, linkedPage.relativePath)
: getApplicableVersions(linkedPage.productVersions, linkedPage.relativePath)
const linkedPageVersions = getApplicableVersions(linkedPage.versions, linkedPage.relativePath)

if (!linkedPageVersions.includes(version) && $(internalLink).attr('class') !== 'dotcom-only') {
brokenLinks.links.push({ 'broken link': link, reason: `${version} not found in linked page versions`, 'linked page': linkedPage.fullPath })
4 changes: 1 addition & 3 deletions lib/check-links.js
Original file line number Diff line number Diff line change
@@ -68,9 +68,7 @@ module.exports = async function checkLinks ($, page, context, version, checkedLi

// finding the linked page isn't enough if it's a github.com page; also need to check versions
if (linkedPage.relativePath.startsWith('github')) {
const linkedPageVersions = process.env.FEATURE_NEW_VERSIONS
? getApplicableVersions(linkedPage.versions, linkedPage.relativePath)
: getApplicableVersions(linkedPage.productVersions, linkedPage.relativePath)
const linkedPageVersions = getApplicableVersions(linkedPage.versions, linkedPage.relativePath)

if (!linkedPageVersions.includes(version) && $(internalLink).attr('class') !== 'dotcom-only') {
brokenLinks.links.push({ 'broken link': link, reason: `${version} not found in linked page versions`, 'linked page': linkedPage.fullPath })
4 changes: 1 addition & 3 deletions lib/find-page.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
const slash = require('slash')
const patterns = require('./patterns')
const allVersions = process.env.FEATURE_NEW_VERSIONS
? Object.keys(require('./all-versions'))
: require('./all-versions')
const allVersions = Object.keys(require('./all-versions'))
const { getVersionedPathWithLanguage } = require('./path-utils')

module.exports = function findPage (href, pages, redirects = {}, languageCode = 'en', sourceLanguage = null) {
32 changes: 7 additions & 25 deletions lib/frontmatter.js
Original file line number Diff line number Diff line change
@@ -5,7 +5,6 @@ const semverRange = {
conform: require('semver').validRange,
message: 'Must be a valid SemVer range'
}
const productIds = Object.keys(require('./all-products'))
const versionIds = Object.keys(require('./all-versions'))

const schema = {
@@ -68,30 +67,13 @@ const schema = {
}
}

if (process.env.FEATURE_NEW_VERSIONS) {
schema.properties.versions = {
type: ['object', 'string'], // allow a '*' string to indicate all versions
required: true,
properties: versionIds.reduce((acc, versionId) => {
acc[versionId] = semverRange
return acc
}, {})
}
}

if (!process.env.FEATURE_NEW_VERSIONS) {
schema.properties.productVersions = {
type: 'object',
required: true,
properties: productIds.reduce((acc, productId) => {
// github used to be called dotcom
// TODO: rename `dotcom` to `github` in all the markdown files' frontmatter
if (productId === 'github') productId = 'dotcom'

acc[productId] = semverRange
return acc
}, {})
}
schema.properties.versions = {
type: ['object', 'string'], // allow a '*' string to indicate all versions
required: true,
properties: versionIds.reduce((acc, versionId) => {
acc[versionId] = semverRange
return acc
}, {})
}

function frontmatter (markdown, opts = {}) {
Loading
Oops, something went wrong.