From e4021446ad37d38b333542b90e5bdf1f5f883cb5 Mon Sep 17 00:00:00 2001 From: Thomas Honeyman Date: Wed, 7 Jan 2026 10:55:13 -0800 Subject: [PATCH] drop ref, move to manifest --- SPEC.md | 2 ++ .../registry-archive/prelude-6.0.2.tar.gz | Bin 31025 -> 31321 bytes app/fixtures/registry-index/pr/el/prelude | 2 +- .../registry-index/ty/pe/type-equality | 2 +- .../registry-storage/prelude-6.0.1.tar.gz | Bin 31142 -> 31313 bytes app/src/App/API.purs | 6 ++-- app/src/App/Effect/Registry.purs | 3 +- app/src/App/Legacy/Manifest.purs | 6 ++-- app/src/App/Legacy/PackageSet.purs | 13 +++---- app/src/App/Manifest/SpagoYaml.purs | 8 +++-- app/test/App/Legacy/PackageSet.purs | 32 +----------------- app/test/App/Manifest/SpagoYaml.purs | 2 +- lib/fixtures/manifests/aff-5.1.2.json | 1 + lib/fixtures/manifests/mysql-4.1.1.json | 1 + lib/fixtures/manifests/prelude-4.1.1.json | 1 + lib/src/Manifest.purs | 2 ++ lib/src/Metadata.purs | 7 ---- lib/test/Registry/ManifestIndex.purs | 7 ++-- lib/test/Registry/Metadata.purs | 12 +++---- lib/test/Registry/Operation/Validation.purs | 2 +- scripts/src/LegacyImporter.purs | 4 +-- scripts/src/PackageDeleter.purs | 13 ++++--- test-utils/src/Registry/Test/Utils.purs | 1 + types/v1/Manifest.dhall | 1 + 24 files changed, 48 insertions(+), 80 deletions(-) diff --git a/SPEC.md b/SPEC.md index 423d0d80d..54c627d05 100644 --- a/SPEC.md +++ b/SPEC.md @@ -197,6 +197,7 @@ All packages in the registry contain a `purs.json` manifest file in their root d - `version`: a valid [`Version`](#version) - `license`: a valid [`License`](#license) - `location`: a valid [`Location`](#location) +- `ref`: a `string` representing the reference (e.g., a Git commit or Git tag) at the `location` that was used to fetch this version's source code - `owners` (optional): a non-empty array of [`Owner`](#owner) - `description` (optional): a description of your library as a plain text string, not markdown, up to 300 characters - `includeFiles` (optional): a non-empty array of globs, where globs are used to match file paths (in addition to the `src` directory and other [always-included files](#always-included-files)) that you want included in your package tarball @@ -221,6 +222,7 @@ For example: "githubOwner": "purescript", "githubRepo": "purescript-control" }, + "ref": "v4.2.0", "include": ["test/**/*.purs"], "exclude": ["test/graphs"], "dependencies": { "newtype": ">=3.0.0 <4.0.0", "prelude": ">=4.0.0 <5.0.0" } diff --git a/app/fixtures/registry-archive/prelude-6.0.2.tar.gz b/app/fixtures/registry-archive/prelude-6.0.2.tar.gz index 2ef880dff4d0b29735276e267a483f25607e3387..c06e9b2767ae864e73f4bc4f1d9ef76583387aa1 100644 GIT binary patch literal 31321 zcmV)8K*qlxiwFP!000001MFRUciKp@&)@nKy`Hh9`ab(iqW=T0=@dq?KJS$q8G zn_T;FJvlrS-$&vbF7-|K)x&D-NxfFvKd3$0uU3!h`;XY+w-G0OML}r!j6Dkd$;xuK z6V9DY2(;O2mg@i0cC&TfZ9Om#?BJt=gJu0+J34$K?+@zL8l+ciN40}TZ2y7fD7^mU z{onLv3*Ww(gsiq-{X4sieBK@U_AE4v4jCT-Ta%lm+h-aVMTLf W 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

6og5rqT{SL61U}1kvwvun@@7tNxnMS z(I>g{WOtzKv$NStM+oYOa61XE6C06GLJ1<&&Wp(7`2dxX#F3T zOtc54Op&KxqXeiD)(bn7rYpSCXY8;!%cWZiMMQAG%P>_`wi1!YtxLvHMU!hj}sP!M%eetkd6k_Op zX*T#D_VLeuyer(&=a>25x$j#3zmCLz8~QqGnY6=}ykhaRvzR9)A zVZ*<1X**(%%H-pMb;3s4hd60~p)mmTJ8(Yv#IemrTijxpRv?^0WwNWgvY`q!0cyoj zBl${}sQqWC7s4QoE+a7{q(Q&Z)FVYdBQ8b56n%(C-PJPZgE%qau$;HSYKYE^bK~+H zy*ZPD6(1lRUq&{8sxUaUdnI8G)pSaJETItDn92c+wl zvHb82kC=C@Z?H5m-oYp$UsTeUHK&S8*H^a8AmE#O*UJ_LSW-yrd{T@o&(d>C5Gbny zR@#*u)F5q?2H+QBR3+ge^^j)+l9I>OGP`WgO*^!;Tq&LzLdZyZS?2{@$qnhZVJI>u zbO|09ptofjSkFlraUKn2N`j>xgYq1B2i`?RMI3=(9Dh%)B!5l{ID|#oU3e_**Aw#i zobj|tO9UzJu(}cIZOV_ac83g3pxMR;(Ui0oa`p+0`;%EQt5S0lXn0P_dg_hS&W8|} z>NbR`&EZNO2_C|nX|5O>^?Z)1@rHZD%E{E>>M_~6f`j;c^+~#8Oj5a^t653;sj0aW zo|?2)UJZ8Tez3~y0~(jiJkHkGUamjQ2u}mro%jN0iV?gEz;ao)1E?7t{gff}3$Obl zrJ#nEZb?Eitwkk`P0=uvz&?^_mgnasjXbOr+J4ckMYua~A!()Eq)RK)liq-CNM0pL zbXHa8<%7MwsmNt9?25f|PuFq;j25M z-TbzJR#r*Rpv0vVG*`tAln?pNRxr4fJ|5117cI`ksyZ*FY!>#3c}Jg6;*$IrfqBZC zfk{URd|GJ)v}u(V+hqDdY$~M{S6X0|6&vnns;wmI!%fZ=^~Va6R6I=BX9?qIpy&X& zHQ)r#@l6Gb0C`?ecTaky|Im$EA7CxVKX6`b*Q!~oZbe)Im66i|G3>IE{EYfxX7YwD`tP{rZo5&RXz)PYzGq^?(21bhG}iZAB^x<2-`{@WCCDF57gVCdOK2Y#|=Wnp!x5eNynTU(}sI_?;d`+WiOvV zh(>j!BK%1@4v|31fQ^%gky2Dex!L%p(g>GDYg#~N9g$?=BB60Mg4VX>V1OVeT5=AD zC3@3L{5QZ@xNE85vK?0zzbpdd9jX_C+mQyI+!WqX^No$V8UfbC54X?DB1)|jL%&&ZfH-$?5zysX|EGFt58oE zg#UQ~Ho}uh0=TAPjqi3Hm9|NqM}2v;l|;Rc0q5l96ID1g53pJbI(YsWPpojYUrc*4 zaqR=GT9f!-rNoNrn-%gh)T6iH$|5D*#*ygz9ErU|qo`dn+K*>Zl8tkg8A^LQxr9!DYm@UvnH_}? znkUv_Ur#4xo_wT{dIjkQZ%123rUfZd$m|qon&OK3U$)&mln|P-p`UgheKAu+DD7dc zMWp`ZR*teVD@Y-+ejU2hC~-ICNIz|AObcA+lZMHYYlXlyx2@g3m(}3n2Vm%n;aRs^iFCZf!z&u;aYVV zS}Dy+=p#>kZDg`Cf&q%v`4P5617Vf-L~Aef09fPEC^_eoXF;g;H`pjw+2z1cy7h0c zG64WBz8tgx7Z+a--Ka0~>I}7gjF=pTQPtY#?xDDYI&Htg9@?~h*0=9jktFMBVPrYI zYK|K!3V+7o+R{H`&Xl>~H-4tmO%-*U00)vH%&%7gSJDL6++uP-NNCuwSeXk0E2@9kgF48i{%T`z%Sz zS<1QhSyEtsw8{a!84^ZMUVH|Xqpw}HC?tod5oCbQ_iCEnpGB9*lY-C%sG&}jTvp;d zLV}Pte2#h7`UcygZAQe!oIPu7!^qp#+DGC51%pzGPO1f5eV+$rKp zVHe^1ceqQ)5;HOELgNI46v*m|1eu`QjA2=zK}7{U1ATBeJq{(8a7Y6Y4Bv*2^8x6+ z$E>il>czBH3mWIq72Kp=29Cp%=qhy1)k+9j;vgkTaGO6tp~e&)U}1gZxv13D;O@|+ zsjHVCl^MT`YumcQ0m+i8y$5j8n8ES`>3}SznbLX#!tPwrwtWyJ9tErJf4}!jiI0Q3Dl41fm)l2u@%< zj&-y*QA^YgN)klFel35E>DSQuHdNoDcPe+*r$xWK6Z8p`8`*Ei*ckB`n-JfJVhet! zd%_z2N;Zcxz!uHn@Mp;!vX?=@+;@Rh$dJOdOj(>Eq8mE%P>JO*KU*q?g!n=^6aI{l zD=*H#F94q|Vc7=I7DDo7zBbW!8L_>iN5fe@`e4nQOpasOn*-pYh%M^C#2Y1~%m&|4 zat5%2wC3eynSxpau`0~((6tURG2mIrV!w^ccP7@lERidsDPL>J<80fI>M9s;%tJyR z%0eu}Ls?E=Et_^?)hRNyk74L$!NSJbEIuzu+GyO6kPf%fmGqALxTJ|T>~6u)!x~j{ zb3>TJS{%#WfFgsMhu~5xtWG2EmnxSv=V&?R*7Kv;GeYH*P5gT%!MTbbRXi z|2{p~-{AkOgl67c*d@}NFpmiAISOlK$^ zsn;jsUCdJ|(ou=Q)*nF^SKi{Vlx#9Ebaum*RIAga_-R>WM>Z=rV+o4FvEvt&8X7fr ztn4VO_kfx3URT0Y_OS*4(_3m+4$?T0GSXsAX-tz5PBYw&xzf6FT@pD%ow$WZT_tcEu;v6bh0 z)ME~2VyU{weC$&-XVMpE^-FOq4`yTOsK{*WGcji4o`|Ix(XH$?%{jnp3IA-%DY1eL zC*{W0Vs$p0O+{&oGRmsasPoD1!>IF#W7PSi=juatozd)=b{hIyoSqD}Xv*OXiCvq= z%p6(EEIP>~(>7YPER%tvWmcJ(6CKFu_aug6#Cu67xlCAr%6jumXr=PHwv>+_SF!9f$ zXeR!-e_xhQNf0HWe3QO=$bl;1FO={Xk?@1~$4nS8DQ~j-_uoMVqFQf$dDoVC{I;e4 zatlxbi16FPt>1pvD9QEn-!$mDod95&{pYc#|8sh@f3%tZ>v$S$IOS=auSFb-L$PI+ z={%i@#={%KH`*{$utL&=uZ<>?<2*5Zx)$JTwFsI>YGXxl-unekF(F${i&3+vT6Xkl zRx=>G$ks>vr=YU}zJF{}kf|N;Q)mi3{2mr;!Bk{4#dDugDy=qb_ahYuazhVzi#W((*^?`+rk0 zK;Hi7k$df8!TdmLa`a~X0(l8gcdH<(=`>5hn}DyB%Pr_sc(i*beU`0?Yf zV%u1v|9K}aAeQleho1k3;Z2 zyd)MK?26-lmBWH5_>S_di-N}%<=+wfnaD)&cx~p;{$4q=&9iwn&*s@Yn`iTE gp3Sp)HqYkSJez0pY@W@td2avwKWcGkECA2~014F$H~;_u literal 31025 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 diff --git a/app/fixtures/registry-index/pr/el/prelude b/app/fixtures/registry-index/pr/el/prelude index e6c7d0759..8a01e7d6c 100644 --- a/app/fixtures/registry-index/pr/el/prelude +++ b/app/fixtures/registry-index/pr/el/prelude @@ -1 +1 @@ -{"name":"prelude","version":"6.0.1","license":"BSD-3-Clause","location":{"githubOwner":"purescript","githubRepo":"purescript-prelude"},"description":"The PureScript Prelude","dependencies":{}} +{"name":"prelude","version":"6.0.1","license":"BSD-3-Clause","location":{"githubOwner":"purescript","githubRepo":"purescript-prelude"},"ref":"v6.0.1","description":"The PureScript Prelude","dependencies":{}} diff --git a/app/fixtures/registry-index/ty/pe/type-equality b/app/fixtures/registry-index/ty/pe/type-equality index 8fbce8f14..8d5fc1d6e 100644 --- a/app/fixtures/registry-index/ty/pe/type-equality +++ b/app/fixtures/registry-index/ty/pe/type-equality @@ -1 +1 @@ -{"name":"type-equality","version":"4.0.1","license":"BSD-3-Clause","location":{"githubOwner":"purescript","githubRepo":"purescript-type-equality"},"dependencies":{}} \ No newline at end of file +{"name":"type-equality","version":"4.0.1","license":"BSD-3-Clause","location":{"githubOwner":"purescript","githubRepo":"purescript-type-equality"},"ref":"v4.0.1","dependencies":{}} \ No newline at end of file diff --git a/app/fixtures/registry-storage/prelude-6.0.1.tar.gz b/app/fixtures/registry-storage/prelude-6.0.1.tar.gz index 1df21a5803b31594923bd710f97edb55cda75cc7..87d64d2c1de45193569f4d37a2a9fd11439b8400 100644 GIT binary patch literal 31313 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 z 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 JkC6b-0s!Lprzijb diff --git a/app/src/App/API.purs b/app/src/App/API.purs index 2c835f99e..614ce71ff 100644 --- a/app/src/App/API.purs +++ b/app/src/App/API.purs @@ -481,7 +481,7 @@ publish maybeLegacyIndex payload = do Log.notice $ "Package source does not have a purs.json file, creating one from your spago.yaml file..." SpagoYaml.readSpagoYaml packageSpagoYaml >>= case _ of Left readErr -> Except.throw $ "Could not publish your package - a spago.yaml was present, but it was not possible to read it:\n" <> readErr - Right config -> case SpagoYaml.spagoYamlToManifest config of + Right config -> case SpagoYaml.spagoYamlToManifest payload.ref config of Left err -> Except.throw $ "Could not publish your package - there was an error while converting your spago.yaml into a purs.json manifest:\n" <> err Right manifest -> do Log.notice $ Array.fold @@ -508,7 +508,7 @@ publish maybeLegacyIndex payload = do ] Right legacyManifest -> do Log.debug $ "Successfully produced a legacy manifest from the package source." - let manifest = Legacy.Manifest.toManifest payload.name version existingMetadata.location legacyManifest + let manifest = Legacy.Manifest.toManifest payload.name version existingMetadata.location payload.ref legacyManifest Log.notice $ Array.fold [ "Converted your legacy manifest(s) into a purs.json manifest to use for publishing:" , "\n```json\n" @@ -774,7 +774,7 @@ publish maybeLegacyIndex payload = do Storage.upload (un Manifest manifest).name (un Manifest manifest).version tarballPath Log.debug $ "Adding the new version " <> Version.print (un Manifest manifest).version <> " to the package metadata file." - let newPublishedVersion = { hash, ref: payload.ref, compilers: NonEmptyArray.singleton payload.compiler, publishedTime, bytes } + let newPublishedVersion = { hash, compilers: NonEmptyArray.singleton payload.compiler, publishedTime, bytes } let newMetadata = metadata { published = Map.insert (un Manifest manifest).version newPublishedVersion metadata.published } Registry.writeMetadata (un Manifest manifest).name (Metadata newMetadata) diff --git a/app/src/App/Effect/Registry.purs b/app/src/App/Effect/Registry.purs index 9a90d1fea..48fbdf4a8 100644 --- a/app/src/App/Effect/Registry.purs +++ b/app/src/App/Effect/Registry.purs @@ -502,10 +502,9 @@ handle env = Cache.interpret _registryCache (Cache.handleMemory env.cacheRef) << Log.info $ "Mirroring legacy package set " <> name <> " to the legacy package sets repo" manifests <- Except.rethrow =<< handle env (ReadAllManifests identity) - metadata <- Except.rethrow =<< handle env (ReadAllMetadata identity) Log.debug $ "Converting package set..." - converted <- case Legacy.PackageSet.convertPackageSet manifests metadata set of + converted <- case Legacy.PackageSet.convertPackageSet manifests set of Left error -> Except.throw $ "Failed to convert package set " <> name <> " to a legacy package set: " <> error Right converted -> pure converted diff --git a/app/src/App/Legacy/Manifest.purs b/app/src/App/Legacy/Manifest.purs index 65aad78ec..8d997342f 100644 --- a/app/src/App/Legacy/Manifest.purs +++ b/app/src/App/Legacy/Manifest.purs @@ -59,13 +59,13 @@ type LegacyManifest = , dependencies :: Map PackageName Range } -toManifest :: PackageName -> Version -> Location -> LegacyManifest -> Manifest -toManifest name version location legacy = do +toManifest :: PackageName -> Version -> Location -> String -> LegacyManifest -> Manifest +toManifest name version location ref legacy = do let { license, description, dependencies } = patchLegacyManifest name version legacy let includeFiles = Nothing let excludeFiles = Nothing let owners = Nothing - Manifest { name, version, location, license, description, dependencies, includeFiles, excludeFiles, owners } + Manifest { name, version, location, ref, license, description, dependencies, includeFiles, excludeFiles, owners } -- | Attempt to retrieve a license, description, and set of dependencies from a -- | PureScript repo that does not have a Registry-supported manifest, but does diff --git a/app/src/App/Legacy/PackageSet.purs b/app/src/App/Legacy/PackageSet.purs index eb1ce8021..62b718d7c 100644 --- a/app/src/App/Legacy/PackageSet.purs +++ b/app/src/App/Legacy/PackageSet.purs @@ -102,8 +102,8 @@ printPscTag (PscTag { compiler, date }) = , Format.DateTime.format pscDateFormat (DateTime date bottom) ] -convertPackageSet :: ManifestIndex -> Map PackageName Metadata -> PackageSet -> Either String ConvertedLegacyPackageSet -convertPackageSet index metadataMap (PackageSet { compiler, packages, published, version }) = do +convertPackageSet :: ManifestIndex -> PackageSet -> Either String ConvertedLegacyPackageSet +convertPackageSet index (PackageSet { compiler, packages, published, version }) = do converted <- case separate $ mapWithIndex convertPackage packages of { left, right } | Map.isEmpty left -> Right right { left } -> do @@ -130,17 +130,14 @@ convertPackageSet index metadataMap (PackageSet { compiler, packages, published, versions <- note noIndexPackageError $ Map.lookup packageName $ ManifestIndex.toMap index Manifest manifest <- note noIndexVersionError $ Map.lookup packageVersion versions - Metadata metadata <- note noMetadataPackageError $ Map.lookup packageName metadataMap - { ref } <- note noMetadataVersionError $ Map.lookup packageVersion metadata.published - - repo <- case metadata.location of + repo <- case manifest.location of GitHub { owner, repo, subdir: Nothing } -> Right $ "https://github.com/" <> owner <> "/" <> repo <> ".git" Git { url, subdir: Nothing } -> Right url GitHub _ -> Left usesSubdirError Git _ -> Left usesSubdirError pure - { version: RawVersion ref + { version: RawVersion manifest.ref , dependencies: Array.fromFoldable $ Map.keys $ manifest.dependencies , repo } @@ -149,8 +146,6 @@ convertPackageSet index metadataMap (PackageSet { compiler, packages, published, versionStr = Version.print packageVersion noIndexPackageError = "No registry index entry found for " <> nameStr noIndexVersionError = "Found registry index entry for " <> nameStr <> " but none for version " <> versionStr - noMetadataPackageError = "No metadata entry found for " <> nameStr - noMetadataVersionError = "Found metadata entry for " <> nameStr <> " but no published version for " <> versionStr usesSubdirError = "Package " <> nameStr <> " uses the 'subdir' key, which is not supported for legacy package sets." printDhall :: LegacyPackageSet -> String diff --git a/app/src/App/Manifest/SpagoYaml.purs b/app/src/App/Manifest/SpagoYaml.purs index 1d701e57c..66ffa1c48 100644 --- a/app/src/App/Manifest/SpagoYaml.purs +++ b/app/src/App/Manifest/SpagoYaml.purs @@ -27,9 +27,10 @@ import Registry.Range (Range) import Registry.Range as Range import Registry.Version as Version --- | Attempt to convert a spago.yaml file to a Manifest -spagoYamlToManifest :: SpagoYaml -> Either String Manifest -spagoYamlToManifest config = do +-- | Attempt to convert a spago.yaml file to a Manifest. The ref parameter is +-- | the Git reference (tag or commit) used to fetch this version's source. +spagoYamlToManifest :: String -> SpagoYaml -> Either String Manifest +spagoYamlToManifest ref config = do package@{ name, description, dependencies: spagoDependencies } <- note "No 'package' key found in config." config.package publish@{ version, license, owners } <- note "No 'publish' key found under the 'package' key in config." package.publish location <- note "No 'location' key found under the 'publish' key in config." publish.location @@ -43,6 +44,7 @@ spagoYamlToManifest config = do , description , license , location + , ref , owners , includeFiles , excludeFiles diff --git a/app/test/App/Legacy/PackageSet.purs b/app/test/App/Legacy/PackageSet.purs index 414b09a57..2d4a7a2dc 100644 --- a/app/test/App/Legacy/PackageSet.purs +++ b/app/test/App/Legacy/PackageSet.purs @@ -2,8 +2,6 @@ module Test.Registry.App.Legacy.PackageSet (spec) where import Registry.App.Prelude -import Data.Array.NonEmpty as NonEmptyArray -import Data.DateTime (DateTime(..)) import Data.Either as Either import Data.Map as Map import Data.Set as Set @@ -14,7 +12,6 @@ import Registry.App.Legacy.PackageSet as Legacy.PackageSet import Registry.App.Legacy.Types (legacyPackageSetCodec) import Registry.ManifestIndex as ManifestIndex import Registry.PackageName as PackageName -import Registry.Sha256 as Sha256 import Registry.Test.Assert as Assert import Registry.Test.Utils as Utils import Registry.Version as Version @@ -93,7 +90,7 @@ packageSet = PackageSet convertedPackageSet :: ConvertedLegacyPackageSet convertedPackageSet = - case Legacy.PackageSet.convertPackageSet index metadata packageSet of + case Legacy.PackageSet.convertPackageSet index packageSet of Left err -> unsafeCrashWith err Right value -> value where @@ -104,13 +101,6 @@ convertedPackageSet = , mkManifest prelude [] ] - metadata = Map.fromFoldable - [ unsafeMetadataEntry assert - , unsafeMetadataEntry console - , unsafeMetadataEntry effect - , unsafeMetadataEntry prelude - ] - legacyPackageSetJson :: String legacyPackageSetJson = """{ @@ -201,23 +191,3 @@ mkManifest (Tuple name version) deps = do (PackageName.print name) (LenientVersion.print version) (map (bimap PackageName.print (LenientVersion.version >>> toRange)) deps) - -unsafeMetadataEntry :: Tuple PackageName LenientVersion -> Tuple PackageName Metadata -unsafeMetadataEntry (Tuple name version) = do - let - published = - { ref: LenientVersion.raw version - , hash: unsafeFromRight $ Sha256.parse "sha256-gb24ZRec6mgR8TFBVR2eIh5vsMdhuL+zK9VKjWP74Cw=" - , bytes: 0.0 - , compilers: NonEmptyArray.singleton (Utils.unsafeVersion "0.15.2") - , publishedTime: DateTime (Utils.unsafeDate "2022-07-07") bottom - } - - metadata = Metadata - { location: GitHub { owner: "purescript", repo: "purescript-" <> PackageName.print name, subdir: Nothing } - , owners: Nothing - , published: Map.singleton (LenientVersion.version version) published - , unpublished: Map.empty - } - - Tuple name metadata diff --git a/app/test/App/Manifest/SpagoYaml.purs b/app/test/App/Manifest/SpagoYaml.purs index 973af0a99..52174063c 100644 --- a/app/test/App/Manifest/SpagoYaml.purs +++ b/app/test/App/Manifest/SpagoYaml.purs @@ -19,6 +19,6 @@ spec = do config <- SpagoYaml.readSpagoYaml (Path.concat [ fixturesPath, path ]) >>= case _ of Left err -> Aff.throwError $ Aff.error err Right config -> pure config - case SpagoYaml.spagoYamlToManifest config of + case SpagoYaml.spagoYamlToManifest "v1.0.0" config of Left err -> Assert.fail $ path <> " failed: " <> err Right _ -> pure unit diff --git a/lib/fixtures/manifests/aff-5.1.2.json b/lib/fixtures/manifests/aff-5.1.2.json index 22684f05c..77bb331dd 100644 --- a/lib/fixtures/manifests/aff-5.1.2.json +++ b/lib/fixtures/manifests/aff-5.1.2.json @@ -6,6 +6,7 @@ "githubOwner": "purescript", "githubRepo": "purescript-aff" }, + "ref": "v5.1.2", "dependencies": { "datetime": ">=4.0.0 <5.0.0", "effect": ">=2.0.0 <3.0.0", diff --git a/lib/fixtures/manifests/mysql-4.1.1.json b/lib/fixtures/manifests/mysql-4.1.1.json index 6f9703b61..e0e8c70fe 100644 --- a/lib/fixtures/manifests/mysql-4.1.1.json +++ b/lib/fixtures/manifests/mysql-4.1.1.json @@ -6,6 +6,7 @@ "githubOwner": "oreshinya", "githubRepo": "purescript-mysql" }, + "ref": "v4.1.1", "dependencies": { "aff": ">=5.0.2 <6.0.0", "js-date": ">=6.0.0 <7.0.0", diff --git a/lib/fixtures/manifests/prelude-4.1.1.json b/lib/fixtures/manifests/prelude-4.1.1.json index 3dd47411c..56ac6db20 100644 --- a/lib/fixtures/manifests/prelude-4.1.1.json +++ b/lib/fixtures/manifests/prelude-4.1.1.json @@ -7,6 +7,7 @@ "githubOwner": "purescript", "githubRepo": "purescript-prelude" }, + "ref": "v4.1.1", "owners": [ { "keytype": "ed-25519", diff --git a/lib/src/Manifest.purs b/lib/src/Manifest.purs index d660b459b..49bb62f2c 100644 --- a/lib/src/Manifest.purs +++ b/lib/src/Manifest.purs @@ -48,6 +48,7 @@ newtype Manifest = Manifest , version :: Version , license :: License , location :: Location + , ref :: String , owners :: Maybe (NonEmptyArray Owner) , description :: Maybe String , includeFiles :: Maybe (NonEmptyArray NonEmptyString) @@ -77,6 +78,7 @@ codec = Profunctor.wrapIso Manifest $ CJ.named "Manifest" $ CJ.object $ CJ.recordProp @"license" License.codec $ CJ.recordPropOptional @"description" (Internal.Codec.limitedString 300) $ CJ.recordProp @"location" Location.codec + $ CJ.recordProp @"ref" CJ.string $ CJ.recordPropOptional @"owners" (CJ.Common.nonEmptyArray Owner.codec) $ CJ.recordPropOptional @"includeFiles" (CJ.Common.nonEmptyArray CJ.Common.nonEmptyString) $ CJ.recordPropOptional @"excludeFiles" (CJ.Common.nonEmptyArray CJ.Common.nonEmptyString) diff --git a/lib/src/Metadata.purs b/lib/src/Metadata.purs index c54bed31e..3235661de 100644 --- a/lib/src/Metadata.purs +++ b/lib/src/Metadata.purs @@ -63,17 +63,11 @@ codec = Profunctor.wrapIso Metadata $ CJ.named "Metadata" $ CJ.object $ CJ.record -- | Metadata about a published package version. --- | --- | NOTE: The `ref` field is UNSPECIFIED and WILL BE REMOVED in the future. Do --- | not rely on its presence! type PublishedMetadata = { bytes :: Number , compilers :: NonEmptyArray Version , hash :: Sha256 , publishedTime :: DateTime - - -- UNSPECIFIED: Will be removed in the future. - , ref :: String } publishedMetadataCodec :: CJ.Codec PublishedMetadata @@ -82,7 +76,6 @@ publishedMetadataCodec = CJ.named "PublishedMetadata" $ CJ.Record.object , compilers: CJ.Common.nonEmptyArray Version.codec , hash: Sha256.codec , publishedTime: Internal.Codec.iso8601DateTime - , ref: CJ.string } -- | Metadata about an unpublished package version. diff --git a/lib/test/Registry/ManifestIndex.purs b/lib/test/Registry/ManifestIndex.purs index 18e0863ef..1fb7e13a6 100644 --- a/lib/test/Registry/ManifestIndex.purs +++ b/lib/test/Registry/ManifestIndex.purs @@ -151,9 +151,9 @@ spec = do contextEntry :: String contextEntry = - """{"name":"context","version":"0.0.1","license":"MIT","location":{"githubOwner":"Fresheyeball","githubRepo":"purescript-owner"},"dependencies":{}} -{"name":"context","version":"0.0.2","license":"MIT","location":{"githubOwner":"Fresheyeball","githubRepo":"purescript-owner"},"dependencies":{}} -{"name":"context","version":"0.0.3","license":"MIT","location":{"githubOwner":"Fresheyeball","githubRepo":"purescript-owner"},"dependencies":{}} + """{"name":"context","version":"0.0.1","license":"MIT","location":{"githubOwner":"Fresheyeball","githubRepo":"purescript-owner"},"ref":"v0.0.1","dependencies":{}} +{"name":"context","version":"0.0.2","license":"MIT","location":{"githubOwner":"Fresheyeball","githubRepo":"purescript-owner"},"ref":"v0.0.2","dependencies":{}} +{"name":"context","version":"0.0.3","license":"MIT","location":{"githubOwner":"Fresheyeball","githubRepo":"purescript-owner"},"ref":"v0.0.3","dependencies":{}} """ testIndex @@ -242,6 +242,7 @@ manifestCodec' = Profunctor.dimap to from $ CJ.named "ManifestRep" $ CJ.Record.o { url: "https://github.com/purescript/purescript-" <> PackageName.print name <> ".git" , subdir: Nothing } + , ref: "v" <> Version.print version , description: Nothing , owners: Nothing , includeFiles: Nothing diff --git a/lib/test/Registry/Metadata.purs b/lib/test/Registry/Metadata.purs index 02e12c053..8daffc02c 100644 --- a/lib/test/Registry/Metadata.purs +++ b/lib/test/Registry/Metadata.purs @@ -29,8 +29,7 @@ recordStudio = "0.13.0" ], "hash": "sha256-LPRUC8ozZc7VCeRhKa4CtSgAfNqgAoVs2lH+7mYEcTk=", - "publishedTime": "2021-03-27T10:03:46.000Z", - "ref": "v0.1.0" + "publishedTime": "2021-03-27T10:03:46.000Z" }, "0.2.1": { "bytes": 3365, @@ -38,8 +37,7 @@ recordStudio = "0.13.0" ], "hash": "sha256-ySKKKp3rUJa4UmYTZshaOMO3jE+DW7IIqKJsurA2PP8=", - "publishedTime": "2022-05-15T10:51:57.000Z", - "ref": "v0.2.1" + "publishedTime": "2022-05-15T10:51:57.000Z" }, "1.0.0": { "bytes": 5155, @@ -47,8 +45,7 @@ recordStudio = "0.13.0" ], "hash": "sha256-0iMF8Rq88QBGuxTNrh+iuruw8l5boCP6J2JWBpQ4b7w=", - "publishedTime": "2022-11-03T17:30:28.000Z", - "ref": "v1.0.0" + "publishedTime": "2022-11-03T17:30:28.000Z" }, "1.0.1": { "bytes": 5635, @@ -57,8 +54,7 @@ recordStudio = "0.13.1" ], "hash": "sha256-Xm9pwDBHW5zYUEzxfVSgjglIcwRI1gcCOmcpyQ/tqeY=", - "publishedTime": "2022-11-04T12:21:09.000Z", - "ref": "v1.0.1" + "publishedTime": "2022-11-04T12:21:09.000Z" } }, "unpublished": { diff --git a/lib/test/Registry/Operation/Validation.purs b/lib/test/Registry/Operation/Validation.purs index 367bcdb93..955b08164 100644 --- a/lib/test/Registry/Operation/Validation.purs +++ b/lib/test/Registry/Operation/Validation.purs @@ -67,7 +67,7 @@ spec = do inRange = unsafeDateTime "2022-12-11T12:00:00.000Z" compilers = NonEmptyArray.singleton (unsafeVersion "0.13.0") - publishedMetadata = { bytes: 100.0, hash: defaultHash, publishedTime: outOfRange, compilers, ref: "" } + publishedMetadata = { bytes: 100.0, hash: defaultHash, publishedTime: outOfRange, compilers } metadata = Metadata { location: defaultLocation diff --git a/scripts/src/LegacyImporter.purs b/scripts/src/LegacyImporter.purs index 732937f50..05e73ae84 100644 --- a/scripts/src/LegacyImporter.purs +++ b/scripts/src/LegacyImporter.purs @@ -761,7 +761,7 @@ buildLegacyPackageManifests rawPackage rawUrl = Run.Except.runExceptAt _exceptPa Legacy.Manifest.fetchLegacyManifest package.name package.address (RawVersion tag.name) >>= case _ of Left error -> throwVersion { error: InvalidManifest error, reason: "Legacy manifest could not be parsed." } Right result -> pure result - pure $ Legacy.Manifest.toManifest package.name (LenientVersion.version version) location legacyManifest + pure $ Legacy.Manifest.toManifest package.name (LenientVersion.version version) location tag.name legacyManifest case manifest of Left err -> Log.info $ "Failed to build manifest for " <> PackageName.print package.name <> "@" <> tag.name <> ": " <> printJson versionValidationErrorCodec err Right val -> Log.info $ "Built manifest for " <> PackageName.print package.name <> "@" <> tag.name <> ":\n" <> printJson Manifest.codec val @@ -1463,7 +1463,7 @@ fetchSpagoYaml address ref = do | location /= GitHub { owner: address.owner, repo: address.repo, subdir: Nothing } -> do Log.warn "spago.yaml file does not use the same location it was fetched from, this is disallowed..." pure Nothing - Right config -> case SpagoYaml.spagoYamlToManifest config of + Right config -> case SpagoYaml.spagoYamlToManifest (un RawVersion ref) config of Left err -> do Log.warn $ "Failed to convert parsed spago.yaml file to purs.json " <> contents <> "\nwith errors:\n" <> err pure Nothing diff --git a/scripts/src/PackageDeleter.purs b/scripts/src/PackageDeleter.purs index 0e7fd131a..257a7b1a2 100644 --- a/scripts/src/PackageDeleter.purs +++ b/scripts/src/PackageDeleter.purs @@ -228,21 +228,24 @@ deleteVersion arguments name version = do Just published, Nothing -> pure (Just (Right published)) Nothing, Just unpublished -> pure (Just (Left unpublished)) Nothing, Nothing -> pure Nothing + -- Read manifest before deleting it (needed for reimport) + maybeManifest <- Registry.readManifest name version let newMetadata = Metadata $ oldMetadata { published = Map.delete version oldMetadata.published, unpublished = Map.delete version oldMetadata.unpublished } Registry.writeMetadata name newMetadata Registry.deleteManifest name version -- --reimport when arguments.reimport do - case publishment of - Nothing -> Log.error "Cannot reimport a version that was not published" - Just (Left _) -> Log.error "Cannot reimport a version that was specifically unpublished" - Just (Right specificPackageMetadata) -> do + case publishment, maybeManifest of + Nothing, _ -> Log.error "Cannot reimport a version that was not published" + Just (Left _), _ -> Log.error "Cannot reimport a version that was specifically unpublished" + Just (Right _), Nothing -> Log.error $ "Cannot reimport: manifest not found for " <> formatted + Just (Right _), Just (Manifest manifest) -> do -- Obtains `newMetadata` via cache void $ API.publish Nothing { location: Just oldMetadata.location , name: name - , ref: specificPackageMetadata.ref + , ref: manifest.ref , version: version , compiler: unsafeFromRight $ Version.parse "0.15.4" , resolutions: Nothing diff --git a/test-utils/src/Registry/Test/Utils.purs b/test-utils/src/Registry/Test/Utils.purs index c4471f343..57f177890 100644 --- a/test-utils/src/Registry/Test/Utils.purs +++ b/test-utils/src/Registry/Test/Utils.purs @@ -148,6 +148,7 @@ unsafeManifest name version dependencies = Manifest { url: "https://github.com/purescript/purescript-" <> name <> ".git" , subdir: Nothing } + , ref: "v" <> version , description: Nothing , owners: Nothing , includeFiles: Nothing diff --git a/types/v1/Manifest.dhall b/types/v1/Manifest.dhall index e9fe88850..2f1a6fa5b 100644 --- a/types/v1/Manifest.dhall +++ b/types/v1/Manifest.dhall @@ -13,6 +13,7 @@ let Manifest = , license : License , version : Version , location : ./Location.dhall + , ref : Text , owners : Optional (List ./Owner.dhall) , description : Optional Text , includeFiles : Optional (List Text)