You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.2 KiB
62 lines
2.2 KiB
// Functions to add and remove AO features |
|
import { execSync, exec } from 'child_process' |
|
import { AO_MANUAL_PATH } from './manual.js' |
|
import { loadJsonFile } from './files.js' |
|
|
|
// Adds a line to .bashrc to make 'ao' an alias for 'ao-cli', to simplify using the AO from the command line |
|
export function installAoAlias() { |
|
try { |
|
execSync('grep "ao=\'ao-cli\'" ~/.bashrc') |
|
console.log('You can already type \'ao\' to launch ao-cli; the alias line already exists in ~/.bashrc.') |
|
} catch(err) { |
|
execSync('echo alias ao=\'ao-cli\' >> .bashrc') |
|
console.log('Added alias line to ~/.bashrc. You can now type \'ao\' to launch ao-cli.') |
|
} |
|
} |
|
|
|
export async function getAoCliVersion() { |
|
const packageJson = await loadJsonFile('./package.json') |
|
return packageJson.version |
|
} |
|
|
|
// Updates the globally-installed version of this package, ao-cli, using npm |
|
export async function selfUpdate() { |
|
try { |
|
const beforeVersionNumber = await getAoCliVersion() |
|
const result = execSync('npm update -g @autonomousorganization/ao-cli 2>&1') |
|
const afterVersionNumber = await getAoCliVersion() |
|
if(beforeVersionNumber === afterVersionNumber) { |
|
console.log("AO version is already current.") |
|
} else { |
|
console.log('\nao-cli self-updated automatically from version', beforeVersionNumber, 'to version', afterVersionNumber, 'from the official npm repository.') |
|
} |
|
} catch (err) { |
|
console.log('Failed to update ao-cli: ', err) |
|
} |
|
} |
|
|
|
export async function updateManual() { |
|
exec('cd ' + process.env.HOME + '/.ao/manual && git pull origin main 2>&1', (error, stdout, stderr) => { |
|
//console.log('error:', error, 'stdout:', stdout, 'stderr:', stderr) |
|
if(error) { |
|
console.log('git pull failed with error:', error) |
|
} |
|
if(stdout.includes('Already up to date.')) { |
|
return |
|
} |
|
console.log('/nAO User Manual was updated.') |
|
}) |
|
} |
|
|
|
// Downloads the ao-manual repo to ~/.ao/manual/ |
|
export function downloadManual() { |
|
try { |
|
execSync('git clone http://git.coalitionofinvisiblecolleges.org:3009/autonomousorganization/ao-manual.git ' + AO_MANUAL_PATH + ' 2>&1') |
|
} catch(err) { |
|
switch(err.code) { |
|
case 128: |
|
return false |
|
} |
|
} |
|
return true |
|
}
|
|
|