diff --git a/go.mod b/go.mod
index c14c2c67..5ff08d7d 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module github.com/Defacto2/server
go 1.21
require (
- github.com/Defacto2/releaser v0.5.0
+ github.com/Defacto2/releaser v1.0.1
github.com/caarlos0/env/v7 v7.1.0
github.com/carlmjohnson/versioninfo v0.22.5
github.com/evanw/esbuild v0.18.15
diff --git a/go.sum b/go.sum
index 74ccae35..071d854b 100644
--- a/go.sum
+++ b/go.sum
@@ -63,8 +63,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM=
github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/Defacto2/releaser v0.5.0 h1:0sDQFh7Mquzo6b2KzEDz7cT4MG5PWpFPkGR5l+doXXU=
-github.com/Defacto2/releaser v0.5.0/go.mod h1:qotKWtxM+tbp7uQaMX1/EiV+h0JoyujFn+4bxkWSihA=
+github.com/Defacto2/releaser v1.0.1 h1:LNYM00IVi1QUp5Ba3UdIYo46Ho8qser+aA73frbALTg=
+github.com/Defacto2/releaser v1.0.1/go.mod h1:qotKWtxM+tbp7uQaMX1/EiV+h0JoyujFn+4bxkWSihA=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
diff --git a/handler/app/funcmap.go b/handler/app/funcmap.go
index b9f82003..48c72af3 100644
--- a/handler/app/funcmap.go
+++ b/handler/app/funcmap.go
@@ -7,8 +7,8 @@ import (
"html/template"
"github.com/Defacto2/releaser"
+ "github.com/Defacto2/releaser/initialism"
"github.com/Defacto2/server/internal/helper"
- "github.com/Defacto2/server/internal/initialism"
)
const (
diff --git a/handler/app/render_files.go b/handler/app/render_files.go
index f99c8ff6..62724005 100644
--- a/handler/app/render_files.go
+++ b/handler/app/render_files.go
@@ -12,8 +12,8 @@ import (
"strconv"
"github.com/Defacto2/releaser"
+ "github.com/Defacto2/releaser/initialism"
"github.com/Defacto2/server/internal/helper"
- "github.com/Defacto2/server/internal/initialism"
"github.com/Defacto2/server/internal/postgres"
"github.com/Defacto2/server/internal/postgres/models"
"github.com/Defacto2/server/internal/sixteen"
@@ -238,7 +238,7 @@ func Releasers(z *zap.SugaredLogger, c echo.Context, uri string) error {
data := emptyFiles()
data["title"] = "Files for " + s
data["h1"] = s
- data["lead"] = initialism.Join(uri)
+ data["lead"] = initialism.Join(initialism.Path(uri))
data["logo"] = s
data["description"] = "The collection of files for " + s + "."
data["demozoo"] = strconv.Itoa(int(zoo.Find(uri)))
@@ -246,7 +246,7 @@ func Releasers(z *zap.SugaredLogger, c echo.Context, uri string) error {
data[records] = fs
switch uri {
case "independent":
- data["lead"] = initialism.Join(uri) +
+ data["lead"] = initialism.Join(initialism.Path(uri)) +
", independent releases are files with no group or releaser affiliation." +
`
In the scene's early years,` +
` releasing documents or software cracks under a personal alias or a` +
diff --git a/handler/app/render_search.go b/handler/app/render_search.go
index 987402fd..2d7f6c7e 100644
--- a/handler/app/render_search.go
+++ b/handler/app/render_search.go
@@ -8,8 +8,8 @@ import (
"strings"
"github.com/Defacto2/releaser"
+ "github.com/Defacto2/releaser/initialism"
"github.com/Defacto2/server/internal/helper"
- "github.com/Defacto2/server/internal/initialism"
"github.com/Defacto2/server/internal/postgres"
"github.com/Defacto2/server/model"
"github.com/labstack/echo/v4"
@@ -142,7 +142,7 @@ func SearchReleaser(z *zap.SugaredLogger, c echo.Context) error {
id := strings.TrimSpace(v.Name)
slug := helper.Slug(id)
name := releaser.Link(slug)
- ism := initialism.Initialism(slug)
+ ism := initialism.Initialism(initialism.Path(slug))
opt := name
if len(ism) > 0 {
opt = fmt.Sprintf("%s (%s)", name, strings.Join(ism, ", "))
diff --git a/internal/initialism/initialism.go b/internal/initialism/initialism.go
deleted file mode 100644
index 264ca3bb..00000000
--- a/internal/initialism/initialism.go
+++ /dev/null
@@ -1,288 +0,0 @@
-// Package initialism provides a list of initialisms for releasers of The Scene.
-package initialism
-
-import "strings"
-
-// URI is a the URL slug of the releaser.
-type URI string
-
-// List is a map of initialisms to releasers.
-type List map[URI][]string
-
-// all initialisms should be in their stylized form.
-var initialisms = List{
- "2000ad": {"2KAD", "2000 AD"},
- "aces-of-ansi-art": {"AAA"},
- "acid-productions": {"ACiD", "ANSi Creators in Demand"},
- "advanced-art-of-cracking-group": {"AAOCG"},
- "advanced-pirate-technology": {"APT"},
- "affinity": {"AFT"},
- "air": {"Team AiR", "Addiction In Releasing"},
- "alpha-flight": {"AFL"},
- "amnesia": {"AMN"},
- "anemia": {"ANM"},
- "arab-team-4-reverse-engineering": {"AT4RE"},
- "arrogant-couriers-with-essays": {"ACE"},
- "art-of-reverse-engineering": {"AORE"},
- "artists-in-revolt": {"AiR"},
- "backlash": {"BLH"},
- "bad-ass-dudes": {"BAD"},
- "bentley-sidwell-productions": {"BSP"},
- "blades-of-steel": {"BOS", "Blades"},
- "black-squadron": {"BS"},
- "blizzard": {"BLZ", "blizz"},
- "bitchin-ansi-design": {"BAD"},
- "boys-from-company-c": {"BCC"},
- "buds-biased-utils-report": {"utils"},
- "canadian-pirates-inc": {"CPI"},
- "cd-images-for-the-elite": {"CiFE"},
- "celerity-utilities-division": {"CUD"},
- "cheat-requests-for-the-underground-elite": {"CRUE"},
- "chaos": {"CHS"},
- "class": {"CLS"},
- "classic": {"CLS"},
- "chemical-reaction": {"CRO"},
- "couriers-of-pirated-software": {"COPS"},
- "courier-weektop-scorecard": {"CWS"},
- "crackers-in-action": {"CIA"},
- "crack-in-morocco": {"CiM"},
- "creators-of-intense-art": {"CIA"},
- "crude": {"CRD"},
- "cybercrime-international-network": {"CCi", "CyberCrime Inc."},
- "darksiders": {"DS"},
- "da-breaker-crew": {"DBC"},
- "damn-excellent-ansi-design": {"DeAD"},
- "damn-excellent-ansi-designers": {"DeAD"}, // Correct
- "delirium-tremens-group": {"DTG"},
- "dead-on-arrival": {"DOA"},
- "dead-pirates-society": {"DPS"},
- "defacto": {"DF"},
- "defacto2": {"DF2"},
- "deviance": {"DEV", "DVN"},
- "devotion": {"DEV", "devot"},
- "digerati": {"DGT"},
- "digital-artists-of-the-rare-kind": {"DARK"},
- "direct-from-stars": {"DFS"},
- "distinct": {"DTC", "DTN"},
- "divide-by-zero": {"DBZ"},
- "divine": {"DVN"},
- "drunken-rom-group": {"DRG", "Drunken"},
- "drink-or-die": {"DOD"},
- "dvt": {"Devotion", "TeamDVT"},
- "dynasty": {"DYN"},
- "dynamix": {"DNX"},
- "dytec": {"DYT", "DTC"},
- "dvniso": {"Deviance"},
- "eagle-soft-incorporated": {"ESI"},
- "ebola-virus-crew": {"EVC"},
- "eclipse": {"ECL"},
- "eximius": {"XMS"},
- "empire-of-darkness": {"EOD"},
- "embrace": {"EMB"},
- "empire": {"EMP"},
- "energy": {"NRG"},
- "equinox": {"EQX"},
- "esp-pirates": {"ESP"},
- "fairlight": {"FLT"},
- "fairlight-dox": {"FDX", "FLTDOX"},
- "faith": {"FTH"},
- "fantastic-4-cracking-group": {"F4CG"},
- "fast-action-trading-elite": {"fATE"},
- "fighting-for-fun": {"fff"},
- "fight-only-for-freedom": {"FOFF"},
- "file-rappers": {"FR"},
- "flying-horse-cracking-force": {"FHCF"},
- "future-crew": {"FC"},
- "future-brain-inc": {"FBi"},
- "fusion": {"FSN"},
- "genesis": {"GNS"},
- "graphic-revolution-in-progress": {"GRiP"},
- "elite-couriers-group": {"ECG"},
- "epsilon": {"EPS"},
- "fyllecell": {"FLC"},
- "ghost-riders": {"GRS"},
- "graphics-rendered-in-magnificence": {"GRiM"},
- "hard-to-beat-team": {"HTB"},
- "haze": {"HZ"},
- "highroad": {"HR"},
- "hipe": {"HPE"},
- "hoodlum": {"HLM"},
- "humble-dox": {"The Humble Guys DOX"},
- "hybrid": {"HYB"},
- "hype": {"HYP"},
- "kalisto": {"KAL"},
- "kyrie-eleison": {"KE", "KEISO"},
- "illusion": {"iLL"},
- "independent": {"IND", "individual"},
- "independent-crackers-union": {"ICU"},
- "insane-creators-enterprise": {"iCE"},
- "international-network-of-crackers": {"INC"},
- "international-cracking-crew": {"iCC"},
- "inc-documentation-division": {"IDD"},
- "inc-utility-division": {"IUD"},
- "influence": {"iNF"},
- "infinity": {"INF"},
- "jrp": {"JRP"},
- "just-the-facts": {"JTF"},
- "laxity": {"LXT"},
- "legacy": {"LGC", "LGY"},
- "legend": {"LGD", "LEG"},
- "licensed-to-draw": {"LTD"},
- "light-speed-distributors": {"LSD"},
- "lightforce": {"LFC", "LF"},
- "linezer0": {"Lz0", "Linezero"},
- "live-now-die-later": {"LnDL"},
- "lucid": {"LCD"},
- "malicious-art-denomination": {"MAD"},
- "malice": {"MAL"},
- "majic-12": {"M12"},
- "millennium": {"MnM"},
- "mutual-assured-destruction": {"MAD"},
- "manifest": {"MFD", "Manifest Destiny"},
- "motiv8": {"M8"},
- "mirage": {"MIR"},
- "myth*deviance": {"MDVN"},
- "national-elite-underground-alliance": {"NEUA", "North Eastern Underground Alliance"},
- "national-underground-application-alliance": {"NUAA"},
- "napalm": {"NPM"},
- "netrunners": {"NR"},
- "new-york-crackers": {"NYC"},
- "nexus": {"NXS", "NX"},
- "nokturnal-trading-alliance": {"NTA"},
- "north-american-pirate_phreak-association": {"NAPPA"},
- "nrp": {"NRP"},
- "oddity": {"ODT"},
- "old-warez-inc": {"OWI"},
- "orion": {"ORN"},
- "origin": {"OGN"},
- "originally-funny-guys": {"OFG"},
- "paradigm": {"PDM", "Zeus"},
- "paradox": {"PDX"},
- "pentagram": {"PTG"},
- "phoenix": {"PHX"},
- "phrozen-crew": {"PC"},
- "pirates-analyze-warez": {"PAW"},
- "pirates-gone-crazy": {"PGC"},
- "pirates-sick-of-initials": {"PSi"},
- "pirates-with-attitudes": {"PWA"},
- "prophecy": {"PCY"},
- "ptl-club": {"PTL"},
- "prestige": {"PSG", "PST"},
- "public-enemy": {"PE"},
- "public-enemy*red-sector-inc": {"PE", "PE/RSI"},
- "razordox": {"RZR", "Razor"},
- "razor-1911": {"RZR", "Razor"},
- "razor-1911-cd-division": {"RazorCD"},
- "razor-1911-demo": {"RZR", "Razor"},
- "reality-check-network": {"RCN"},
- "rebels": {"RBS"},
- "red-sector-inc": {"RSI"},
- "release-on-rampage": {"RoR"},
- "reloaded": {"RLD"},
- "reflux": {"RLX"},
- "relentless-pursuit-of-magnificence": {"RPM"},
- "request-to-send": {"RTS"},
- "resistance-is-futile": {"RiF"},
- "resurrection": {"RSR", "RES"},
- "revenge-crew": {"REV"},
- "reverse-2-revolutionize": {"R2R"},
- "reverse-engineers-dream": {"RED"},
- "reverse-engineering-in-software": {"REiS"},
- "reverse-engineering-passion-team": {"REPT"},
- "rise-in-superior-couriering": {"RiSC"},
- "seek-n-destroy": {"SND", "Seek and Destroy"},
- "skid-row": {"SR", "Skidrow"},
- "scoopex": {"SCX", "SPX"},
- "scandal": {"SCL"},
- "scienide": {"SCi"},
- "silicon-dream-artists": {"SDA"},
- "share-and-enjoy": {"SAE"},
- "shitonlygerman": {"SOG", "Scheisse Deutsch Only"},
- "skillion": {"SKN"},
- "sodom": {"SDM"},
- "software-chronicles-digest": {"SCD"},
- "software-pirates-inc": {"SPI"},
- "superior-art-creations": {"SAC"},
- "surprise-productions": {"SP"},
- "team-technotrogens": {"TT3", "Team T3"},
- "the-crazed-asylum": {"TCA"},
- "the-console-division": {"TCD"},
- "the-council": {"CNC"},
- "the-dream-team": {"TDT"},
- "the-dream-team*skid-row": {"TDT/SR"},
- "the-dream-team*tristar-ampersand-red-sector-inc": {"TDT/TRSi"},
- "the-firm": {"FiRM", "FRM"},
- "the-force-team": {"TFT"},
- "the-game-review": {"TGR"},
- "the-game-scene-chart": {"TGSC"},
- "the-grand-council": {"TGC"},
- "the-humble-guys": {"THG", "Humble"},
- "the-lamerz-group": {"TLG"},
- "the-millennium-group": {"TMG"},
- "the-net-monkey-weekly-report": {"TNMWR"},
- "the-nova-team": {"TNT"},
- "the-one-and-only": {"TOAO"},
- "the-outlaws": {"TOL", "OL"},
- "the-players-club": {"TPC"},
- "the-reversers-ultimate-epidemic": {"tRUE"},
- "the-reviewers-guild": {"TRG"},
- "the-sabotage-rebellion-hackers": {"TSRh"},
- "the-software-innovation-network": {"SIN"},
- "the-sysops-association-network": {"TSAN"},
- "the-unbiased-dox-report": {"DR"},
- "the-underground-council": {"UGC"},
- "the-untouchables": {"UNT"},
- "thg-fx": {"The Humble Guys FX"},
- "tristar": {"TRS"},
- "tristar-ampersand-red-sector-inc": {"TRSi", "TRS", "Tristar"},
- "tyranny": {"TYR"},
- "ultra-tech": {"UT"},
- "under-seh-team": {"UST"},
- "union": {"UNi"},
- "united-artist-association": {"UAA"},
- "united-couriers": {"UC"},
- "united-cracking-force": {"UCF"},
- "united-group-international": {"UGI"},
- "united-reverse-engineering-team": {"URET"},
- "united-software-association*fairlight": {"USA/FLT"},
- "united-software-association": {"USA"},
- "united-states-courier-report": {"USCR"},
- "underpl": {"UPL"},
- "unleashed": {"UNL"},
- "untouchables": {"UNT"},
- "vengeance": {"VGN", "VEN"},
- "visions-of-reality": {"VOR"},
- "virility": {"VRL"},
- "wave": {"The Wave", "CNC"},
- "wicked": {"WKD"},
- "x_force": {"XF"},
- "xtreeme": {"XT"},
- "zero-waiting-time": {"ZWT"},
- "zone": {"z0ne"},
-}
-
-// Join returns the initialisms for the URI as a comma separated string.
-func Join(uri string) string {
- i := Initialism(uri)
- if len(i) == 0 {
- return ""
- }
- return strings.Join(i, ", ")
-}
-
-// Initialism returns the initialism for the URI.
-// If the URI does not have an initialism then an empty string is returned.
-func Initialism(uri string) []string {
- return initialisms[URI(uri)]
-}
-
-// Initialisms returns the list of initialisms.
-func Initialisms() List {
- return initialisms
-}
-
-// IsInitialism returns true if the URI has an initialism.
-func IsInitialism(uri string) bool {
- _, ok := initialisms[URI(uri)]
- return ok
-}