| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | package;import sys.FileSystem;import sys.io.File;import haxe.io.Path;using StringTools;class Main {	static final matchImport = ~/^([ \t]*)@import (.+)$/gm;	static final matchRunnable = ~/^([ \t]*)jobs:/gm;	static function main():Void {		final folder = FileSystem.absolutePath(".");		final outFolder = "../../.github";		iterFolderItems(folder, (dir, name) -> {			final ext = Path.extension(name);			if (ext != "yaml" && ext != "yml") return;			final data = File.getContent('$dir/$name');			var newData = matchImport.map(data, reg -> {				final spaces = reg.matched(1);				final path = reg.matched(2);				final template = File.getContent('./$path');				final lines = template.split("\n");				for (i in 0...lines.length) lines[i] = spaces + lines[i];				lines.join("\n");			});			if (!matchRunnable.match(newData)) return;			final first = "# DO NOT EDIT. Generated from /extra/github-actions\n";			newData = first + newData;			final relativeDir = dir.replace(folder, "");			File.saveContent('$outFolder$relativeDir/$name', newData);		});	}	static function iterFolderItems(dir:String, func:(dir:String, name:String)->Void):Void {		for (name in FileSystem.readDirectory(dir)) {			if (FileSystem.isDirectory(name)) iterFolderItems('$dir/$name', func);			func(dir, name);		}	}}
 |