Skip to content
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

ci: enable eslint #665

Merged
merged 2 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ jobs:
if: github.event_name == 'pull_request'
run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose

# - name: '[Code quality] Check ESLint'
# run: npm run lint
- name: '[Code quality] Check ESLint'
run: npm run lint

- name: '[Build] [Prepare] Setup ruby'
uses: ruby/setup-ruby@v1
Expand Down
4 changes: 2 additions & 2 deletions scripts/archive.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ module.exports = async function build (version, latest) {
await generateChecksumFile(archiveLatestFilepath);
}
}
}
};

//--- private
// --- private

async function packageArchive (binaryFilepath, archiveFilepath) {
startTask(`Packaging ${archiveFilepath}`);
Expand Down
2 changes: 1 addition & 1 deletion scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ module.exports = async function build (version) {
}
};

//--- private
// --- private

async function buildBinary (arch, binaryFilepath) {
const { nodeVersion } = cfg;
Expand Down
4 changes: 1 addition & 3 deletions scripts/bundle.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
const path = require('path');
const fs = require('fs-extra');
const { readFile } = require('fs/promises');
const del = require('del');
const cfg = require('./config.js');
const {
startTask,
Expand Down Expand Up @@ -35,7 +33,7 @@ module.exports = async function bundle (version) {
}
};

//--- private
// --- private

async function bundleRpm (version) {
const bundleType = 'rpm';
Expand Down
40 changes: 20 additions & 20 deletions scripts/cellar-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ const mime = require('mime-types');
const { getCellarConf } = require('./config.js');

// Forces the *.sha256 files to be uploaded with a text/plain mime type.
mime.types['sha256'] = 'text/plain';
mime.types.sha256 = 'text/plain';

const CELLAR_CLIENTS = {};

function getCellarClient(scope) {
function getCellarClient (scope) {
if (CELLAR_CLIENTS[scope] == null) {
const conf = getCellarConf(scope)
const conf = getCellarConf(scope);
if (!conf.accessKeyId || !conf.secretAccessKey) {
throw new Error('Could not read Cellar access/secret keys!');
}
Expand All @@ -30,10 +30,10 @@ function cellar ({ accessKeyId, secretAccessKey, host, bucket }) {
});

const client = {
url(remoteFilepath) {
url (remoteFilepath) {
return `https://${bucket}/${remoteFilepath}`;
},
async exists(remoteFilepath) {
async exists (remoteFilepath) {
return new Promise((resolve, reject) => {
const params = { Bucket: bucket, Key: remoteFilepath };
return s3.headObject(params, (err, data) => err ? reject(err) : resolve());
Expand All @@ -46,42 +46,42 @@ function cellar ({ accessKeyId, secretAccessKey, host, bucket }) {
throw e;
});
},
async upload(filepath, remoteFilepath = filepath) {
async upload (filepath, remoteFilepath = filepath) {
return client.putObject(fs.createReadStream(filepath), remoteFilepath);
},
async putObject(body, remoteFilepath) {
async putObject (body, remoteFilepath) {
return new Promise((resolve, reject) => {
const params = { ACL: 'public-read', Body: body, Bucket: bucket, Key: remoteFilepath, ContentType: mime.lookup(remoteFilepath) || null, };
const params = { ACL: 'public-read', Body: body, Bucket: bucket, Key: remoteFilepath, ContentType: mime.lookup(remoteFilepath) || null };
return s3.putObject(params, (err) => err ? reject(err) : resolve());
});
},
async delete(remoteFilepath) {
async delete (remoteFilepath) {
const objects = await client.listObjects(remoteFilepath);

return Promise.all(
objects
.map((object) => new Promise((resolve, reject) => {
return s3.deleteObject({ Bucket: bucket, Key: object.Key }, (err) => err ? reject(err) : resolve())
}))
return s3.deleteObject({ Bucket: bucket, Key: object.Key }, (err) => err ? reject(err) : resolve());
})),
);
},
async listObjects(path) {
async listObjects (path) {
return new Promise((resolve, reject) => {
return s3.listObjects(
{ Bucket: bucket, Prefix: path},
(err, data) => err ? reject(err) : resolve(data.Contents))
{ Bucket: bucket, Prefix: path },
(err, data) => err ? reject(err) : resolve(data.Contents));
});
},
async getObject(path) {
async getObject (path) {
return new Promise((resolve, reject) => {
return s3.getObject(
{ Bucket: bucket, Key: path},
(err, data) => err ? reject(err) : resolve(data.Body))
{ Bucket: bucket, Key: path },
(err, data) => err ? reject(err) : resolve(data.Body));
}).then((body) => {
return JSON.parse(body.toString())
return JSON.parse(body.toString());
});
}
}
},
};

return client;
}
Expand Down
16 changes: 8 additions & 8 deletions scripts/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ const pkgJson = require('../package.json');

const archList = ['linux', 'macos', 'win'];
const archEmoji = {
'linux': '🐧',
'macos': '🍏',
'win': '🪟',
}
linux: '🐧',
macos: '🍏',
win: '🪟',
};
const nodeVersion = pkgJson['pkg-node-version'];
const git = {
email: '[email protected]',
Expand Down Expand Up @@ -53,24 +53,24 @@ function getGpgConf () {
return { gpgPrivateKey, gpgPath, gpgName, gpgPass };
}

function getCellarConf(scope) {
function getCellarConf (scope) {
if (scope === 'previews') {
return {
host: 'cellar-c2.services.clever-cloud.com',
bucket: 'clever-tools-preview.clever-cloud.com',
accessKeyId: process.env.CC_CLEVER_TOOLS_PREVIEWS_CELLAR_KEY_ID,
secretAccessKey: process.env.CC_CLEVER_TOOLS_PREVIEWS_CELLAR_SECRET_KEY,
}
};
}
if (scope === 'releases') {
return {
host: 'cellar-c2.services.clever-cloud.com',
bucket: 'clever-tools.clever-cloud.com',
accessKeyId: process.env.CC_CLEVER_TOOLS_RELEASES_CELLAR_KEY_ID,
secretAccessKey: process.env.CC_CLEVER_TOOLS_RELEASES_CELLAR_SECRET_KEY,
}
};
}
throw new Error(`Unsupported cellar scope "${scope}". Supported scopes: "previews", "releases".`)
throw new Error(`Unsupported cellar scope "${scope}". Supported scopes: "previews", "releases".`);
}

module.exports = {
Expand Down
6 changes: 3 additions & 3 deletions scripts/job-build.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ async function run () {
const [versionArg, ...optionsArgs] = process.argv.slice(2);

if (versionArg == null || versionArg.length === 0) {
throw new Error(`Missing argument 'version'`);
throw new Error('Missing argument \'version\'');
}

const version = getVersion(versionArg);
Expand All @@ -33,11 +33,11 @@ run().catch((e) => {
process.exit(1);
});

function getVersion(version) {
function getVersion (version) {
return version.replace(/\//g, '-');
}

function resolveOptions(args) {
function resolveOptions (args) {
const options = {
archive: false,
latest: false,
Expand Down
35 changes: 18 additions & 17 deletions scripts/job-preview.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const fs = require('fs-extra');
const colors = require('colors/safe');
const textTable = require('text-table');
const cfg = require('./config.js');
const { archList} = cfg;
const { archList } = cfg;
const build = require('./build.js');
const archive = require('./archive.js');
const { getArchiveFilename, getWorkingDirectory, getArchiveFilepath, getShaFilepath } = require('./paths.js');
Expand All @@ -18,7 +18,7 @@ async function run () {
const [command, branch] = process.argv.slice(2);

if (command == null || command.length === 0) {
throw new Error(`Missing argument 'command'`);
throw new Error('Missing argument \'command\'');
}

const previewName = () => (branch ?? getCurrentBranch()).replace(/\//g, '-');
Expand All @@ -41,14 +41,14 @@ async function run () {
throw new Error('Unknown command!');
}

async function buildPreview(previewName) {
async function buildPreview (previewName) {
await cleanupDirectory(getWorkingDirectory(previewName));

await build(previewName);
await archive(previewName, false);
}

async function publishPreview(previewName) {
async function publishPreview (previewName) {
const cellarClient = cellar();

for (const arch of archList) {
Expand Down Expand Up @@ -96,7 +96,7 @@ async function publishPreview(previewName) {
await updateListIndex(manifest);
}

async function deletePreview(previewName) {
async function deletePreview (previewName) {
const manifest = await getManifest();
const previewIndex = manifest.previews.findIndex((p) => p.name === previewName);
if (previewIndex === -1) {
Expand All @@ -112,7 +112,7 @@ async function deletePreview(previewName) {
await updateListIndex(manifest);
}

async function getPreview(previewName) {
async function getPreview (previewName) {
const manifest = await getManifest();

const preview = manifest.previews.find((p) => p.name === previewName);
Expand All @@ -126,7 +126,7 @@ async function getPreview(previewName) {
}
}

async function getPreviewLinks(previewName) {
async function getPreviewLinks (previewName) {
const manifest = await getManifest();

const preview = manifest.previews.find((p) => p.name === previewName);
Expand Down Expand Up @@ -163,22 +163,21 @@ run().catch((e) => {
process.exit(1);
});


// ----------

function cellar() {
function cellar () {
return getCellarClient('previews');
}

function getArchiveRemoteFilepath(arch, name) {
function getArchiveRemoteFilepath (arch, name) {
return `${getArchiveRemoteDirectory(name)}/${getArchiveFilename(arch, name)}`;
}

function getArchiveRemoteDirectory(name) {
function getArchiveRemoteDirectory (name) {
return `${REMOTE_PREVIEW_DIR}/${name}`;
}

async function getManifest() {
async function getManifest () {
const cellarClient = cellar();

try {
Expand All @@ -189,7 +188,7 @@ async function getManifest() {
return {
version: '1',
previews: [],
}
};
}
throw e;
}
Expand Down Expand Up @@ -248,9 +247,11 @@ async function updateListIndex (manifest) {
</head>
<body>
<h1>Clever tools - Previews</h1>
${manifest.previews.length === 0 ? `
${manifest.previews.length === 0
? `
<p><em>No previews right now</em></p>
` : `
`
: `
<table>
<tr>
<th>Branch</th>
Expand All @@ -265,8 +266,8 @@ async function updateListIndex (manifest) {
<td>
<div class="binaries">
${p.urls.map((u) => {
const url = `<a href="${u.url}">${archEmoji[u.arch]} ${u.arch}</a>`
const checksum = `<code>${u.checksum.value}</code></span>`
const url = `<a href="${u.url}">${archEmoji[u.arch]} ${u.arch}</a>`;
const checksum = `<code>${u.checksum.value}</code></span>`;
return `${url}${checksum}`;
}).join('')}
</div>
Expand Down
12 changes: 6 additions & 6 deletions scripts/job-publish.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ const PUBLISHERS = {
exherbo: publishExherbo,
nexus: publishNexus,
npm: publishNpm,
}
};
const TARGETS = Object.keys(PUBLISHERS);

async function run () {
const [version, ...requestedTargets] = process.argv.slice(2);

if (version == null || version.length === 0) {
throw new Error(`Missing argument 'version'`);
throw new Error('Missing argument \'version\'');
}

assertVersionCoherence(version);
Expand All @@ -46,15 +46,15 @@ run().catch((e) => {
process.exit(1);
});

//--
// --

function assertVersionCoherence(version) {
function assertVersionCoherence (version) {
if (version !== pkgJson.version) {
throw new Error(`Mismatch between version ${version} and package.json version ${pkgJson.version}`);
}
}

function resolveTargets(requestedTargets) {
function resolveTargets (requestedTargets) {
if (requestedTargets == null || requestedTargets.length === 0) {
return {
cellar: true,
Expand All @@ -77,7 +77,7 @@ function resolveTargets(requestedTargets) {
};
}

async function assertPackagesAreOnCellar(version) {
async function assertPackagesAreOnCellar (version) {
try {
await assertRemoteFilesAreOnCellar(version);
}
Expand Down
Loading
Loading