ExtraStatic: powerful and easy publishing

Skip to content
Snippets Groups Projects

Add extrastatic publishing

Closed Chris Dawson requested to merge add_extrastatic_publishing into main
3 files
+ 580
18
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 44
5
@@ -4,12 +4,12 @@ import { viteSingleFile } from 'vite-plugin-singlefile';
import { build } from 'vite';
import tailwindcss from 'tailwindcss';
import { spawn } from 'child_process';
import { spawn, spawnSync } from 'child_process';
import fsExtra from 'fs-extra';
const { version } = JSON.parse(
fs
.readFileSync("./node_modules/svekyll-cli/package.json")
.readFileSync(process.env.OVERRIDE_PACKAGE_JSON || "./node_modules/svekyll-cli/package.json")
.toString());
import pkg from 'yaml';
@@ -183,7 +183,7 @@ function interpolatePostsAndStyle( { svekyllCss, userCss }, contents, _imports)
userCss );
}
async function getDiffList(filename) {
export async function getDiffList(filename) {
return new Promise( (resolve, reject) => {
const cmd = spawn('git', ['log',
'--format="%h -- %d -- %cd -- %s"',
@@ -300,10 +300,10 @@ async function getDiffContent(sha1, sha2, filename) {
});
}
async function getDiff({ metadata, config, filename, revisions } ) {
export async function getDiff({ metadata, config, filename, revisions } ) {
return new Promise( async (resolve, reject) => {
process.env.VERBOSE && console.log('YFM', metadata );
if (metadata.revisions_disabled) {
if (metadata && metadata.revisions_disabled) {
process.env.VERBOSE && console.log('Revisions disabled for this post');
resolve();
} else {
@@ -928,6 +928,45 @@ export async function getVersion() {
return `Built with svekyll-cli v${version}${sha ? ",sha:" + sha : ""}`;
}
export function publish() {
const host = process.env.PUBLISHING_HOST || 'pages.extrastatic.com';
const jobId = process.env.CI_JOB_ID;
const path = `pages/${process.env.CI_PROJECT_NAMESPACE}/${process.env.CI_PROJECT_NAME}/${jobId}`;
const mkdirCmd = ['ssh',
[ '-i',
'/ssh/extrastatic-ssh',
`pages@${host}`,
`mkdir -p ${path}`
];
const scpCmd = [ 'scp', [ '-r',
'-o',
'StrictHostKeyChecking=no',
'-o',
'UserKnownHostsFile=/dev/null',
'-i',
'/ssh/extrastatic-ssh',
'public',
`pages@${host}:${path}`
]
];
metafile();
const copyManifestCmd = ['scp',
[ '-r', '-o',
'StrictHostKeyChecking=no',
'-o',
'UserKnownHostsFile=/dev/null',
'-i',
'/ssh/extrastatic-ssh',
`${jobId}.json`,
`pages@${host}:manifests/${$jobId}.json`
]
];
[ mkdirCmd, scpCmd, copyManifestCmd ].forEach( [cmd,...rest] => {
spawnSync( cmd, rest );
});
}
export function renameIndex() {
fs.renameSync("./build/page/0/index.html", "./build/index.html");
}
Loading