moco-ruby 1.0.0 → 1.2.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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -1
  3. data/Gemfile.lock +47 -43
  4. data/README.md +63 -24
  5. data/copy_project.rb +337 -0
  6. data/lib/moco/client.rb +58 -0
  7. data/lib/moco/connection.rb +45 -22
  8. data/lib/moco/entities/activity.rb +31 -1
  9. data/lib/moco/entities/catalog_service.rb +54 -0
  10. data/lib/moco/entities/comment.rb +61 -0
  11. data/lib/moco/entities/company.rb +57 -2
  12. data/lib/moco/entities/contact.rb +56 -0
  13. data/lib/moco/entities/custom_property.rb +49 -0
  14. data/lib/moco/entities/deal.rb +38 -2
  15. data/lib/moco/entities/deal_category.rb +27 -0
  16. data/lib/moco/entities/employment.rb +55 -0
  17. data/lib/moco/entities/expense.rb +37 -2
  18. data/lib/moco/entities/expense_template.rb +39 -0
  19. data/lib/moco/entities/fixed_cost.rb +30 -0
  20. data/lib/moco/entities/holiday.rb +33 -2
  21. data/lib/moco/entities/hourly_rate.rb +33 -0
  22. data/lib/moco/entities/internal_hourly_rate.rb +32 -0
  23. data/lib/moco/entities/invoice.rb +81 -1
  24. data/lib/moco/entities/invoice_bookkeeping_export.rb +33 -0
  25. data/lib/moco/entities/invoice_payment.rb +51 -0
  26. data/lib/moco/entities/invoice_reminder.rb +51 -0
  27. data/lib/moco/entities/offer.rb +122 -0
  28. data/lib/moco/entities/offer_approval.rb +42 -0
  29. data/lib/moco/entities/payment_schedule.rb +48 -0
  30. data/lib/moco/entities/planning_entry.rb +43 -2
  31. data/lib/moco/entities/presence.rb +34 -2
  32. data/lib/moco/entities/profile.rb +24 -0
  33. data/lib/moco/entities/project.rb +76 -2
  34. data/lib/moco/entities/project_contract.rb +50 -0
  35. data/lib/moco/entities/project_group.rb +38 -0
  36. data/lib/moco/entities/purchase.rb +90 -0
  37. data/lib/moco/entities/purchase_bookkeeping_export.rb +34 -0
  38. data/lib/moco/entities/purchase_budget.rb +47 -0
  39. data/lib/moco/entities/purchase_category.rb +38 -0
  40. data/lib/moco/entities/purchase_draft.rb +25 -0
  41. data/lib/moco/entities/purchase_payment.rb +51 -0
  42. data/lib/moco/entities/receipt.rb +55 -0
  43. data/lib/moco/entities/recurring_expense.rb +55 -0
  44. data/lib/moco/entities/reports/absences.rb +16 -0
  45. data/lib/moco/entities/reports/cashflow.rb +16 -0
  46. data/lib/moco/entities/reports/finance.rb +16 -0
  47. data/lib/moco/entities/reports/utilization.rb +16 -0
  48. data/lib/moco/entities/schedule.rb +39 -2
  49. data/lib/moco/entities/tag.rb +30 -0
  50. data/lib/moco/entities/tagging.rb +27 -0
  51. data/lib/moco/entities/task.rb +25 -2
  52. data/lib/moco/entities/task_template.rb +38 -0
  53. data/lib/moco/entities/unit.rb +36 -0
  54. data/lib/moco/entities/user.rb +50 -2
  55. data/lib/moco/entities/user_role.rb +29 -0
  56. data/lib/moco/entities/vat_code_purchase.rb +29 -0
  57. data/lib/moco/entities/vat_code_sale.rb +29 -0
  58. data/lib/moco/entities/web_hook.rb +32 -2
  59. data/lib/moco/entities/work_time_adjustment.rb +51 -0
  60. data/lib/moco/sync.rb +112 -6
  61. data/lib/moco/version.rb +1 -1
  62. data/lib/moco-ruby.rb +6 -0
  63. data/lib/moco.rb +51 -1
  64. data/moco.gemspec +5 -3
  65. data/sync_activity.rb +8 -2
  66. metadata +54 -14
data/lib/moco.rb CHANGED
@@ -11,8 +11,10 @@ require_relative "moco/connection"
11
11
  require_relative "moco/collection_proxy"
12
12
  require_relative "moco/nested_collection_proxy"
13
13
 
14
- # New API (v2)
14
+ # Entities
15
15
  require_relative "moco/entities/base_entity"
16
+
17
+ # Core entities (original)
16
18
  require_relative "moco/entities/project"
17
19
  require_relative "moco/entities/activity"
18
20
  require_relative "moco/entities/user"
@@ -26,6 +28,54 @@ require_relative "moco/entities/schedule"
26
28
  require_relative "moco/entities/presence"
27
29
  require_relative "moco/entities/holiday"
28
30
  require_relative "moco/entities/planning_entry"
