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