checkoff 0.212.0 → 0.214.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34132f08545178fb734e53d13dfd7c26beb191e250271f2a93bea9339a85c5e6
4
- data.tar.gz: ab5ac20f30aa186f4d1644b79dd8cc295e90d27add1f92a4bc26546dda9c2d33
3
+ metadata.gz: a5198dc08520f7837cba69dad84b9d2045d92255f2e6de626543619ea974e27e
4
+ data.tar.gz: 71810fc8bd1f67198a3f4bd4d02573992ab3b4bee2239a82d63be645a3342d0b
5
5
  SHA512:
6
- metadata.gz: d2b206e0a283c2ecf73b9128d3831190192d356a98dc2bf5fd2df46febf6997667e0bb2f5323d557a53cebf35f304ec9bda971f7bfec51de69634eedb0a734ab
7
- data.tar.gz: 1e86ffd4af0f6ce5e8d5a4be89ee67fdc48fbbcd5600f48ce517ae2931f488c975c0a049df772cd4bbbfdb4396bcc416553da67d76c9bbebde766b46546dbec8
6
+ metadata.gz: 7e0fed093e0d205fe01b39982b4cced95ab312e04211cef0a5eacf96d50678c50bf538adea04aef446aab14120582f93bf702e05ad7ba2189385002eb51efa35
7
+ data.tar.gz: 9ac889b3320d9ddd45c4261cf28e575a7400c56186e757c4baa82cda9366d157a5c8aa2687970b1f357a380987504ac7bebce91b2cc7cf9df9d11b19acfcc934
data/.circleci/config.yml CHANGED
@@ -22,8 +22,12 @@ commands:
22
22
  eval "$(pyenv init --path)"
23
23
  eval "$(pyenv virtualenv-init -)"
24
24
  eval "$(rbenv init -)"
25
+
25
26
  # keep this in a single place for both main and child builds for cachability
26
- export BUNDLE_PATH="$(pwd)/vendor/bundle"
27
+ BUNDLE_PATH="$(pwd)/vendor/bundle"
28
+ export BUNDLE_PATH
29
+ GEM_HOME="${BUNDLE_PATH}"
30
+ export GEM_HOME
27
31
 
28
32
  <<parameters.command>>
29
33
  environment:
@@ -34,23 +38,24 @@ commands:
34
38
  description: "Install source environment"
35
39
  steps:
36
40
  - checkout
41
+ - run:
42
+ name: Update timestamps to original commit time
43
+ command: |
44
+ git ls-tree -r --name-only HEAD | while read filename; do \
45
+ unixtime=$(git log -1 --format="%at" -- "${filename}")
46
+ touchtime=$(date -d @$unixtime +'%Y%m%d%H%M.%S')
47
+ touch -t ${touchtime} "${filename}"
48
+ done
37
49
  - restore_cache:
38
50
  keys:
39
- - gems-v4-{{ checksum "Gemfile.lock" }}-
40
- - gems-v4-
41
- - gems-
42
- - restore_cache:
43
- keys:
44
- - solargraph-v2-{{ checksum "Gemfile.lock" }}-{{ .Branch }}
45
- - solargraph-v2-{{ checksum "Gemfile.lock" }}-
46
- - solargraph-v2-
47
- - solargraph-
51
+ - rbenv-v4-{{ checksum "Gemfile.lock" }}-
52
+ - rbenv-v4-
53
+ - rbenv-
48
54
  - restore_cache:
49
55
  keys:
50
- - wheels-v1-3.12.7-{{ checksum "requirements_dev.txt" }}
51
- - wheels-v1-3.12.7-
52
- - wheels-v1-
53
- - wheels-
56
+ - pyenv-v2-{{ checksum "requirements_dev.txt" }}-
57
+ - pyenv-v2-
58
+ - pyenv-
54
59
  - run:
55
60
  name: Initialize packages
56
61
  command: |
@@ -59,7 +64,11 @@ commands:
59
64
 
60
65
  # export FIX_SH_TIMING_LOG=/tmp/fix_sh_timing.log
61
66
 
62
- export BUNDLE_PATH="$(pwd)/vendor/bundle"
67
+ BUNDLE_PATH="$(pwd)/vendor/bundle"
68
+ export BUNDLE_PATH
69
+ GEM_HOME="${BUNDLE_PATH}"
70
+ export GEM_HOME
71
+
63
72
  './fix.sh'
64
73
  - store_artifacts:
65
74
  path: /tmp/fix_sh_timing.log
