ipfsd-ctl
Version:
Spawn IPFS Daemons, JS or Go
94 lines • 3.18 kB
JavaScript
import os from 'os';
import path from 'path';
import fs from 'fs';
import { logger } from '@libp2p/logger';
import { nanoid } from 'nanoid';
import tempWrite from 'temp-write';
const log = logger('ipfsd-ctl:utils');
export const removeRepo = async (repoPath) => {
try {
await fs.promises.rm(repoPath, {
recursive: true
});
}
catch (err) {
// ignore
}
};
export const repoExists = async (repoPath) => {
return await Promise.resolve(fs.existsSync(path.join(repoPath, 'config')));
};
export const defaultRepo = (type) => {
if (process.env.IPFS_PATH !== undefined) {
return process.env.IPFS_PATH;
}
return path.join(os.homedir(), type === 'js' || type === 'proc' ? '.jsipfs' : '.ipfs');
};
export const checkForRunningApi = (repoPath = '') => {
let api;
try {
api = fs.readFileSync(path.join(repoPath, 'api'));
}
catch (err) {
log('Unable to open api file');
}
return (api != null) ? api.toString() : null;
};
export const tmpDir = (type = '') => {
return path.join(os.tmpdir(), `${type}_ipfs_${nanoid()}`);
};
export function buildInitArgs(opts = {}) {
const args = ['init'];
const ipfsOptions = opts.ipfsOptions ?? {};
const initOptions = ipfsOptions.init != null && typeof ipfsOptions.init !== 'boolean' ? ipfsOptions.init : {};
// default-config only for JS
if (opts.type === 'js') {
if (ipfsOptions.config != null) {
args.push(tempWrite.sync(JSON.stringify(ipfsOptions.config)));
}
if (initOptions.pass != null) {
args.push('--pass', `"${initOptions.pass}"`);
}
}
// Translate IPFS options to cli args
if (initOptions.bits != null) {
args.push('--bits', `${initOptions.bits}`);
}
if (initOptions.algorithm != null) {
args.push('--algorithm', initOptions.algorithm);
}
if (initOptions.emptyRepo === true) {
args.push('--empty-repo');
}
if (Array.isArray(initOptions.profiles) && initOptions.profiles.length > 0) {
args.push('--profile', initOptions.profiles.join(','));
}
return args;
}
export function buildStartArgs(opts = {}) {
const ipfsOptions = opts.ipfsOptions ?? {};
const customArgs = opts.args ?? [];
const args = ['daemon'].concat(customArgs);
if (opts.type === 'js') {
if (ipfsOptions.pass != null) {
args.push('--pass', '"' + ipfsOptions.pass + '"');
}
if (ipfsOptions.preload != null) {
args.push('--enable-preload', Boolean(typeof ipfsOptions.preload === 'boolean' ? ipfsOptions.preload : ipfsOptions.preload.enabled).toString());
}
if (ipfsOptions.EXPERIMENTAL?.sharding === true) {
args.push('--enable-sharding-experiment');
}
}
if (ipfsOptions.offline === true) {
args.push('--offline');
}
if ((ipfsOptions.EXPERIMENTAL != null) && ipfsOptions.EXPERIMENTAL.ipnsPubsub === true) {
args.push('--enable-namesys-pubsub');
}
if (ipfsOptions.repoAutoMigrate === true) {
args.push('--migrate');
}
return args;
}
//# sourceMappingURL=utils.js.map