shotgun_api_ruby 0.0.8 → 0.1.1

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: 3ae703829a60a9216ec532dd7d90c627bc15cab08a766ba245a90f67f7bff696
4
- data.tar.gz: b7dfe8b5ecfe096ea87986eb5c4e292919503133e8baea2d115405ae52d349bb
3
+ metadata.gz: 4ba416f8dc0858ce91112f5f283d36878e31e777438b293c07ecfa63bfda0553
4
+ data.tar.gz: 2a8d1af31bd3936b5290250f6865bd832d76e4f92734bf0175d581be29bb71b3
5
5
  SHA512:
6
- metadata.gz: 9b9463f3e579cd14c74036e25691ccb73a296268a2729b188dd52453f459287c5c212ed357a48c06b6e41376a018fe7a79c5f88e9ff8b577abaa1bcc1b9b852b
7
- data.tar.gz: 972f60041a6f0025c3691d4ed44ae08991b1b544030a59cbba61bbcbadf55ff6061032826a483572d37e3e23a12deddf6005d78870de9b84429fbdcceb5fc550
6
+ metadata.gz: 42f2984ef2a0f98e0e54d9e6c470bed71647d3f8a49d9dff17a8111f8081478425320f44f21ac65b2e41f6c5e7c395c9fbcf382393ff2c9ff4017be48c50c068
7
+ data.tar.gz: d1bb4d22f4375688fe930b36c31a9a90c0bab8081103924671fe834cb7ee036ca9106cea64faf8ffbb52d1f2da63e3d9c1a39aa433d64ba9363db18c28d46eae
@@ -2,72 +2,57 @@ name: Test and Release
2
2
 
3
3
  on:
4
4
  push:
5
- branches:
5
+ branches:
6
6
  - main
7
7
 
8
8
  jobs:
9
- test-2_5:
9
+ tests:
10
+ strategy:
11
+ matrix:
12
+ ruby: [2.6, 2.7, 3.0]
10
13
  runs-on: ubuntu-latest
11
14
 
12
15
  steps:
13
- - uses: actions/checkout@v2
14
- - name: Set up Ruby
15
- uses: ruby/setup-ruby@v1
16
- with:
17
- ruby-version: 2.5
18
- - name: Install dependencies
19
- run: bundle install
20
- - name: Run linter
21
- run: bundle exec rubocop
22
- - name: Run tests
23
- run: bundle exec rspec
24
- test-2_6:
16
+ - uses: actions/checkout@v2
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ bundler-cache: true
22
+ - name: Run linter
23
+ run: bundle exec rubocop
24
+ - name: Run tests
25
+ run: bundle exec rspec
26
+ prettier:
25
27
  runs-on: ubuntu-latest
26
-
27
- steps:
28
- - uses: actions/checkout@v2
29
- - name: Set up Ruby
30
- uses: ruby/setup-ruby@v1
31
- with:
32
- ruby-version: 2.6
33
- - name: Install dependencies
34
- run: bundle install
35
- - name: Run linter
36
- run: bundle exec rubocop
37
- - name: Run tests
38
- run: bundle exec rspec
39
- test-2_7:
40
- runs-on: ubuntu-latest
41
-
42
28
  steps:
43
- - uses: actions/checkout@v2
44
- - name: Set up Ruby
45
- uses: ruby/setup-ruby@v1
46
- with:
47
- ruby-version: 2.7
48
- - name: Install dependencies
49
- run: bundle install
50
- - name: Run linter
51
- run: bundle exec rubocop
52
- - name: Run tests
53
- run: bundle exec rspec
29
+ - uses: actions/checkout@v2
30
+ - name: Set up Node
31
+ uses: actions/setup-node@v2
32
+ with:
33
+ node-version: '14'
34
+ - name: Install yarn dep
35
+ run: yarn install
36
+ - name: Check prettier
37
+ run: yarn prettier -c '**/*.rb'
54
38
  release:
55
- needs: [test-2_5, test-2_6, test-2_7]
39
+ needs: [tests, prettier]
56
40
  runs-on: ubuntu-latest
57
41
 
58
42
  steps:
