diff --git a/README.md b/README.md index 2c826e9..b943da1 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,15 @@ curl https://i.jpillora.com/! | bash *You can optionally add your own domain as a app custom domain.* +### Modifying the Installation Script for Host Your Own + +To modify the installation script for a host-your-own installation, you will need to do the following: + +1. Change line 11 of `handler/init.go` to reflect your github username (`_ "github.com/[YOUR-GITHUB-NAME-HERE]/installer/scripts"`) +1. Similarly, import your handler in `main.go` on line 8 (`"github.com/[YOUR-GITHUB-NAME-HERE]/installer/handler"`) +1. Change `go.mod` to your module name as well (`module github.com/[YOUR-GITHUB-NAME-HERE]/installer`) +1. Deploy to heroku + ### Homebrew Currently, installing via Homebrew does not work. Homebrew was intended to be supported with: diff --git a/handler/handler_github.go b/handler/handler_github.go index 5afb490..d022eff 100644 --- a/handler/handler_github.go +++ b/handler/handler_github.go @@ -103,7 +103,7 @@ func (h *Handler) getAssetsNoCache(q *query) error { //only binary containers are supported //TODO deb,rpm etc fext := getFileExt(url) - if fext != ".zip" && fext != ".gz" && fext != ".tar.gz" { + if fext != ".zip" && fext != ".gz" && fext != ".tar.gz" && fext != ".tgz" { continue } //match diff --git a/scripts/install.sh b/scripts/install.sh index 1e040a8..582b384 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -17,7 +17,7 @@ function install { MOVE="{{ .MoveToPath }}" RELEASE="{{ .Release }}" INSECURE="{{ .Insecure }}" - OUT_DIR="{{ if .MoveToPath }}/usr/local/bin{{ else }}$(pwd){{ end }}" + OUT_DIR="{{ if and .SudoMove .MoveToPath }}/usr/local/bin{{ else if .MoveToPath }}$HOME/.local/bin{{ else }}$(pwd){{ end }}" GH="https://github.com" #bash check [ ! "$BASH_VERSION" ] && fail "Please use bash instead" diff --git a/scripts/statik.go b/scripts/statik.go index ccf0326..8fdc476 100644 --- a/scripts/statik.go +++ b/scripts/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00@\x94iQ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00install.shUT\x05\x00\x01\x98\x8b\xa9_\x9cW\x7fO#9\x12\xfd\xdb\xfe\x14E\xa75\"w\xdb\x89\x98\x99\xe5V\xa0\x8c\xc4,Y@\x02\x12%auw\xa3\x11k\xda\xee\x8e5\xddv\x8f\xed\x0e0!\xdf\xfd\xe4\x1f\x9d\x84\xd0\xa0\x9b\x8d\x04\xea\xb8\xfc\xaa^W\x95_9\x9d\xbd\xfe\x1d\x17\xfd;\xa2\xe7xv5\xbe=\xbd\x98\x0c\xa2\xbe)+\xfb\xc7\x856\xa4((W\x11\xcej\x91\x1a.\x05\xa4\x05#\xa2\xae`\x89\x11K\xe7\x12T \x89\xca \x0eh\xf8\x04}\xca\x16}Q\x17\x05^m`\x19\xe1\x85\xc5\x048F\xa5\xce\x07\xf1Ap\x12\x0d\xb6>Q\xb38TJ\xaa#\x88K\x9dGp\xf0\xe9\xdd{\x8c\xd8\x037p\xb0\xed8\x90\xb4\xbe;\x9a\x19\xc3E\xae1\xba\x99\x0e'\x83h\xb9\x84\xde\x8df\nV\xab\x08\xa3\xf1dt\xe6\xd7\xc6J\xe6\x8a\x94~\xf9j\xf4\xe7\xd0/_\xc9\x05\x9b\xc911so\x99\x0c/\x87'\xd3`\x9c\xb0\x82\x11\xcd\xbc\xe5\xe2z:\xfc\xfdf\x12L\x17B\xb3\xb4V\xc16\xba\x99\xf94.\x97\xc0\xb3\x1d\xaf\xfdZ\xab~!SR\xd8\xbc/\x97\xc0\n\xe73\xde\xaf\xeei\xd7~\x17\xd4\xbb9;\x1fDsc*}\xd4\xef\xe7\xdc\xcc\xeb\xbb^*\xcb\x08\xa3\x8e-\x16\xa4s\x96~\xc3\xe8\x0b\xecA\x14\x7f>\x99\x9e\xdf\xfe9\x9cL/F\xd7\x11|\x85w\xef|\xbe\xa3\xb1\xe7\\k\x06\x0ee\x93\xc5\x08\x8d<0\xa1\x10\x07\xb6\xdb Y\x9b\xaa6@\xb9b\xa9\x91\xea\x11J\xae5\x17\xf9\xd1z\xb7eAY\xc5\x04e\"}\xf4\\~\x01\xa2u]2\xb8g@\x14\x03\x02\xda\x10A\x89\xa20\x1e]L\xff\x0d%I\xe7\\0\x8c\xee\xe7<\x9dC\xc6\x05\xddn\x16xz\n\xf1\x9dEH\xd3\x94\x96Y\xbe\x1e\xf4@T\xae\xdbQ\xde\xd4\x0e\xd3R\x99v\x94\xb3\xb4\x83\x8c\xdd\xd0\nr\x96vPZ\xbf\x12\xc8\x1a\xda!\xb4nG\xd0\xfa\x05\xe0l8\x1bD\x11F<\x83&\x9cz\xc6\xf1\x18\xcc\x9c \x8c\xfcNk\x8d0\xb2\xdb\xbf|\x81\xb8iZ\x18@dT\xcd\"\xf8\xfa\xd5\x03\xc0m\x8f\xcf\x863H\x12\x1e\xba9:\x86\x8c7\xae\x82\xcd1K:\x90\\\xdaCZ\xacy\xdc\xe7\xcc\xbc\xce\xc3Z\x7f\x9e\x87\x90\x89k\xac$e\xca\xf0\x8c\xa7\xc4\xb4q\xfa>J\x1c\x17\xcd0B>s\x82q3g\xca\xb1\xea\xbb\x14\xd9\x86\xdcN\xa4u\xd2q}6\x9aBg6:\x1d\xc1\xe7\xe9\xa9\x06\"(H\x87\xad\xa4\xe6\x0f\x1a\xa3\xd4\x9e\x9f\xbfjAJ\x06\x89\xfe\x0b\xb8\xc0\xe8\x94\xa8{.\xba0\x9a\x0e\"\xea\x9e\xa3\xe3c\x8c.\xb9\xa8\x1f\xfcja\x1f\xdd\xe2?\xba\xa1\x9c\xb5\xf8&\xe4\xbd\x00\xa9\x8f \xdeo\x1cv\xdd&\xa6I\xda\x10:\x99\xfc~\xee*\x1c\xb6\x94\xf0\x04\xb9b\x15\x1c~l\xcd\xb0\xdd?\x88HI\x0f?65\xd9E\x12U\xbe\x05Ue\x14r@T\xb98\xec/\xfe\xf5\x8a\x9f\x0f\xbf\x1d\xbe\xe1\xe7\xc3o\x87\xbb\x85h\xde\x99\xa8t\xbe\xf5\xd6e\xb7)A:\x97R3\xc8\x94,\xad|0\x03\x05\xd7\x06\xa3\x9b\xc9\xa5k\xf4?f\xff\x19\x0f\xdd\x93\xabC\x14/G\xd3\xd5m\xbc\xb4\x11W\x118\x05UD\xe4\x0cz'\x16\xaea\xb5\xc2\xc8\x89\xf2h\n\xab\xd5\xad}:Q\xa9\x13\xf4.F\xde\xb1\x1b\x0b\x93K\xaf\xb3M\x0c\xbb8{\xac\x82\x88\xa3\xe3\xe3\xe5\x92 j\xdd\xadKx-\x03\xc9L*\xa8\nb2\xa9Jp\x9c\x92\x86\xd3V9si\xe0fr\xb9\x07T\xde\x8bB\x12\n\xdc\xf4z\xbd0\xdd\x12\x01\xad\x13\xe2\xc2\xb7)\x17\xf9f:\x9c\x06\x07a\xd1\x8d\x08\x88\xed\x8c\xeb\xc7v\xaaA\x1cFU\x84Q\xf0y&e^0\x97\x8eNIL:g\x14j\xab\xe2\x90;\xcb/\x90\xf3\x05\x03\xc3K\x06FBJD\xca\x8a-j\xc0\x05\xfc\n\x9a\xa5RPm\xcb%\x15p\xbbx\x00\xef\xe1\x03|\x84_\x8f\x81J\x8c\x90.\x18\xab\xe0\x00\xa3\x0d\xb6\x17aD\xa5\x95\xfa\xcd+43\xbdg?\x9e\xa6\x7f\x0f\x8c:L\x18\xa6\xc0\xb0\xb2\xa2\\aT~\xa3\\AR\xad\xef\x14\x18\xa5t\xebK\x90\x11W7\xab!\xbd\xfc\xc7FB0\n\xb2\x9a\xff\xe0U\xbb\xb0:\x0b\x7f9+P\xc7Z*F\xe1\x8e\x0b\xa2\x1e1B\xd7'W\xc3A\x14/m\x92m\xdfmu\x9f\x8dj\x95\xe8\xbf\xae\xa5\xe2\xb3\xf3\xbe\xf27\x04\xddo\xea\xddo\xca\xd2\x8f\xad\xa3\x10b\xdd\x0e{\x18!7\x95\x93\x14\xbc\x98\xc57\x93\xcb\xc8\x9e6\xcb0\xa1\x90\xc0'\xf0\x05\xdeL\x85\xa6\x97\xecWG\xdb\x1d\xd5\xe7 1D\x85\xa4X\xe0\x8em'[\x1d'\xb2\xb6g\xec)\xe5\x0b\xab}J\xe6z\x93\x9auJ\x0dQ\xaf\x0dD\xd5\x9a\xd0\xbf]\x89\xf6\xb4\xd80?\x1e2H~2\x1d?x\xd5\xd2 \xb5x\x95\x977\xfd\xbf\xc4>\x81)+\x1b\xe4-Z\xc8\xfbL$$\xdf\xbf\xbf\x04x\xebf\xb7*_\xeein\xdeo\xbc\xea\xb3\xd7l\xe7\xbas\x01\xbe\xdd\x91\xd473\xdb\"\xed\x19/\x18\x98\xc7\x8a\x1d\x05\x1a\x8d\xb4kf\xfb t}g\x14cP\x10\x953m\xfc\xfe\xfd;.\xba\x18\xd9\x13\xfd\xf9\xe2z\x10\xef\xbb\xc9\xd7\x83\xc4:\x82\x0c\x9e\xc2E\x8f\xd6\xf0\xe4/o\x89p\xf5\xb7\xb7\x0f+AO\xee\xa2\x95d\xf0\xbe\xeb\xf5\xc0\xdef3\x88\xe2\xe02\x82M\x1aB\xf2d]\xf8[\xa5\x8b\xe5\xfe\xf9c\x0e\xfb\xdb\xdc\xd6\xa3\x89 m\xaf\xf4\xdch\xcf]\x81\x99\x13\x01\x07W\x9f\xd7\n\xb4Ok;\x1d\x9b\xa0kV\x07]H\n\x03\x07\xdb\xc5\x087\x13\xd9\x04\xcdd-(\xec\xaf\xb1\xa1\xd9vB\xad\xd9\x94rao0F\xc2\xf8dv\x0eRAzO1J\xe7\xa5\xa4\xf0\xcf\x87-\x0e\xebniL\xeb\xfa\x85\xc90\xad\xa9\xb4\x13\x07V+/\xc9~,\xe8\x9aJ; \\$O\xd2*\xf5\x96N\xbf\xc4;\xcczG\xb9\xd8\xd0h~)\xf4w\xe4\xab\\4|\xa0\xf3\xc7\xc5\xf5\xc9%Lg\xc3\xf1^3\x1d\xde\x18\x88\x8c\x021/G\"\xa3`\xe4\xd6P|\x16\xd7\xfdNq\x83\xa8\xf9\xd9\xb9\xc2\xe18\xe3\xff\x05\x00\x00\xff\xffPK\x07\x08B\xcdYJ\x06\x06\x00\x00\xfa\x0e\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00@\x94iQB\xcdYJ\x06\x06\x00\x00\xfa\x0e\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00install.shUT\x05\x00\x01\x98\x8b\xa9_PK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00A\x00\x00\x00G\x06\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00m\x848R\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00install.shUT\x05\x00\x01\xce\xa1\x0d`\x9cWmo\xdb8\x12\xfeL\xfe\x8a\x89,\x14\xc9\xdd\xcaB\xdann\x91\xc0\x05\xd2\x8d7 \x90\xc4\x86\xed,\xee\xae(\xb2\x8cHID%R%\xa9\xbc\xd4\xf1\x7f?\xf0E\xb6\xe38\xc1u\x0d$\x908\xf3\xcc<\x9c\x19\xceP\xbd\x9d\xf4\x96\x8b\xf4\x96\xe8\x12\xcf.\xc77'\xe7\x93A\x94\x9a\xba\xb1\x7f\\hC\xaa\x8ar\x15\xe1\xbc\x15\x99\xe1R@V1\"\xda\x06\xe6\x18\xb1\xac\x94\xa0jHT\x0eq@\xc3'H)\xbbKE[Ux\xb1\x82\xe5\x84W\x16\x13\xe0\x18\xd5\xba\x18\xc4\xfb\xc1H4X\xfbE\xdd\xe2P)\xa9\x0e!\xaeu\x11\xc1\xfe\xa7w\xef1b\x0f\xdc\xc0\xfe\xba\xe1@\xd2\xda\xeeif\x0c\x17\x85\xc6\xe8z:\x9c\x0c\xa2\xf9\x1c\xfa\xd7\x9a)X,\"\x8c\xc6\x93\xd1\xa9_\x1b+Y(R\xfb\xe5\xcb\xd1\x9fC\xbf|)\xef\xd8L\x8e\x89)\xbdd2\xbc\x18\x1eO\x83p\xc2*F4\xf3\x92\xf3\xab\xe9\xf0\xf7\xebI\x10\x9d\x0b\xcd\xb2V\x05\xd9\xe8z\xe6\xc38\x9f\x03\xcf\x81\x08\n\xfdiK\xa5\xb5\xbe\xe1#m\xb5J+\x99\x91\xcafa>\x07VifA\xcf\xd5\xe2\xb3\xd1\xe50\xed\xbfP\\,\xe2\xdd\xe6\x9e\xee\xd9wA\xbd\xf7\xd3\xb3AT\x1a\xd3\xe8\xc34-\xb8)\xdb\xdb~&\xeb\x08\xa3\x9e\xcd1d%\xcb\xbea\xf4\x05v \x8a?\x1fO\xcfn\xfe\x1cN\xa6\xe7\xa3\xab\x08\xbe\xc2\xbbw>M\xd1\xd8o\xb5\xd5\x0c\x1c\xca\xc6\x98\x11\x1ay`B!\x0e\x9b\\\x07\xc9\xd64\xad\x01\xca\x15\xcb\x8cT\x8fPs\xad\xb9(\x0e\x97\xda\x96\x05e\x0d\x13\x94\x89\xec\xd1s\xf9\x05\x88\xd6m\xcd\xe0\x9e\x01Q\x0c\x08hC\x04%\x8a\xc2xt>\xfd7\xd4$+\xb9`\x18\xdd\x97<+!\xe7\x82\xae\xd7\x18<=\x05\xffN\"\xa4\xe9*\x82Y\xbe\x1e\xf4@T\xa1\xb7\xa3\xbch;LKe\xb6\xa3\x9cd;\xc8X\x85\xad '\xd9\x0e\xca\xdaW\x1cY\xc1v\x08m\xb7#h\xfb\x02p:\x9c\x0d\xa2\x08#\x9eC\xe7N=\xe3x\x04\xa6d\x02#\xafi\xa5\x11FV\xfd\xcb\x17\x88\xbbZ\x87\x01DF\xb5,\x82\xaf_=\x00\x9cz|:\x9cA\x92\xf0p\x08\xa2#\xc8yg*\xc8\x1c\xb3\xa4\x07\xc9\x85=\xdb\xd5\x92\xc7}\xc1\xcc\xeb<\xac\xf4\xe7y\x08\x99\xb8\xc2J2\xa6\x0c\xcfyF\xcc6N\xdfG\x89\xe3\xa2\x19F\xc8GN0nJ\xa6\x1c\xab\xd4\x85\xc8\x16\xe4z \xad\x91\x9e\xab\xb3\xd1\x14z\xb3\xd1\xc9\x08>OO\xb4;\xe3\xd2a\x1b\xa9\xf9\x83\xc6(\xb3\xe7\xe7\xafV\x90\x9aA\xa2\xff\x02.0:!\xea\x9e\x8b=\x18M\x07\x11u\xcf\xd1\xd1\x11F\x17\\\xb4\x0f~\xb5\xb2\x8fn\xf1\x1f{!\x9d\xad\xf8&\xe4\xbd\x00\xa9\x0f!\xde\xed\x0c\xee9%\xa6I\xd6\x11:\x9e\xfc~\xe62\x1cTjx\x82B\xb1\x06\x0e>n\x8d\xb0\xd5\x1fD\xa4\xa6\x07\x1f\xbb\x9cl\"\x89\xaa\xdf\x82\xaa:\n1 \xaa\xbe;H\xef\xfe\xf5\x8a\x9d\x0f\xbf\x1d\xbca\xe7\xc3o\x07\x9b\x89\xe8\xf6LTV\xae\xed\xba\xde\xebR\x90\x95Rj\x06\xb9\x92\xb5m\x1f\xcc@\xc5\xb5\xc1\xe8zr\xe1\n\xfd\x8f\xd9\x7f\xc6C\xf7\xe4\xf2\x10\xc5\xf3\xd1tq\x13\xcf\xad\xc7E\x04\xae\x83*\"\n\x06\xfdc\x0b\xd7\xb0X`\xe4z\xf9h\n\x8b\xc5\x8d}:V\x99\x9b\x03{\x18y\xc3n\x9aL.|\x9f\xed|\xd8\xc5\xd9c\x13z?::\x9a\xcf\x99\xa0\xd6\xdc2\x85W2\x90\xcc\xa5\x82\xa6\"&\x97\xaa\x06\xc7)\xe98\xad\xa5\xb3\x90\x06\xae'\x17;@\xe5\xbd\xa8$\xa1\xc0M\xbf\xdf\x0fC1\x11\x10\x06\xcb\xf3\x19q\xee\xcb\x94\x8bb5\x1dN\x82\x81\xb0\xe8F\x04\xc4v4\xa6\xb1\x1d\x86\x10\x87 \x17a\x14l\x9eJYT\xcc\x85\xa3W\x13\x93\x95\x8cBk\xbb8\x14N\xf2\x0b\x14\xfc\x8e\x81\xe15\x03#!#\"c\xd5\x1a5\xe0\x02~\x05\xcd2)\xa8\xb6\xe9\x92\n\xb8]\xdc\x87\xf7\xf0\x01>\xc2\xafG@%FHW\x8c5\xb0\x8f\xd1\n\xdb\x8f0\xa2\xd2\xb6\xfa\xd5\x16\xba\xab@\xdf\xfe\x81O\xf0j*t\xb5d_\x1dmwT\x9f\x07\xc4\x10\x15\x82b\x81\x1b\xb2\x8dh\xf5\\\x93u\x17\x1c\x95\x95\xfc\xce\xf6>%\x0b\xbd\n\xcd2\xa4\x86\xa8\xd7\x06\xa2\xda\x1a\xd0\xbf\x9d\x89\xeda\xb1n~<\xe4\x90\xfcd8~\xf0fK\x81\xb4\xe2U^^\xf4\xff\x12\xfb\x04\xa6n\xac\x93\xb7h!o3\x91\x90|\xff\xfe\x12\xe0\xa5+mU\xbf\xd4\xe9.\xecol\xf5\xd96\xb7s\xdd\xb87\xdfl\xb4\xd47#\xbb\xa5\xb5\xe7\xbcb`\x1e\x1bv\x18ht\xad]3[O\xa0\xdb[\xa3\x18\x83\x8a\xa8\x82i\xe3\xf5wo\xb9\xd8\xc3\xc8\x9e\xe8\xcf\xe7W\x83x\xd7M\xbe>$\xd6\x10\xe4\xf0\x14.z\xb4\x85'\x7fyK\x84\xcb\xbf\xbd}\xd8\x16\xf4\xe4.ZI\x0e\xef\xf7|?\xb0\xb7\xd9\x1c\xa28\x98\x8c`\x15\x86\x10<\xd9V\xfeV\xe9|\xb9\x7f\xfe\x98\xc3\xee:\xb7\xe5hbB\xdb/\x01n\xb4\xe7\xae\xc0\x94D\xc0\xfe\xe5\xe7e\x07\xda\xa5\xad\x9d\x8e\x9d\xd3%\xab\xfd=H*\x03\xfb\xeb\xc9\x087\x13\xd99\xcde+(\xec.\xb1\xa1\xd86\\-\xd9\xd4\xf6\x9b\x83\x0b#a|<;\x03\xa9 \xbb\xa7\x18ee-)\xfc\xf3a\x8d\xc3\xb2Z:\xd12\x7fa2,?a\x16\x0b\xdf\x92\xfdX\xd0-\x95v\x128O\x9e\xa4\xed\xd4k}\xfa%\xdea\x96\x1a\xf5\xdd\x8aF\xf7\xa5\x90n\xb4\xaf\xfa\xae\xe3\x03\xbd?\xce\xaf\x8e/`:\x1b\x8ew\xba\xe9\xf0\xc6@d\x14\x88y9\x12\x19\x05#\xd7\x86\xe23\xbf\xee;\xc5\x0d\xa2\xeeku\x81\xc3q\xc6\xff\x0b\x00\x00\xff\xffPK\x07\x08}<\xb2\xe3\x1c\x06\x00\x001\x0f\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00m\x848R}<\xb2\xe3\x1c\x06\x00\x001\x0f\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x00\x00\x00\x00install.shUT\x05\x00\x01\xce\xa1\x0d`PK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00A\x00\x00\x00]\x06\x00\x00\x00\x00" fs.Register(data) } - \ No newline at end of file +