process.env.BABEL_ENV = 'development';
process.env.NODE_ENV = 'development';

import webpack from 'webpack';
import {getPackageConfig} from '@lipemat/js-boilerplate-shared/helpers/package-config.js';
import {unlinkSync, writeFile} from 'fs';
import WebpackDevServer from 'webpack-dev-server';
import {getConfig} from '../helpers/config.js';
import path from 'path';

const webpackConfig = await getConfig( 'webpack.dev.js' );
const devServerConfig = await getConfig( 'dev-server.config.js' );

const compiler = webpack( webpackConfig );
if ( null === compiler ) {
	throw new Error( 'Failed to create the webpack compiler.' );
}
const server = new WebpackDevServer( devServerConfig, compiler );

/**
 * Create a `.running` file within the `dist` which only
 * exists if this script is running.
 */
writeFile( path.resolve( getPackageConfig().workingDirectory, 'dist/.running' ), new Date().toLocaleString() + '\n' + 'Generated by @lipemat/js-boilerplate.', err => {
	if ( err ) {
		throw err;
	}
	process.on( 'exit', () => {
		unlinkSync( path.resolve( getPackageConfig().workingDirectory, 'dist/.running' ) );
	} );
} );

( async() => {
	try {
		await server.start();
	} catch ( err ) {
		return console.error( err );
	}
} )();