@@ -72,17 +81,20 @@ commands:
72
81
  exit 1
73
82
  fi
74
83
  - save_cache:
75
- key: gems-v4-{{ checksum "Gemfile.lock" }}-{{ checksum ".ruby-version" }}
84
+ key: rbenv-v4-{{ checksum "Gemfile.lock" }}-{{ checksum ".ruby-version" }}
76
85
  paths:
86
+ - "Gemfile.lock.installed"
87
+ - "types.installed"
77
88
  - "vendor/bundle"
89
+ - "/home/circleci/.rbenv"
78
90
  - ".yardoc"
79
- - "/home/circleci/.rbenv/versions/3.1.6/lib/ruby/gems/"
91
+ - "/home/circleci/.cache/solargraph"
80
92
  - save_cache:
81
- key: wheels-v1-3.12.7-{{ checksum "requirements_dev.txt" }}
93
+ key: pyenv-v2-{{ checksum "requirements_dev.txt" }}-{{ checksum ".python-version" }}
82
94
  paths:
95
+ - "requirements_dev.txt.installed"
83
96
  - "/home/circleci/.cache/pip/wheels"
84
- - "/home/circleci/.pyenv/versions/3.12.7/envs/checkoff-3.12.7"
85
- - "/home/circleci/.pyenv/versions/checkoff-3.12.7"
97
+ - "/home/circleci/.pyenv"
86
98
  - run:
87
99
  name: Download new circleci tool
88
100
  command: |
@@ -196,13 +208,13 @@ jobs:
196
208
  quality:
197
209
  working_directory: ~/checkoff
198
210
  docker:
199
- - image: apiology/circleci-ruby:latest
211
+ - image: cimg/base:current
200
212
  steps:
201
213
  - quality
202
214
  build:
203
215
  working_directory: ~/checkoff
204
216
  docker:
205
- - image: apiology/circleci-ruby:latest
217
+ - image: cimg/base:current
206
218
  steps:
207
219
  - set_up_environment
208
220
  - when:
@@ -218,17 +230,12 @@ jobs:
218
230
  label: Test
219
231
  command: |
220
232
  make citest cicoverage
221
- - save_cache:
222
- key: solargraph-v2-{{ checksum "Gemfile.lock" }}-{{ .Branch }}
223
- paths:
224
- - ".yardoc"
225
- - "/home/circleci/.cache/solargraph"
226
233
  # This seemed to shave 5ish% of the build time off when added
227
234
  resource_class: large
228
235
  publish_gem:
229
236
  working_directory: ~/checkoff
230
237
  docker:
231
- - image: apiology/circleci-ruby:latest
238
+ - image: cimg/base:current
232
239
  steps:
233
240
  - set_up_environment
234
241
  - run_with_languages:
data/.envrc CHANGED
@@ -2,3 +2,8 @@
2
2
  PATH_add bin
3
3
 
4
4
  direnv_load op run --cache --env-file=config/env.1p -- direnv dump
5
+
6
+ BUNDLE_PATH="$(pwd)/vendor/bundle"
7
+ export BUNDLE_PATH
8
+ GEM_HOME="${BUNDLE_PATH}"
9
+ export GEM_HOME
data/.gitignore CHANGED
@@ -41,6 +41,7 @@ Temporary Items
41
41
  # Used by Makefile to track what we have and haven't installed
42
42
  Gemfile.lock.installed
43
43
  requirements_dev.txt.installed
44
+ types.installed
44
45
 
45
46
  # Used by CircleCI as a place to store installed gems
46
47
  /vendor
data/Gemfile.lock CHANGED
@@ -43,7 +43,7 @@ GIT
43
43
  PATH
44
44
  remote: .
45
45
  specs:
46
- checkoff (0.212.0)
46
+ checkoff (0.214.0)
47
47
  activesupport
48
48
  asana (> 0.10.0)
49
49
  cache_method
@@ -167,16 +167,16 @@ GEM
167
167
  multi_xml (0.6.0)
168
168
  multipart-post (2.3.0)
169
169
  mutex_m (0.3.0)
170
- nokogiri (1.16.7)
170
+ nokogiri (1.16.8)
171
171
  mini_portile2 (~> 2.8.2)
172
172
  racc (~> 1.4)
173
- nokogiri (1.16.7-aarch64-linux)
173
+ nokogiri (1.16.8-aarch64-linux)
174
174
  racc (~> 1.4)
