static Package FindOrCreateExecutionPackage(RestClient client, Root root, Project project, Options options, SystemInfo systemInfo) { Package scriptPackage = client.GetExecutionPackageByProjectAndName(root, project.Id, options.ExecutionPackage); if (scriptPackage == null) { // let's try to create all the packages in the path string[] parts = options.ExecutionPackage.Split(new[] {systemInfo.PackagePathSeparator}, StringSplitOptions.RemoveEmptyEntries); Package parent = client.GetExecutionPackageByProjectAndName(root, project.Id, parts[0]) ?? client.CreateExecutionPackageForProject(root, project.Id, parts[0]); for (int i = 1; i < parts.Length; i++) { Package match = client.GetExecutionPackageByParentPackageAndName(root, parent.Id, parts[i]) ?? client.CreateExecutionPackageForParentProject(root, parent.Id, parts[i]); parent = match; } scriptPackage = parent; } return scriptPackage; }