31
+
32
+ # New standalone entities
33
+ require_relative "moco/entities/contact"
34
+ require_relative "moco/entities/offer"
35
+ require_relative "moco/entities/purchase"
36
+ require_relative "moco/entities/receipt"
37
+ require_relative "moco/entities/unit"
38
+ require_relative "moco/entities/comment"
39
+ require_relative "moco/entities/tag"
40
+ require_relative "moco/entities/tagging"
41
+ require_relative "moco/entities/deal_category"
42
+ require_relative "moco/entities/project_group"
43
+ require_relative "moco/entities/profile"
44
+
45
+ # Account-level entities
46
+ require_relative "moco/entities/catalog_service"
47
+ require_relative "moco/entities/custom_property"
48
+ require_relative "moco/entities/expense_template"
49
+ require_relative "moco/entities/fixed_cost"
50
+ require_relative "moco/entities/hourly_rate"
51
+ require_relative "moco/entities/internal_hourly_rate"
52
+ require_relative "moco/entities/task_template"
53
+ require_relative "moco/entities/user_role"
54
+ require_relative "moco/entities/vat_code_sale"
55
+ require_relative "moco/entities/vat_code_purchase"
56
+
57
+ # Nested/sub-resource entities
58
+ require_relative "moco/entities/employment"
59
+ require_relative "moco/entities/work_time_adjustment"
60
+ require_relative "moco/entities/project_contract"
61
+ require_relative "moco/entities/payment_schedule"
62
+ require_relative "moco/entities/recurring_expense"
63
+ require_relative "moco/entities/invoice_payment"
64
+ require_relative "moco/entities/invoice_reminder"
65
+ require_relative "moco/entities/invoice_bookkeeping_export"
66
+ require_relative "moco/entities/offer_approval"
67
+ require_relative "moco/entities/purchase_category"
68
+ require_relative "moco/entities/purchase_draft"
69
+ require_relative "moco/entities/purchase_payment"
70
+ require_relative "moco/entities/purchase_budget"
71
+ require_relative "moco/entities/purchase_bookkeeping_export"
72
+
73
+ # Reports
74
+ require_relative "moco/entities/reports/absences"
75
+ require_relative "moco/entities/reports/cashflow"
76
+ require_relative "moco/entities/reports/finance"
77
+ require_relative "moco/entities/reports/utilization"
78
+
29
79
  require_relative "moco/client"
30
80
  require_relative "moco/entity_collection"
31
81
 
data/moco.gemspec CHANGED
@@ -8,7 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Teal Bauer"]
9
9
  spec.email = ["rubygems@teal.is"]
10
10
 
11
- spec.summary = "A Ruby Gem to interact with the MOCO (mocoapp.com) API."
11
+ spec.summary = "A Ruby Gem to interact with the MOCO API."
12
+ spec.description = "A modern, Ruby-esque interface for the MOCO API (mocoapp.com). " \
13
+ "Provides an ActiveRecord-style interface for projects, activities, users, companies, and more."
12
14
  spec.homepage = "https://github.com/starsong-consulting/moco-ruby"
13
15
  spec.required_ruby_version = ">= 3.2.0"
14
16
  spec.license = "Apache-2.0"
@@ -28,8 +30,8 @@ Gem::Specification.new do |spec|
28
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
29
31
  spec.require_paths = ["lib"]
30
32
 
31
- spec.add_dependency "activesupport", "~> 7.0"
32
- spec.add_dependency "faraday", "~> 2.9.0"
33
+ spec.add_dependency "activesupport", ">= 7.0"
34
+ spec.add_dependency "faraday", ">= 2.0"
33
35
  spec.add_dependency "fuzzy_match", "~> 2.1.0"
34
36
 
35
37
  spec.metadata["rubygems_mfa_required"] = "true"
data/sync_activity.rb CHANGED
@@ -11,7 +11,8 @@ options = {
11
11
  project: nil,
12
12
  match_project_threshold: 0.8,
13
13
  match_task_threshold: 0.45,
14
- debug: false
14
+ debug: false,
15
+ default_task: nil
15
16
  }
16
17
 
17
18
  OptionParser.new do |opts|
@@ -52,6 +53,10 @@ OptionParser.new do |opts|
52
53
  opts.on("-d", "--debug", "Enable debug output") do
53
54
  options[:debug] = true
54
55
  end
56
+
57
+ opts.on("--default-task TASK_NAME", "Default task name to map unmatched tasks to (avoids creating new tasks)") do |task_name|
58
+ options[:default_task] = task_name
59
+ end
55
60
  end.parse!
56
61
 
57
62
  source_instance = ARGV.shift
@@ -82,7 +87,8 @@ syncer = MOCO::Sync.new(
82
87
  target: options.slice(:from, :to)
83
88
  },
84
89
  dry_run: options[:dry_run],
85
- debug: options[:debug]
90
+ debug: options[:debug],
91
+ default_task_name: options[:default_task]
86
92
  )
87
93
 
88
94
  syncer.source_projects.each do |project|
