package org.rascalmpl.library.lang.manifest; import java.io.IOException; import java.util.Map.Entry; import java.util.jar.Attributes.Name; import java.util.jar.Manifest; import org.rascalmpl.interpreter.utils.RuntimeExceptionFactory; import org.rascalmpl.uri.URIResolverRegistry; import org.rascalmpl.value.IMap; import org.rascalmpl.value.IMapWriter; import org.rascalmpl.value.ISourceLocation; import org.rascalmpl.value.IValueFactory; public class IO { private final IValueFactory vf; public IO(IValueFactory vf) { this.vf = vf; } public IMap readManifest(ISourceLocation input) { try { Manifest mf = new Manifest(URIResolverRegistry.getInstance().getInputStream(input)); IMapWriter m = vf.mapWriter(); for (Entry<Object, Object> e : mf.getMainAttributes().entrySet()) { m.put(vf.string(((Name) e.getKey()).toString()), vf.string((String) e.getValue())); } return m.done(); } catch (IOException e) { throw RuntimeExceptionFactory.io(vf.string(e.getMessage()), null, null); } } }