Skip to content

Commit

Permalink
🐫
Browse files Browse the repository at this point in the history
  • Loading branch information
flip111 committed Dec 25, 2023
1 parent 6fe57d8 commit 0d80b72
Show file tree
Hide file tree
Showing 26 changed files with 127 additions and 127 deletions.
6 changes: 3 additions & 3 deletions bin/src/Main.purs
Original file line number Diff line number Diff line change
Expand Up @@ -730,7 +730,7 @@ mkBundleEnv bundleArgs = do
extraArgs =
fromMaybe [] do
let cliArgs = Array.fromFoldable bundleArgs.bundlerArgs
(Alternative.guard (Array.length cliArgs > 0) *> pure cliArgs) <|> (bundleConf _.extra_args)
(Alternative.guard (Array.length cliArgs > 0) *> pure cliArgs) <|> (bundleConf _.extraArgs)

let bundleOptions = { minify, module: entrypoint, outfile, platform, type: bundleType, sourceMaps: bundleArgs.sourceMaps, extraArgs }
let
Expand Down Expand Up @@ -775,7 +775,7 @@ mkRunEnv runArgs { dependencies, purs } = do
runConf f = selected.package.run >>= f

moduleName = fromMaybe "Main" (runArgs.main <|> runConf _.main)
execArgs = fromMaybe [] (runArgs.execArgs <|> runConf _.exec_args)
execArgs = fromMaybe [] (runArgs.execArgs <|> runConf _.execArgs)

runOptions =
{ moduleName
Expand Down Expand Up @@ -804,7 +804,7 @@ mkTestEnv testArgs { dependencies, purs } = do
testConf f = selected.package.test >>= f

moduleName = fromMaybe "Test.Main" (testConf (_.main >>> Just))
execArgs = fromMaybe [] (testArgs.execArgs <|> testConf _.exec_args)
execArgs = fromMaybe [] (testArgs.execArgs <|> testConf _.execArgs)
in
{ moduleName
, execArgs
Expand Down
54 changes: 27 additions & 27 deletions core/src/Config.purs
Original file line number Diff line number Diff line change
Expand Up @@ -111,31 +111,31 @@ publishConfigCodec = CA.object "PublishConfig"

type RunConfig =
{ main :: Maybe String
, exec_args :: Maybe (Array String)
, execArgs :: Maybe (Array String)
}

runConfigCodec :: JsonCodec RunConfig
runConfigCodec = CA.object "RunConfig"
$ CA.recordPropOptional (Proxy :: _ "main") CA.string
$ CA.recordPropOptional (Proxy :: _ "exec_args") (CA.array CA.string)
$ CA.recordPropOptional (Proxy :: _ "execArgs") (CA.array CA.string)
$ CA.record

type TestConfig =
{ main :: String
, exec_args :: Maybe (Array String)
, execArgs :: Maybe (Array String)
, dependencies :: Dependencies
, censor_test_warnings :: Maybe CensorBuildWarnings
, censorTestWarnings :: Maybe CensorBuildWarnings
, strict :: Maybe Boolean
, pedantic_packages :: Maybe Boolean
, pedanticPackages :: Maybe Boolean
}

testConfigCodec :: JsonCodec TestConfig
testConfigCodec = CA.object "TestConfig"
$ CA.recordProp (Proxy :: _ "main") CA.string
$ CA.recordPropOptional (Proxy :: _ "exec_args") (CA.array CA.string)
$ CA.recordPropOptional (Proxy :: _ "censor_test_warnings") censorBuildWarningsCodec
$ CA.recordPropOptional (Proxy :: _ "execArgs") (CA.array CA.string)
$ CA.recordPropOptional (Proxy :: _ "censorTestWarnings") censorBuildWarningsCodec
$ CA.recordPropOptional (Proxy :: _ "strict") CA.boolean
$ CA.recordPropOptional (Proxy :: _ "pedantic_packages") CA.boolean
$ CA.recordPropOptional (Proxy :: _ "pedanticPackages") CA.boolean
$ CA.recordProp (Proxy :: _ "dependencies") dependenciesCodec
$ CA.record

Expand All @@ -151,16 +151,16 @@ backendConfigCodec = CA.object "BackendConfig"
$ CA.record

type PackageBuildOptionsInput =
{ censor_project_warnings :: Maybe CensorBuildWarnings
{ censorProjectWarnings :: Maybe CensorBuildWarnings
, strict :: Maybe Boolean
, pedantic_packages :: Maybe Boolean
, pedanticPackages :: Maybe Boolean
}

packageBuildOptionsCodec :: JsonCodec PackageBuildOptionsInput
packageBuildOptionsCodec = CA.object "PackageBuildOptionsInput"
$ CA.recordPropOptional (Proxy :: _ "censor_project_warnings") censorBuildWarningsCodec
$ CA.recordPropOptional (Proxy :: _ "censorProjectWarnings") censorBuildWarningsCodec
$ CA.recordPropOptional (Proxy :: _ "strict") CA.boolean
$ CA.recordPropOptional (Proxy :: _ "pedantic_packages") CA.boolean
$ CA.recordPropOptional (Proxy :: _ "pedanticPackages") CA.boolean
$ CA.record

type BundleConfig =
Expand All @@ -169,7 +169,7 @@ type BundleConfig =
, outfile :: Maybe FilePath
, platform :: Maybe BundlePlatform
, type :: Maybe BundleType
, extra_args :: Maybe (Array String)
, extraArgs :: Maybe (Array String)
}

bundleConfigCodec :: JsonCodec BundleConfig
Expand All @@ -179,7 +179,7 @@ bundleConfigCodec = CA.object "BundleConfig"
$ CA.recordPropOptional (Proxy :: _ "outfile") CA.string
$ CA.recordPropOptional (Proxy :: _ "platform") bundlePlatformCodec
$ CA.recordPropOptional (Proxy :: _ "type") bundleTypeCodec
$ CA.recordPropOptional (Proxy :: _ "extra_args") (CA.array CA.string)
$ CA.recordPropOptional (Proxy :: _ "extraArgs") (CA.array CA.string)
$ CA.record

data BundlePlatform = BundleNode | BundleBrowser
Expand Down Expand Up @@ -284,31 +284,31 @@ printSpagoRange range =
else Range.print range

type WorkspaceConfig =
{ package_set :: Maybe SetAddress
, extra_packages :: Maybe (Map PackageName ExtraPackage)
{ packageSet :: Maybe SetAddress
, extraPackages :: Maybe (Map PackageName ExtraPackage)
, backend :: Maybe BackendConfig
, build_opts :: Maybe WorkspaceBuildOptionsInput
, buildOpts :: Maybe WorkspaceBuildOptionsInput
}

workspaceConfigCodec :: JsonCodec WorkspaceConfig
workspaceConfigCodec = CA.object "WorkspaceConfig"
$ CA.recordPropOptional (Proxy :: _ "package_set") setAddressCodec
$ CA.recordPropOptional (Proxy :: _ "packageSet") setAddressCodec
$ CA.recordPropOptional (Proxy :: _ "backend") backendConfigCodec
$ CA.recordPropOptional (Proxy :: _ "build_opts") buildOptionsCodec
$ CA.recordPropOptional (Proxy :: _ "extra_packages") (Internal.Codec.packageMap extraPackageCodec)
$ CA.recordPropOptional (Proxy :: _ "buildOpts") buildOptionsCodec
$ CA.recordPropOptional (Proxy :: _ "extraPackages") (Internal.Codec.packageMap extraPackageCodec)
$ CA.record

type WorkspaceBuildOptionsInput =
{ output :: Maybe FilePath
, censor_library_warnings :: Maybe CensorBuildWarnings
, stat_verbosity :: Maybe StatVerbosity
, censorLibraryWarnings :: Maybe CensorBuildWarnings
, statVerbosity :: Maybe StatVerbosity
}

buildOptionsCodec :: JsonCodec WorkspaceBuildOptionsInput
buildOptionsCodec = CA.object "WorkspaceBuildOptionsInput"
$ CA.recordPropOptional (Proxy :: _ "output") CA.string
$ CA.recordPropOptional (Proxy :: _ "censor_library_warnings") censorBuildWarningsCodec
$ CA.recordPropOptional (Proxy :: _ "stat_verbosity") statVerbosityCodec
$ CA.recordPropOptional (Proxy :: _ "censorLibraryWarnings") censorBuildWarningsCodec
$ CA.recordPropOptional (Proxy :: _ "statVerbosity") statVerbosityCodec
$ CA.record

data CensorBuildWarnings
Expand Down Expand Up @@ -354,14 +354,14 @@ warningCensorTestCodec = CA.codec' parse print
where
print = case _ of
ByCode str -> CA.encode CA.string str
ByMessagePrefix str -> CA.encode byMessagePrefixCodec { by_prefix: str }
ByMessagePrefix str -> CA.encode byMessagePrefixCodec { byPrefix: str }

parse j = byCode <|> byPrefix
where
byCode = ByCode <$> CA.decode CA.string j
byPrefix = (ByMessagePrefix <<< _.by_prefix) <$> CA.decode byMessagePrefixCodec j
byPrefix = (ByMessagePrefix <<< _.byPrefix) <$> CA.decode byMessagePrefixCodec j

byMessagePrefixCodec = CAR.object "ByMessagePrefix" { by_prefix: CA.string }
byMessagePrefixCodec = CAR.object "ByMessagePrefix" { byPrefix: CA.string }

data StatVerbosity
= NoStats
Expand Down
4 changes: 2 additions & 2 deletions src/Spago/Command/Build.purs
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@ run opts = do

let
pedanticPkgs = NEA.toArray selectedPackages # Array.mapMaybe \p -> do
let reportSrc = pedanticPackages || (fromMaybe false $ p.package.build >>= _.pedantic_packages)
let reportTest = pedanticPackages || (fromMaybe false $ p.package.test >>= _.pedantic_packages)
let reportSrc = pedanticPackages || (fromMaybe false $ p.package.build >>= _.pedanticPackages)
let reportTest = pedanticPackages || (fromMaybe false $ p.package.test >>= _.pedanticPackages)
Alternative.guard (reportSrc || reportTest)
pure $ Tuple p { reportSrc, reportTest }
unless (Array.null pedanticPkgs || opts.depsOnly) do
Expand Down
10 changes: 5 additions & 5 deletions src/Spago/Command/Fetch.purs
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ writeNewLockfile reason allTransitiveDeps = do
{ workspacePackages = Map.alter
( case _ of
Nothing -> Nothing
Just pkg -> Just $ pkg { build_plan = Set.insert dependencyName (pkg.build_plan) }
Just pkg -> Just $ pkg { buildPlan = Set.insert dependencyName (pkg.buildPlan) }
)
workspacePackageName
r.workspacePackages
Expand Down Expand Up @@ -322,11 +322,11 @@ writeNewLockfile reason allTransitiveDeps = do
lockfile =
{ packages
, workspace:
{ package_set: case workspace.packageSet.buildType of
{ packageSet: case workspace.packageSet.buildType of
RegistrySolverBuild _ -> Nothing
PackageSetBuild info _ -> Just info
, packages: workspacePackages
, extra_packages: fromMaybe Map.empty workspace.workspaceConfig.extra_packages
, extraPackages: fromMaybe Map.empty workspace.workspaceConfig.extraPackages
}
}
liftAff $ FS.writeYamlFile Lock.lockfileCodec "spago.lock" lockfile
Expand Down Expand Up @@ -404,12 +404,12 @@ getTransitiveDeps workspacePackage = do
Right lockfile -> do
case Map.lookup workspacePackage.package.name lockfile.workspace.packages of
Nothing -> die $ "Package " <> PackageName.print workspacePackage.package.name <> " not found in lockfile"
Just { build_plan } -> do
Just { buildPlan } -> do
let
allWorkspacePackages = Map.fromFoldable $ map (\p -> Tuple p.package.name (WorkspacePackage p)) (Config.getWorkspacePackages workspace.packageSet)

isInBuildPlan :: forall v. PackageName -> v -> Boolean
isInBuildPlan name _package = Set.member name build_plan
isInBuildPlan name _package = Set.member name buildPlan

workspacePackagesWeNeed = Map.filterWithKey isInBuildPlan allWorkspacePackages
otherPackages = map fromLockEntry $ Map.filterWithKey isInBuildPlan lockfile.packages
Expand Down
16 changes: 8 additions & 8 deletions src/Spago/Command/Init.purs
Original file line number Diff line number Diff line change
Expand Up @@ -154,26 +154,26 @@ defaultConfig' opts =
, dependencies: Dependencies $ Map.fromFoldable $ map mkDep dependencies
, description: Nothing
, build: build <#> \{ censorProjectWarnings, strict, pedanticPackages } ->
{ censor_project_warnings: censorProjectWarnings
{ censorProjectWarnings: censorProjectWarnings
, strict
, pedantic_packages: pedanticPackages
, pedanticPackages: pedanticPackages
}
, run: Nothing
, test: test <#> \{ moduleMain, censorTestWarnings, strict, pedanticPackages, dependencies: testDeps } ->
{ dependencies: fromMaybe (Dependencies Map.empty) testDeps
, exec_args: Nothing
, execArgs: Nothing
, main: moduleMain
, censor_test_warnings: censorTestWarnings
, censorTestWarnings: censorTestWarnings
, strict
, pedantic_packages: pedanticPackages
, pedanticPackages: pedanticPackages
}
, publish: Nothing
, bundle: Nothing
}
, workspace: (getDefaultConfigWorkspaceOptions opts) <#> \{ setVersion } ->
{ extra_packages: Just Map.empty
, package_set: setVersion # map \set -> SetFromRegistry { registry: set }
, build_opts: Nothing
{ extraPackages: Just Map.empty
, packageSet: setVersion # map \set -> SetFromRegistry { registry: set }
, buildOpts: Nothing
, backend: Nothing
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Spago/Command/Publish.purs
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ publish _args = do
if Array.length fail > 0 then do
addError
$ toDoc
[ "Some of the packages you specified as `extra_packages` do not point to the Registry."
[ "Some of the packages you specified as `extraPackages` do not point to the Registry."
, "To be able to publish a package to the registry, all of its dependencies have to be packages registered on the Registry."
, "Please replace the following packages with versions that are present in the Registry:" -- TODO point to docs
]
Expand Down
2 changes: 1 addition & 1 deletion src/Spago/Command/Upgrade.purs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import Spago.Db as Db
run :: forall a. Spago (FetchEnv a) Unit
run = do
{ workspace, db, purs } <- ask
case workspace.workspaceConfig.package_set of
case workspace.workspaceConfig.packageSet of
Just (Core.SetFromRegistry { registry }) -> do
maybeLatestPackageSet <- liftEffect $ Db.selectLatestPackageSetByCompiler db purs.version
case maybeLatestPackageSet of
Expand Down
26 changes: 13 additions & 13 deletions src/Spago/Config.purs
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ readWorkspace { maybeSelectedPackage, pureBuild } = do

-- Read in the package database
{ offline } <- ask
packageSetInfo <- case maybeLockfileContents, workspace.package_set of
packageSetInfo <- case maybeLockfileContents, workspace.packageSet of
_, Nothing -> do
logDebug "Did not find a package set in your config, using Registry solver"
pure Nothing
Expand All @@ -271,7 +271,7 @@ readWorkspace { maybeSelectedPackage, pureBuild } = do
-- repo nor from the internet, since we already have the whole set right there
Right lockfile, _ -> do
logDebug "Found lockfile, using the package set from there"
pure lockfile.workspace.package_set
pure lockfile.workspace.packageSet

Left _, Just address@(Core.SetFromRegistry { registry: v }) -> do
logDebug "Reading the package set from the Registry repo..."
Expand Down Expand Up @@ -330,7 +330,7 @@ readWorkspace { maybeSelectedPackage, pureBuild } = do
, address
}

-- Mix in the package set (a) the workspace packages, and (b) the extra_packages
-- Mix in the package set (a) the workspace packages, and (b) the extraPackages
-- Note:
-- 1. we error out if any workspace package collides with any package in the database,
-- because it's just a confusing situation.
Expand All @@ -339,7 +339,7 @@ readWorkspace { maybeSelectedPackage, pureBuild } = do
-- This is to (1) easily allow overriding packages, (2) easily allow "private registries"
-- and (3) prevent the security hole where people can register new names and take precedence in your build.
let
extraPackages = map fromExtraPackage (fromMaybe Map.empty workspace.extra_packages)
extraPackages = map fromExtraPackage (fromMaybe Map.empty workspace.extraPackages)
localPackagesOverlap = Set.intersection (Map.keys workspacePackages) (Map.keys extraPackages)
buildType =
let
Expand All @@ -357,7 +357,7 @@ readWorkspace { maybeSelectedPackage, pureBuild } = do
die
$
[ toDoc "Some packages in your local tree overlap with ones you have declared in your workspace configuration."
, toDoc "To resolve this error, rename these packages declared in `extra_packages` to a different name:"
, toDoc "To resolve this error, rename these packages declared in `extraPackages` to a different name:"
]
<> map (\p -> indent $ toDoc $ "- " <> PackageName.print p) (Array.fromFoldable localPackagesOverlap)

Expand All @@ -375,9 +375,9 @@ readWorkspace { maybeSelectedPackage, pureBuild } = do
let
buildOptions :: BuildOptions
buildOptions =
{ output: _.output =<< workspace.build_opts
, censorLibWarnings: _.censor_library_warnings =<< workspace.build_opts
, statVerbosity: _.stat_verbosity =<< workspace.build_opts
{ output: _.output =<< workspace.buildOpts
, censorLibWarnings: _.censorLibraryWarnings =<< workspace.buildOpts
, statVerbosity: _.statVerbosity =<< workspace.buildOpts
}

pure
Expand All @@ -404,18 +404,18 @@ workspacePackageToLockfilePackage :: WorkspacePackage -> Tuple PackageName Lock.
workspacePackageToLockfilePackage { path, package } = Tuple package.name
{ path
, dependencies: package.dependencies
, test_dependencies: foldMap _.dependencies package.test
, build_plan: mempty -- Note: this is filled in later
, testDependencies: foldMap _.dependencies package.test
, buildPlan: mempty -- Note: this is filled in later
}

shouldComputeNewLockfile :: { workspace :: Core.WorkspaceConfig, workspacePackages :: Map PackageName WorkspacePackage } -> Lock.WorkspaceLock -> Boolean
shouldComputeNewLockfile { workspace, workspacePackages } workspaceLock =
-- the workspace packages should exactly match, except for the needed_by field, which is filled in during build plan construction
(map (workspacePackageToLockfilePackage >>> snd) workspacePackages /= (map (_ { build_plan = mempty }) workspaceLock.packages))
(map (workspacePackageToLockfilePackage >>> snd) workspacePackages /= (map (_ { buildPlan = mempty }) workspaceLock.packages))
-- and the extra packages should exactly match
|| (fromMaybe Map.empty workspace.extra_packages /= workspaceLock.extra_packages)
|| (fromMaybe Map.empty workspace.extraPackages /= workspaceLock.extraPackages)
-- and the package set address needs to match - we have no way to match the package set contents at this point, so we let it be
|| (workspace.package_set /= map _.address workspaceLock.package_set)
|| (workspace.packageSet /= map _.address workspaceLock.packageSet)

getPackageLocation :: PackageName -> Package -> FilePath
getPackageLocation name = Paths.mkRelative <<< case _ of
Expand Down
16 changes: 8 additions & 8 deletions src/Spago/Lock.purs
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ data LockEntry
derive instance Eq LockEntry

type WorkspaceLock =
{ package_set :: Maybe PackageSetInfo
{ packageSet :: Maybe PackageSetInfo
, packages :: Map PackageName WorkspaceLockPackage
, extra_packages :: Map PackageName Core.ExtraPackage
, extraPackages :: Map PackageName Core.ExtraPackage
}

type PackageSetInfo =
Expand All @@ -52,9 +52,9 @@ type PackageSetInfo =

type WorkspaceLockPackage =
{ dependencies :: Core.Dependencies
, test_dependencies :: Core.Dependencies
, testDependencies :: Core.Dependencies
, path :: FilePath
, build_plan :: Set PackageName
, buildPlan :: Set PackageName
}

lockfileCodec :: JsonCodec Lockfile
Expand All @@ -66,15 +66,15 @@ lockfileCodec = CA.object "Lockfile"
workspaceLockCodec :: JsonCodec WorkspaceLock
workspaceLockCodec = CA.object "WorkspaceLock"
$ CA.recordProp (Proxy :: _ "packages") (Registry.Codec.packageMap dependenciesCodec)
$ CA.recordPropOptional (Proxy :: _ "package_set") packageSetCodec
$ CA.recordProp (Proxy :: _ "extra_packages") (Registry.Codec.packageMap Config.extraPackageCodec)
$ CA.recordPropOptional (Proxy :: _ "packageSet") packageSetCodec
$ CA.recordProp (Proxy :: _ "extraPackages") (Registry.Codec.packageMap Config.extraPackageCodec)
$ CA.record
where
dependenciesCodec = CA.object "Dependencies"
$ CA.recordProp (Proxy :: _ "path") CA.string
$ CA.recordProp (Proxy :: _ "dependencies") Config.dependenciesCodec
$ CA.recordProp (Proxy :: _ "test_dependencies") Config.dependenciesCodec
$ CA.recordProp (Proxy :: _ "build_plan") (CA.Common.set PackageName.codec)
$ CA.recordProp (Proxy :: _ "testDependencies") Config.dependenciesCodec
$ CA.recordProp (Proxy :: _ "buildPlan") (CA.Common.set PackageName.codec)
$ CA.record

packageSetCodec :: JsonCodec PackageSetInfo
Expand Down
Loading

0 comments on commit 0d80b72

Please sign in to comment.