175
- nokogiri (1.16.7-arm64-darwin)
175
+ nokogiri (1.16.8-arm64-darwin)
176
176
  racc (~> 1.4)
177
- nokogiri (1.16.7-x86_64-darwin)
177
+ nokogiri (1.16.8-x86_64-darwin)
178
178
  racc (~> 1.4)
179
- nokogiri (1.16.7-x86_64-linux)
179
+ nokogiri (1.16.8-x86_64-linux)
180
180
  racc (~> 1.4)
181
181
  oauth2 (1.4.11)
182
182
  faraday (>= 0.17.3, < 3.0)
@@ -198,7 +198,7 @@ GEM
198
198
  public_suffix (5.0.4)
199
199
  punchlist (1.3.2)
200
200
  source_finder (>= 2)
201
- racc (1.7.3)
201
+ racc (1.8.1)
202
202
  rack (3.0.8)
203
203
  rainbow (3.1.1)
204
204
  rake (13.1.0)
@@ -263,6 +263,7 @@ PLATFORMS
263
263
  aarch64-linux
264
264
  arm64-darwin-23
265
265
  arm64-linux
266
+ ruby
266
267
  x86_64-darwin-23
267
268
  x86_64-linux
268
269
  x86_64-linux-musl
data/Makefile CHANGED
@@ -17,9 +17,12 @@ help:
17
17
 
18
18
  default: clean-coverage test coverage clean-typecoverage typecheck typecoverage quality ## run default typechecking, tests and quality
19
19
 
20
- build-typecheck: bundle_install ## Fetch information that type checking depends on
20
+ build-typecheck: types.installed ## Fetch information that type checking depends on
21
+
22
+ types.installed: Gemfile.lock Gemfile.lock.installed ## Install Ruby dependencies
21
23
  bundle exec yard gems 2>&1 || bundle exec yard gems --safe 2>&1 || bundle exec yard gems 2>&1
22
24
  # bundle exec solargraph scan 2>&1
25
+ touch types.installed
23
26
 
24
27
  clean-typecheck: ## Refresh information that type checking depends on
25
28
  bundle exec solargraph clear
@@ -100,7 +103,7 @@ update_from_cookiecutter: ## Bring in changes from template project used to crea
100
103
  git merge cookiecutter-template || true
101
104
  git checkout --ours Gemfile.lock || true
102
105
  # update frequently security-flagged gems while we're here
103
- bundle update --conservative rexml || true
106
+ bundle update --conservative rexml nokogiri || true
104
107
  git add Gemfile.lock || true
105
108
  bundle install || true
106
109
  bundle exec overcommit --install || true
