use of org.ballerinalang.compiler.BLangCompilerException in project ballerina by ballerina-lang.
the class PushUtils method pushPackages.
/**
* Push/Uploads packages to the central repository.
*
* @param packageName path of the package folder to be pushed
* @param installToRepo if it should be pushed to central or home
*/
public static void pushPackages(String packageName, String installToRepo) {
String accessToken = getAccessTokenOfCLI();
Manifest manifest = readManifestConfigurations();
if (manifest.getName() == null && manifest.getVersion() == null) {
throw new BLangCompilerException("An org-name and package version is required when pushing. " + "This is not specified in Ballerina.toml inside the project");
}
String orgName = manifest.getName();
String version = manifest.getVersion();
PackageID packageID = new PackageID(new Name(orgName), new Name(packageName), new Name(version));
Path prjDirPath = Paths.get(".").toAbsolutePath().normalize().resolve(ProjectDirConstants.DOT_BALLERINA_DIR_NAME);
// Get package path from project directory path
Path pkgPathFromPrjtDir = Paths.get(prjDirPath.toString(), "repo", Names.ANON_ORG.getValue(), packageName, Names.DEFAULT_VERSION.getValue(), packageName + ".zip");
if (installToRepo == null) {
if (accessToken == null) {
// TODO: get bal home location dynamically
throw new BLangCompilerException("Access token is missing in ~/ballerina_home/Settings.toml file.\n" + "Please visit https://central.ballerina.io/cli-token");
}
// Push package to central
String resourcePath = resolvePkgPathInRemoteRepo(packageID);
URI balxPath = URI.create(String.valueOf(PushUtils.class.getClassLoader().getResource("ballerina.push.balx")));
String msg = orgName + "/" + packageName + ":" + version + " [project repo -> central]";
ExecutorUtils.execute(balxPath, accessToken, resourcePath, pkgPathFromPrjtDir.toString(), msg);
} else {
if (!installToRepo.equals("home")) {
throw new BLangCompilerException("Unknown repository provided to push the package");
}
Path balHomeDir = HomeRepoUtils.createAndGetHomeReposPath();
Path targetDirectoryPath = Paths.get(balHomeDir.toString(), "repo", orgName, packageName, version, packageName + ".zip");
if (Files.exists(targetDirectoryPath)) {
throw new BLangCompilerException("Ballerina package exists in the home repository");
} else {
try {
Files.createDirectories(targetDirectoryPath);
Files.copy(pkgPathFromPrjtDir, targetDirectoryPath, StandardCopyOption.REPLACE_EXISTING);
outStream.println(orgName + "/" + packageName + ":" + version + " [project repo -> home repo]");
} catch (IOException e) {
throw new BLangCompilerException("Error occurred when creating directories in the home repository");
}
}
}
}
use of org.ballerinalang.compiler.BLangCompilerException in project ballerina by ballerina-lang.
the class PullCommand method execute.
@Override
public void execute() {
if (helpFlag) {
String commandUsageInfo = BLauncherCmd.getCommandUsageInfo(parentCmdParser, "pull");
outStream.println(commandUsageInfo);
return;
}
if (argList == null || argList.size() == 0) {
throw new BLangCompilerException("no package given");
}
if (argList.size() > 1) {
throw new BLangCompilerException("too many arguments");
}
// Enable remote debugging
if (null != debugPort) {
System.setProperty(SYSTEM_PROP_BAL_DEBUG, debugPort);
}
String resourceName = argList.get(0);
String orgName;
String packageName;
String version;
// Get org-name
int orgNameIndex = resourceName.indexOf("/");
if (orgNameIndex != -1) {
orgName = resourceName.substring(0, orgNameIndex);
} else {
throw new BLangCompilerException("no package-name provided");
}
// Get package name
int packageNameIndex = resourceName.indexOf(":");
if (packageNameIndex != -1) {
// version is provided
packageName = resourceName.substring(orgNameIndex + 1, packageNameIndex);
version = resourceName.substring(packageNameIndex + 1, resourceName.length());
} else {
packageName = resourceName.substring(orgNameIndex + 1, resourceName.length());
version = "*";
}
URI baseURI = URI.create("https://staging.central.ballerina.io:9090/");
Repo remoteRepo = new RemoteRepo(baseURI);
PackageID packageID = new PackageID(new Name(orgName), new Name(packageName), new Name(version));
Patten patten = remoteRepo.calculate(packageID);
if (patten != Patten.NULL) {
Converter converter = remoteRepo.getConverterInstance();
patten.convertToSources(converter, packageID).collect(Collectors.toList());
} else {
outStream.println("couldn't find package " + patten);
}
Runtime.getRuntime().exit(0);
}
use of org.ballerinalang.compiler.BLangCompilerException in project ballerina by ballerina-lang.
the class BinaryFileWriter method writeLibraryPackage.
public void writeLibraryPackage(BLangPackage packageNode) {
String fileName = getOutputFileName(packageNode, BLANG_COMPILED_PACKAGE_FILE_SUFFIX);
CompiledBinaryFile.PackageFile packageFile = this.codeGenerator.generateBALO(packageNode);
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
try {
PackageFileWriter.writePackage(packageFile, byteArrayOS);
} catch (IOException e) {
throw new BLangCompilerException("error writing package file '" + fileName + "'", e);
}
this.sourceDirectory.saveCompiledPackage(new ByteArrayInputStream(byteArrayOS.toByteArray()), fileName);
}
use of org.ballerinalang.compiler.BLangCompilerException in project ballerina by ballerina-lang.
the class BinaryFileWriter method writeExecutableBinary.
public void writeExecutableBinary(BLangPackage packageNode, String fileName) {
if (fileName == null || fileName.isEmpty()) {
throw new IllegalArgumentException("invalid target file name");
}
if (!fileName.endsWith(BLANG_EXEC_FILE_SUFFIX)) {
fileName += BLANG_EXEC_FILE_SUFFIX;
}
// Generate code for the given executable
ProgramFile programFile = this.codeGenerator.generateBALX(packageNode);
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
try {
ProgramFileWriter.writeProgram(programFile, byteArrayOS);
} catch (IOException e) {
throw new BLangCompilerException("error writing program file '" + fileName + "'", e);
}
final Path execFilePath = this.sourceDirectory.saveCompiledProgram(new ByteArrayInputStream(byteArrayOS.toByteArray()), fileName);
ServiceLoader<CompilerPlugin> processorServiceLoader = ServiceLoader.load(CompilerPlugin.class);
processorServiceLoader.forEach(plugin -> {
plugin.codeGenerated(execFilePath);
});
}
use of org.ballerinalang.compiler.BLangCompilerException in project ballerina by ballerina-lang.
the class PackageLoader method updateVersionFromToml.
private void updateVersionFromToml(PackageID pkgId) {
String orgName = pkgId.orgName.value;
String pkgName = pkgId.name.value;
String pkgAlias = orgName + "/" + pkgName;
// TODO: make getDependencies return a map
Optional<Dependency> dependency = manifest.getDependencies().stream().filter(d -> d.getPackageName().equals(pkgAlias)).findFirst();
if (dependency.isPresent()) {
if (pkgId.version.value.isEmpty()) {
pkgId.version = new Name(dependency.get().getVersion());
} else {
throw new BLangCompilerException("dependency version in Ballerina.toml mismatches" + " with the version in the source for package " + pkgAlias);
}
}
}
Aggregations