metadata CHANGED
@@ -1,43 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moco-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teal Bauer
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-10-08 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
18
  version: '7.0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: '7.0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: faraday
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 2.9.0
32
+ version: '2.0'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 2.9.0
39
+ version: '2.0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: fuzzy_match
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +51,9 @@ dependencies:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
53
  version: 2.1.0
55
- description:
54
+ description: A modern, Ruby-esque interface for the MOCO API (mocoapp.com). Provides
55
+ an ActiveRecord-style interface for projects, activities, users, companies, and
56
+ more.
56
57
  email:
57
58
  - rubygems@teal.is
58
59
  executables: []
@@ -69,7 +70,9 @@ files:
69
70
  - README.md
70
71
  - Rakefile
71
72
  - config.yml.sample
73
+ - copy_project.rb
72
74
  - examples/v2_api_example.rb
75
+ - lib/moco-ruby.rb
73
76
  - lib/moco.rb
74
77
  - lib/moco/client.rb
75
78
  - lib/moco/collection_proxy.rb
@@ -77,18 +80,57 @@ files:
77
80
  - lib/moco/entities.rb
78
81
  - lib/moco/entities/activity.rb
79
82
  - lib/moco/entities/base_entity.rb
83
+ - lib/moco/entities/catalog_service.rb
84
+ - lib/moco/entities/comment.rb
80
85
  - lib/moco/entities/company.rb
86
+ - lib/moco/entities/contact.rb
87
+ - lib/moco/entities/custom_property.rb
81
88
  - lib/moco/entities/deal.rb
89
+ - lib/moco/entities/deal_category.rb
90
+ - lib/moco/entities/employment.rb
82
91
  - lib/moco/entities/expense.rb
92
+ - lib/moco/entities/expense_template.rb
93
+ - lib/moco/entities/fixed_cost.rb
83
94
  - lib/moco/entities/holiday.rb
95
+ - lib/moco/entities/hourly_rate.rb
96
+ - lib/moco/entities/internal_hourly_rate.rb
84
97
  - lib/moco/entities/invoice.rb
98
+ - lib/moco/entities/invoice_bookkeeping_export.rb
99
+ - lib/moco/entities/invoice_payment.rb
100
+ - lib/moco/entities/invoice_reminder.rb
101
+ - lib/moco/entities/offer.rb
102
+ - lib/moco/entities/offer_approval.rb
103
+ - lib/moco/entities/payment_schedule.rb
85
104
  - lib/moco/entities/planning_entry.rb
86
105
  - lib/moco/entities/presence.rb
106
+ - lib/moco/entities/profile.rb
87
107
  - lib/moco/entities/project.rb
108
+ - lib/moco/entities/project_contract.rb
109
+ - lib/moco/entities/project_group.rb
110
+ - lib/moco/entities/purchase.rb
111
+ - lib/moco/entities/purchase_bookkeeping_export.rb
112
+ - lib/moco/entities/purchase_budget.rb
113
+ - lib/moco/entities/purchase_category.rb
114
+ - lib/moco/entities/purchase_draft.rb
115
+ - lib/moco/entities/purchase_payment.rb
116
+ - lib/moco/entities/receipt.rb
117
+ - lib/moco/entities/recurring_expense.rb
118
+ - lib/moco/entities/reports/absences.rb
119
+ - lib/moco/entities/reports/cashflow.rb
120
+ - lib/moco/entities/reports/finance.rb
121
+ - lib/moco/entities/reports/utilization.rb
88
122
  - lib/moco/entities/schedule.rb
123
+ - lib/moco/entities/tag.rb
124
+ - lib/moco/entities/tagging.rb
89
125
  - lib/moco/entities/task.rb
126
+ - lib/moco/entities/task_template.rb
127
+ - lib/moco/entities/unit.rb
90
128
  - lib/moco/entities/user.rb
129
+ - lib/moco/entities/user_role.rb
130
+ - lib/moco/entities/vat_code_purchase.rb
131
+ - lib/moco/entities/vat_code_sale.rb
91
132
  - lib/moco/entities/web_hook.rb
133
+ - lib/moco/entities/work_time_adjustment.rb
92
134
  - lib/moco/entity_collection.rb
93
135
  - lib/moco/helpers.rb
94
136
  - lib/moco/nested_collection_proxy.rb
@@ -105,7 +147,6 @@ metadata:
105
147
  source_code_uri: https://github.com/starsong-consulting/moco-ruby
106
148
  changelog_uri: https://github.com/starsong-consulting/moco-ruby/blob/main/CHANGELOG.md
107
149
  rubygems_mfa_required: 'true'
108
- post_install_message:
109
150
  rdoc_options: []
110
151
  require_paths:
111
152
  - lib
@@ -120,8 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
161
  - !ruby/object:Gem::Version
121
162
  version: '0'
122
163
  requirements: []
123
- rubygems_version: 3.4.1
124
- signing_key:
164
+ rubygems_version: 4.0.3
125
165
  specification_version: 4
126
- summary: A Ruby Gem to interact with the MOCO (mocoapp.com) API.
166
+ summary: A Ruby Gem to interact with the MOCO API.
127
167
  test_files: []