Skip to content

Commit

Permalink
Merge pull request #1 from ausaccessfed/add-releases-script
Browse files Browse the repository at this point in the history
Add releases script
  • Loading branch information
bradleybeddoes committed Jul 30, 2021
2 parents 8e6445f + f922092 commit 5fbf660
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 59 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1 +1,2 @@
.idea/
release/
36 changes: 0 additions & 36 deletions .travis.yml

This file was deleted.

90 changes: 67 additions & 23 deletions README.md
@@ -1,51 +1,95 @@
# Hosts Override

Override `hosts` file entries for the lifetime of the process

This project was initially created by @rcaught during his time with @ausaccessfed.

## Installation

##### MacOS (Homebrew via own tap)
```
$ brew install ausaccessfed/hosts-override/hosts-override
```
##### MacOS (manually)
```
$ curl -Ls https://github.com/ausaccessfed/hosts-override/releases/latest/download/macos.zip > /tmp/hosts-override.zip
$ unzip /tmp/hosts-override.zip -d /usr/local/bin
### MacOS

#### Homebrew via own tap

``` shell
brew install ausaccessfed/hosts-override/hosts-override
```
##### Linux

#### Manual Install

``` shell
curl -Ls https://github.com/ausaccessfed/hosts-override/releases/latest/download/macos.zip > /tmp/hosts-override.zip
unzip /tmp/hosts-override.zip -d /usr/local/bin
```
$ curl -Ls https://github.com/ausaccessfed/hosts-override/releases/latest/download/linux.zip > /tmp/hosts-override.zip
$ unzip /tmp/hosts-override.zip -d /usr/local/bin

### Linux

``` shell
curl -Ls https://github.com/ausaccessfed/hosts-override/releases/latest/download/linux.zip > /tmp/hosts-override.zip
unzip /tmp/hosts-override.zip -d /usr/local/bin
```
##### Windows
- Download https://github.com/ausaccessfed/hosts-override/releases/latest/download/windows.zip

### Windows

- Download <https://github.com/ausaccessfed/hosts-override/releases/latest/download/windows.zip>
- Unzip the file and run the exe as Administrator

## Usage

### Mac / Linux

- Override myhost.com to resolve to 127.0.0.1

``` shell
sudo hosts-override myhost.com,127.0.0.1
```
$ sudo hosts-override myhost.com,127.0.0.1
```

- google.com will be resolved into an IP / set of IPs

``` shell
sudo hosts-override myhost.com,google.com
```
$ sudo hosts-override myhost.com,google.com
```

- Multiple hosts and values are supported

``` shell
sudo hosts-override myhost.com,127.0.0.1 anotherhost.com,127.0.0.1
```
$ sudo hosts-override myhost.com,127.0.0.1 anotherhost.com,127.0.0.1
```

- Refresh of unresolved hosts (with custom interval)

``` shell
sudo hosts-override -r -i=1m myhost.com,127.0.0.1
```
$ sudo hosts-override -r -i=1m myhost.com,127.0.0.1
```

### Windows

- Run Command Prompt as Administrator and navigate to the directory containing hosts-override.exe
- ```

``` shell
hosts-override.exe myhost.com,127.0.0.1
```

### Notes

- `sudo` or running as Administrator is required as the hosts file is owned by `root`
- On exiting the program with an interupt (CTRL-c), the hosts file is cleaned of appended records
- On exiting the program with an interrupt (CTRL-c), the hosts file is cleaned of appended records
- In the case of an unclean shutdown, the next invocation of `hosts-override` will clear the previous sessions records
- IPv4 and IPv6 addresses supported

## Development

This is a Go based project so you'll need to [install Go](https://golang.org/doc/install) on your development machine if you want to make changes.

There is no CI associated with this project, otherwise normal PR review process applies.

## Releasing

We ship releases for:

- Windows
- Linux
- MacOS

To build all three releases using Go's cross platform capabilities run `./release.sh` which will create 3 new zip files in the `release` directory. This should only ever occur once PR are merged into the main branch.

From there [create a new release on GitHub](https://github.com/ausaccessfed/hosts-override/releases/new) and attach the binaries for consumption by users.
29 changes: 29 additions & 0 deletions release.sh
@@ -0,0 +1,29 @@
#!/bin/bash

set -eu

echo 'Compiling hosts-override for multiple platforms'

# Triple is so we can keep using OS names in existing public documentation rather
# than updating and missing a reference somewhere, specifically macos over darwin
platforms=("windows/amd64/windows" "darwin/amd64/macos" "linux/amd64/linux")
tmp_dir=$(mktemp -d -t hostsoverride-XXXXXXXXX)

if [[ ! -e 'release' ]]; then
mkdir 'release'
fi

for platform in "${platforms[@]}"; do
echo 'Building for '$platform
platform_split=(${platform//\// })
GOOS=${platform_split[0]}
GOARCH=${platform_split[1]}
output_name='hosts-override'
if [ $GOOS = "windows" ]; then
output_name+='.exe'
fi
env GOOS=$GOOS GOARCH=$GOARCH go build -o $tmp_dir'/'$output_name
zip -j 'release/'${platform_split[2]}'.zip' $tmp_dir'/'$output_name
done

echo 'Completed all platforms'

0 comments on commit 5fbf660

Please sign in to comment.