immoscout 1.1.0 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/documentation.yml +38 -0
  3. data/.github/workflows/test.yml +62 -0
  4. data/.gitignore +6 -4
  5. data/.rubocop.yml +17 -8
  6. data/.yardopts +6 -0
  7. data/Appraisals +9 -0
  8. data/CHANGELOG.md +33 -0
  9. data/Dockerfile +29 -0
  10. data/Envfile +6 -0
  11. data/Gemfile +1 -1
  12. data/Makefile +152 -0
  13. data/README.md +5 -5
  14. data/Rakefile +71 -2
  15. data/config/docker/.bash_profile +3 -0
  16. data/config/docker/.bashrc +48 -0
  17. data/config/docker/.inputrc +17 -0
  18. data/doc/assets/project.svg +68 -0
  19. data/docker-compose.yml +9 -0
  20. data/gemfiles/rails_5.2.gemfile +9 -0
  21. data/gemfiles/rails_6.0.gemfile +9 -0
  22. data/immoscout.gemspec +36 -24
  23. data/lib/immoscout/api/client.rb +4 -2
  24. data/lib/immoscout/api/connection.rb +4 -2
  25. data/lib/immoscout/api/request.rb +9 -3
  26. data/lib/immoscout/configuration.rb +7 -7
  27. data/lib/immoscout/errors/failed.rb +2 -0
  28. data/lib/immoscout/models/actions/attachment.rb +27 -9
  29. data/lib/immoscout/models/actions/contact.rb +10 -2
  30. data/lib/immoscout/models/actions/publish.rb +3 -1
  31. data/lib/immoscout/models/actions/real_estate.rb +13 -3
  32. data/lib/immoscout/models/apartment_buy.rb +1 -1
  33. data/lib/immoscout/models/base.rb +1 -0
  34. data/lib/immoscout/models/concerns/modelable.rb +6 -3
  35. data/lib/immoscout/models/concerns/propertiable.rb +4 -1
  36. data/lib/immoscout/models/concerns/renderable.rb +13 -0
  37. data/lib/immoscout/models/contact.rb +1 -1
  38. data/lib/immoscout/models/document.rb +1 -1
  39. data/lib/immoscout/models/house_buy.rb +1 -1
  40. data/lib/immoscout/models/picture.rb +2 -2
  41. data/lib/immoscout/models/publish.rb +1 -1
  42. data/lib/immoscout/models.rb +2 -0
  43. data/lib/immoscout/version.rb +1 -1
  44. data/lib/immoscout.rb +1 -1
  45. metadata +198 -36
  46. data/.travis.yml +0 -20
  47. data/doc/assets/logo.png +0 -0
  48. data/doc/assets/project.png +0 -0
  49. data/doc/assets/project.xcf +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1cf89223af1887705e7bd11ac75ace0fd75a85a2
4
- data.tar.gz: c98eb3a001575904e6c4dda7f1cd33976a3eaf56
2
+ SHA256:
3
+ metadata.gz: cc74f7180d13859dedf5b42a8502e6d679b6c7348622c5f92de6a41c9daba822
4
+ data.tar.gz: 39c5063180247dfe8e9e279c0b0dc9f20d7a4204127ee763dd50690c92013fb7
5
5
  SHA512:
