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 -}