diff --git a/cache/cache.go b/cache/cache.go index 0ee3bab..17e666c 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -32,15 +32,17 @@ const ( // aliases is a map of known project aliases // to make finding project more easy. var aliases = map[string]string{ - "hugo": "gohugoio/hugo", - "gutenberg": "keats/gutenberg", - "zola": "getzola/zola", + "hugo": "gohugoio/hugo", + "gutenberg": "keats/gutenberg", + "zola": "getzola/zola", + "dart_sass_embedded": "sass/dart-sass-embedded", } type template struct { - Range string - Tarball string - Bin string + Range string + Tarball string + Bin string + CleanVersion bool } type templates map[string][]template @@ -73,8 +75,20 @@ type Project struct { // URL returns the URL to download the tarball from. func (p *Project) URL() string { - tarballName := fmt.Sprintf(p.template.Tarball, p.Name, p.cleanVersion) - return fmt.Sprintf(tarballTemplate, p.FullName, p.Version, tarballName) + var tarballName string + // All have version in the template, most have name. + if strings.Count(p.template.Tarball, "%s") == 1 { + tarballName = fmt.Sprintf(p.template.Tarball, p.cleanVersion) + } else { + tarballName = fmt.Sprintf(p.template.Tarball, p.Name, p.cleanVersion) + } + + version := p.Version + if p.template.CleanVersion { + version = p.cleanVersion + } + + return fmt.Sprintf(tarballTemplate, p.FullName, version, tarballName) } // BinaryName returns the name of the binary to look for @@ -118,6 +132,7 @@ func (c *Cache) newProject(name, versionString string) (*Project, error) { var t *template projectTemplates, ok := c.templates[nwo[1]] + if ok { for _, tmpl := range projectTemplates { constraint, err := version.NewConstraint(tmpl.Range) diff --git a/statik/statik.go b/statik/statik.go index de654cc..cb201b1 100644 --- a/statik/statik.go +++ b/statik/statik.go @@ -7,6 +7,6 @@ import ( ) func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x17\xaekN\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00 \x00templates.tomlUT\x05\x00\x01\xbf\xd7\x86\\\xac\x92\xd1N\x830\x14@\xdf\xf9\x8a\x9b&\xbc\xb5\xd7\xceu\xd5\x07\xf1\x0b\xfc\x03cH M%\xe2%\x81v\x92\x99\xfd\xbb\x01\x0c\x99i\xe7\x96(\x8f@\xce\xe9\xe9\xbd\xaf\xc1uP\xc0s\x06\xf0 \xbd!g\xa1\x00\xf6XH\xdcl9\x88\xf1^\x97Z\x89@o\xd4}\x90X&\xee(D\xd3Y5\x0c\x8e\x93\xf6\xd0\xb5&\xbd\xc8;\x94\x7fSM\xe8\xc5\xf2\x15\x00\x00\xff\xffPK\x07\x08L\xa8}0\xec\x00\x00\x00.\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x17\xaekNL\xa8}0\xec\x00\x00\x00.\x03\x00\x00\x0e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00templates.tomlUT\x05\x00\x01\xbf\xd7\x86\\PK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00E\x00\x00\x001\x01\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\xbd>iT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00 \x00templates.tomlUT\x05\x00\x01\x16](b\xac\x93\xcdN\xeb0\x10F\xf7}\x8a\x91\xa5\xecb_\xf7\xd6\x0d Q\x9e\x805\x1b\x84,\x07\x8fLD\xeaH\xfe)QQ\xdf\x1d9)U\xab\xb8\xb4\x12d\x99\x8c\xbf3'3~\x8b\xa6\x83\x15<\xcf\x00>\xc1)k\x10V@\x1eV\x9c\xcd\x17%\xdcs6\xafH \x00A\xb9Z\xb5m\xfaXxYx\xd966\xf6R\xadu%XP\x8e\x99-)\xa1nl\xb6\xe2\xdf\xe4\x0d\x81]y\xca<\xa0\x0eO\x9eI+Q7\x81\x85c`\xb2\x98&\x0e\x167\x83\xc5\x7f\xce\x16\xa4\x9c&>\x1e'\xfe\x8d\xc5\x1eu\xc6bs\x0ezAe\xcc\x1d\\\xc4\x10\x7f\x9d\xca\xe5\x1f$~h\x16\xfb\x80V\xa3\xbe>\xfee631\xa0\xad\xd1\x99\xccZq\xc6\xd9r\x94\x98\xce\x83n\nO\xfb\xdbJV\x82F\xfbn\xbb\x0fK\xc7\x89\x1b\x1b'\xd39`\x08\xec\x12v\xdb\xb5*\xbf\xc8K\xc6\x7f\x87J\xd1{\x8aV.P\xaf\xbc\xa7\xb8\xaeQk\xd49\xe6\x9c\x89;&N\xa1\xe9\x90\xfc>D\x0b\xbf\xe7\xf5\x99\xeb\x93 \xf2\xa4\x9e\x94\xf0\xda\xa2\xb2O\xe8|\xd3\xa5\xa2\xe0\"\x8e-}\x05\x00\x00\xff\xffPK\x07\x08(\x0d\xf5.%\x01\x00\x00\xc2\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xbd>iT(\x0d\xf5.%\x01\x00\x00\xc2\x03\x00\x00\x0e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00templates.tomlUT\x05\x00\x01\x16](bPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00E\x00\x00\x00j\x01\x00\x00\x00\x00" fs.Register(data) } diff --git a/templates/templates.toml b/templates/templates.toml index 9ca8504..8d610b5 100644 --- a/templates/templates.toml +++ b/templates/templates.toml @@ -14,3 +14,8 @@ gutenberg = [ zola = [ { range = ">=0.5.0", tarball = "%s-v%s-x86_64-unknown-linux-gnu.tar.gz", bin = "zola" } ] + +dart-sass-embedded = [ + { range = ">=1.49.4", tarball = "sass_embedded-%s-linux-x64.tar.gz", bin = "dart_sass_embedded", cleanVersion = true } +] +