6
- metadata.gz: 70989b548a37cc8b8bb6c65e64b99963bb36cc928ed089a09521b76be907a314cd28a0bea1967e6b6860e2b63cd5e4575f7704630426d105732bf72e201a3217
7
- data.tar.gz: d25b442f51b4c70b14ca375161bbb511f245fbfae0918854d0e627c3109edb7f447be3a93d50d2553f23c4594cc20efc56fe933dbe4708af461cd8d6353d8f83
6
+ metadata.gz: 277085348b99e2e1cc4e58157f067a874f78a8fb008970eeb50ca290d121008a8ab2613fc08475ba276d94ca7c62a05236cc68aeabf8cce782742892412639f2
7
+ data.tar.gz: 0fcd17a5e12f726a74268e270c9e9113c6ba8d455086e764d503c49bc8897d77b2d3e6071fd36d661fb5bd8ca10e5fee70e5a7bebf77a5e17dc108ddedf55e3c
@@ -0,0 +1,38 @@
1
+ name: Build Documentation
2
+ on:
3
+ repository_dispatch:
4
+ types: [documentation]
5
+
6
+ concurrency:
7
+ group: 'docs'
8
+
9
+ jobs:
10
+ docs:
11
+ name: Build gem documentation
12
+ runs-on: ubuntu-20.04
13
+ timeout-minutes: 5
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+
17
+ - name: Install the correct Ruby version
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: 2.5
21
+ bundler-cache: true
22
+
23
+ - name: Prepare the virtual environment
24
+ uses: hausgold/actions/ci@master
25
+ with:
26
+ clone_token: '${{ secrets.CLONE_TOKEN }}'
27
+ settings: '${{ github.repository }}'
28
+ target: ci/gem-test
29
+
30
+ - name: Build gem documentation
31
+ run: make docs
32
+
33
+ - name: Upload the code coverage report
34
+ run: coverage
35
+
36
+ - name: Add this job to the commit status
37
+ run: commit-status '${{ job.status }}'
38
+ if: always()
@@ -0,0 +1,62 @@
1
+ name: Test
2
+ on:
3
+ push:
4
+ branches:
5
+ - '**'
6
+ schedule:
7
+ - cron: '0 0 * * MON'
8
+
9
+ concurrency:
10
+ group: '${{ github.ref }}'
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ test:
15
+ name: 'Test the gem (Ruby ${{ matrix.ruby }}, Rails ${{ matrix.rails }})'
16
+ runs-on: ubuntu-20.04
17
+ timeout-minutes: 5
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ ruby: [2.5, 2.6, 2.7]
22
+ rails: [5.2, '6.0']
23
+ env:
24
+ BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
25
+ steps:
26
+ - uses: actions/checkout@v2
27
+
28
+ - name: Install the correct Ruby version
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby }}
32
+ bundler-cache: true
33
+
34
+ - name: Prepare the virtual environment
35
+ uses: hausgold/actions/ci@master
36
+ with:
37
+ clone_token: '${{ secrets.CLONE_TOKEN }}'
38
+ settings: '${{ github.repository }}'
39
+ target: ci/gem-test
40
+
41
+ - name: Run the gem tests
42
+ run: make test
43
+
44
+ - name: Upload the code coverage report
45
+ run: coverage
46
+
47
+ trigger-docs:
48
+ name: Trigger the documentation upload
49
+ runs-on: ubuntu-20.04
50
+ timeout-minutes: 2
51
+ needs: test
52
+ if: github.ref == 'refs/heads/master'
53
+ steps:
54
+ - name: Prepare the virtual environment
55
+ uses: hausgold/actions/ci@master
56
+ with:
57
+ clone_token: '${{ secrets.CLONE_TOKEN }}'
58
+ settings: '${{ github.repository }}'
59
+ target: ci/noop
60
+
61
+ - name: Trigger the documentation upload
62
+ run: workflow documentation
data/.gitignore CHANGED
@@ -1,14 +1,16 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
- /doc/api
5
+ /doc/api/
7
6
  /pkg/
8
7
  /spec/reports/
9
8
  /tmp/
9
+ /vendor/
10
+ /gemfiles/vendor/
11
+ /Gemfile.lock
12
+ *.gemfile.lock
13
+ /spec/.credentials
10
14
 
11
15
  # rspec failure tracking
12
16
  .rspec_status
13
-
14
- spec/test_config\.yml
data/.rubocop.yml CHANGED
@@ -1,15 +1,24 @@
1
1
  Documentation:
2
2
  Enabled: false
3
3
 
4
- StringLiterals:
5
- Enabled: false
4
+ AllCops:
5
+ DisplayCopNames: true
6
+ TargetRubyVersion: 2.5
7
+ Exclude:
8
+ - bin/**/*
9
+ - vendor/**/*
10
+ - build/**/*
11
+ - gemfiles/vendor/**/*
6
12
 
7
13
  Metrics/BlockLength:
8
14
  Exclude:
9
- - "spec/**/*"
10
- ExcludedMethods:
11
- - included
15
+ - Rakefile
16
+ - '*.gemspec'
17
+ - spec/**/*.rb
18
+ - '**/*.rake'
19
+ - doc/**/*.rb
12
20
 