59
- - uses: actions/checkout@v2
60
- - name: Set up Ruby
61
- uses: ruby/setup-ruby@v1
62
- with:
63
- ruby-version: 2.7
64
- - name: Install dependencies
65
- run: bundle install
66
- - name: Prepare credentials
67
- env:
68
- RUBYGEM_KEY: ${{ secrets.RUBYGEM_KEY }}
69
- run: "echo -e \"---\\r\\n:rubygems_api_key: $RUBYGEM_KEY\" > ~/.gem/credentials && chmod 0600 ~/.gem/credentials"
70
- - name: Setup username/email
71
- run: "git config --global user.email zaratan@hey.com && git config --global user.name \"Denis <Zaratan> Pasin\""
72
- - name: Publish
73
- run: rake release
43
+ - uses: actions/checkout@v2
44
+ - name: Set up Ruby
45
+ uses: ruby/setup-ruby@v1
46
+ with:
47
+ ruby-version: 3.0
48
+ bundler-cache: true
49
+ - name: Prepare credentials
50
+ env:
51
+ RUBYGEM_KEY: ${{ secrets.RUBYGEM_KEY }}
52
+ run: "mkdir -p ~/.gem && echo -e \"---\\r\\n:rubygems_api_key: $RUBYGEM_KEY\" > ~/.gem/credentials && chmod 0600 ~/.gem/credentials"
53
+ - name: Setup username/email
54
+ run: 'git config --global user.email zaratan@hey.com && git config --global user.name "Denis <Zaratan> Pasin"'
55
+ - name: Fetch tags from remote
56
+ run: 'git fetch -t'
57
+ - name: Publish if version change
58
+ run: 'git diff `git tag | tail -1` -- lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" && rake release || echo "No release for now"'
@@ -2,52 +2,36 @@ name: Tests
2
2
 
3
3
  on:
4
4
  push:
5
- branches-ignore:
5
+ branches-ignore:
6
6
  - main
7
7
 
8
8
  jobs:
9
- test-2_5:
9
+ tests:
10
+ strategy:
11
+ matrix:
12
+ ruby: [2.6, 2.7, 3.0]
10
13
  runs-on: ubuntu-latest
11
14
 
12
15
  steps:
13
- - uses: actions/checkout@v2
14
- - name: Set up Ruby
15
- uses: ruby/setup-ruby@v1
16
- with:
17
- ruby-version: 2.5
18
- - name: Install dependencies
19
- run: bundle install
20
- - name: Run linter
21
- run: bundle exec rubocop
22
- - name: Run tests
23
- run: bundle exec rspec
24
- test-2_6:
16
+ - uses: actions/checkout@v2
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ bundler-cache: true
22
+ - name: Run linter
23
+ run: bundle exec rubocop
24
+ - name: Run tests
25
+ run: bundle exec rspec
26
+ prettier:
25
27
  runs-on: ubuntu-latest
26
-
27
- steps:
28
- - uses: actions/checkout@v2
29
- - name: Set up Ruby
30
- uses: ruby/setup-ruby@v1
31
- with:
32
- ruby-version: 2.6
33
- - name: Install dependencies
34
- run: bundle install
35
- - name: Run linter
36
- run: bundle exec rubocop
37
- - name: Run tests
38
- run: bundle exec rspec
39
- test-2_7:
40
- runs-on: ubuntu-latest
41
-
42
28
  steps:
43
- - uses: actions/checkout@v2
44
- - name: Set up Ruby
45
- uses: ruby/setup-ruby@v1
46
- with:
47
- ruby-version: 2.7
48
- - name: Install dependencies
49
- run: bundle install
50
- - name: Run linter
51
- run: bundle exec rubocop
52
- - name: Run tests
53
- run: bundle exec rspec
29
+ - uses: actions/checkout@v2
30
+ - name: Set up Node
31
+ uses: actions/setup-node@v2
32
+ with:
33
+ node-version: '14'
34
+ - name: Install yarn dep
35
+ run: yarn install
36
+ - name: Check prettier
37
+ run: yarn prettier -c '**/*.rb'
@@ -14,8 +14,8 @@ jobs:
14
14
  - name: Fetch main branch
15
15
  run: git fetch origin main:main
