52 lines
1.3 KiB
Dart
52 lines
1.3 KiB
Dart
import 'dart:io';
|
|
import 'package:args/command_runner.dart';
|
|
import 'package:io/ansi.dart';
|
|
import 'package:path/path.dart' as p;
|
|
import '../../util.dart';
|
|
|
|
class NginxCommand extends Command {
|
|
@override
|
|
String get name => 'nginx';
|
|
|
|
@override
|
|
String get description =>
|
|
'Generates a NGINX configuration for a reverse proxy + static server.';
|
|
|
|
NginxCommand() {
|
|
argParser.addOption('out',
|
|
abbr: 'o',
|
|
help:
|
|
'An optional output file to write to; otherwise prints to stdout.');
|
|
}
|
|
|
|
@override
|
|
run() async {
|
|
var webPath = p.join(p.current, 'web');
|
|
var nginxText = '''
|
|
server {
|
|
listen 80 default_server;
|
|
root ${p.absolute(webPath)}; # Set to your static files directory
|
|
|
|
location / {
|
|
try_files \$uri @proxy; # Try to serve static files; fallback to proxied Angel server
|
|
}
|
|
|
|
location @proxy {
|
|
proxy_pass http://127.0.0.1:3000;
|
|
proxy_http_version 1.1; # Important, do not omit
|
|
}
|
|
}
|
|
'''
|
|
.trim();
|
|
|
|
if (!argResults.wasParsed('out')) {
|
|
print(nginxText);
|
|
} else {
|
|
var file = new File(argResults['out'] as String);
|
|
await file.create(recursive: true);
|
|
await file.writeAsString(nginxText);
|
|
print(green.wrap(
|
|
"$checkmark Successfully generated nginx configuration in '${file.path}'."));
|
|
}
|
|
}
|
|
}
|