13
- AllCops:
14
- Exclude:
15
- - "immoscout.gemspec"
21
+ # We stay at 80 characters per line.
22
+ # See: https://rubystyle.guide/#max-line-length
23
+ Metrics/LineLength:
24
+ Max: 80
data/.yardopts ADDED
@@ -0,0 +1,6 @@
1
+ --output-dir=doc/api
2
+ --plugin activesupport-concern
3
+ --markup=rdoc
4
+ -
5
+ README.md
6
+ lib/**/*.rb
data/Appraisals ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise 'rails-5.2' do
4
+ gem 'activesupport', '~> 5.2.2'
5
+ end
6
+
7
+ appraise 'rails-6.0' do
8
+ gem 'activesupport', '~> 6.0.0'
9
+ end
data/CHANGELOG.md ADDED
@@ -0,0 +1,33 @@
1
+ ### 1.3.2
2
+
3
+ * Migrated to Github Actions
4
+ * Migrated to our own coverage reporting
5
+ * Added the code statistics to the test process
6
+
7
+ ### 1.3.1
8
+
9
+ * Corrected the GNU Make release target
10
+
11
+ ### 1.3.0
12
+
13
+ * Dropped support for Rails <5.2 (#9)
14
+ * Dropped support for Ruby <2.5 (#9)
15
+ * Updated the faraday gem spec to `~> 1.0` (#9)
16
+
17
+ ### 1.2.0
18
+
19
+ * Added a changelog file to track changes for library users
20
+ * Allow newer version of faraday/faraday-middleware. (#7)
21
+ * Set `HausgoldImmoscout/#{gem_version}` as user agent
22
+ * Set correct content type and filename for mixed multipart (#5)
23
+ * Dropped support for EOL Ruby 2.2
24
+ * Added support for Ruby 2.6
25
+
26
+ ### 1.1.0
27
+
28
+ * Add support for property `international_country_region` in address
29
+
30
+ ### 1.0.0
31
+
32
+ * The first stable release
33
+ * All initial Immoscout models are mapped
data/Dockerfile ADDED
@@ -0,0 +1,29 @@
1
+ FROM hausgold/ruby:2.5
2
+ MAINTAINER Hermann Mayer <hermann.mayer@hausgold.de>
3
+
4
+ # Update system gem
5
+ RUN gem update --system
6
+
7
+ # Install system packages and the latest bundler
8
+ RUN apt-get update -yqqq && \
9
+ apt-get install -y \
10
+ build-essential locales sudo vim \
11
+ ca-certificates \
12
+ bash-completion inotify-tools && \
13
+ echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && /usr/sbin/locale-gen && \
14
+ gem install bundler -v '~> 2.0' --no-document --no-prerelease && \
15
+ gem install bundler -v '~> 1.0' --no-document --no-prerelease
16
+
17
+ # Add new web user
18
+ RUN mkdir /app && \
19
+ adduser web --home /home/web --shell /bin/bash \
20
+ --disabled-password --gecos ""
21
+ COPY config/docker/* /home/web/
22
+ RUN chown web:web -R /app /home/web /usr/local/bundle && \
23
+ mkdir -p /home/web/.ssh
24
+
25
+ # Set the root password and grant root access to web
26
+ RUN echo 'root:root' | chpasswd
27
+ RUN echo 'web ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
28
+
29
+ WORKDIR /app
data/Envfile ADDED
@@ -0,0 +1,6 @@
1
+ LANG=en_US.UTF-8
2
+ LANGUAGE=en_US.UTF-8
3
+ LC_ALL=en_US.UTF-8
4
+
5
+ # Just fix this, so Appraisals with Rails 4 are working fine
6
+ BUNDLER_VERSION=1.17.3
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
data/Makefile ADDED
@@ -0,0 +1,152 @@
1
+ MAKEFLAGS += --warn-undefined-variables -j1
2
+ SHELL := bash
3
+ .SHELLFLAGS := -eu -o pipefail -c
4
+ .DEFAULT_GOAL := all
5
+ .DELETE_ON_ERROR:
6
+ .SUFFIXES:
7
+ .PHONY:
8
+
9
+ # Environment switches
10
+ MAKE_ENV ?= docker
11
+ COMPOSE_RUN_SHELL_FLAGS ?= --rm
12
+
13
+ # Directories
14
+ VENDOR_DIR ?= vendor/bundle
15
+ GEMFILES_DIR ?= gemfiles
16
+
17
+ # Host binaries
18
+ AWK ?= awk
19
+ BASH ?= bash
20
+ COMPOSE ?= docker-compose
21
+ DOCKER ?= docker
22
+ GREP ?= grep
23
+ ID ?= id
24
+ MKDIR ?= mkdir
25
+ RM ?= rm
26
+ XARGS ?= xargs
27
+
28
+ # Container binaries
29
+ BUNDLE ?= bundle
30
+ APPRAISAL ?= appraisal
31
+ GEM ?= gem
32
+ RAKE ?= rake
33
+ YARD ?= yard
34
+ RUBOCOP ?= rubocop
35
+
36
+ # Files
37
+ GEMFILES ?= $(subst _,-,$(patsubst $(GEMFILES_DIR)/%.gemfile,%,\
38
+ $(wildcard $(GEMFILES_DIR)/*.gemfile)))
39
+ TEST_GEMFILES := $(GEMFILES:%=test-%)
40
+
41
+ # Define a generic shell run wrapper
42
+ # $1 - The command to run
43
+ ifeq ($(MAKE_ENV),docker)
44
+ define run-shell
45
+ $(COMPOSE) run $(COMPOSE_RUN_SHELL_FLAGS) \
46
+ -e LANG=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 \
47
+ -e HOME=/home/web -e BUNDLE_APP_CONFIG=/app/.bundle \
48
+ -u `$(ID) -u` test bash -c 'sleep 0.1; echo; $(1)'
49
+ endef
50
+ else ifeq ($(MAKE_ENV),baremetal)
51
+ define run-shell
52
+ $(1)
53
+ endef
54
+ endif
55
+
56
+ all:
57
+ # Immoscout
58
+ #
59
+ # install Install the dependencies
60
+ # test Run the whole test suite
61
+ # clean Clean the dependencies
62
+ #
63
+ # docs Generate the Ruby documentation of the library
64
+ # stats Print the code statistics (library and test suite)
65
+ # notes Print all the notes from the code
66
+ # release Release a new Gem version (maintainers only)
67
+ #
68
+ # shell Run an interactive shell on the container
69
+ # shell-irb Run an interactive IRB shell on the container
70
+
71
+ install:
72
+ # Install the dependencies
73
+ @$(MKDIR) -p $(VENDOR_DIR)
74
+ @$(call run-shell,$(BUNDLE) check || $(BUNDLE) install --path $(VENDOR_DIR))
75
+ @$(call run-shell,GEM_HOME=vendor/bundle/ruby/$${RUBY_MAJOR}.0 \
76
+ $(GEM) install bundler -v "~> 1.0")
77
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) install)
78
+
79
+ update:
80
+ # Install the dependencies
81
+ @$(MKDIR) -p $(VENDOR_DIR)
82
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) update)
83
+
84
+ test: \
85
+ test-specs \
86
+ test-style
87
+
88
+ test-specs:
89
+ # Run the whole test suite
90
+ @$(call run-shell,$(BUNDLE) exec $(RAKE) stats spec)
91
+
92
+ $(TEST_GEMFILES): GEMFILE=$(@:test-%=%)
93
+ $(TEST_GEMFILES):
94
+ # Run the whole test suite ($(GEMFILE))
95
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RAKE))
96
+
97
+ test-style: \
98
+ test-style-ruby
99
+
100
+ test-style-ruby:
101
+ # Run the static code analyzer (rubocop)
102
+ @$(call run-shell,$(BUNDLE) exec $(RUBOCOP) -a)
103
+
104
+ clean:
105
+ # Clean the dependencies
106
+ @$(RM) -rf $(VENDOR_DIR)
107
+ @$(RM) -rf $(VENDOR_DIR)/Gemfile.lock
108
+ @$(RM) -rf $(GEMFILES_DIR)/vendor
109
+ @$(RM) -rf $(GEMFILES_DIR)/*.lock
110
+ @$(RM) -rf pkg
111
+ @$(RM) -rf coverage
112
+
113
+ clean-containers:
114
+ # Clean running containers
115
+ ifeq ($(MAKE_ENV),docker)
116
+ @$(COMPOSE) down
117
+ endif
118
+
119
+ clean-images:
120
+ # Clean build images
121
+ ifeq ($(MAKE_ENV),docker)
122
+ @-$(DOCKER) images | $(GREP) immoscout \
123
+ | $(AWK) '{ print $$3 }' \
124
+ | $(XARGS) -rn1 $(DOCKER) rmi -f
125
+ endif
126
+
127
+ distclean: clean clean-containers clean-images
128
+
129
+ shell:
130
+ # Run an interactive shell on the container
131
+ @$(call run-shell,$(BASH) -i)
132
+
133
+ shell-irb:
134
+ # Run an interactive IRB shell on the container
135
+ @$(call run-shell,bin/console)
136
+
137
+ docs:
138
+ # Build the API documentation
139
+ @$(call run-shell,$(BUNDLE) exec $(YARD) -q && \
140
+ $(BUNDLE) exec $(YARD) stats --list-undoc --compact)
141
+
142
+ notes:
143
+ # Print the code statistics (library and test suite)
144
+ @$(call run-shell,$(BUNDLE) exec $(RAKE) notes)
145
+
146
+ stats:
147
+ # Print all the notes from the code
148
+ @$(call run-shell,$(BUNDLE) exec $(RAKE) stats)
149
+
150
+ release:
151
+ # Release a new gem version
152
+ @$(BUNDLE) exec $(RAKE) release
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
- ![Immoscout](doc/assets/project.png)
1
+ ![Immoscout](doc/assets/project.svg)
2
2
 
3
- [![Build Status](https://travis-ci.org/hausgold/immoscout.svg?branch=master)](https://travis-ci.org/hausgold/immoscout)
3
+ [![Continuous Integration](https://github.com/hausgold/immoscout/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/hausgold/immoscout/actions/workflows/test.yml)
4
4
  [![Gem Version](https://badge.fury.io/rb/immoscout.svg)](https://badge.fury.io/rb/immoscout)
5
- [![Maintainability](https://api.codeclimate.com/v1/badges/bfd4a5c188d5f1aebd60/maintainability)](https://codeclimate.com/github/hausgold/immoscout/maintainability)
6
- [![Test Coverage](https://api.codeclimate.com/v1/badges/bfd4a5c188d5f1aebd60/test_coverage)](https://codeclimate.com/github/hausgold/immoscout/test_coverage)
7
- [![API docs](https://img.shields.io/badge/docs-API-blue.svg)](https://www.rubydoc.info/gems/immoscout)
5
+ [![Test Coverage](https://automate-api.hausgold.de/v1/coverage_reports/immoscout/coverage.svg)](https://knowledge.hausgold.de/coverage)
6
+ [![Test Ratio](https://automate-api.hausgold.de/v1/coverage_reports/immoscout/ratio.svg)](https://knowledge.hausgold.de/coverage)
7
+ [![API docs](https://automate-api.hausgold.de/v1/coverage_reports/immoscout/documentation.svg)](https://www.rubydoc.info/gems/immoscout)
8
8
 
9
9
  This gem provides an API wrapper for the [Immobilienscout24 REST
10
10
  API](https://api.immobilienscout24.de/our-apis/import-export.html). It provides
data/Rakefile CHANGED
@@ -1,8 +1,77 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+ require 'rails/code_statistics'
6
+ require 'pp'
5
7
 
6
8
  RSpec::Core::RakeTask.new(:spec)
7
9
 
8
10
  task default: :spec
11
+
12
+ # Load some railties tasks
13
+ load 'rails/tasks/statistics.rake'
14
+ load 'rails/tasks/annotations.rake'
15
+
16
+ # Clear the default statistics directory constant
17
+ #
18
+ # rubocop:disable Style/MutableConstant because we define it
19
+ Object.send(:remove_const, :STATS_DIRECTORIES)
20
+ ::STATS_DIRECTORIES = []
21
+ # rubocop:enable Style/MutableConstant
22
+
23
+ # Monkey patch the Rails +CodeStatistics+ class to support configurable
24
+ # patterns per path. This is reuqired to support top-level only file matches.
25
+ class CodeStatistics
26
+ DEFAULT_PATTERN = /^(?!\.).*?\.(rb|js|coffee|rake)$/.freeze
27
+
28
+ # Pass the possible +pattern+ argument down to the
29
+ # +calculate_directory_statistics+ method call.
30
+ def calculate_statistics
31
+ Hash[@pairs.map do |pair|
32
+ [pair.first, calculate_directory_statistics(*pair[1..-1])]
33
+ end]
34
+ end
35
+
36
+ # Match the pattern against the individual file name and the relative file
37
+ # path. This allows top-level only matches.
38
+ def calculate_directory_statistics(directory, pattern = DEFAULT_PATTERN)
39
+ stats = CodeStatisticsCalculator.new
40
+
41
+ Dir.foreach(directory) do |file_name|
42
+ path = "#{directory}/#{file_name}"
43
+
44
+ if File.directory?(path) && (/^\./ !~ file_name)
45
+ stats.add(calculate_directory_statistics(path, pattern))
46
+ elsif file_name =~ pattern || path =~ pattern
47
+ stats.add_by_file_path(path)
48
+ end
49
+ end
50
+
51
+ stats
52
+ end
53
+ end
54
+
55
+ # Configure all code statistics directories
56
+ vendors = [
57
+ [:unshift, 'Top-levels', 'lib', %r{lib(/immoscout)?/[^/]+\.rb$}],
58
+ [:unshift, 'Top-levels specs', 'spec', %r{spec/_spec\.rb$}],
59
+
60
+ [:unshift, 'API', 'lib/immoscout/api'],
61
+ [:unshift, 'Errors', 'lib/immoscout/errors'],
62
+
63
+ [:unshift, 'Models', 'lib/immoscout/models'],
64
+ [:unshift, 'Models specs', 'spec/models']
65
+ ].reverse
66
+
67
+ vendors.each do |method, type, dir, pattern|
68
+ ::STATS_DIRECTORIES.send(method, [type, dir, pattern].compact)
69
+ ::CodeStatistics::TEST_TYPES << type if type.include? 'specs'
70
+ end
71
+
72
+ # Setup annotations
73
+ ENV['SOURCE_ANNOTATION_DIRECTORIES'] = 'spec,doc'
74
+ desc 'Enumerate all annotations'
75
+ task :notes do
76
+ SourceAnnotationExtractor.enumerate '@?OPTIMIZE|@?FIXME|@?TODO', tag: true
77
+ end
@@ -0,0 +1,3 @@
1
+ if [ -f ~/.bashrc ]; then
2
+ . ~/.bashrc
3
+ fi
@@ -0,0 +1,48 @@
1
+ # ~/.bashrc: executed by bash(1) for non-login shells.
2
+ # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
3
+ # for examples
4
+
5
+ _GEM_PATHS=$(ls -d1 ${HOME}/.gem/ruby/*/bin 2>/dev/null | paste -sd ':')
6
+ _APP_PATHS=$(ls -d1 /app/vendor/bundle/ruby/*/bin 2>/dev/null | paste -sd ':')
7
+
8
+ export PATH="${_GEM_PATHS}:${_APP_PATHS}:${PATH}"
9
+ export PATH="/app/node_modules/.bin:${HOME}/.bin:/app/bin:${PATH}"
10
+ export MAKE_ENV=baremetal
11
+
12
+ # Disable the autostart of all supervisord units
13
+ sudo sed -i 's/autostart=.*/autostart=false/g' /etc/supervisor/conf.d/*
14
+
15
+ # Start the supervisord (empty, no units)
16
+ sudo supervisord >/dev/null 2>&1 &
17
+
18
+ # Wait for supervisord
19
+ while ! supervisorctl status >/dev/null 2>&1; do sleep 1; done
20
+
21
+ # Boot the mDNS stack
22
+ echo '# Start the mDNS stack'
23
+ sudo supervisorctl start dbus avahi
24
+ echo
25
+
26
+ function watch-make-test()
27
+ {
28
+ while [ 1 ]; do
29
+ inotifywait --quiet -r `pwd` -e close_write --format '%e -> %w%f'
30
+ make test
31
+ done
32
+ }
33
+
34
+ function watch-make()
35
+ {
36
+ while [ 1 ]; do
37
+ inotifywait --quiet -r `pwd` -e close_write --format '%e -> %w%f'
38
+ make $@
39
+ done
40
+ }
41
+
42
+ function watch-run()
43
+ {
44
+ while [ 1 ]; do
45
+ inotifywait --quiet -r `pwd` -e close_write --format '%e -> %w%f'
46
+ bash -c "$@"
47
+ done
48
+ }
@@ -0,0 +1,17 @@
1
+ # mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
2
+ "\e[1;5C": forward-word
3
+ "\e[1;5D": backward-word
4
+ "\e[5C": forward-word
5
+ "\e[5D": backward-word
6
+ "\e\e[C": forward-word
7
+ "\e\e[D": backward-word
8
+
9
+ # handle common Home/End escape codes
10
+ "\e[1~": beginning-of-line
11
+ "\e[4~": end-of-line
12
+ "\e[7~": beginning-of-line
13
+ "\e[8~": end-of-line
14
+ "\eOH": beginning-of-line
15
+ "\eOF": end-of-line
16
+ "\e[H": beginning-of-line
17
+ "\e[F": end-of-line
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ version="1.1"
9
+ id="Ebene_1"
10
+ x="0px"
11
+ y="0px"
12
+ viewBox="0 0 800 200"
13
+ xml:space="preserve"
14
+ width="800"
15
+ height="200"><metadata
16
+ id="metadata33"><rdf:RDF><cc:Work
17
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
18
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
19
+ id="defs31" />
20
+ <style
21
+ type="text/css"
22
+ id="style2">
23
+ .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#E73E11;}
24
+ .st1{fill-rule:evenodd;clip-rule:evenodd;fill:#0371B9;}
25
+ .st2{fill:#132E48;}
26
+ .st3{font-family:'OpenSans-Bold';}
27
+ .st4{font-size:29.5168px;}
28
+ .st5{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
29
+ .st6{opacity:0.5;fill:#132E48;}
30
+ .st7{font-family:'OpenSans';}
31
+ .st8{font-size:12px;}
32
+ </style>
33
+ <g
34
+ transform="translate(0,1.53584)"
35
+ id="g828"><g
36
+ transform="translate(35.93985,35.66416)"
37
+ id="g8">
38
+ <path
39
+ style="clip-rule:evenodd;fill:#e73e11;fill-rule:evenodd"
40
+ id="path4"
41
+ d="m -0.1,124.4 c 0,0 33.7,-123.2 66.7,-123.2 12.8,0 26.9,21.9 38.8,47.2 -23.6,27.9 -66.6,59.7 -94,76 -7.1,0 -11.5,0 -11.5,0 z"
42
+ class="st0" />
43
+ <path
44
+ style="clip-rule:evenodd;fill:#0371b9;fill-rule:evenodd"
45
+ id="path6"
46
+ d="m 88.1,101.8 c 13.5,-10.4 18.4,-16.2 27.1,-25.4 10,25.7 16.7,48 16.7,48 0,0 -41.4,0 -78,0 14.6,-7.9 18.7,-10.7 34.2,-22.6 z"
47
+ class="st1" />
48
+ </g><text
49
+ y="106.40316"
50
+ x="192.43155"
51
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.51733398px;font-family:'Open Sans', sans-serif;-inkscape-font-specification:'OpenSans-Bold, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#132e48"
52
+ id="text10"
53
+ class="st2 st3 st4">Immoscout</text>
54
+ <rect
55
+ style="clip-rule:evenodd;fill:none;fill-rule:evenodd"
56
+ id="rect12"
57
+ height="24"
58
+ width="314.5"
59
+ class="st5"
60
+ y="118.06416"
61
+ x="194.23985" /><text
62
+ y="127.22146"
63
+ x="194.21715"
64
+ style="font-size:12px;font-family:'Open Sans', sans-serif;opacity:0.5;fill:#132e48;-inkscape-font-specification:'Open Sans, sans-serif, Normal';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
65
+ id="text14"
66
+ class="st6 st7 st8">Ruby client for the Immobilienscout24 REST API</text>
67
+ </g>
68
+ </svg>
@@ -0,0 +1,9 @@
1
+ version: "3"
2
+ services:
3
+ test:
4
+ build: .
5
+ env_file: Envfile
6
+ network_mode: bridge
7
+ working_dir: /app
8
+ volumes:
9
+ - .:/app
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file was generated by Appraisal
4
+
5
+ source 'https://rubygems.org'
6
+
7
+ gem 'activesupport', '~> 5.2.2'
8
+
9
+ gemspec path: '../'