16
16
  - name: Verify if there's a change in version
17
- run: "git diff main lib/shotgun_api_ruby/version.rb | grep VERSION"
17
+ run: "git diff main -- lib/shotgun_api_ruby/version.rb | grep VERSION"
18
18
  - name: Print new version
19
- run: 'git diff main lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?"'
19
+ run: 'git diff main -- lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?"'
20
20
  - name: Verify if higher version
21
- run: '[[ $(git diff main lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?") > $(git diff main lib/shotgun_api_ruby/version.rb | grep -E "^-.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?") ]]'
21
+ run: '[[ $(git diff main -- lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?") > $(git diff main -- lib/shotgun_api_ruby/version.rb | grep -E "^-.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?") ]]'
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  .rspec_status
12
12
  .env
13
13
  Gemfile.lock
14
+ Gemfile.lock
data/.overcommit.yml CHANGED
@@ -6,7 +6,16 @@ PreCommit:
6
6
  enabled: true
7
7
  BundleAudit:
8
8
  enabled: true
9
+ Prettier:
10
+ enabled: true
11
+ required_executable: './bin/prettirun'
9
12
  PrePush:
10
13
  RSpec:
11
14
  enabled: true
12
15
  command: ['bundle', 'exec', 'rspec', '-f', 'p'] # Invoke within Bundler context
16
+ Prettier:
17
+ enabled: true
18
+ required_executable: './bin/prettirun'
19
+ Rubocop:
20
+ enabled: true
21
+ required_executable: './bin/ruborun'
data/.prettierrc.js ADDED
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ trailingComma: "es5",
3
+ singleQuote: true,
4
+ };
data/.rubocop.yml CHANGED
@@ -1,6 +1,9 @@
1
1
  inherit_from:
2
2
  - http://relaxed.ruby.style/rubocop.yml
3
3
 
4
+ inherit_gem:
5
+ prettier: rubocop.yml
6
+
4
7
  require:
5
8
  - rubocop-performance
6
9
 
@@ -8,56 +11,11 @@ AllCops:
8
11
  NewCops: enable
9
12
  DisplayStyleGuide: true
10
13
  DisplayCopNames: true
14
+ SuggestExtensions: false
11
15
  Exclude:
12
- - 'db/schema.rb'
13
-
14
- Style/GlobalVars:
15
- Enabled: false
16
-
17
- Gemspec/RequiredRubyVersion:
18
- Enabled: false
19
-
20
- Layout/DotPosition:
21
- Enabled: true
22
- EnforcedStyle: trailing
23
-
24
- Style/TrailingCommaInArrayLiteral:
25
- Enabled: true
26
- EnforcedStyleForMultiline: comma
27
-
28
- Style/TrailingCommaInHashLiteral:
29
- Enabled: true
30
- EnforcedStyleForMultiline: comma
31
-
32
- Layout/MultilineArrayLineBreaks:
33
- Enabled: true
34
-
35
- Layout/MultilineHashKeyLineBreaks:
36
- Enabled: true
37
-
38
- Layout/MultilineMethodArgumentLineBreaks:
39
- Enabled: true
40
-
41
- Layout/FirstArrayElementLineBreak:
42
- Enabled: true
43
-
44
- Layout/FirstHashElementLineBreak:
45
- Enabled: true
46
-
47
- Layout/FirstMethodArgumentLineBreak:
48
- Enabled: true
49
-
50
- Layout/MultilineAssignmentLayout:
51
- Enabled: true
52
-
53
- Layout/LineLength:
54
- Enabled: true
55
- Max: 120
56
- AutoCorrect: true
57
- Exclude:
58
- - Gemfile
59
- - Guardfile
60
- - spec/interactors/send_gdpr_response_spec.rb
16
+ - 'bin/*'
17
+ - 'vendor/**/*'
18
+ - 'node_modules/**/*'
61
19
 
62
20
  Metrics/BlockLength:
63
21
  Exclude:
@@ -66,3 +24,10 @@ Metrics/BlockLength:
66
24
  - 'config/environments/*.rb'
67
25
  - 'lib/tasks/*.rake'
68
26
  - 'shotgun_api_ruby.gemspec'