data/fix.sh CHANGED
@@ -127,7 +127,7 @@ ensure_binary_library() {
127
127
  ! [ -f /usr/local/lib/"${library_base_name}.so" ] && \
128
128
  ! [ -f /usr/local/opt/"${homebrew_package}/lib/${library_base_name}*.dylib" ]
129
129
  then
130
- if ! compgen -G "/opt/homebrew/Cellar/${homebrew_package}"*/*/"lib/${library_base_name}"*.dylib
130
+ if ! compgen -G "/opt/homebrew/Cellar/${homebrew_package}"*/*/"lib/${library_base_name}"*.dylib >/dev/null 2>&1
131
131
  then
132
132
  install_package "${homebrew_package}" "${apt_package}"
133
133
  fi
@@ -148,10 +148,21 @@ ensure_latest_ruby_build_definitions() {
148
148
  # # if not pulled in last 24 hours
149
149
  # if [ $(( $(date +%s) - last_pulled_unix_epoch )) -gt $(( 24 * 60 * 60 )) ]
150
150
  # then
151
- git -C "$(rbenv root)"/plugins/ruby-build pull
151
+ git -C "$HOME"/.rbenv/plugins/ruby-build pull
152
152
  # fi
153
153
  }
154
154
 
155
+ # https://stackoverflow.com/questions/2829613/how-do-you-tell-if-a-string-contains-another-string-in-posix-sh
156
+ contains() {
157
+ string="$1"
158
+ substring="$2"
159
+ if [ "${string#*"$substring"}" != "$string" ]; then
160
+ return 0 # $substring is in $string
161
+ else
162
+ return 1 # $substring is not in $string
163
+ fi
164
+ }
165
+
155
166
  # You can find out which feature versions are still supported / have
156
167
  # been release here: https://www.ruby-lang.org/en/downloads/
157
168
  ensure_ruby_versions() {
@@ -161,14 +172,21 @@ ensure_ruby_versions() {
161
172
  # been release here: https://www.ruby-lang.org/en/downloads/
162
173
  ruby_versions="$(latest_ruby_version 3.1)"
163
174
 
164
- echo "Latest Ruby versions: ${ruby_versions}"
175
+ installed_ruby_versions="$(rbenv versions --bare --skip-aliases)"
165
176
 
166
- ensure_ruby_build_requirements
177
+ echo "Latest Ruby versions: ${ruby_versions}"
167
178
 
168
179
  for ver in $ruby_versions
169
180
  do
170
- rbenv install -s "${ver}"
171
- hash -r # ensure we are seeing latest bundler etc
181
+ if ! contains "${installed_ruby_versions}"$'\n' "${ver}"$'\n'; then
182
+ echo "Installing Ruby version $ver - existing versions: $installed_ruby_versions"
183
+ ensure_ruby_build_requirements
184
+
185
+ rbenv install -s "${ver}"
186
+ hash -r # ensure we are seeing latest bundler etc
187
+ else
188
+ echo "Found Ruby version $ver already installed"
189
+ fi
172
190
  done
173
191
  }
174
192
 
@@ -177,19 +195,23 @@ ensure_bundle() {
177
195
  #
178
196
  # https://app.circleci.com/pipelines/github/apiology/source_finder/21/workflows/88db659f-a4f4-4751-abc0-46f5929d8e58/jobs/107
179
197
  set_rbenv_env_variables
180
- type bundle >/dev/null 2>&1 || gem install --no-document bundler
181
- bundler_version=$(bundle --version | cut -d ' ' -f3)
198
+
199
+ bundler_version=$(ruby -e 'require "rubygems/bundler_version_finder"; puts Gem::BundlerVersionFinder.bundler_version')
200
+ # if bundler_version is empty
201
+ if [ -z "${bundler_version}" ]
202
+ then
203
+ bundler_version=$(bundle --version | cut -d ' ' -f 3)
204
+ fi
205
+ # if bundler_version is still empty
206
+ if [ -z "${bundler_version}" ]
207
+ then
208
+ gem install bundler
209
+ bundler_version=$(bundle --version | cut -d ' ' -f 3)
210
+ fi
211
+ echo "Bundler version: ${bundler_version}"
182
212
  bundler_version_major=$(cut -d. -f1 <<< "${bundler_version}")
183
213
  bundler_version_minor=$(cut -d. -f2 <<< "${bundler_version}")
184
214
  bundler_version_patch=$(cut -d. -f3 <<< "${bundler_version}")
185
- # Version 2.1 of bundler seems to have some issues with nokogiri:
186
- #
187
- # https://app.asana.com/0/1107901397356088/1199504270687298
188
-
189
- # Version <2.2.22 of bundler isn't compatible with Ruby 3.3:
190
- #
191
- # https://stackoverflow.com/questions/70800753/rails-calling-didyoumeanspell-checkers-mergeerror-name-spell-checker-h
192
- #
193
215
  #
194
216
  # Version 2.5.5 fixed an issue in 2.2.22 with the 'bump' gem:
195
217
  #
@@ -233,7 +255,14 @@ ensure_bundle() {
233
255
  #
234
256
  # This affects nokogiri, which will try to reinstall itself in
235
257
  # Docker builds where it's already installed if this is not run.
236
- bundle lock --add-platform arm64-darwin-23 x86_64-darwin-23 x86_64-linux x86_64-linux-musl aarch64-linux arm64-linux
258
+ PLATFORMS="ruby arm64-darwin-23 x86_64-darwin-23 x86_64-linux x86_64-linux-musl aarch64-linux arm64-linux"
259
+ for platform in ${PLATFORMS}
260
+ do
261
+ if ! grep -q "^ ${platform}$" Gemfile.lock
262
+ then
263
+ bundle lock --add-platform "${platform}"
264
+ fi
265
+ done
237
266
  make bundle_install
238
267
  }
239
268
 
@@ -364,24 +393,32 @@ ensure_python_versions() {
364
393
 
365
394
  echo "Latest Python versions: ${python_versions}"
366
395
 
367
- ensure_python_build_requirements
396
+ installed_python_versions="$(pyenv versions --skip-envs --skip-aliases --bare)"
368
397
 
369
398
  for ver in $python_versions
370
399
  do
371
- if [ "$(uname)" == Darwin ]
372
- then
373
- if [ -z "${HOMEBREW_OPENSSL_PREFIX:-}" ]
400
+ if ! contains "${installed_python_versions}"$'\n' "${ver}"$'\n'; then
401
+ echo "Installing Python version $ver - existing versions: $installed_python_versions"
402
+ ensure_python_build_requirements
403
+
404
+ if [ "$(uname)" == Darwin ]
374
405
  then
375
- HOMEBREW_OPENSSL_PREFIX="$(brew --prefix openssl)"
406
+ if [ -z "${HOMEBREW_OPENSSL_PREFIX:-}" ]
407
+ then
408
+ HOMEBREW_OPENSSL_PREFIX="$(brew --prefix openssl)"
409
+ fi
410
+ pyenv_install() {
411
+ CFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include -I${HOMEBREW_OPENSSL_PREFIX}/include" LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib -L${HOMEBREW_OPENSSL_PREFIX}/lib" pyenv install --skip-existing "$@"
412
+ }
413
+
414
+ major_minor="$(cut -d. -f1-2 <<<"${ver}")"
415
+ pyenv_install "${ver}"
416
+ else
417
+ pyenv install -s "${ver}"
376
418
  fi
377
- pyenv_install() {
378
- CFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include -I${HOMEBREW_OPENSSL_PREFIX}/include" LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib -L${HOMEBREW_OPENSSL_PREFIX}/lib" pyenv install --skip-existing "$@"
379
- }
380
-
381
- major_minor="$(cut -d. -f1-2 <<<"${ver}")"
382
- pyenv_install "${ver}"
419
+ hash -r
383
420
  else
384
- pyenv install -s "${ver}"
421
+ echo "Found Python version $ver already installed"
385
422
  fi
386
423
  done
387
424
  }
@@ -404,7 +441,7 @@ ensure_pyenv_virtualenvs() {
404
441
 
405
442
  ensure_pip_and_wheel() {
406
443
  # https://cve.mitre.org/cgi-bin/cvename.cgi?name=2023-5752
407
- pip_version=$(pip --version | cut -d' ' -f2)
444
+ pip_version=$(python -c "import pip; print(pip.__version__)" | cut -d' ' -f2)
408
445
  major_pip_version=$(cut -d '.' -f 1 <<< "${pip_version}")
409
446
  minor_pip_version=$(cut -d '.' -f 2 <<< "${pip_version}")
410
447
  if [[ major_pip_version -lt 23 ]]
@@ -415,7 +452,7 @@ ensure_pip_and_wheel() {
415
452
  pip install 'pip>=23.3'
416
453
  fi
417
454
  # wheel is helpful for being able to cache long package builds
418
- type wheel || pip install wheel
455
+ type wheel >/dev/null 2>&1 || pip install wheel
419
456
  }
420
457
 
421
458
  ensure_python_requirements() {
@@ -443,9 +480,26 @@ ensure_overcommit() {
443
480
  }
444
481
 
445
482
  ensure_rugged_packages_installed() {
446
- ensure_binary_library libicuio icu4c libicu-dev # needed by rugged, needed by undercover
447
- ensure_package pkg-config # needed by rugged, needed by undercover
448
- ensure_package cmake # needed by rugged, needed by undercover
483
+ # only needed if we don't already have rugged installed
484
+ if ! ls vendor/bundle/ruby/*/gems/rugged-* &>/dev/null
485
+ then
486
+ echo "Current directory"
487
+ pwd
488
+ echo "Vendor dir"
489
+ ls -l vendor || true
490
+ echo "List of vendor/bundle/gems:"
491
+ ls vendor/bundle/gems || true
492
+ echo "Did not find rugged gem installed; installing packages needed for rugged"
493
+ echo "Installed gems:"
494
+ gem list
495
+ echo "Gem environment:"
496
+ gem environment
497
+ echo "Bundle list:"
498
+ bundle list || true
499
+ ensure_binary_library libicuio icu4c libicu-dev # needed by rugged, needed by undercover
500
+ ensure_package pkg-config # needed by rugged, needed by undercover
501
+ ensure_package cmake # needed by rugged, needed by undercover
502
+ fi
449
503
  }
450
504
 
451
505
  ensure_rbenv
@@ -3,5 +3,5 @@
3
3
  # Command-line and gem client for Asana (unofficial)
4
4
  module Checkoff
5
5
  # Version of library
6
- VERSION = '0.212.0'
6
+ VERSION = '0.214.0'
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.212.0
4
+ version: 0.214.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-07 00:00:00.000000000 Z
11
+ date: 2024-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport