UNPKG

@arc-fusion/cli

Version:

CLI for running Arc Fusion on your local machine

57 lines (45 loc) 1.52 kB
'use strict' const spawn = require('../utils/spawn') const { dockerList } = require('../utils/docker') async function cleanContainers () { const containers = (await dockerList('ps -a')) .filter((container) => container.includes('Exited')) .map((container) => container.split(/\s+/g)[0]) return (containers && containers.length) ? spawn('docker', ['rm'].concat(containers), { stdio: 'inherit' }) : Promise.resolve() } async function cleanImages () { const untaggedImages = (await dockerList('images -a')) .map((image) => image.split(/\s+/g)) .filter((parts) => parts[0] === '<none>' || parts[1] === '<none>') .map((parts) => parts[2]) return (untaggedImages && untaggedImages.length) ? spawn('docker', ['rmi'].concat(untaggedImages), { stdio: 'inherit' }) .catch(() => null) : Promise.resolve() } async function cleanNetworks () { return spawn('docker', ['network', 'prune', '-f'], { stdio: 'inherit' }) } async function cleanVolumes () { const volumeIds = (await dockerList('volume ls')) .map((volume) => volume.split(/\s+/g)[1]) .filter((volumeId) => /^[a-z0-9]{64}$/.test(volumeId)) return (volumeIds && volumeIds.length) ? spawn('docker', ['volume', 'rm'].concat(volumeIds), { stdio: 'inherit' }) : Promise.resolve() } async function nuke () { await cleanContainers() await cleanImages() await cleanVolumes() await cleanNetworks() } module.exports = { cleanContainers, cleanImages, cleanNetworks, cleanVolumes, nuke }