summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2023-08-10 12:47:43 +0200
committerEugen Wissner <belka@caraus.de>2023-08-10 12:47:43 +0200
commit5a9e87cd5f65439ef8f2717b3b3e561f42f2e24c (patch)
treebf5c0c2d854dbabbb6d95925d63143f1ed75a878
parent43ebbc5e6705d2cf86650f1918e28b9b7e94406d (diff)
downloadslackbuilder-5a9e87cd5f65439ef8f2717b3b3e561f42f2e24c.tar.gz
Move gh check to the Haskell binary
-rw-r--r--Rakefile12
-rw-r--r--app/Main.hs10
-rw-r--r--app/SlackBuilder/CommandLine.hs4
-rw-r--r--config/config.rb.example1
-rw-r--r--lib/up2date.rb28
-rw-r--r--slackbuilder.cabal1
6 files changed, 16 insertions, 40 deletions
diff --git a/Rakefile b/Rakefile
index 37941fb..45da38b 100644
--- a/Rakefile
+++ b/Rakefile
@@ -166,19 +166,11 @@ module SlackBuilder
end
end
-php_transform = proc do |version|
- version.delete_prefix 'php-' if version.match?(/^php-8\.2\.[[:digit:]+]$/)
-end
-
-rdiff_backup_transform = proc do |version|
- version.delete_prefix 'v' if version.match?(/^v\d+\.\d+\.\d+/)
-end
-
AUTO_UPDATABLE = {
'universal-ctags' => [SlackBuilder::GitHub.new('universal-ctags', 'ctags'), SlackBuilder::UniversalCtags.new],
'composer' => [SlackBuilder::Packagist.new('composer', 'composer'), SlackBuilder::Composer.new],
- 'php82' => [SlackBuilder::GitHub.new('php', 'php-src', php_transform), SlackBuilder::PHP.new],
- 'rdiff-backup' => [SlackBuilder::GitHub.new('rdiff-backup', 'rdiff-backup', rdiff_backup_transform)],
+ 'php82' => [SlackBuilder::GitHub.new('php', 'php-src', 'php'), SlackBuilder::PHP.new],
+ 'rdiff-backup' => [SlackBuilder::GitHub.new('rdiff-backup', 'rdiff-backup', 'rdiff-backup')],
'librsync' => [SlackBuilder::GitHub.new('librsync', 'librsync')],
'jitsi-meet-desktop' => [
SlackBuilder::GitHub.new('jitsi', 'jitsi-meet-electron'),
diff --git a/app/Main.hs b/app/Main.hs
index 7e821e5..6901fa6 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -19,10 +19,18 @@ main = do
PackagistCommand packagistArguments ->
latestPackagist packagistArguments
TextCommand textArguments -> latestText textArguments
- GhCommand ghArguments -> latestGitHub settings ghArguments (stripPrefix "v")
+ GhCommand ghArguments@GhArguments{ transform } ->
+ latestGitHub settings ghArguments $ chooseTransformFunction transform
Text.IO.putStrLn $ fromMaybe "" latestVersion
where
+ chooseTransformFunction (Just "php") = phpTransform
+ chooseTransformFunction (Just "rdiff-backup") = Text.stripPrefix "v"
+ chooseTransformFunction _ = stripPrefix "v"
stripPrefix prefix string = Just
$ fromMaybe string
$ Text.stripPrefix prefix string
+ phpTransform version
+ | (majorPrefix, patchVersion) <- Text.breakOnEnd "." version
+ , majorPrefix == "php-8.2." = Just $ Text.drop (Text.length "php-") version
+ | otherwise = Nothing
diff --git a/app/SlackBuilder/CommandLine.hs b/app/SlackBuilder/CommandLine.hs
index 5680c81..1313abb 100644
--- a/app/SlackBuilder/CommandLine.hs
+++ b/app/SlackBuilder/CommandLine.hs
@@ -16,7 +16,7 @@ import Options.Applicative
, info
, fullDesc
, subparser
- , command
+ , command, optional
)
data SlackBuilderCommand
@@ -32,6 +32,7 @@ data PackagistArguments = PackagistArguments
data GhArguments = GhArguments
{ owner :: Text
, name :: Text
+ , transform :: Maybe Text
} deriving (Eq, Show)
newtype TextArguments = TextArguments Text
@@ -48,6 +49,7 @@ ghArguments :: Parser GhArguments
ghArguments = GhArguments
<$> argument str (metavar "OWNER")
<*> argument str (metavar "NAME")
+ <*> optional (argument str (metavar "TRANSFORM"))
slackBuilderParser :: ParserInfo SlackBuilderCommand
slackBuilderParser = info slackBuilderCommand fullDesc
diff --git a/config/config.rb.example b/config/config.rb.example
index 82a88ac..836149a 100644
--- a/config/config.rb.example
+++ b/config/config.rb.example
@@ -4,6 +4,5 @@ CONFIG = {
remote_path: 'example.com:/srv/httpd/some/path',
download_url: 'https://example.com/some/path',
branch: 'user/nick/updates',
- gh_token: '',
repository: '../slackbuilds'
}.freeze
diff --git a/lib/up2date.rb b/lib/up2date.rb
index 3ccbbd3..124784b 100644
--- a/lib/up2date.rb
+++ b/lib/up2date.rb
@@ -45,33 +45,7 @@ module SlackBuilder
end
def latest
- if @version_transform.nil?
- `./bin/slackbuilder github #{@owner} #{@name}`.strip
- else
- latest_with_transform
- end
- end
-
- private
-
- def latest_with_transform
- post_data = {
- 'query' => GITHUB_QUERY,
- 'variables' => { 'name' => @name, 'owner' => @owner }
- }
- uri = URI('https://api.github.com/graphql')
- response = Net::HTTP.post uri, post_data.to_json, {
- 'content-type' => 'application/json',
- 'authorization' => "Bearer #{CONFIG[:gh_token]}"
- }
- filter_versions_from_response JSON.parse(response.body)
- end
-
- def filter_versions_from_response(response)
- response['data']['repository']['refs']['nodes']
- .map { |node| @version_transform.call node['name'] }
- .compact
- .last
+ `./bin/slackbuilder github #{@owner} #{@name} #{@version_transform}`.strip
end
end
diff --git a/slackbuilder.cabal b/slackbuilder.cabal
index 58585e2..7c5ea25 100644
--- a/slackbuilder.cabal
+++ b/slackbuilder.cabal
@@ -28,6 +28,7 @@ executable slackbuilder
default-extensions:
DataKinds
DuplicateRecordFields
+ NamedFieldPuns
OverloadedStrings
RecordWildCards
TemplateHaskell