Skip to content
Closed
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
2 changes: 1 addition & 1 deletion dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 32 additions & 4 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,16 @@ const exec = async (command, opts) => {

const setupCml = async opts => {
const { version, sudo = true } = opts;
const overrideRegex = /^git(?:\+(?:ssh|https))?:\/\//;
const versionUrl = overrideRegex.test(version);
let sudoPath = '';

if (versionUrl) {
console.log(
'A custom git install has been provided for version, CML may contain undocumented/unsupported changes'
);
}

if (sudo) {
try {
sudoPath = await exec('which sudo');
Expand All @@ -28,19 +37,38 @@ const setupCml = async opts => {
}

await exec(`${sudoPath} npm config set user 0`);

console.log('Uninstalling previous CML');
await exec(
`${sudoPath} npm uninstall -g canvas vega vega-cli vega-lite @dvcorg/cml`
`${sudoPath} npm uninstall -g canvas vega vega-cli vega-lite @dvcorg/cml ${
versionUrl ? version : ''
}`
);

console.log(`Installing CML version ${version}`);
await exec('npm config set user 0');
await exec(
`${sudoPath} npm install -g canvas@2 vega@5 vega-cli@5 vega-lite@4 @dvcorg/cml${
version !== 'latest' ? `@${version}` : ''
`${sudoPath} npm install -g canvas@2 vega@5 vega-cli@5 vega-lite@4 ${
versionUrl
? version
: `@dvcorg/cml${version !== 'latest' ? `@${version}` : ''}`
}`
);

let installedVersion = '';
try {
const json = await exec(`${sudoPath} npm list --json --global @dvcorg/cml`);
installedVersion = JSON.parse(json).dependencies['@dvcorg/cml'].version;
console.log(
`Targeted CML version: ${version}, received: ${installedVersion} ${
versionUrl
? `but from git source, this version could no longer be supported.`
: ''
}`
);
} catch (err) {
console.log('Failed to parse the install version of CML.', err);
process.exit(1);
}
};

exports.exec = exec;
Expand Down