27
+
28
+ ### Prettier
29
+ Style:
30
+ Enabled: false
31
+
32
+ Gemspec/RequiredRubyVersion:
33
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -6,6 +6,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.1] - 2021-06-15
10
+ ### Added
11
+ - summarize and count support
12
+
13
+ ## [0.1.0] - 2021-06-14
14
+ ### Added
15
+ - Complete test coverage (Unit + Integration tests)
16
+ - Adding minimum coverage for tests
17
+ - Adding Guard
18
+
19
+ ### Changed
20
+ - Fixed many edge-case bugs
21
+
22
+ ### Removed
23
+ - Removed the `Gemfile.lock` since it shouldn't be commited in gems
24
+
25
+ ## [0.0.8.5] - 2021-01-15
26
+ ### Added
27
+ - Added prettier for ruby style
28
+
29
+ ## [0.0.8.4] - 2021-01-07
30
+ ### Changed
31
+ - Safer eager_load
32
+
33
+ ## [0.0.8.3] - 2021-01-07
34
+ ### Added
35
+ - eager_load files to fix weird bugs in rspec
36
+
9
37
  ## [0.0.8] - 2020-12-16
10
38
  ### Added
11
39
  - Schema: read
@@ -18,6 +46,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
18
46
  - Entities: delete
19
47
  - Entities: revive
20
48
 
21
- [Unreleased]: https://github.com/shotgunsoftware/shotgun_api_ruby/compare/v0.0.8...HEAD
49
+ [Unreleased]: https://github.com/shotgunsoftware/shotgun_api_ruby/compare/v0.1.1...HEAD
50
+ [0.1.1]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.1.1
51
+ [0.1.0]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.1.0
52
+ [0.0.8.5]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.8.5
53
+ [0.0.8.4]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.8.4
54
+ [0.0.8.3]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.8.3
22
55
  [0.0.8]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.8
23
56
  [0.0.7]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.7
data/Guardfile ADDED
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # A sample Guardfile
4
+ # More info at https://github.com/guard/guard#readme
5
+
6
+ ## Uncomment and set this to only include directories you want to watch
7
+ # directories %w(app lib config test spec features) \
8
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
9
+
10
+ ## Note: if you are using the `directories` clause above and you are not
11
+ ## watching the project directory ('.'), then you will want to move
12
+ ## the Guardfile to a watched dir and symlink it back, e.g.
13
+ #
14
+ # $ mkdir config
15
+ # $ mv Guardfile config/
16
+ # $ ln -s config/Guardfile .
17
+ #
18
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
19
+
20
+ # Note: The cmd option is now required due to the increasing number of ways
21
+ # rspec may be run, below are examples of the most common uses.
22
+ # * bundler: 'bundle exec rspec'
23
+ # * bundler binstubs: 'bin/rspec'
24
+ # * spring: 'bin/rspec' (This will use spring if running and you have
25
+ # installed the spring binstubs per the docs)
26
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
27
+ # * 'just' rspec: 'rspec'
28
+
29
+ guard :rspec, cmd: "bundle exec rspec" do
30
+ require "guard/rspec/dsl"
31
+ dsl = Guard::RSpec::Dsl.new(self)
32
+
33
+ # Feel free to open issues for suggestions and improvements
34
+
35
+ # RSpec files
36
+ rspec = dsl.rspec
37
+ watch(rspec.spec_helper) { rspec.spec_dir }
38
+ watch(rspec.spec_support) { rspec.spec_dir }
39
+ watch(rspec.spec_files)
40
+
41
+ # map lib files to corresponding file
42
+ watch(%r{lib/(.*)/([^/]*).rb}) { |m| rspec.spec.call("#{m[1]}/#{m[2]}") }
43
+
44
+ # Ruby files
45
+ ruby = dsl.ruby
46
+ dsl.watch_spec_files_for(ruby.lib_files)
47
+ end
data/README.md CHANGED
@@ -306,7 +306,7 @@ Example:
306
306
  client.assets.find(724, fields: [:code, 'description'], retired: false)
