OrgMaintenanceScripts.jl
Documentation for OrgMaintenanceScripts.
Package Features
This package provides maintenance scripts for SciML organization repositories, including:
- Code Formatting: Automated formatting with JuliaFormatter across entire organizations
- Version Bumping: Automatically bump minor versions in Project.toml files
- Package Registration: Register packages to Julia registries
- Minimum Version Fixing: Fix minimum version compatibility bounds to pass downgrade CI tests
- Compat Bumping: Automatically update package compatibility bounds for dependencies
- Version Check Finding: Find outdated VERSION checks that can be removed
- Invalidation Analysis: Use SnoopCompileCore to detect performance bottlenecks
- Import Timing Analysis: Analyze package loading times with @time_imports
- Explicit Imports Fixing: Automatically fix implicit imports and remove unused imports
- Organization-wide Operations: Process entire organizations at once
Usage Examples
Code Formatting
using OrgMaintenanceScripts
# Format a single repository
success, message, pr_url = format_repository(
"https://github.com/SciML/Example.jl.git";
fork_user = "myusername"
)
# Format all repos with failing CI
successes, failures, pr_urls = format_org_repositories(
"SciML";
fork_user = "myusername",
only_failing_ci = true
)
Version Bumping and Registration
using OrgMaintenanceScripts
# Bump minor versions and register all packages in a repository
result = bump_and_register_repo("/path/to/repo")
println("Registered packages: ", result.registered)
println("Failed packages: ", result.failed)
# Process all repositories in the SciML organization
results = bump_and_register_org("SciML"; auth_token="your_github_token")
for (repo, result) in results
println("$repo:")
println(" Registered: ", result.registered)
println(" Failed: ", result.failed)
end
Minimum Version Fixing
using OrgMaintenanceScripts
# Fix minimum versions for a single repository
success = fix_repo_min_versions("SciML/OrdinaryDiffEq.jl")
# Fix all repositories in an organization
results = fix_org_min_versions("SciML")
# Process only specific repositories
results = fix_org_min_versions("SciML"; only_repos=["OrdinaryDiffEq.jl", "DiffEqBase.jl"])
Compat Bumping
using OrgMaintenanceScripts
# Check available compat updates for a repository
updates = get_available_compat_updates("/path/to/MyPackage.jl")
for (pkg, info) in updates
println("$pkg: $(info.current) → $(info.latest)")
end
# Bump compat bounds and test
success = bump_compat_and_test("/path/to/MyPackage.jl";
create_pr = true,
fork_user = "myusername"
)
# Process an entire organization
results = bump_compat_org_repositories("SciML";
fork_user = "myusername",
limit = 10
)
Version Check Finding
using OrgMaintenanceScripts
# Find old version checks in a repository
checks = find_version_checks_in_repo("/path/to/MyPackage.jl")
# Find old version checks across an organization
results = find_version_checks_in_org("SciML"; min_version=v"1.10")
print_version_check_summary(results)
# Use custom minimum version
results = find_version_checks_in_org("MyOrg"; min_version=v"1.9", max_repos=10)
Explicit Imports Fixing
using OrgMaintenanceScripts
# Fix explicit imports in a package
success, iterations, report = fix_explicit_imports("/path/to/MyPackage.jl")
# Fix and create PR for a repository
fix_repo_explicit_imports("MyOrg/MyPackage.jl"; create_pr=true)
# Fix all packages in an organization
results = fix_org_explicit_imports("MyOrg"; create_prs=true)
Contents
- Formatting Maintenance
- Version Bumping and Registration
- Compat Bumping
- Minimum Version Fixing
- Version Check Finder
- Invalidation Analysis
- Import Timing Analysis
- Explicit Imports Fixing
API Reference
OrgMaintenanceScripts.CompatUpdate
OrgMaintenanceScripts.analyze_import_timing_in_process
OrgMaintenanceScripts.analyze_invalidations_in_process
OrgMaintenanceScripts.analyze_major_invalidators
OrgMaintenanceScripts.analyze_org_import_timing
OrgMaintenanceScripts.analyze_org_invalidations
OrgMaintenanceScripts.analyze_repo_import_timing
OrgMaintenanceScripts.analyze_repo_invalidations
OrgMaintenanceScripts.bump_and_register_org
OrgMaintenanceScripts.bump_and_register_repo
OrgMaintenanceScripts.bump_compat_and_test
OrgMaintenanceScripts.bump_compat_and_test_all
OrgMaintenanceScripts.bump_compat_entry
OrgMaintenanceScripts.bump_compat_org_repositories
OrgMaintenanceScripts.bump_compat_version
OrgMaintenanceScripts.bump_minor_version
OrgMaintenanceScripts.create_compat_pr
OrgMaintenanceScripts.create_compat_pr_multi
OrgMaintenanceScripts.downgrade_to_minimum_versions
OrgMaintenanceScripts.extract_min_version_from_compat
OrgMaintenanceScripts.find_all_project_tomls
OrgMaintenanceScripts.find_files_to_fix
OrgMaintenanceScripts.find_version_checks_in_file
OrgMaintenanceScripts.find_version_checks_in_org
OrgMaintenanceScripts.find_version_checks_in_repo
OrgMaintenanceScripts.fix_explicit_imports
OrgMaintenanceScripts.fix_missing_import
OrgMaintenanceScripts.fix_org_explicit_imports
OrgMaintenanceScripts.fix_org_min_versions
OrgMaintenanceScripts.fix_org_version_checks_parallel
OrgMaintenanceScripts.fix_package_min_versions
OrgMaintenanceScripts.fix_package_min_versions_all
OrgMaintenanceScripts.fix_repo_explicit_imports
OrgMaintenanceScripts.fix_repo_min_versions
OrgMaintenanceScripts.fix_unused_import
OrgMaintenanceScripts.fix_version_checks_parallel
OrgMaintenanceScripts.format_org_repositories
OrgMaintenanceScripts.format_repository
OrgMaintenanceScripts.generate_import_timing_report
OrgMaintenanceScripts.generate_invalidation_report
OrgMaintenanceScripts.generate_org_import_summary_report
OrgMaintenanceScripts.generate_org_summary_report
OrgMaintenanceScripts.get_available_compat_updates
OrgMaintenanceScripts.get_available_compat_updates_all
OrgMaintenanceScripts.get_latest_package_version
OrgMaintenanceScripts.get_latest_version
OrgMaintenanceScripts.get_org_repos
OrgMaintenanceScripts.get_org_repositories
OrgMaintenanceScripts.get_project_info
OrgMaintenanceScripts.get_relative_project_path
OrgMaintenanceScripts.get_smart_min_version
OrgMaintenanceScripts.has_failing_formatter_ci
OrgMaintenanceScripts.is_major_version_update
OrgMaintenanceScripts.is_outdated_compat
OrgMaintenanceScripts.is_subpackage
OrgMaintenanceScripts.parse_compat_upper_bound
OrgMaintenanceScripts.parse_explicit_imports_output
OrgMaintenanceScripts.parse_import_timings
OrgMaintenanceScripts.parse_resolution_errors
OrgMaintenanceScripts.register_package
OrgMaintenanceScripts.run_explicit_imports_check
OrgMaintenanceScripts.run_explicit_imports_check_all
OrgMaintenanceScripts.run_package_tests
OrgMaintenanceScripts.run_tests
OrgMaintenanceScripts.setup_resolver
OrgMaintenanceScripts.test_min_versions
OrgMaintenanceScripts.update_compat!
OrgMaintenanceScripts.update_project_version
OrgMaintenanceScripts.update_project_versions_all
OrgMaintenanceScripts.write_import_timing_report
OrgMaintenanceScripts.write_invalidation_report
OrgMaintenanceScripts.write_org_version_checks_to_script
OrgMaintenanceScripts.write_version_checks_to_script
OrgMaintenanceScripts.CompatUpdate
— TypeCompatUpdate
Struct to hold information about a potential compat update.
OrgMaintenanceScripts.analyze_import_timing_in_process
— Functionanalyze_import_timing_in_process(repo_path::String, package_name::String="")
Run import timing analysis in a separate Julia process using @time_imports. Returns timing data for all packages involved in the import.
OrgMaintenanceScripts.analyze_invalidations_in_process
— Functionanalyze_invalidations_in_process(repo_path::String, test_script::String="")
Run invalidation analysis in a separate Julia process to avoid contaminating the current session. Returns invalidation data that can be analyzed to find major invalidators.
OrgMaintenanceScripts.analyze_major_invalidators
— Methodanalyze_major_invalidators(invalidation_data::Dict)
Analyze invalidation data to identify the major invalidators. Returns a list of the most problematic invalidations.
OrgMaintenanceScripts.analyze_org_import_timing
— Methodanalyze_org_import_timing(org::String; auth_token::String="", work_dir::String=mktempdir(),
output_dir::String="", max_repos::Int=0)
Analyze import timing across all repositories in a GitHub organization.
OrgMaintenanceScripts.analyze_org_invalidations
— Methodanalyze_org_invalidations(org::String; auth_token::String="", work_dir::String=mktempdir(),
test_script::String="", output_dir::String="", max_repos::Int=0)
Analyze invalidations across all repositories in a GitHub organization.
OrgMaintenanceScripts.analyze_repo_import_timing
— Methodanalyze_repo_import_timing(repo_path::String; package_name::String="", output_file::String="")
Analyze import timing in a single repository and optionally save a report.
OrgMaintenanceScripts.analyze_repo_invalidations
— Methodanalyze_repo_invalidations(repo_path::String; test_script::String="", output_file::String="")
Analyze invalidations in a single repository and optionally save a report.
OrgMaintenanceScripts.bump_and_register_org
— Methodbump_and_register_org(org::String;
registry_url="https://github.com/JuliaRegistries/General",
auth_token::String="",
work_dir::String=mktempdir())
Bump minor versions and register all packages in all repositories of a GitHub organization.
OrgMaintenanceScripts.bump_and_register_repo
— Methodbump_and_register_repo(repo_path::String; registry_url="https://github.com/JuliaRegistries/General")
Bump minor versions and register all packages in a repository. This handles the main Project.toml and all lib/*/Project.toml files.
OrgMaintenanceScripts.bump_compat_and_test
— Methodbump_compat_and_test(repo_path::String;
package_name::Union{String,Nothing} = nothing,
bump_all::Bool = false,
create_pr::Bool = true,
fork_user::String = "")
Bump compat entries for major version updates and run tests. If tests pass, optionally create a PR.
Arguments
repo_path
: Path to the repositorypackage_name
: Specific package to bump (if nothing, check all)bump_all
: Whether to bump all available updates or just onecreate_pr
: Whether to create a PR if tests passfork_user
: GitHub username for creating PRs (required if create_pr=true)
Returns
(success::Bool, message::String, pr_url::Union{String,Nothing}, bumped_packages::Vector{String})
OrgMaintenanceScripts.bump_compat_and_test_all
— Methodbump_compat_and_test_all(repo_path::String;
package_name::Union{String,Nothing} = nothing,
bump_all::Bool = false,
create_pr::Bool = true,
fork_user::String = "",
include_subpackages::Bool = true)
Bump compat entries for major version updates in all Project.toml files in a repository. This function supports repositories with subpackages in the /lib directory.
Arguments
repo_path
: Path to the repositorypackage_name
: Specific package to bump across all Project.toml filesbump_all
: Whether to bump all available updates or just one per Project.tomlcreate_pr
: Whether to create a PR if tests passfork_user
: GitHub username for creating PRs (required if create_pr=true)include_subpackages
: Whether to include subpackages in /lib directory
Returns
(success::Bool, message::String, pr_url::Union{String,Nothing}, bumped_info::Dict)
OrgMaintenanceScripts.bump_compat_entry
— Methodbump_compat_entry(project_path::String, package_name::String, new_version::String)
Bump a single compat entry in Project.toml to allow the new version.
OrgMaintenanceScripts.bump_compat_org_repositories
— Functionbump_compat_org_repositories(org::String = "SciML";
package_name::Union{String,Nothing} = nothing,
bump_all::Bool = false,
create_pr::Bool = true,
fork_user::String = "",
limit::Int = 100,
log_file::String = "",
include_subpackages::Bool = true)
Bump compat entries for all repositories in a GitHub organization. This function now supports repositories with subpackages in /lib directories.
Arguments
org
: GitHub organization name (default: "SciML")package_name
: Specific package to bump across all repos (if nothing, check all)bump_all
: Whether to bump all available updates or just one per repocreate_pr
: Whether to create PRs if tests passfork_user
: GitHub username for creating PRs (required if create_pr=true)limit
: Maximum number of repositories to processlog_file
: Path to save results log (default: auto-generated)include_subpackages
: Whether to include subpackages in /lib directories
Returns
(successes::Vector{String}, failures::Vector{String}, pr_urls::Vector{String})
OrgMaintenanceScripts.bump_compat_version
— Methodbump_compat_version(compat_str::String, pkg_name::String)
Bump a compat version string conservatively, ensuring we don't go above the current release.
OrgMaintenanceScripts.bump_minor_version
— Methodbump_minor_version(version_str::String) -> String
Bump the minor version of a semantic version string.
OrgMaintenanceScripts.create_compat_pr
— Methodcreate_compat_pr(repo_path::String, bumped_packages::Vector{String}, fork_user::String)
Create a pull request for compat updates.
OrgMaintenanceScripts.create_compat_pr_multi
— Methodcreate_compat_pr_multi(repo_path::String, bumped_info::Dict{String, Vector{String}}, fork_user::String)
Create a pull request for compat updates across multiple Project.toml files.
OrgMaintenanceScripts.downgrade_to_minimum_versions
— Methoddowngrade_to_minimum_versions(project_dir::String; julia_version="1.10", mode="alldeps", work_dir=mktempdir())
Downgrade all dependencies to their minimum compatible versions using Resolver.jl. This uses the same approach as julia-actions/julia-downgrade-compat. Returns (success::Bool, output::String)
OrgMaintenanceScripts.extract_min_version_from_compat
— Methodextract_min_version_from_compat(compat_str::String)
Extract the minimum version from a compat string.
OrgMaintenanceScripts.find_all_project_tomls
— Methodfind_all_project_tomls(repo_path::String)
Find all Project.toml files in a repository, including those in the /lib subdirectory. Returns a vector of absolute paths to Project.toml files.
OrgMaintenanceScripts.find_files_to_fix
— Methodfind_files_to_fix(package_path::String, issues::Vector)
Find which files need to be fixed based on the issues found. Returns a Dict mapping file paths to their issues.
OrgMaintenanceScripts.find_version_checks_in_file
— Methodfind_version_checks_in_file(filepath::String; min_version::VersionNumber=JULIA_LTS)
Find all version checks in a single file that compare against versions older than min_version.
OrgMaintenanceScripts.find_version_checks_in_org
— Methodfind_version_checks_in_org(org::String;
min_version::VersionNumber=JULIA_LTS,
auth_token::String="",
work_dir::String=mktempdir(),
ignore_dirs=["test", "docs", ".git"])
Find all version checks in all repositories of a GitHub organization.
OrgMaintenanceScripts.find_version_checks_in_repo
— Methodfind_version_checks_in_repo(repo_path::String; min_version::VersionNumber=JULIA_LTS, ignore_dirs=["test", "docs", ".git"])
Find all version checks in a repository that compare against versions older than min_version.
OrgMaintenanceScripts.fix_explicit_imports
— Methodfix_explicit_imports(package_path::String; max_iterations=10, verbose=true)
Iteratively fix explicit import issues in a package until all checks pass. Returns (success::Bool, iterations::Int, final_report::String)
OrgMaintenanceScripts.fix_missing_import
— Methodfix_missing_import(file_path::String, module_name::String, symbol::String)
Add a missing explicit import to a Julia file.
OrgMaintenanceScripts.fix_org_explicit_imports
— Methodfix_org_explicit_imports(org_name::String;
work_dir=mktempdir(),
max_iterations=10,
create_prs=true,
skip_repos=String[],
only_repos=nothing,
verbose=true)
Fix explicit imports for all Julia packages in a GitHub organization.
OrgMaintenanceScripts.fix_org_min_versions
— Methodfix_org_min_versions(org_name::String;
work_dir=mktempdir(),
max_iterations=10,
create_prs=true,
skip_repos=String[],
only_repos=nothing,
julia_version="1.10",
include_subpackages=true)
Fix minimum versions for all Julia packages in a GitHub organization. Now supports repositories with subpackages in /lib directories.
OrgMaintenanceScripts.fix_org_version_checks_parallel
— Functionfix_org_version_checks_parallel(org::String, n_processes::Int=4;
min_version::VersionNumber=JULIA_LTS,
github_token::String="",
base_branch::String="main",
work_dir::String=mktempdir())
Find and fix version checks across an entire GitHub organization using parallel processing.
OrgMaintenanceScripts.fix_package_min_versions
— Methodfix_package_min_versions(repo_path::String;
max_iterations=10,
work_dir=mktempdir(),
julia_version="1.10")
Fix minimum versions for a package repository that's already cloned. Returns (success::Bool, updates::Dict{String,String})
OrgMaintenanceScripts.fix_package_min_versions_all
— Methodfix_package_min_versions_all(repo_path::String;
max_iterations=10,
work_dir=mktempdir(),
julia_version="1.10",
include_subpackages=true)
Fix minimum versions for all Project.toml files in a repository. Supports repositories with subpackages in the /lib directory. Returns (success::Bool, all_updates::Dict{String,Dict{String,String}})
OrgMaintenanceScripts.fix_repo_explicit_imports
— Methodfix_repo_explicit_imports(repo_name::String;
work_dir=mktempdir(),
max_iterations=10,
create_pr=true,
verbose=true)
Clone a repository, fix its explicit imports, and optionally create a PR.
OrgMaintenanceScripts.fix_repo_min_versions
— Methodfix_repo_min_versions(repo_name::String;
work_dir=mktempdir(),
max_iterations=10,
create_pr=true,
julia_version="1.10",
include_subpackages=true)
Clone a repository, fix its minimum versions, and optionally create a PR. Now supports repositories with subpackages in /lib directories.
OrgMaintenanceScripts.fix_unused_import
— Methodfix_unused_import(file_path::String, symbol::String)
Remove an unused import from a Julia file.
OrgMaintenanceScripts.fix_version_checks_parallel
— Functionfix_version_checks_parallel(checks::Vector{VersionCheck}, n_processes::Int=4;
github_token::String="",
base_branch::String="main",
pr_title_prefix::String="[Auto] Remove obsolete version checks")
Fix version checks in parallel using N processes. Each process will create a PR to fix the version checks by removing obsolete comparisons.
OrgMaintenanceScripts.format_org_repositories
— Functionformat_org_repositories(org::String = "SciML";
test::Bool = true,
push_to_master::Bool = false,
create_pr::Bool = true,
fork_user::String = "",
limit::Int = 100,
only_failing_ci::Bool = true,
log_file::String = "")
Format all repositories in a GitHub organization.
Arguments
org
: GitHub organization name (default: "SciML")test
: Whether to run tests after formatting (default: true)push_to_master
: Whether to push directly to master/main if tests pass (default: false)create_pr
: Whether to create PRs instead of pushing to master (default: true)fork_user
: GitHub username for creating PRs (required if create_pr=true)limit
: Maximum number of repositories to process (default: 100)only_failing_ci
: Only process repos with failing formatter CI (default: true)log_file
: Path to save results log (default: auto-generated)
Returns
(successes::Vector{String}, failures::Vector{String}, pr_urls::Vector{String})
OrgMaintenanceScripts.format_repository
— Methodformat_repository(repo_url::String;
test::Bool = true,
push_to_master::Bool = false,
create_pr::Bool = true,
fork_user::String = "",
working_dir::String = mktempdir())
Format a single repository with JuliaFormatter.
Arguments
repo_url
: URL of the repository to format (e.g., "https://github.com/SciML/Example.jl.git")test
: Whether to run tests after formatting (default: true)push_to_master
: Whether to push directly to master/main if tests pass (default: false)create_pr
: Whether to create a PR instead of pushing to master (default: true)fork_user
: GitHub username for creating PRs (required if create_pr=true)working_dir
: Directory to clone the repository into (default: temporary directory)
Returns
(success::Bool, message::String, pr_url::Union{String,Nothing})
OrgMaintenanceScripts.generate_import_timing_report
— Functiongenerate_import_timing_report(repo_path::String, package_name::String="")
Generate a comprehensive import timing report for a repository.
OrgMaintenanceScripts.generate_invalidation_report
— Functiongenerate_invalidation_report(repo_path::String, test_script::String="")
Generate a comprehensive invalidation report for a repository.
OrgMaintenanceScripts.generate_org_import_summary_report
— Methodgenerate_org_import_summary_report(org::String, results::Dict{String, ImportTimingReport}, output_dir::String)
Generate a summary report for import timing across the entire organization.
OrgMaintenanceScripts.generate_org_summary_report
— Methodgenerate_org_summary_report(org::String, results::Dict{String, InvalidationReport}, output_dir::String)
Generate a summary report for the entire organization.
OrgMaintenanceScripts.get_available_compat_updates
— Methodget_available_compat_updates(project_path::String)
Check for available compat updates in a Project.toml file. Returns a vector of CompatUpdate structs.
OrgMaintenanceScripts.get_available_compat_updates_all
— Methodget_available_compat_updates_all(repo_path::String)
Check for available compat updates in all Project.toml files in a repository. Returns a Dict mapping project paths to vectors of CompatUpdate structs.
OrgMaintenanceScripts.get_latest_package_version
— Methodget_latest_package_version(package_name::String)
Get the latest version of a package from the General registry.
OrgMaintenanceScripts.get_latest_version
— Methodget_latest_version(pkg_name::String)
Get the latest version of a package from the registry.
OrgMaintenanceScripts.get_org_repos
— Methodget_org_repos(org::String; auth_token::String="")
Get all repositories for a GitHub organization.
OrgMaintenanceScripts.get_org_repositories
— Functionget_org_repositories(org::String, limit::Int = 100)
Get all Julia repositories from a GitHub organization.
OrgMaintenanceScripts.get_project_info
— Methodget_project_info(project_path::String)
Extract package name and other information from a Project.toml file. Returns a NamedTuple with name, uuid, and path fields.
OrgMaintenanceScripts.get_relative_project_path
— Methodget_relative_project_path(project_path::String, repo_path::String)
Get the relative path of a Project.toml file from the repository root.
OrgMaintenanceScripts.get_smart_min_version
— Methodget_smart_min_version(pkg_name::String, current_compat::String)
Get an appropriate minimum version for a package.
OrgMaintenanceScripts.has_failing_formatter_ci
— Methodhas_failing_formatter_ci(org::String, repo::String)
Check if a repository has failing formatter CI.
OrgMaintenanceScripts.is_major_version_update
— Methodis_major_version_update(current_compat::String, latest_version::String)
Check if the latest version is a major version update compared to current compat.
OrgMaintenanceScripts.is_outdated_compat
— Methodis_outdated_compat(compat_str::String, pkg_name::String)
Check if a compat string indicates an outdated version by comparing to the latest release.
OrgMaintenanceScripts.is_subpackage
— Methodis_subpackage(project_path::String, repo_path::String)
Check if a Project.toml file is a subpackage (i.e., in the /lib directory).
OrgMaintenanceScripts.parse_compat_upper_bound
— Methodparse_compat_upper_bound(compat_spec::String)
Parse a compat specification to extract the upper bound version.
OrgMaintenanceScripts.parse_explicit_imports_output
— Methodparse_explicit_imports_output(output::String)
Parse the output from ExplicitImports checks to extract actionable issues. Returns a vector of issues with their types and details.
OrgMaintenanceScripts.parse_import_timings
— Methodparse_import_timings(timing_data::Dict)
Parse the raw timing data and create structured ImportTiming objects.
OrgMaintenanceScripts.parse_resolution_errors
— Methodparse_resolution_errors(output::String, project_toml::Dict)
Parse resolution errors to identify problematic packages.
OrgMaintenanceScripts.register_package
— Methodregister_package(package_dir::String; registry_url="https://github.com/JuliaRegistries/General")
Register a Julia package to the specified registry.
OrgMaintenanceScripts.run_explicit_imports_check
— Methodrun_explicit_imports_check(package_path::String; verbose=true)
Run ExplicitImports.jl checks on a package and return the report. Returns (success::Bool, report::String, issues::Vector)
OrgMaintenanceScripts.run_explicit_imports_check_all
— Methodrun_explicit_imports_check_all(repo_path::String; verbose=true, include_subpackages=true)
Run ExplicitImports.jl checks on all packages in a repository. Supports repositories with subpackages in /lib directories. Returns a Dict mapping relative paths to (success, report, issues) tuples.
OrgMaintenanceScripts.run_package_tests
— Methodrun_package_tests(repo_path::String; timeout_minutes::Int = 30)
Run tests for a Julia package and return whether they passed.
OrgMaintenanceScripts.run_tests
— Methodrun_tests(repo_path::String; timeout_minutes::Int = 10)
Run tests for a Julia package.
Returns
true
if tests pass,false
otherwise
OrgMaintenanceScripts.setup_resolver
— Methodsetup_resolver(work_dir::String)
Clone and setup Resolver.jl if not already present. Returns the path to Resolver.jl.
OrgMaintenanceScripts.test_min_versions
— Methodtest_min_versions(project_dir::String; julia_version="1.10", mode="alldeps", work_dir=mktempdir())
Test if minimum versions can be resolved using Resolver.jl. Returns (success::Bool, error_output::String)
OrgMaintenanceScripts.update_compat!
— Methodupdate_compat!(project_toml::Dict, updates::Dict{String, String})
Update the compat section preserving upper bounds.
OrgMaintenanceScripts.update_project_version
— Methodupdate_project_version(project_path::String)
Update the version in a Project.toml file by bumping the minor version.
OrgMaintenanceScripts.update_project_versions_all
— Methodupdate_project_versions_all(repo_path::String; include_subpackages::Bool=true)
Update the version in all Project.toml files in a repository by bumping the minor version. Supports repositories with subpackages in /lib directories. Returns a Dict mapping relative paths to (oldversion, newversion) tuples.
OrgMaintenanceScripts.write_import_timing_report
— Methodwrite_import_timing_report(report::ImportTimingReport, output_file::String)
Write a detailed import timing report to a JSON file.
OrgMaintenanceScripts.write_invalidation_report
— Methodwrite_invalidation_report(report::InvalidationReport, output_file::String)
Write a detailed invalidation report to a JSON file.
OrgMaintenanceScripts.write_org_version_checks_to_script
— Functionwrite_org_version_checks_to_script(org_results::Dict{String, Vector{VersionCheck}}, output_file::String="fix_org_version_checks.jl")
Write organization-wide version check results to a script file.
OrgMaintenanceScripts.write_version_checks_to_script
— Functionwrite_version_checks_to_script(checks::Vector{VersionCheck}, output_file::String="fix_version_checks.jl")
Write version check results to a Julia script file that can be executed to fix them.