Skip to content
Snippets Groups Projects
Select Git revision
  • 50c622166eb36d3bd2ed132465f202a200325e18
  • main default protected
  • renovate/lock-file-maintenance
  • demo protected
  • person-select-custom
  • dbp-translation-component
  • icon-set-mapping
  • port-i18next-parser
  • remove-sentry
  • favorites-and-recent-files
  • revert-6c632dc6
  • lit2
  • advertisement
  • wc-part
  • automagic
  • publish
  • wip-cleanup
  • demo-file-handling
18 results

rollup.utils.js

Blame
  • Christoph Reiter's avatar
    Reiter, Christoph authored
    Instead of going through the rollup plugin. Turns out the rollup plugin
    api shouldn't be used outside of rollup.
    
    Ideally this should give us the same path resolution anyway, even though it's
    potentially a different implementation.
    2b6dc73f
    History
    rollup.utils.js 2.28 KiB
    import path from 'path';
    import url from 'url';
    import fs from 'fs';
    import child_process from 'child_process';
    import selfsigned from 'selfsigned';
    import findCacheDir from 'find-cache-dir';
    
    export function getBuildInfo(build) {
        let remote = child_process.execSync('git config --get remote.origin.url').toString().trim();
        let commit = child_process.execSync('git rev-parse --short HEAD').toString().trim();
    
        let parsed = url.parse(remote);
        let newPath = parsed.path.slice(0, parsed.path.lastIndexOf('.'));
        let newUrl = parsed.protocol + '//' + parsed.host + newPath + '/commit/' + commit;
    
        return {
            info: commit,
            url: newUrl,
            time: new Date().toISOString(),
            env: build
        }
    }
    
    export async function getDistPath(packageName, assetPath) {
        if (assetPath === undefined)
            assetPath = '';
        // make sure the package exists to avoid typos
        await getPackagePath(packageName, '');
        return path.join('local', packageName, assetPath);
    }
    
    export async function getPackagePath(packageName, assetPath) {
        let packageRoot;
        let current = require.resolve('./package.json');
        if (require(current).name === packageName) {
            // current package
            packageRoot = path.dirname(current);
        } else {
            // Other packages from nodes_modules etc.
            packageRoot = path.dirname(require.resolve(packageName + '/package.json'));
        }
        return path.relative(process.cwd(), path.join(packageRoot, assetPath));
    }
    
    /**
     * Creates a dummy dev server certificate, caches it and returns it.
     */
    export async function generateTLSConfig() {
        const certDir = findCacheDir({name: 'dbp-dev-server-cert'});
        const keyPath = path.join(certDir, 'server.key');
        const certPath = path.join(certDir, 'server.cert');
    
        await fs.promises.mkdir(certDir, {recursive: true});
    
        if (!fs.existsSync(keyPath) || !fs.existsSync(certPath)) {
            const attrs = [{name: 'commonName', value: 'dbp-dev.localhost'}];
            const pems = selfsigned.generate(attrs, {algorithm: 'sha256', days: 9999, keySize: 2048});
            await fs.promises.writeFile(keyPath, pems.private);
            await fs.promises.writeFile(certPath, pems.cert);
        }
    
        return {
            key: await fs.promises.readFile(keyPath),
            cert: await fs.promises.readFile(certPath)
        }
    }