Skip to content
Snippets Groups Projects
Verified Commit 5c9ccde0 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Updated build scripts

parent 215137df
No related branches found
No related tags found
No related merge requests found
FROM golang:alpine as go_builder
RUN apk add --no-cache curl
RUN curl https://glide.sh/get | sh
WORKDIR /go/src/app
COPY glide.* ./
RUN glide install
WORKDIR /src
COPY go.* ./
RUN go mod download
COPY *.go ./
RUN CGO_ENABLED=0 GOOS=linux go build -a app .
RUN CGO_ENABLED=0 GOOS=linux go build -o app .
FROM scratch
COPY --from=go_builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=go_builder /go/src/app/app /app
COPY --from=go_builder /src/app /app
ENTRYPOINT ["/app"]
Makefile 0 → 100644
IMAGE := k8r.eu/justjanne/$(shell basename $(shell git remote get-url origin) .git)
TAGS := $(shell git describe --always --tags HEAD)
.PHONY: build
build:
docker build --pull -t $(IMAGE):$(TAGS) .
docker tag $(IMAGE):$(TAGS) $(IMAGE):latest
@echo Successfully tagged $(IMAGE):$(TAGS) as latest
.PHONY: push
push: build
docker push $(IMAGE):$(TAGS)
docker push $(IMAGE):latest
@echo Successfully pushed $(IMAGE):$(TAGS) as latest
#!/bin/sh
IMAGE=k8r.eu/justjanne/embed-helper
TAGS=$(git describe --always --tags HEAD)
docker build -t $IMAGE:$TAGS .
docker tag $IMAGE:$TAGS $IMAGE:latest
echo Successfully tagged $IMAGE:latest
docker push $IMAGE:$TAGS
docker push $IMAGE:latest
#!/bin/sh
IMAGE=k8r.eu/justjanne/embed-helper
TAGS=$(git describe --always --tags HEAD)
DEPLOYMENT=embed-helper
POD=embed-helper
kubectl set image deployment/$DEPLOYMENT $POD=$IMAGE:$TAGS
hash: 580579292d28074fd3d1d1dc8839c97e8dad3795380023d934db98c6e8d47158
updated: 2019-02-04T17:02:06.067158062+01:00
imports:
- name: github.com/andybalholm/cascadia
version: 680b6a57bda4f657485ad44bdea42342ead737bc
- name: github.com/dyatlov/go-htmlinfo
version: d9417c75de65fbae5b16f4038b421c9e1cc61f0d
subpackages:
- htmlinfo
- name: github.com/dyatlov/go-oembed
version: 4bc5ab7a42e91e45e957f9b0c47f911efed16710
subpackages:
- oembed
- name: github.com/dyatlov/go-opengraph
version: 816b6608b3c8c1e871bc9cf777f390e2532081fe
subpackages:
- opengraph
- name: github.com/dyatlov/go-readability
version: e7b2080f87f824caa519ed33dac6d4e4e413616d
- name: github.com/Jeffail/gabs
version: 7a0fed31069aba77993a518cc2f37b28ee7aa883
- name: github.com/PuerkitoBio/goquery
version: 3dcf72e6c17f694381a21592651ca1464ded0e10
- name: golang.org/x/net
version: bc3663df0ac92f928d419e31e0d2af22e683a5a2
subpackages:
- html
- html/atom
- html/charset
- name: golang.org/x/text
version: f28f36722d5ef2f9655ad3de1f248e3e52ad5ebd
subpackages:
- encoding
- encoding/charmap
- encoding/htmlindex
- encoding/internal
- encoding/internal/identifier
- encoding/japanese
- encoding/korean
- encoding/simplifiedchinese
- encoding/traditionalchinese
- encoding/unicode
- internal/tag
- internal/utf8internal
- language
- runes
- transform
testImports: []
package: git.kuschku.de/justjanne/embed-helper
import:
- package: github.com/dyatlov/go-htmlinfo/htmlinfo
\ No newline at end of file
go.mod 0 → 100644
module git.kuschku.de/justjanne/embed-helper
go 1.13
require golang.org/x/net v0.0.0-20160621215608-bc3663df0ac9
......@@ -136,6 +136,7 @@ type DataField struct {
}
type Data struct {
FromUrl string `json:"from_url"`
Color string `json:"color"`
AuthorName string `json:"author_name"`
AuthorLink string `json:"author_link"`
......@@ -147,7 +148,7 @@ type Data struct {
ImageUrl string `json:"image_url"`
Type string `json:"type"`
Player string `json:"player"`
Service string `json:"service"`
ServiceName string `json:"service_name"`
ServiceIcon string `json:"service_icon"`
Ts int `json:"ts"`
}
......@@ -200,6 +201,7 @@ func resolve(base *url.URL, path string) string {
func buildData(in InternalData, oEmbed OEmbed, providerFallbacks []func(*InternalData)) (out Data) {
out = Data{}
out.FromUrl = in.url.String()
out.TitleLink = in.url.String()
out.Title = coalesce([]string{in.twitterTitle, in.ogTitle, in.metaTitle, in.title})
out.Text = coalesce([]string{in.twitterDescription, in.ogDescription, in.metaDescription})
......@@ -208,9 +210,9 @@ func buildData(in InternalData, oEmbed OEmbed, providerFallbacks []func(*Interna
for _, fallback := range providerFallbacks {
out.Color = coalesce([]string{in.metaThemeColor, in.urlProviderMetaThemeColor})
out.Service = coalesce([]string{oEmbed.ProviderName, in.ogSiteName, in.urlProviderOgSiteName, in.urlProviderMetaTitle, in.urlProviderTitle})
out.ServiceName = coalesce([]string{oEmbed.ProviderName, in.ogSiteName, in.urlProviderOgSiteName, in.urlProviderMetaTitle, in.urlProviderTitle})
out.ServiceIcon = resolve(in.url, coalesce([]string{in.linkFavicon, in.urlProviderLinkFavicon, in.urlProviderIconPng, in.urlProviderIconIco}))
if out.Service != "" && out.ServiceIcon != "" {
if out.ServiceName != "" && out.ServiceIcon != "" {
break
}
fallback(&in)
......@@ -283,235 +285,379 @@ func main() {
matchers := map[string]func(*InternalData, string, string){}
matchers["meta/twitter:card"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterCard == "" {
internalData.twitterCard = content
}
}
matchers["meta/twitter:site"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterSite == "" {
internalData.twitterSite = content
}
}
matchers["meta/twitter:site:id"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterSiteId == "" {
internalData.twitterSiteId = content
}
}
matchers["meta/twitter:creator"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterCreator == "" {
internalData.twitterCreator = content
}
}
matchers["meta/twitter:creator:id"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterCreatorId == "" {
internalData.twitterCreatorId = content
}
}
matchers["meta/twitter:description"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterDescription == "" {
internalData.twitterDescription = content
}
}
matchers["meta/twitter:title"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterTitle == "" {
internalData.twitterTitle = content
}
}
matchers["meta/twitter:image"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterImage == "" {
internalData.twitterImage = content
}
}
matchers["meta/twitter:image:src"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterImage == "" {
internalData.twitterImage = content
}
}
matchers["meta/twitter:image:alt"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterImageAlt == "" {
internalData.twitterImageAlt = content
}
}
matchers["meta/twitter:player"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterPlayer == "" {
internalData.twitterPlayer = content
}
}
matchers["meta/twitter:player:width"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterPlayerWidth == "" {
internalData.twitterPlayerWidth = content
}
}
matchers["meta/twitter:player:height"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterPlayerHeight == "" {
internalData.twitterPlayerHeight = content
}
}
matchers["meta/twitter:player:stream"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterPlayerStream == "" {
internalData.twitterPlayerStream = content
}
}
matchers["meta/twitter:app:name:iphone"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppNameIphone == "" {
internalData.twitterAppNameIphone = content
}
}
matchers["meta/twitter:app:id:iphone"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppIdIphone == "" {
internalData.twitterAppIdIphone = content
}
}
matchers["meta/twitter:app:url:iphone"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppUrlIphone == "" {
internalData.twitterAppUrlIphone = content
}
}
matchers["meta/twitter:app:name:ipad"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppNameIpad == "" {
internalData.twitterAppNameIpad = content
}
}
matchers["meta/twitter:app:id:ipad"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppIdIpad == "" {
internalData.twitterAppIdIpad = content
}
}
matchers["meta/twitter:app:url:ipad"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppUrlIpad == "" {
internalData.twitterAppUrlIpad = content
}
}
matchers["meta/twitter:app:name:googleplay"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppNameGoogleplay == "" {
internalData.twitterAppNameGoogleplay = content
}
}
matchers["meta/twitter:app:id:googleplay"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppIdGoogleplay == "" {
internalData.twitterAppIdGoogleplay = content
}
}
matchers["meta/twitter:app:url:googleplay"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterAppUrlGoogleplay == "" {
internalData.twitterAppUrlGoogleplay = content
}
}
matchers["meta/twitter:label1"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterLabel1 == "" {
internalData.twitterLabel1 = content
}
}
matchers["meta/twitter:data1"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterData1 == "" {
internalData.twitterData1 = content
}
}
matchers["meta/twitter:label2"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterLabel2 == "" {
internalData.twitterLabel2 = content
}
}
matchers["meta/twitter:data2"] = func(internalData *InternalData, content string, extra string) {
if internalData.twitterData2 == "" {
internalData.twitterData2 = content
}
}
matchers["meta/og:url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogUrl == "" {
internalData.ogUrl = content
}
}
matchers["meta/og:title"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogTitle == "" {
internalData.ogTitle = content
}
}
matchers["meta/og:description"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogDescription == "" {
internalData.ogDescription = content
}
}
matchers["meta/og:type"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogType == "" {
internalData.ogType = content
}
}
matchers["meta/og:locale"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogLocale == "" {
internalData.ogLocale = content
}
}
matchers["meta/og:video"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogVideo == "" {
internalData.ogVideo = content
}
}
matchers["meta/og:video:url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogVideoUrl == "" {
internalData.ogVideoUrl = content
}
}
matchers["meta/og:video:secure_url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogVideoSecureUrl == "" {
internalData.ogVideoSecureUrl = content
}
}
matchers["meta/og:video:type"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogVideoType == "" {
internalData.ogVideoType = content
}
}
matchers["meta/og:video:width"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogVideoWidth == "" {
internalData.ogVideoWidth = content
}
}
matchers["meta/og:video:height"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogVideoHeight == "" {
internalData.ogVideoHeight = content
}
}
matchers["meta/og:image"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogImage == "" {
internalData.ogImage = content
}
}
matchers["meta/og:image:url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogImageUrl == "" {
internalData.ogImageUrl = content
}
}
matchers["meta/og:image:secure_url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogImageSecureUrl == "" {
internalData.ogImageSecureUrl = content
}
}
matchers["meta/og:image:type"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogImageType == "" {
internalData.ogImageType = content
}
}
matchers["meta/og:image:width"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogImageWidth == "" {
internalData.ogImageWidth = content
}
}
matchers["meta/og:image:height"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogImageHeight == "" {
internalData.ogImageHeight = content
}
}
matchers["meta/og:audio"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogAudio == "" {
internalData.ogAudio = content
}
}
matchers["meta/og:audio:url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogAudioUrl == "" {
internalData.ogAudioUrl = content
}
}
matchers["meta/og:audio:secure_url"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogAudioSecureUrl == "" {
internalData.ogAudioSecureUrl = content
}
}
matchers["meta/og:audio:type"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogAudioType == "" {
internalData.ogAudioType = content
}
}
matchers["meta/og:site_name"] = func(internalData *InternalData, content string, extra string) {
if internalData.ogSiteName == "" {
internalData.ogSiteName = content
}
}
matchers["meta/article:author"] = func(internalData *InternalData, content string, extra string) {
if internalData.articleAuthor == "" {
internalData.articleAuthor = content
}
}
matchers["meta/article:publisher"] = func(internalData *InternalData, content string, extra string) {
if internalData.articlePublisher == "" {
internalData.articlePublisher = content
}
}
matchers["meta/article:published_time"] = func(internalData *InternalData, content string, extra string) {
if internalData.articlePublishedTime == "" {
internalData.articlePublishedTime = content
}
}
matchers["meta/soundcloud:user"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudUser == "" {
internalData.soundcloudUser = content
}
}
matchers["meta/soundcloud:play_count"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudPlayCount == "" {
internalData.soundcloudPlayCount = content
}
}
matchers["meta/soundcloud:download_count"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudDownloadCount == "" {
internalData.soundcloudDownloadCount = content
}
}
matchers["meta/soundcloud:comments_count"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudCommentsCount == "" {
internalData.soundcloudCommentsCount = content
}
}
matchers["meta/soundcloud:like_count"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudLikeCount == "" {
internalData.soundcloudLikeCount = content
}
}
matchers["meta/soundcloud:sound_count"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudSoundCount == "" {
internalData.soundcloudSoundCount = content
}
}
matchers["meta/soundcloud:follower_count"] = func(internalData *InternalData, content string, extra string) {
if internalData.soundcloudFollowerCount == "" {
internalData.soundcloudFollowerCount = content
}
}
matchers["meta/title"] = func(internalData *InternalData, content string, extra string) {
if internalData.metaTitle == "" {
internalData.metaTitle = content
}
}
matchers["meta/description"] = func(internalData *InternalData, content string, extra string) {
if internalData.metaDescription == "" {
internalData.metaDescription = content
}
}
matchers["meta/author"] = func(internalData *InternalData, content string, extra string) {
if internalData.metaAuthor == "" {
internalData.metaAuthor = content
}
}
matchers["meta/theme-color"] = func(internalData *InternalData, content string, extra string) {
if internalData.metaThemeColor == "" {
internalData.metaThemeColor = content
}
}
matchers["link/icon"] = func(internalData *InternalData, content string, extra string) {
if internalData.linkFavicon == "" {
internalData.linkFavicon = content
}
}
matchers["link/author"] = func(internalData *InternalData, content string, extra string) {
if internalData.linkAuthor == "" {
internalData.linkAuthor = content
}
}
matchers["link/alternate"] = func(internalData *InternalData, content string, extra string) {
if extra == "application/json+oembed" {
if internalData.oembedUrl == "" {
internalData.oembedUrl = content
}
}
}
matchers["title"] = func(internalData *InternalData, content string, extra string) {
if internalData.title == "" {
internalData.title = content
}
}
providerMatchers := map[string]func(*InternalData, string, string){}
providerMatchers["meta/og:site_name"] = func(internalData *InternalData, content string, extra string) {
if internalData.urlProviderOgSiteName == "" {
internalData.urlProviderOgSiteName = content
}
}
providerMatchers["meta/title"] = func(internalData *InternalData, content string, extra string) {
if internalData.urlProviderMetaTitle == "" {
internalData.urlProviderMetaTitle = content
}
}
providerMatchers["meta/theme-color"] = func(internalData *InternalData, content string, extra string) {
if internalData.urlProviderMetaThemeColor == "" {
internalData.urlProviderMetaThemeColor = content
}
}
providerMatchers["link/icon"] = func(internalData *InternalData, content string, extra string) {
if internalData.urlProviderLinkFavicon == "" {
internalData.urlProviderLinkFavicon = content
}
}
providerMatchers["title"] = func(internalData *InternalData, content string, extra string) {
if internalData.urlProviderTitle == "" {
internalData.urlProviderTitle = content
}
}
loadData := func(requestedUrl string) (Data, error) {
fmt.Printf("Searching for %s\n", requestedUrl)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment