checkoff 0.212.0 → 0.214.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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