Move packagist check to a Haskell binary
This commit is contained in:
parent
1bc410d86d
commit
028f64d25a
2
.gitignore
vendored
2
.gitignore
vendored
@ -14,7 +14,6 @@
|
|||||||
*.lz
|
*.lz
|
||||||
*.pk3
|
*.pk3
|
||||||
*.run
|
*.run
|
||||||
*.Z
|
|
||||||
*.deb
|
*.deb
|
||||||
*.jar
|
*.jar
|
||||||
*~
|
*~
|
||||||
@ -26,3 +25,4 @@
|
|||||||
/vendor/
|
/vendor/
|
||||||
/.bundle/
|
/.bundle/
|
||||||
/pkg/
|
/pkg/
|
||||||
|
/dist-newstyle/
|
||||||
|
5
CHANGELOG.md
Normal file
5
CHANGELOG.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Revision history for slackbuilder
|
||||||
|
|
||||||
|
## 0.1.0.0 -- YYYY-mm-dd
|
||||||
|
|
||||||
|
* First version. Released on an unsuspecting world.
|
46
app/Main.hs
Normal file
46
app/Main.hs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
module Main
|
||||||
|
( main
|
||||||
|
) where
|
||||||
|
|
||||||
|
import Data.Aeson.TH (defaultOptions, deriveJSON)
|
||||||
|
import Data.HashMap.Strict (HashMap)
|
||||||
|
import qualified Data.HashMap.Strict as HashMap
|
||||||
|
import Data.Text (Text)
|
||||||
|
import qualified Data.Text.IO as Text.IO
|
||||||
|
import Data.Vector (Vector)
|
||||||
|
import qualified Data.Vector as Vector
|
||||||
|
import Network.HTTP.Req
|
||||||
|
( runReq
|
||||||
|
, defaultHttpConfig
|
||||||
|
, req
|
||||||
|
, GET(..)
|
||||||
|
, https
|
||||||
|
, jsonResponse
|
||||||
|
, NoReqBody(..)
|
||||||
|
, (/:)
|
||||||
|
, responseBody
|
||||||
|
)
|
||||||
|
import Data.Maybe (fromMaybe)
|
||||||
|
|
||||||
|
newtype PackagistPackage = PackagistPackage
|
||||||
|
{ version :: Text
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
$(deriveJSON defaultOptions ''PackagistPackage)
|
||||||
|
|
||||||
|
newtype PackagistResponse = PackagistResponse
|
||||||
|
{ packages :: HashMap Text (Vector PackagistPackage)
|
||||||
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
$(deriveJSON defaultOptions ''PackagistResponse)
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
packagistResponse <- runReq defaultHttpConfig $
|
||||||
|
let uri = https "repo.packagist.org" /: "p2" /: "composer" /: "composer.json"
|
||||||
|
in req GET uri NoReqBody jsonResponse mempty
|
||||||
|
let packagistPackages = packages $ responseBody packagistResponse
|
||||||
|
|
||||||
|
Text.IO.putStrLn $ fromMaybe ""
|
||||||
|
$ HashMap.lookup "composer/composer" packagistPackages
|
||||||
|
>>= fmap (version . fst) . Vector.uncons
|
@ -77,12 +77,7 @@ module SlackBuilder
|
|||||||
end
|
end
|
||||||
|
|
||||||
def latest
|
def latest
|
||||||
full_name = [@vendor, @name].join '/'
|
`./bin/slackbuilder #{@vendor} #{@name}`.strip
|
||||||
uri = URI "https://repo.packagist.org/p2/#{full_name}.json"
|
|
||||||
response = Net::HTTP.get uri, {
|
|
||||||
'content-type' => 'application/json'
|
|
||||||
}
|
|
||||||
JSON.parse(response)['packages'][full_name].first['version']
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
40
slackbuilder.cabal
Normal file
40
slackbuilder.cabal
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
cabal-version: 2.4
|
||||||
|
name: slackbuilder
|
||||||
|
version: 0.1.0.0
|
||||||
|
|
||||||
|
-- A short (one-line) description of the package.
|
||||||
|
-- synopsis:
|
||||||
|
|
||||||
|
-- A longer description of the package.
|
||||||
|
-- description:
|
||||||
|
|
||||||
|
bug-reports: https://git.caraus.tech/OSS/slackbuilder/issues
|
||||||
|
|
||||||
|
license: MPL-2.0
|
||||||
|
license-files: LICENSE
|
||||||
|
copyright: (c) 2023 Eugen Wissner
|
||||||
|
|
||||||
|
author: Eugen Wissner
|
||||||
|
maintainer: belka@caraus.de
|
||||||
|
|
||||||
|
category: Build
|
||||||
|
extra-source-files: CHANGELOG.md
|
||||||
|
|
||||||
|
executable slackbuilder
|
||||||
|
main-is: Main.hs
|
||||||
|
|
||||||
|
-- Modules included in this executable, other than Main.
|
||||||
|
-- other-modules:
|
||||||
|
|
||||||
|
default-extensions:
|
||||||
|
OverloadedStrings
|
||||||
|
TemplateHaskell
|
||||||
|
build-depends:
|
||||||
|
aeson ^>= 2.2.0,
|
||||||
|
base ^>= 4.16.4.0,
|
||||||
|
req ^>=3.13,
|
||||||
|
text ^>= 2.0,
|
||||||
|
unordered-containers ^>= 0.2.19,
|
||||||
|
vector ^>= 0.13.0
|
||||||
|
hs-source-dirs: app
|
||||||
|
default-language: Haskell2010
|
Loading…
Reference in New Issue
Block a user