Skip to content

Commit

Permalink
Adding packages rpm, deb, brew...
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmet2mir committed Oct 15, 2020
1 parent b53096f commit bc3cbb8
Show file tree
Hide file tree
Showing 7 changed files with 140 additions and 61 deletions.
40 changes: 25 additions & 15 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,34 +49,44 @@ jobs:
with:
python-version: 3.6

- name: Build a binary wheel and a source tarball
- name: Init environment and build package for GNU/Linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get install -y ruby ruby-dev rubygems build-essential
gem install --user --no-document fpm
export PATH=/home/runner/.gem/ruby/2.5.0/bin:$PATH
make init archive-linux package-rpm package-deb
- name: Init environment and build package for OSX
if: matrix.os == 'macos-latest'
run: |
python -m pip install -U setuptools pipenv wheel
make init sync
python setup.py --version
make build binary
zip --junk-paths wildq-${{runner.os}}-x86_64 dist/wq dist/wildq
rm -f dist/wq dist/wildq
brew install gnu-tar
brew install coreutils
gem install --user --no-document fpm
make init archive-macos package-brew
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
uses: softprops/action-gh-release@v1
with:
files: |
./artifacts/archives/*.tar.gz
./artifacts/rpm/*.rpm
./artifacts/deb/*.deb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./wildq-${{runner.os}}-x86_64.zip
asset_name: wildq-${{runner.os}}-x86_64.zip
asset_content_type: application/zip

- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@master
if: matrix.os == 'ubuntu-latest'
with:
password: ${{ secrets.GH_ACTIONS_WILD }}

finish_release:
name: Finish release
runs-on: ubuntu-latest
needs: [assets, create_release]
steps:
- name: Unset draft
if: matrix.os == 'ubuntu-latest'
uses: eregon/publish-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,4 @@ pip-wheel-metadata/
.idea
*.swp
Pipfile.lock
artifacts
68 changes: 58 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
PIPENV_CMD ?= pipenv run

PYTHON_WILDQ_VERSION := $(shell sed -n -e 's/^version = "\(.*\)\.\(.*\)\.\(.*\)"/\1.\2.\3/p' wildq/_wildq_version.py)

all: init fmt sync test syntax tests

init:
pip show -q pipenv || pip install --user pipenv
pip show -q pipenv || pip install pipenv
pipenv lock --pre
pipenv install
pipenv install --dev
Expand All @@ -17,33 +19,79 @@ sync:
${PIPENV_CMD} pipenv-setup sync --dev
${PIPENV_CMD} python setup.py --version

docs:
docs: sync
${PIPENV_CMD} sphinx-build -b html docs docs/_build/html

test:
test: sync
${PIPENV_CMD} coverage run -m unittest discover
${PIPENV_CMD} coverage report -m

syntax:
syntax: sync
${PIPENV_CMD} flake8 wildq --count --exit-zero --statistics
${PIPENV_CMD} bandit -r wildq

build:
build: sync
${PIPENV_CMD} python setup.py --version
cat wildq/_wildq_version.py
${PIPENV_CMD} python setup.py bdist_wheel
mkdir -p artifacts/archives
mkdir -p artifacts/archives/binaries
mkdir -p artifacts/archives/brew
mkdir -p artifacts/archives/deb
mkdir -p artifacts/archives/rpm

binary:
${PIPENV_CMD} pyinstaller --clean --onefile --hidden-import=pkg_resources.py2_warn --name wildq wildq/__main__.py
chmod +x dist/wildq
cp dist/wildq dist/wq
binary: build
${PIPENV_CMD} pyinstaller --distpath artifacts/binaries --clean --onefile --name wildq wildq/__main__.py
chmod +x artifacts/binaries/wildq
cp artifacts/binaries/wildq artifacts/binaries/wq
./tests/tests.sh

archive-linux: binary
tar cfz artifacts/archives/wildq-$(PYTHON_WILDQ_VERSION)-linux-x86_64.tar.gz artifacts/binaries/wq artifacts/binaries/wildq README.md LICENSE
sha256sum artifacts/archives/wildq-$(PYTHON_WILDQ_VERSION)-linux-x86_64.tar.gz

archive-macos: binary
tar cfz artifacts/archives/wildq-$(PYTHON_WILDQ_VERSION)-darwin-x86_64.tar.gz artifacts/binaries/wq artifacts/binaries/wildq README.md LICENSE
sha256sum artifacts/archives/wildq-$(PYTHON_WILDQ_VERSION)-darwin-x86_64.tar.gz

package-rpm:
mkdir -p artifacts/rpm/usr/bin/
cp artifacts/binaries/wildq artifacts/rpm/usr/bin/wildq
cp artifacts/binaries/wildq artifacts/rpm/usr/bin/wq
cd artifacts/rpm/; fpm \
--input-type dir \
--output-type rpm \
--version $(PYTHON_WILDQ_VERSION) \
--iteration 1 \
--prefix / \
--name wildq \
--rpm-user root \
--rpm-attr "755,root,root:/usr/bin/wildq" \
--rpm-attr "755,root,root:/usr/bin/wq" \
.

package-deb:
mkdir -p artifacts/deb/usr/bin/
cp artifacts/binaries/wildq artifacts/deb/usr/bin/wildq
cp artifacts/binaries/wildq artifacts/deb/usr/bin/wq
cd artifacts/deb/; fpm \
--input-type dir \
--output-type deb \
--version $(PYTHON_WILDQ_VERSION) \
--iteration 1 \
--prefix / \
--name wildq \
--deb-user root \
.

package-brew: archive-macos
echo "FIXME: auto update my homebrew-tap repo"

pypi:
${PIPENV_CMD} python setup.py register -r pypi
${PIPENV_CMD} python setup.py sdist upload -r pypi

clean:
rm -rf dist build .eggs wildq.egg-info
git clean -fdx

.PHONY: all fmt init sync docs tests syntax build binary pypi clean
37 changes: 26 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,37 @@ This script uses:
pip install wildq
```

## Binary

A binary is also available for different platform, pick one (both of `wildq` and `wq` will be in the archive)

### GNU/Linux
## GNU/Linux binary

```
curl https://github.com/ahmet2mir/wildq/releases/download/v1.1.2/wildq-v1.1.2-linux-x86_64.tar.gz -o wildq-v1.1.2-linux-x86_64.tar.gz
tar xvfz wildq-v1.1.2-linux-x86_64.tar.gz -C /usr/local/bin
rm -f wildq-v1.1.2-linux-x86_64.tar.gz
```

## MacOS

```
brew install ahmet2mir/tap/wildq
brew install ahmet2mir/tap/wq
```

## RPM (no gpg signature)

```
curl https://github.com/ahmet2mir/wildq/archive/1.0.6.zip -o wildq.zip
unzip wildq.zip -d ~~/bin~~
rm -f wildq.zip
yum install -y --nogpgcheck https://github.com/ahmet2mir/wildq/releases/download/v1.1.2/wildq-1.1.2-1.x86_64.rpm
```

### MacOS
## Debian (no gpg signature)

```
curl https://github.com/ahmet2mir/wildq/archive/1.0.6.zip -o wildq.zip
unzip wildq.zip -d ~/bin~
rm -f wildq.zip
wget https://github.com/ahmet2mir/wildq/releases/download/v1.1.2/wildq_1.1.2-1_amd64.deb
dpkg -i wildq_1.1.2-1_amd64.deb
```

### Windows
## Windows

Wildq use [jq.py](https://github.com/mwilliamson/jq.py) and it's not yet available on windows platforms.
I tried to compile it without windows machine and I failed, and I don't had the time to try to understand how Windows / C binding / Python works.
Expand Down Expand Up @@ -264,3 +274,8 @@ Merge requests are welcome :)
## License

Licensed under the terms of the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).


## Repository URL

https://github.com/ahmet2mir/wildq
5 changes: 5 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
Changelog
=========

v1.1.2 - 12/10/2020
===================

- add packages debian, rpm, brew

v1.1.0 - 12/10/2020
===================

Expand Down
48 changes: 24 additions & 24 deletions tests/tests.sh
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
#!/bin/bash

echo "Query with old format"
./dist/wildq --hcl examples/hcl.hcl . | jq .
./dist/wildq --ini examples/ini.ini . | jq .
./dist/wildq --json examples/json.json . | jq .
./dist/wildq --toml examples/toml.toml . | jq .
./dist/wildq --xml examples/xml.xml . | jq .
./dist/wildq --yaml examples/yaml.yaml . | jq .
./artifacts/binaries/wildq --hcl examples/hcl.hcl . | jq .
./artifacts/binaries/wildq --ini examples/ini.ini . | jq .
./artifacts/binaries/wildq --json examples/json.json . | jq .
./artifacts/binaries/wildq --toml examples/toml.toml . | jq .
./artifacts/binaries/wildq --xml examples/xml.xml . | jq .
./artifacts/binaries/wildq --yaml examples/yaml.yaml . | jq .

echo "Query with same in and out"
./dist/wildq -i hcl examples/hcl.hcl .
./dist/wildq -i ini examples/ini.ini .
./dist/wildq -i json examples/json.json .
./dist/wildq -i toml examples/toml.toml .
./dist/wildq -i xml examples/xml.xml .
./dist/wildq -i yaml examples/yaml.yaml .
./artifacts/binaries/wildq -i hcl examples/hcl.hcl .
./artifacts/binaries/wildq -i ini examples/ini.ini .
./artifacts/binaries/wildq -i json examples/json.json .
./artifacts/binaries/wildq -i toml examples/toml.toml .
./artifacts/binaries/wildq -i xml examples/xml.xml .
./artifacts/binaries/wildq -i yaml examples/yaml.yaml .

echo "Query with json out"
./dist/wildq -i hcl -o json examples/hcl.hcl .
./dist/wildq -i ini -o json examples/ini.ini .
./dist/wildq -i json -o json examples/json.json .
./dist/wildq -i toml -o json examples/toml.toml .
./dist/wildq -i xml -o json examples/xml.xml .
./dist/wildq -i yaml -o json examples/yaml.yaml .
./artifacts/binaries/wildq -i hcl -o json examples/hcl.hcl .
./artifacts/binaries/wildq -i ini -o json examples/ini.ini .
./artifacts/binaries/wildq -i json -o json examples/json.json .
./artifacts/binaries/wildq -i toml -o json examples/toml.toml .
./artifacts/binaries/wildq -i xml -o json examples/xml.xml .
./artifacts/binaries/wildq -i yaml -o json examples/yaml.yaml .

echo "Query with yaml out"
./dist/wildq -i hcl -o yaml examples/hcl.hcl .
./dist/wildq -i ini -o yaml examples/ini.ini .
./dist/wildq -i json -o yaml examples/json.json .
./dist/wildq -i toml -o yaml examples/toml.toml .
./dist/wildq -i xml -o yaml examples/xml.xml .
./dist/wildq -i yaml -o yaml examples/yaml.yaml .
./artifacts/binaries/wildq -i hcl -o yaml examples/hcl.hcl .
./artifacts/binaries/wildq -i ini -o yaml examples/ini.ini .
./artifacts/binaries/wildq -i json -o yaml examples/json.json .
./artifacts/binaries/wildq -i toml -o yaml examples/toml.toml .
./artifacts/binaries/wildq -i xml -o yaml examples/xml.xml .
./artifacts/binaries/wildq -i yaml -o yaml examples/yaml.yaml .
2 changes: 1 addition & 1 deletion wildq/_wildq_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version = "1.1.0"
version = "1.1.2"

0 comments on commit bc3cbb8

Please sign in to comment.