307
307
  ```
308
308
 
309
- #### Create
309
+ ### Create
310
310
 
311
311
  Will create the entity referenced by the id with the following fields.
312
312
  If successful, it will return the newly created entity.
@@ -315,7 +315,7 @@ If successful, it will return the newly created entity.
315
315
  client.assets.create(code: 'New Asset', project: {type: 'Project', id: 63})
316
316
  ```
317
317
 
318
- #### Update
318
+ ### Update
319
319
 
320
320
  Will update the entity referenced by the id with the following fields.
321
321
  If successful, it will return the modified entity.
@@ -324,7 +324,7 @@ If successful, it will return the modified entity.
324
324
  client.assets.update(1226, code: 'Updated Asset', sg_status_list: 'fin')
325
325
  ```
326
326
 
327
- #### Delete
327
+ ### Delete
328
328
 
329
329
  Will destroys the entity referenced by the id. Will return true if successful.
330
330
 
@@ -332,7 +332,7 @@ Will destroys the entity referenced by the id. Will return true if successful.
332
332
  client.assets.delete(1226)
333
333
  ```
334
334
 
335
- #### Revive
335
+ ### Revive
336
336
 
337
337
  Will try to revive the entity referenced by the id. Will return true if successful.
338
338
 
@@ -340,6 +340,89 @@ Will try to revive the entity referenced by the id. Will return true if successf
340
340
  client.assets.revive(1226)
341
341
  ```
342
342
 
343
+ ### Summarize
344
+
345
+ Will summarize data for an entity type.
346
+
347
+ Example:
348
+ ```ruby
349
+ # Simplest example
350
+ client.assets.summarize(summary_fields: {id: :count})
351
+
352
+ # Full complex example
353
+ client.assets.summarize(
354
+ filter: { project: { id: 155 }, sg_status_list: :act },
355
+ logical_operator: 'or',
356
+ include_archived_projects: true,
357
+ grouping: {
358
+ code: {direction: :desc, type: 'exact'}
359
+ },
360
+ summary_fields: { id: :count }
361
+ )
362
+
363
+ # Raw shotgun queries
364
+ client.assets.summarize(
365
+ grouping: [
366
+ {
367
+ "field": "sg_asset_type",
368
+ "type": "exact",
369
+ "direction": "asc"
370
+ }
371
+ ],
372
+ summary_fields: [
373
+ {
374
+ "field": "id",
375
+ "type": "count"
376
+ }
377
+ ],
378
+ )
379
+ ```
380
+
381
+ It accepts the same `filter` and `logical_operator` as a `search` will.
382
+
383
+ #### Summary fields
384
+
385
+ Those can have two forms:
386
+
387
+ ##### The normal API form
388
+
389
+ You need to supply the summary_fields as an array and it will be passed directly to the SG REST API
390
+
391
+ #### The convenient form
392
+
393
+ Using an array isn't very convenient most of the time. You can use a hash instead and it will be translated into a "SG summary_fields array".
394
+
395
+ Each key of the hash is the field name and the corresponding value is the type a summary you want (can be a string or a symbol)
396
+
397
+ #### Grouping
398
+
399
+ Those can have two forms:
400
+
401
+ ##### The normal API form
402
+
403
+ You need to supply the grouping as an array and it will be passed directly to the SG REST API
404
+
405
+ #### The convenient form
406
+
407
+ Using an array isn't very convenient most of the time. You can use a hash instead and it will be translated into a "SG grouping array".
408
+
409
+ Each key of the hash is the field name and the corresponding value can either be :
410
+ * A String/Symbol and then will be used a a direction. The type will be 'exact'
411
+ * A Hash with optional 'type' and 'direction' keys. If a key is not specified it will be 'exact' and 'asc' respectively.
412
+
413
+ ### Count
414
+
415
+ This is a helper for more a readable count summary. This can be passed `filter` and `logical_operator`.
416
+
417
+ Example:
418
+
419
+ ```ruby
420
+ client.assets.count
421
+
422
+ # This will be equivalent as doing:
423
+ client.assets.summarize(summary_fields: [{type: :record_count, field: :id}])
424
+ ```
425
+
343
426
  ### Schema
344
427
 
345
428
  Those calls allow to inspect the schema for a shotgun site.