Open agdestein opened 1 month ago
On Julia v1.11, the following code
using Pkg showtoml(project) = println(read(joinpath(project, "Project.toml"), String)) project = "project" mkdir(project) Pkg.activate(project) Pkg.add("CompatHelper") # Create two packages and `dev` them to get the UUIDs Pkg.generate(joinpath(project, "SomePackage")) Pkg.generate(joinpath(project, "AnotherPackage")) Pkg.develop([ PackageSpec(; path = joinpath(project, "SomePackage")), PackageSpec(; path = joinpath(project, "AnotherPackage")), ]) showtoml(project)
creates an environment with this Project.toml:
Project.toml
[deps] AnotherPackage = "70b51dde-ff63-4d56-bd06-f5c077573a96" CompatHelper = "aa819f21-2bde-4658-8897-bab36330d9b7" SomePackage = "3c4efd53-1385-4fe4-b6f1-2e1dbb823624"
Julia v1.11 allows for manually adding a [sources] section to automate the Pkg.develop part, which is useful for monorepos:
[sources]
Pkg.develop
open(joinpath(project, "Project.toml"), "a") do io println(io) println(io, "[sources]") println(io, "SomePackage = {path = \"SomePackage\"}") println(io, "AnotherPackage = {path = \"AnotherPackage\"}") end showtoml(project)
[deps] AnotherPackage = "70b51dde-ff63-4d56-bd06-f5c077573a96" CompatHelper = "aa819f21-2bde-4658-8897-bab36330d9b7" SomePackage = "3c4efd53-1385-4fe4-b6f1-2e1dbb823624" [sources] SomePackage = {path = "SomePackage"} AnotherPackage = {path = "AnotherPackage"}
CompatHelper.jl will split this into separate sections (see e.g. this PR)
using CompatHelper # I think CompatHelper.main() is doing something like this CompatHelper.modify_project_toml("SomePackage", project, "0.1", false) showtoml(project)
[deps] AnotherPackage = "30d7d2c7-f9c0-4ce7-8ffa-160e2f9efd03" CompatHelper = "aa819f21-2bde-4658-8897-bab36330d9b7" SomePackage = "e796d48f-4455-4818-ba38-a7fd70694e68" [sources.AnotherPackage] path = "AnotherPackage" [sources.SomePackage] path = "SomePackage" [compat] SomePackage = "0.1"
On the other hand, doing Pkg.jl operations takes it back:
Pkg.add("LinearAlgebra") showtoml(project)
[deps] AnotherPackage = "30d7d2c7-f9c0-4ce7-8ffa-160e2f9efd03" CompatHelper = "aa819f21-2bde-4658-8897-bab36330d9b7" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" SomePackage = "e796d48f-4455-4818-ba38-a7fd70694e68" [sources] AnotherPackage = {path = "AnotherPackage"} SomePackage = {path = "SomePackage"} [compat] SomePackage = "0.1"
On Julia v1.11, the following code
creates an environment with this
Project.toml
:Julia v1.11 allows for manually adding a
[sources]
section to automate thePkg.develop
part, which is useful for monorepos:CompatHelper.jl will split this into separate sections (see e.g. this PR)
On the other hand, doing Pkg.jl operations takes it back: