octocatalog-diff 1.2.0 → 1.3.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
  SHA1:
3
- metadata.gz: 75c0856d744b0c909315a69aceb6e2d5e416991b
4
- data.tar.gz: 127ac1617cc437a73d716ff68a0eea0623e62c8b
3
+ metadata.gz: 67cc184b1ece4c4982d29bd714a674cc118f649d
4
+ data.tar.gz: b2f18b550db7705f998cc2facab1525ded036399
5
5
  SHA512:
6
- metadata.gz: a4a873ed14e553d8362267e88fdac5eeaf46e5929275601871048959805f93515af9f8d8152115e49f1c15ddf17fc38fa70158b1e001be71d20a0646f05c422e
7
- data.tar.gz: 7c3f9a881d1e2b9d8669c96d6ffbb9953a25b8ff2c63f2a9c3151201c09be9ee95c6182b040370b08a54720c830e98f701cbe3f903c7b876ae80ec140b08a3b0
6
+ metadata.gz: a22fdaab74c77e8e195bb7de464330f441444da4abe76729d98ea74a2c2958cc299ec030644f7804e99972ae162272b191062857d19fe47409877a05222ce2f3
7
+ data.tar.gz: 08f100f0cec01c5821154341ee4bf4c3abe2d2b1350a41391716a605b966cf11948179a3f0b5452ddfd8782a937841bc6e9d53962e6178f3559027ed2239ce4d
data/.version CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.3.0
@@ -8,6 +8,18 @@
8
8
  </tr>
9
9
  </thead><tbody>
10
10
  <tr valign=top>
11
+ <td>1.3.0</td>
12
+ <td>2017-06-09</td>
13
+ <td>
14
+ <li><a href="https://github.com/github/octocatalog-diff/pull/121">#121</a>: (Enhancement) Allow different fact files for the "from" and "to" catalogs</li>
15
+ <li><a href="https://github.com/github/octocatalog-diff/pull/129">#129</a>: (Enhancement) Allow YAML facts in "facter -y" format</li>
16
+ <li><a href="https://github.com/github/octocatalog-diff/pull/126">#126</a>: (Enhancement) Allow saving of catalogs when catalog diffing</li>
17
+ <li><a href="https://github.com/github/octocatalog-diff/pull/122">#122</a>: (Bug) Handle File resources with no parameters</li>
18
+ <li><a href="https://github.com/github/octocatalog-diff/pull/125">#125</a>: (Bug) Fix error when parameters with integer values are added</li>
19
+ <li><a href="https://github.com/github/octocatalog-diff/pull/131">#131</a>: (Bug) Do not use override fact file for both catalogs when only `--to-fact-file` is specified</li>
20
+ </td>
21
+ </tr>
22
+ <tr valign=top>
11
23
  <td>1.2.0</td>
12
24
  <td>2017-05-18</td>
13
25
  <td>
@@ -33,7 +33,12 @@ Usage: octocatalog-diff [command line options]
33
33
  --ignore "Type1[Title1],Type2[Title2],..."
34
34
  More resources to ignore in format type[title]
35
35
  --[no-]include-tags Include changes to tags in the diff output
36
- --fact-file FILENAME Fact file to use instead of node lookup
36
+ --fact-file STRING Override fact globally
37
+ --to-fact-file STRING Override fact for the to branch
38
+ --from-fact-file STRING Override fact for the from branch
39
+ --save-catalog STRING Save intermediate catalogs into files globally
40
+ --to-save-catalog STRING Save intermediate catalogs into files for the to branch
41
+ --from-save-catalog STRING Save intermediate catalogs into files for the from branch
37
42
  --cached-master-dir PATH Cache bootstrapped origin/master at this path
38
43
  --master-cache-branch BRANCH Branch to cache
39
44
  --safe-to-delete-cached-master-dir PATH
@@ -305,6 +310,18 @@ diffing activity. The catalog will be printed to STDOUT or written to the output
305
310
  </td>
306
311
  </tr>
307
312
 
313
+ <tr>
314
+ <td valign=top>
315
+ <pre><code>--command-line STRING1[,STRING2[,...]]</code></pre>
316
+ </td>
317
+ <td valign=top>
318
+ Command line arguments globally
319
+ </td>
320
+ <td valign=top>
321
+ Provide additional command line flags to set when running Puppet to compile catalogs. (<a href="../lib/octocatalog-diff/cli/options/command_line.rb">command_line.rb</a>)
322
+ </td>
323
+ </tr>
324
+
308
325
  <tr>
309
326
  <td valign=top>
310
327
  <pre><code>--compare-file-text
@@ -321,6 +338,19 @@ what is most often desired. (<a href="../lib/octocatalog-diff/cli/options/compar
321
338
  </td>
322
339
  </tr>
323
340
 
341
+ <tr>
342
+ <td valign=top>
343
+ <pre><code>--create-symlinks STRING1[,STRING2[,...]]</code></pre>
344
+ </td>
345
+ <td valign=top>
346
+ Symlinks to create globally
347
+ </td>
348
+ <td valign=top>
349
+ Specify which directories from the base should be symlinked into the temporary compilation
350
+ environment. This is useful only in conjunction with `--preserve-environments`. (<a href="../lib/octocatalog-diff/cli/options/create_symlinks.rb">create_symlinks.rb</a>)
351
+ </td>
352
+ </tr>
353
+
324
354
  <tr>
325
355
  <td valign=top>
326
356
  <pre><code>-d
@@ -417,16 +447,57 @@ difference. (<a href="../lib/octocatalog-diff/cli/options/display_datatype_chang
417
447
 
418
448
  <tr>
419
449
  <td valign=top>
420
- <pre><code>--fact-file FILENAME</code></pre>
450
+ <pre><code>--enc-override STRING1[,STRING2[,...]]</code></pre>
421
451
  </td>
422
452
  <td valign=top>
423
- Fact file to use instead of node lookup
453
+ Override parameter from ENC globally
454
+ </td>
455
+ <td valign=top>
456
+ Allow override of ENC parameters on the command line. ENC parameter overrides can be supplied for the 'to' or 'from' catalog,
457
+ or for both. There is some attempt to handle data types here (since all items on the command line are strings)
458
+ by permitting a data type specification as well. For parameters nested in hashes, use `::` as the delimiter. (<a href="../lib/octocatalog-diff/cli/options/enc_override.rb">enc_override.rb</a>)
459
+ </td>
460
+ </tr>
461
+
462
+ <tr>
463
+ <td valign=top>
464
+ <pre><code>--environment STRING</code></pre>
465
+ </td>
466
+ <td valign=top>
467
+ Environment for catalog compilation globally
468
+ </td>
469
+ <td valign=top>
470
+ Specify the environment to use when compiling the catalog. This is useful only in conjunction
471
+ with `--preserve-environments`. (<a href="../lib/octocatalog-diff/cli/options/environment.rb">environment.rb</a>)
472
+ </td>
473
+ </tr>
474
+
475
+ <tr>
476
+ <td valign=top>
477
+ <pre><code>--fact-file STRING</code></pre>
478
+ </td>
479
+ <td valign=top>
480
+ Override fact globally
424
481
  </td>
425
482
  <td valign=top>
426
483
  Allow an existing fact file to be provided, to avoid pulling facts from PuppetDB. (<a href="../lib/octocatalog-diff/cli/options/fact_file.rb">fact_file.rb</a>)
427
484
  </td>
428
485
  </tr>
429
486
 
487
+ <tr>
488
+ <td valign=top>
489
+ <pre><code>--fact-override STRING1[,STRING2[,...]]</code></pre>
490
+ </td>
491
+ <td valign=top>
492
+ Override fact globally
493
+ </td>
494
+ <td valign=top>
495
+ Allow override of facts on the command line. Fact overrides can be supplied for the 'to' or 'from' catalog,
496
+ or for both. There is some attempt to handle data types here (since all items on the command line are strings)
497
+ by permitting a data type specification as well. (<a href="../lib/octocatalog-diff/cli/options/fact_override.rb">fact_override.rb</a>)
498
+ </td>
499
+ </tr>
500
+
430
501
  <tr>
431
502
  <td valign=top>
432
503
  <pre><code>--facts-terminus STRING</code></pre>
@@ -482,6 +553,31 @@ These files must exist and be in Puppet catalog format. (<a href="../lib/octocat
482
553
  </td>
483
554
  </tr>
484
555
 
556
+ <tr>
557
+ <td valign=top>
558
+ <pre><code>--from-command-line STRING1[,STRING2[,...]]</code></pre>
559
+ </td>
560
+ <td valign=top>
561
+ Command line arguments for the from branch
562
+ </td>
563
+ <td valign=top>
564
+ Provide additional command line flags to set when running Puppet to compile catalogs. (<a href="../lib/octocatalog-diff/cli/options/command_line.rb">command_line.rb</a>)
565
+ </td>
566
+ </tr>
567
+
568
+ <tr>
569
+ <td valign=top>
570
+ <pre><code>--from-create-symlinks STRING1[,STRING2[,...]]</code></pre>
571
+ </td>
572
+ <td valign=top>
573
+ Symlinks to create for the from branch
574
+ </td>
575
+ <td valign=top>
576
+ Specify which directories from the base should be symlinked into the temporary compilation
577
+ environment. This is useful only in conjunction with `--preserve-environments`. (<a href="../lib/octocatalog-diff/cli/options/create_symlinks.rb">create_symlinks.rb</a>)
578
+ </td>
579
+ </tr>
580
+
485
581
  <tr>
486
582
  <td valign=top>
487
583
  <pre><code>--from-enc PATH</code></pre>
@@ -494,6 +590,150 @@ These files must exist and be in Puppet catalog format. (<a href="../lib/octocat
494
590
  </td>
495
591
  </tr>
496
592
 
593
+ <tr>
594
+ <td valign=top>
595
+ <pre><code>--from-enc-override STRING1[,STRING2[,...]]</code></pre>
596
+ </td>
597
+ <td valign=top>
598
+ Override parameter from ENC for the from branch
599
+ </td>
600
+ <td valign=top>
601
+ Allow override of ENC parameters on the command line. ENC parameter overrides can be supplied for the 'to' or 'from' catalog,
602
+ or for both. There is some attempt to handle data types here (since all items on the command line are strings)
603
+ by permitting a data type specification as well. For parameters nested in hashes, use `::` as the delimiter. (<a href="../lib/octocatalog-diff/cli/options/enc_override.rb">enc_override.rb</a>)
604
+ </td>
605
+ </tr>
606
+
607
+ <tr>
608
+ <td valign=top>
609
+ <pre><code>--from-environment STRING</code></pre>
610
+ </td>
611
+ <td valign=top>
612
+ Environment for catalog compilation for the from branch
613
+ </td>
614
+ <td valign=top>
615
+ Specify the environment to use when compiling the catalog. This is useful only in conjunction
616
+ with `--preserve-environments`. (<a href="../lib/octocatalog-diff/cli/options/environment.rb">environment.rb</a>)
617
+ </td>
618
+ </tr>
619
+
620
+ <tr>
621
+ <td valign=top>
622
+ <pre><code>--from-fact-file STRING</code></pre>
623
+ </td>
624
+ <td valign=top>
625
+ Override fact for the from branch
626
+ </td>
627
+ <td valign=top>
628
+ Allow an existing fact file to be provided, to avoid pulling facts from PuppetDB. (<a href="../lib/octocatalog-diff/cli/options/fact_file.rb">fact_file.rb</a>)
629
+ </td>
630
+ </tr>
631
+
632
+ <tr>
633
+ <td valign=top>
634
+ <pre><code>--from-fact-override STRING1[,STRING2[,...]]</code></pre>
635
+ </td>
636
+ <td valign=top>
637
+ Override fact for the from branch
638
+ </td>
639
+ <td valign=top>
640
+ Allow override of facts on the command line. Fact overrides can be supplied for the 'to' or 'from' catalog,
641
+ or for both. There is some attempt to handle data types here (since all items on the command line are strings)
642
+ by permitting a data type specification as well. (<a href="../lib/octocatalog-diff/cli/options/fact_override.rb">fact_override.rb</a>)
643
+ </td>
644
+ </tr>
645
+
646
+ <tr>
647
+ <td valign=top>
648
+ <pre><code>--from-puppet-binary STRING</code></pre>
649
+ </td>
650
+ <td valign=top>
651
+ Full path to puppet binary for the from branch
652
+ </td>
653
+ <td valign=top>
654
+ Set --puppet-binary, --to-puppet-binary, --from-puppet-binary (<a href="../lib/octocatalog-diff/cli/options/puppet_binary.rb">puppet_binary.rb</a>)
655
+ </td>
656
+ </tr>
657
+
658
+ <tr>
659
+ <td valign=top>
660
+ <pre><code>--from-puppet-master STRING</code></pre>
661
+ </td>
662
+ <td valign=top>
663
+ Hostname or Hostname:PortNumber for Puppet Master for the from branch
664
+ </td>
665
+ <td valign=top>
666
+ Specify the hostname, or hostname:port, for the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master.rb">puppet_master.rb</a>)
667
+ </td>
668
+ </tr>
669
+
670
+ <tr>
671
+ <td valign=top>
672
+ <pre><code>--from-puppet-master-api-version STRING</code></pre>
673
+ </td>
674
+ <td valign=top>
675
+ Puppet Master API version (2 for Puppet 3.x, 3 for Puppet 4.x) for the from branch
676
+ </td>
677
+ <td valign=top>
678
+ Specify the API version to use for the Puppet Master. This makes it possible to authenticate to a
679
+ version 3.x PuppetMaster by specifying the API version as 2, or for a version 4.x PuppetMaster by
680
+ specifying API version as 3. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_api_version.rb">puppet_master_api_version.rb</a>)
681
+ </td>
682
+ </tr>
683
+
684
+ <tr>
685
+ <td valign=top>
686
+ <pre><code>--from-puppet-master-ssl-ca STRING</code></pre>
687
+ </td>
688
+ <td valign=top>
689
+ Full path to CA certificate that signed the Puppet Master certificate for the from branch
690
+ </td>
691
+ <td valign=top>
692
+ Specify the CA certificate for Puppet Master. If specified, this will enable SSL verification
693
+ that the certificate being presented has been signed by this CA, and that the common name
694
+ matches the name you are using to connecting. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_ca.rb">puppet_master_ssl_ca.rb</a>)
695
+ </td>
696
+ </tr>
697
+
698
+ <tr>
699
+ <td valign=top>
700
+ <pre><code>--from-puppet-master-ssl-client-cert STRING</code></pre>
701
+ </td>
702
+ <td valign=top>
703
+ Full path to certificate file for SSL client auth to Puppet Master for the from branch
704
+ </td>
705
+ <td valign=top>
706
+ Specify the SSL client certificate for Puppet Master. This makes it possible to authenticate with a
707
+ client certificate keypair to the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_client_cert.rb">puppet_master_ssl_client_cert.rb</a>)
708
+ </td>
709
+ </tr>
710
+
711
+ <tr>
712
+ <td valign=top>
713
+ <pre><code>--from-puppet-master-ssl-client-key STRING</code></pre>
714
+ </td>
715
+ <td valign=top>
716
+ Full path to key file for SSL client auth to Puppet Master for the from branch
717
+ </td>
718
+ <td valign=top>
719
+ Specify the SSL client key for Puppet Master. This makes it possible to authenticate with a
720
+ client certificate keypair to the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_client_key.rb">puppet_master_ssl_client_key.rb</a>)
721
+ </td>
722
+ </tr>
723
+
724
+ <tr>
725
+ <td valign=top>
726
+ <pre><code>--from-puppet-master-timeout STRING</code></pre>
727
+ </td>
728
+ <td valign=top>
729
+ Puppet Master catalog retrieval timeout in seconds for the from branch
730
+ </td>
731
+ <td valign=top>
732
+ Specify a timeout for retrieving a catalog from a Puppet master / Puppet server.
733
+ This timeout is specified in seconds. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_timeout.rb">puppet_master_timeout.rb</a>)
734
+ </td>
735
+ </tr>
736
+
497
737
  <tr>
498
738
  <td valign=top>
499
739
  <pre><code>--from-puppetdb
@@ -507,6 +747,18 @@ These files must exist and be in Puppet catalog format. (<a href="../lib/octocat
507
747
  </td>
508
748
  </tr>
509
749
 
750
+ <tr>
751
+ <td valign=top>
752
+ <pre><code>--from-save-catalog STRING</code></pre>
753
+ </td>
754
+ <td valign=top>
755
+ Save intermediate catalogs into files for the from branch
756
+ </td>
757
+ <td valign=top>
758
+ Allow catalogs to be saved to a file before they are diff'd. (<a href="../lib/octocatalog-diff/cli/options/save_catalog.rb">save_catalog.rb</a>)
759
+ </td>
760
+ </tr>
761
+
510
762
  <tr>
511
763
  <td valign=top>
512
764
  <pre><code>--header STRING</code></pre>
@@ -908,6 +1160,97 @@ to work correctly. (<a href="../lib/octocatalog-diff/cli/options/preserve_enviro
908
1160
  </td>
909
1161
  </tr>
910
1162
 
1163
+ <tr>
1164
+ <td valign=top>
1165
+ <pre><code>--puppet-binary STRING</code></pre>
1166
+ </td>
1167
+ <td valign=top>
1168
+ Full path to puppet binary globally
1169
+ </td>
1170
+ <td valign=top>
1171
+ Set --puppet-binary, --to-puppet-binary, --from-puppet-binary (<a href="../lib/octocatalog-diff/cli/options/puppet_binary.rb">puppet_binary.rb</a>)
1172
+ </td>
1173
+ </tr>
1174
+
1175
+ <tr>
1176
+ <td valign=top>
1177
+ <pre><code>--puppet-master STRING</code></pre>
1178
+ </td>
1179
+ <td valign=top>
1180
+ Hostname or Hostname:PortNumber for Puppet Master globally
1181
+ </td>
1182
+ <td valign=top>
1183
+ Specify the hostname, or hostname:port, for the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master.rb">puppet_master.rb</a>)
1184
+ </td>
1185
+ </tr>
1186
+
1187
+ <tr>
1188
+ <td valign=top>
1189
+ <pre><code>--puppet-master-api-version STRING</code></pre>
1190
+ </td>
1191
+ <td valign=top>
1192
+ Puppet Master API version (2 for Puppet 3.x, 3 for Puppet 4.x) globally
1193
+ </td>
1194
+ <td valign=top>
1195
+ Specify the API version to use for the Puppet Master. This makes it possible to authenticate to a
1196
+ version 3.x PuppetMaster by specifying the API version as 2, or for a version 4.x PuppetMaster by
1197
+ specifying API version as 3. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_api_version.rb">puppet_master_api_version.rb</a>)
1198
+ </td>
1199
+ </tr>
1200
+
1201
+ <tr>
1202
+ <td valign=top>
1203
+ <pre><code>--puppet-master-ssl-ca STRING</code></pre>
1204
+ </td>
1205
+ <td valign=top>
1206
+ Full path to CA certificate that signed the Puppet Master certificate globally
1207
+ </td>
1208
+ <td valign=top>
1209
+ Specify the CA certificate for Puppet Master. If specified, this will enable SSL verification
1210
+ that the certificate being presented has been signed by this CA, and that the common name
1211
+ matches the name you are using to connecting. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_ca.rb">puppet_master_ssl_ca.rb</a>)
1212
+ </td>
1213
+ </tr>
1214
+
1215
+ <tr>
1216
+ <td valign=top>
1217
+ <pre><code>--puppet-master-ssl-client-cert STRING</code></pre>
1218
+ </td>
1219
+ <td valign=top>
1220
+ Full path to certificate file for SSL client auth to Puppet Master globally
1221
+ </td>
1222
+ <td valign=top>
1223
+ Specify the SSL client certificate for Puppet Master. This makes it possible to authenticate with a
1224
+ client certificate keypair to the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_client_cert.rb">puppet_master_ssl_client_cert.rb</a>)
1225
+ </td>
1226
+ </tr>
1227
+
1228
+ <tr>
1229
+ <td valign=top>
1230
+ <pre><code>--puppet-master-ssl-client-key STRING</code></pre>
1231
+ </td>
1232
+ <td valign=top>
1233
+ Full path to key file for SSL client auth to Puppet Master globally
1234
+ </td>
1235
+ <td valign=top>
1236
+ Specify the SSL client key for Puppet Master. This makes it possible to authenticate with a
1237
+ client certificate keypair to the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_client_key.rb">puppet_master_ssl_client_key.rb</a>)
1238
+ </td>
1239
+ </tr>
1240
+
1241
+ <tr>
1242
+ <td valign=top>
1243
+ <pre><code>--puppet-master-timeout STRING</code></pre>
1244
+ </td>
1245
+ <td valign=top>
1246
+ Puppet Master catalog retrieval timeout in seconds globally
1247
+ </td>
1248
+ <td valign=top>
1249
+ Specify a timeout for retrieving a catalog from a Puppet master / Puppet server.
1250
+ This timeout is specified in seconds. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_timeout.rb">puppet_master_timeout.rb</a>)
1251
+ </td>
1252
+ </tr>
1253
+
911
1254
  <tr>
912
1255
  <td valign=top>
913
1256
  <pre><code>--puppetdb-api-version N</code></pre>
@@ -1040,6 +1383,18 @@ cached directory). (<a href="../lib/octocatalog-diff/cli/options/safe_to_delete_
1040
1383
  </td>
1041
1384
  </tr>
1042
1385
 
1386
+ <tr>
1387
+ <td valign=top>
1388
+ <pre><code>--save-catalog STRING</code></pre>
1389
+ </td>
1390
+ <td valign=top>
1391
+ Save intermediate catalogs into files globally
1392
+ </td>
1393
+ <td valign=top>
1394
+ Allow catalogs to be saved to a file before they are diff'd. (<a href="../lib/octocatalog-diff/cli/options/save_catalog.rb">save_catalog.rb</a>)
1395
+ </td>
1396
+ </tr>
1397
+
1043
1398
  <tr>
1044
1399
  <td valign=top>
1045
1400
  <pre><code>--storeconfigs
@@ -1096,6 +1451,31 @@ These files must exist and be in Puppet catalog format. (<a href="../lib/octocat
1096
1451
  </td>
1097
1452
  </tr>
1098
1453
 
1454
+ <tr>
1455
+ <td valign=top>
1456
+ <pre><code>--to-command-line STRING1[,STRING2[,...]]</code></pre>
1457
+ </td>
1458
+ <td valign=top>
1459
+ Command line arguments for the to branch
1460
+ </td>
1461
+ <td valign=top>
1462
+ Provide additional command line flags to set when running Puppet to compile catalogs. (<a href="../lib/octocatalog-diff/cli/options/command_line.rb">command_line.rb</a>)
1463
+ </td>
1464
+ </tr>
1465
+
1466
+ <tr>
1467
+ <td valign=top>
1468
+ <pre><code>--to-create-symlinks STRING1[,STRING2[,...]]</code></pre>
1469
+ </td>
1470
+ <td valign=top>
1471
+ Symlinks to create for the to branch
1472
+ </td>
1473
+ <td valign=top>
1474
+ Specify which directories from the base should be symlinked into the temporary compilation
1475
+ environment. This is useful only in conjunction with `--preserve-environments`. (<a href="../lib/octocatalog-diff/cli/options/create_symlinks.rb">create_symlinks.rb</a>)
1476
+ </td>
1477
+ </tr>
1478
+
1099
1479
  <tr>
1100
1480
  <td valign=top>
1101
1481
  <pre><code>--to-enc PATH</code></pre>
@@ -1108,6 +1488,162 @@ These files must exist and be in Puppet catalog format. (<a href="../lib/octocat
1108
1488
  </td>
1109
1489
  </tr>
1110
1490
 
1491
+ <tr>
1492
+ <td valign=top>
1493
+ <pre><code>--to-enc-override STRING1[,STRING2[,...]]</code></pre>
1494
+ </td>
1495
+ <td valign=top>
1496
+ Override parameter from ENC for the to branch
1497
+ </td>
1498
+ <td valign=top>
1499
+ Allow override of ENC parameters on the command line. ENC parameter overrides can be supplied for the 'to' or 'from' catalog,
1500
+ or for both. There is some attempt to handle data types here (since all items on the command line are strings)
1501
+ by permitting a data type specification as well. For parameters nested in hashes, use `::` as the delimiter. (<a href="../lib/octocatalog-diff/cli/options/enc_override.rb">enc_override.rb</a>)
1502
+ </td>
1503
+ </tr>
1504
+
1505
+ <tr>
1506
+ <td valign=top>
1507
+ <pre><code>--to-environment STRING</code></pre>
1508
+ </td>
1509
+ <td valign=top>
1510
+ Environment for catalog compilation for the to branch
1511
+ </td>
1512
+ <td valign=top>
1513
+ Specify the environment to use when compiling the catalog. This is useful only in conjunction
1514
+ with `--preserve-environments`. (<a href="../lib/octocatalog-diff/cli/options/environment.rb">environment.rb</a>)
1515
+ </td>
1516
+ </tr>
1517
+
1518
+ <tr>
1519
+ <td valign=top>
1520
+ <pre><code>--to-fact-file STRING</code></pre>
1521
+ </td>
1522
+ <td valign=top>
1523
+ Override fact for the to branch
1524
+ </td>
1525
+ <td valign=top>
1526
+ Allow an existing fact file to be provided, to avoid pulling facts from PuppetDB. (<a href="../lib/octocatalog-diff/cli/options/fact_file.rb">fact_file.rb</a>)
1527
+ </td>
1528
+ </tr>
1529
+
1530
+ <tr>
1531
+ <td valign=top>
1532
+ <pre><code>--to-fact-override STRING1[,STRING2[,...]]</code></pre>
1533
+ </td>
1534
+ <td valign=top>
1535
+ Override fact for the to branch
1536
+ </td>
1537
+ <td valign=top>
1538
+ Allow override of facts on the command line. Fact overrides can be supplied for the 'to' or 'from' catalog,
1539
+ or for both. There is some attempt to handle data types here (since all items on the command line are strings)
1540
+ by permitting a data type specification as well. (<a href="../lib/octocatalog-diff/cli/options/fact_override.rb">fact_override.rb</a>)
1541
+ </td>
1542
+ </tr>
1543
+
1544
+ <tr>
1545
+ <td valign=top>
1546
+ <pre><code>--to-puppet-binary STRING</code></pre>
1547
+ </td>
1548
+ <td valign=top>
1549
+ Full path to puppet binary for the to branch
1550
+ </td>
1551
+ <td valign=top>
1552
+ Set --puppet-binary, --to-puppet-binary, --from-puppet-binary (<a href="../lib/octocatalog-diff/cli/options/puppet_binary.rb">puppet_binary.rb</a>)
1553
+ </td>
1554
+ </tr>
1555
+
1556
+ <tr>
1557
+ <td valign=top>
1558
+ <pre><code>--to-puppet-master STRING</code></pre>
1559
+ </td>
1560
+ <td valign=top>
1561
+ Hostname or Hostname:PortNumber for Puppet Master for the to branch
1562
+ </td>
1563
+ <td valign=top>
1564
+ Specify the hostname, or hostname:port, for the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master.rb">puppet_master.rb</a>)
1565
+ </td>
1566
+ </tr>
1567
+
1568
+ <tr>
1569
+ <td valign=top>
1570
+ <pre><code>--to-puppet-master-api-version STRING</code></pre>
1571
+ </td>
1572
+ <td valign=top>
1573
+ Puppet Master API version (2 for Puppet 3.x, 3 for Puppet 4.x) for the to branch
1574
+ </td>
1575
+ <td valign=top>
1576
+ Specify the API version to use for the Puppet Master. This makes it possible to authenticate to a
1577
+ version 3.x PuppetMaster by specifying the API version as 2, or for a version 4.x PuppetMaster by
1578
+ specifying API version as 3. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_api_version.rb">puppet_master_api_version.rb</a>)
1579
+ </td>
1580
+ </tr>
1581
+
1582
+ <tr>
1583
+ <td valign=top>
1584
+ <pre><code>--to-puppet-master-ssl-ca STRING</code></pre>
1585
+ </td>
1586
+ <td valign=top>
1587
+ Full path to CA certificate that signed the Puppet Master certificate for the to branch
1588
+ </td>
1589
+ <td valign=top>
1590
+ Specify the CA certificate for Puppet Master. If specified, this will enable SSL verification
1591
+ that the certificate being presented has been signed by this CA, and that the common name
1592
+ matches the name you are using to connecting. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_ca.rb">puppet_master_ssl_ca.rb</a>)
1593
+ </td>
1594
+ </tr>
1595
+
1596
+ <tr>
1597
+ <td valign=top>
1598
+ <pre><code>--to-puppet-master-ssl-client-cert STRING</code></pre>
1599
+ </td>
1600
+ <td valign=top>
1601
+ Full path to certificate file for SSL client auth to Puppet Master for the to branch
1602
+ </td>
1603
+ <td valign=top>
1604
+ Specify the SSL client certificate for Puppet Master. This makes it possible to authenticate with a
1605
+ client certificate keypair to the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_client_cert.rb">puppet_master_ssl_client_cert.rb</a>)
1606
+ </td>
1607
+ </tr>
1608
+
1609
+ <tr>
1610
+ <td valign=top>
1611
+ <pre><code>--to-puppet-master-ssl-client-key STRING</code></pre>
1612
+ </td>
1613
+ <td valign=top>
1614
+ Full path to key file for SSL client auth to Puppet Master for the to branch
1615
+ </td>
1616
+ <td valign=top>
1617
+ Specify the SSL client key for Puppet Master. This makes it possible to authenticate with a
1618
+ client certificate keypair to the Puppet Master. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_ssl_client_key.rb">puppet_master_ssl_client_key.rb</a>)
1619
+ </td>
1620
+ </tr>
1621
+
1622
+ <tr>
1623
+ <td valign=top>
1624
+ <pre><code>--to-puppet-master-timeout STRING</code></pre>
1625
+ </td>
1626
+ <td valign=top>
1627
+ Puppet Master catalog retrieval timeout in seconds for the to branch
1628
+ </td>
1629
+ <td valign=top>
1630
+ Specify a timeout for retrieving a catalog from a Puppet master / Puppet server.
1631
+ This timeout is specified in seconds. (<a href="../lib/octocatalog-diff/cli/options/puppet_master_timeout.rb">puppet_master_timeout.rb</a>)
1632
+ </td>
1633
+ </tr>
1634
+
1635
+ <tr>
1636
+ <td valign=top>
1637
+ <pre><code>--to-save-catalog STRING</code></pre>
1638
+ </td>
1639
+ <td valign=top>
1640
+ Save intermediate catalogs into files for the to branch
1641
+ </td>
1642
+ <td valign=top>
1643
+ Allow catalogs to be saved to a file before they are diff'd. (<a href="../lib/octocatalog-diff/cli/options/save_catalog.rb">save_catalog.rb</a>)
1644
+ </td>
1645
+ </tr>
1646
+
1111
1647
  <tr>
1112
1648
  <td valign=top>
1113
1649
  <pre><code>--truncate-details
@@ -8,6 +8,7 @@ require 'stringio'
8
8
 
9
9
  require_relative '../catalog'
10
10
  require_relative '../errors'
11
+ require_relative '../util/util'
11
12
  require_relative 'filter'
12
13
 
13
14
  module OctocatalogDiff
@@ -530,7 +531,8 @@ module OctocatalogDiff
530
531
 
531
532
  # Added a new key that points to some kind of data structure that we know how
532
533
  # to handle.
533
- if obj[1] =~ /^(.+)\f([^\f]+)$/ && [String, Integer, Float, TrueClass, FalseClass, Array, Hash].include?(obj[2].class)
534
+ classes = [String, Integer, Float, TrueClass, FalseClass, Array, Hash]
535
+ if obj[1] =~ /^(.+)\f([^\f]+)$/ && OctocatalogDiff::Util::Util.object_is_any_of?(obj[2], classes)
534
536
  hashdiff_add_remove.add(obj[1])
535
537
  next
536
538
  end
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative '../display'
4
- require_relative '../../util/colored.rb'
4
+ require_relative '../../util/colored'
5
+ require_relative '../../util/util'
5
6
 
6
7
  require 'diffy'
7
8
  require 'json'
@@ -447,16 +448,6 @@ module OctocatalogDiff
447
448
  class_name
448
449
  end
449
450
 
450
- # Utility Method!
451
- # `is_a?(class)` only allows one method, but this uses an array
452
- # @param object [?] Object to consider
453
- # @param classes [Array] Classes to determine if object is a member of
454
- # @return [Boolean] True if object is_a any of the classes, false otherwise
455
- def self.object_is_any_of?(object, classes)
456
- classes.each { |clazz| return true if object.is_a? clazz }
457
- false
458
- end
459
-
460
451
  # Utility Method!
461
452
  # Given an arbitrary object, convert it into a string for use by 'diffy'.
462
453
  # This basically exists so we can do something prettier than just calling .inspect or .to_s
@@ -464,9 +455,9 @@ module OctocatalogDiff
464
455
  # @param obj [?] Object to be stringified
465
456
  # @return [String] String representation of object for diffy
466
457
  def self.stringify_for_diffy(obj)
467
- return JSON.pretty_generate(obj) if object_is_any_of?(obj, [Hash, Array])
458
+ return JSON.pretty_generate(obj) if OctocatalogDiff::Util::Util.object_is_any_of?(obj, [Hash, Array])
468
459
  return '""' if obj.is_a?(String) && obj == ''
469
- return obj if object_is_any_of?(obj, [String, Fixnum, Integer, Float])
460
+ return obj if OctocatalogDiff::Util::Util.object_is_any_of?(obj, [String, Fixnum, Integer, Float])
470
461
  "#{class_name_for_diffy(obj.class)}: #{obj.inspect}"
471
462
  end
472
463
 
@@ -122,6 +122,7 @@ module OctocatalogDiff
122
122
  # @return [Boolean] True of resource is convertible, false if not
123
123
  def self.resource_convertible?(resource)
124
124
  return true if resource['type'] == 'File' && \
125
+ !resource['parameters'].nil? && \
125
126
  resource['parameters'].key?('source') && \
126
127
  !resource['parameters'].key?('content') && \
127
128
  resource['parameters']['source'] =~ %r{^puppet:///modules/([^/]+)/(.+)}
@@ -13,6 +13,9 @@ module OctocatalogDiff
13
13
  # The usage banner.
14
14
  BANNER = 'Usage: catalog-diff -n <hostname> [-f <from environment>] [-t <to environment>]'.freeze
15
15
 
16
+ # An error class specifically for passing information to the document build task.
17
+ class DocBuildError < RuntimeError; end
18
+
16
19
  # List of classes
17
20
  def self.classes
18
21
  @classes ||= []
@@ -85,6 +88,7 @@ module OctocatalogDiff
85
88
  # option will populate any of the 'to' and 'from' variants that are missing.
86
89
  # @param :datatype [?] Expected data type
87
90
  def self.option_globally_or_per_branch(opts = {})
91
+ opts[:filename] = caller[0].split(':').first
88
92
  datatype = opts.fetch(:datatype, '')
89
93
  return option_globally_or_per_branch_string(opts) if datatype.is_a?(String)
90
94
  return option_globally_or_per_branch_array(opts) if datatype.is_a?(Array)
@@ -108,18 +112,21 @@ module OctocatalogDiff
108
112
  from_option = "from_#{option_name}".to_sym
109
113
  to_option = "to_#{option_name}".to_sym
110
114
  parser.on("--#{flag}", "#{desc} globally") do |x|
111
- validate_option(opts[:validator], x) if opts[:validator]
115
+ validate_option(opts, x)
112
116
  translated = translate_option(opts[:translator], x)
113
117
  options[to_option] ||= translated
114
118
  options[from_option] ||= translated
119
+ post_process(opts[:post_process], options)
115
120
  end
116
121
  parser.on("--to-#{flag}", "#{desc} for the to branch") do |x|
117
- validate_option(opts[:validator], x) if opts[:validator]
122
+ validate_option(opts, x)
118
123
  options[to_option] = translate_option(opts[:translator], x)
124
+ post_process(opts[:post_process], options)
119
125
  end
120
126
  parser.on("--from-#{flag}", "#{desc} for the from branch") do |x|
121
- validate_option(opts[:validator], x) if opts[:validator]
127
+ validate_option(opts, x)
122
128
  options[from_option] = translate_option(opts[:translator], x)
129
+ post_process(opts[:post_process], options)
123
130
  end
124
131
  end
125
132
 
@@ -140,7 +147,7 @@ module OctocatalogDiff
140
147
  from_option = "from_#{option_name}".to_sym
141
148
  to_option = "to_#{option_name}".to_sym
142
149
  parser.on("--#{flag}", Array, "#{desc} globally") do |x|
143
- validate_option(opts[:validator], x) if opts[:validator]
150
+ validate_option(opts, x)
144
151
  translated = translate_option(opts[:translator], x)
145
152
  options[to_option] ||= []
146
153
  options[to_option].concat translated
@@ -148,12 +155,12 @@ module OctocatalogDiff
148
155
  options[from_option].concat translated
149
156
  end
150
157
  parser.on("--to-#{flag}", Array, "#{desc} for the to branch") do |x|
151
- validate_option(opts[:validator], x) if opts[:validator]
158
+ validate_option(opts, x)
152
159
  options[to_option] ||= []
153
160
  options[to_option].concat translate_option(opts[:translator], x)
154
161
  end
155
162
  parser.on("--from-#{flag}", Array, "#{desc} for the from branch") do |x|
156
- validate_option(opts[:validator], x) if opts[:validator]
163
+ validate_option(opts, x)
157
164
  options[from_option] ||= []
158
165
  options[from_option].concat translate_option(opts[:translator], x)
159
166
  end
@@ -162,9 +169,15 @@ module OctocatalogDiff
162
169
  # If a validator was provided, run the validator on the supplied value. The validator is expected to
163
170
  # throw an error if there is a problem. Note that the validator runs *before* the translator if both
164
171
  # a validator and translator are supplied.
165
- # @param validator [Code] Validation function
172
+ # @param opts [Hash] Options hash
166
173
  # @param value [?] Value to validate (typically a String but can really be anything)
167
- def self.validate_option(validator, value)
174
+ def self.validate_option(opts, value)
175
+ # Special value to help build documentation automatically, since the source file location
176
+ # for `option_globally_or_per_branch` is always this file.
177
+ raise DocBuildError, opts[:filename] if value == :DOC_BUILD_FILENAME
178
+
179
+ validator = opts[:validator]
180
+ return true unless validator
168
181
  validator.call(value)
169
182
  end
170
183
 
@@ -178,6 +191,15 @@ module OctocatalogDiff
178
191
  return value if translator.nil?
179
192
  translator.call(value)
180
193
  end
194
+
195
+ # Code that can run after a translation and operate upon all options. This returns nothing but may
196
+ # modify options that were input.
197
+ # @param processor [Code] Processor function
198
+ # @param options [Hash] Options hash
199
+ def self.post_process(processor, options)
200
+ return if processor.nil?
201
+ processor.call(options)
202
+ end
181
203
  end
182
204
  end
183
205
  end
@@ -7,19 +7,36 @@ OctocatalogDiff::Cli::Options::Option.newoption(:fact_file) do
7
7
  has_weight 150
8
8
 
9
9
  def parse(parser, options)
10
- parser.on('--fact-file FILENAME', 'Fact file to use instead of node lookup') do |fact_file|
11
- raise Errno::ENOENT, 'Invalid fact file provided' unless File.file?(fact_file)
12
- facts = nil
13
- local_opts = { fact_file_string: File.read(fact_file) }
14
- if fact_file =~ /\.ya?ml$/
15
- facts = OctocatalogDiff::Facts.new(local_opts.merge(backend: :yaml))
16
- elsif fact_file =~ /\.json$/
17
- facts = OctocatalogDiff::Facts.new(local_opts.merge(backend: :json))
18
- else
19
- raise ArgumentError, 'I do not know how to parse the provided fact file. Needs .yaml or .json extension.'
10
+ OctocatalogDiff::Cli::Options.option_globally_or_per_branch(
11
+ parser: parser,
12
+ options: options,
13
+ cli_name: 'fact-file',
14
+ option_name: 'facts',
15
+ desc: 'Override fact',
16
+ datatype: '',
17
+ validator: ->(fact_file) { File.file?(fact_file) && (fact_file =~ /\.ya?ml$/ || fact_file =~ /\.json$/) },
18
+ translator: lambda do |fact_file|
19
+ local_opts = { fact_file_string: File.read(fact_file) }
20
+ if fact_file =~ /\.ya?ml$/
21
+ OctocatalogDiff::Facts.new(local_opts.merge(backend: :yaml))
22
+ elsif fact_file =~ /\.json$/
23
+ OctocatalogDiff::Facts.new(local_opts.merge(backend: :json))
24
+ else
25
+ # :nocov:
26
+ # Believed to be a bug condition since the validator should kick this out before it ever gets here.
27
+ raise ArgumentError, 'I do not know how to parse the provided fact file. Needs .yaml or .json extension.'
28
+ # :nocov:
29
+ end
30
+ end,
31
+ post_process: lambda do |opts|
32
+ unless options[:node]
33
+ %w[to_facts from_facts facts].each do |opt|
34
+ next unless opts[opt.to_sym] && opts[opt.to_sym].node
35
+ opts[:node] = opts[opt.to_sym].node
36
+ break
37
+ end
38
+ end
20
39
  end
21
- options[:facts] = facts
22
- options[:node] ||= facts.facts['name']
23
- end
40
+ )
24
41
  end
25
42
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Allow catalogs to be saved to a file before they are diff'd.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::Cli::Options::Option.newoption(:save_catalog) do
7
+ has_weight 155
8
+
9
+ def parse(parser, options)
10
+ OctocatalogDiff::Cli::Options.option_globally_or_per_branch(
11
+ parser: parser,
12
+ options: options,
13
+ cli_name: 'save-catalog',
14
+ option_name: 'save_catalog',
15
+ desc: 'Save intermediate catalogs into files',
16
+ datatype: '',
17
+ validator: lambda do |catalog_file|
18
+ target_dir = File.dirname(catalog_file)
19
+ unless File.directory?(target_dir)
20
+ raise Errno::ENOENT, "Cannot save catalog to #{catalog_file} because parent directory does not exist"
21
+ end
22
+ if File.exist?(catalog_file) && !File.file?(catalog_file)
23
+ raise ArgumentError, "Cannot overwrite #{catalog_file} which is not a file"
24
+ end
25
+ true
26
+ end,
27
+ post_process: lambda do |opts|
28
+ if opts[:to_save_catalog] && opts[:to_save_catalog] == opts[:from_save_catalog]
29
+ raise ArgumentError, 'Cannot use the same file for --to-save-catalog and --from-save-catalog'
30
+ end
31
+ end
32
+ )
33
+ end
34
+ end
@@ -4,6 +4,7 @@ require_relative 'errors'
4
4
  require_relative 'facts/json'
5
5
  require_relative 'facts/yaml'
6
6
  require_relative 'facts/puppetdb'
7
+ require_relative 'util/util'
7
8
  require_relative 'external/pson/pure'
8
9
 
9
10
  module OctocatalogDiff
@@ -19,8 +20,7 @@ module OctocatalogDiff
19
20
  @timestamp = false
20
21
  @options = options.dup
21
22
  if facts
22
- @facts = {}
23
- facts.each { |k, v| @facts[k] = v.dup }
23
+ @facts = OctocatalogDiff::Util::Util.deep_dup(facts)
24
24
  else
25
25
  case options[:backend]
26
26
  when :json
@@ -32,8 +32,7 @@ module OctocatalogDiff
32
32
  else
33
33
  raise ArgumentError, 'Invalid fact source backend'
34
34
  end
35
- @facts = {}
36
- @orig_facts.each { |k, v| @facts[k] = v.dup }
35
+ @facts = OctocatalogDiff::Util::Util.deep_dup(@orig_facts)
37
36
  end
38
37
  end
39
38
 
@@ -41,6 +40,15 @@ module OctocatalogDiff
41
40
  self.class.new(@options, @orig_facts)
42
41
  end
43
42
 
43
+ # Node - get the node name, either as set explicitly or as determined from the facts themselves.
44
+ # @return [String] Node name, explicit or guessed
45
+ def node
46
+ return @node unless @node.nil? || @node.empty?
47
+ return facts['name'] if facts.key?('name')
48
+ return facts['values']['fqdn'] if facts.key?('values') && facts['values'].key?('fqdn')
49
+ ''
50
+ end
51
+
44
52
  # Facts - returned the 'cleansed' facts.
45
53
  # Clean up facts by setting 'name' to the node if given, and deleting _timestamp and expiration
46
54
  # which may cause Puppet catalog compilation to fail if the facts are old.
@@ -21,8 +21,18 @@ module OctocatalogDiff
21
21
  fact_file_data = fact_file_string.split(/\n/)
22
22
  fact_file_data[0] = '---' if fact_file_data[0] =~ /^---/
23
23
 
24
- # Load and return the parsed fact file.
25
- result = YAML.load(fact_file_data.join("\n"))
24
+ # Load the parsed fact file.
25
+ parsed = YAML.load(fact_file_data.join("\n"))
26
+
27
+ # This is a handler for a YAML file that has just the facts and none of the
28
+ # structure. For example if you saved the output of `facter -y` to a file and
29
+ # are passing that in, this will work.
30
+ result = if parsed.key?('name') && parsed.key?('values')
31
+ parsed
32
+ else
33
+ { 'name' => node || parsed['fqdn'] || '', 'values' => parsed }
34
+ end
35
+
26
36
  result['name'] = node unless node == ''
27
37
  result
28
38
  end
@@ -197,6 +197,11 @@ module OctocatalogDiff
197
197
  if catalog.valid?
198
198
  # The catalog was successfully compiled.
199
199
  result[key] = parallel_catalog_obj.output
200
+
201
+ if task.args[:save_catalog]
202
+ File.open(task.args[:save_catalog], 'w') { |f| f.write(catalog.catalog_json) }
203
+ @logger.debug "Saved catalog to #{task.args[:save_catalog]}"
204
+ end
200
205
  else
201
206
  # The catalog failed, but a catalog object was returned so that better error reporting
202
207
  # can take place. In this error reporting, we will replace 'Error:' with '[Puppet Error]'
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Handy methods that are not tied to one particular class
4
+
5
+ module OctocatalogDiff
6
+ module Util
7
+ # Helper class to construct catalogs, performing all necessary steps such as
8
+ # bootstrapping directories, installing facts, and running puppet.
9
+ class Util
10
+ # Utility Method!
11
+ # `is_a?(class)` only allows one method, but this uses an array
12
+ # @param object [?] Object to consider
13
+ # @param classes [Array] Classes to determine if object is a member of
14
+ # @return [Boolean] True if object is_a any of the classes, false otherwise
15
+ def self.object_is_any_of?(object, classes)
16
+ classes.each { |clazz| return true if object.is_a? clazz }
17
+ false
18
+ end
19
+
20
+ # Utility Method!
21
+ # `.dup` can't be called on certain objects (Fixnum for example). This
22
+ # method returns the original object if it can't be duplicated.
23
+ # @param object [?] Object to consider
24
+ # @return [?] Duplicated object if possible, otherwise the original object
25
+ def self.safe_dup(object)
26
+ object.dup
27
+ rescue TypeError
28
+ object
29
+ end
30
+
31
+ # Utility Method!
32
+ # This does a "deep" duplication via recursion. Handles hashes and arrays.
33
+ # @param object [?] Object to consider
34
+ # @return [?] Duplicated object
35
+ def self.deep_dup(object)
36
+ if object.is_a?(Hash)
37
+ result = {}
38
+ object.each { |k, v| result[k] = deep_dup(v) }
39
+ result
40
+ elsif object.is_a?(Array)
41
+ object.map { |ele| deep_dup(ele) }
42
+ else
43
+ safe_dup(object)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octocatalog-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub, Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-19 00:00:00.000000000 Z
12
+ date: 2017-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: diffy
@@ -366,6 +366,7 @@ files:
366
366
  - lib/octocatalog-diff/cli/options/quiet.rb
367
367
  - lib/octocatalog-diff/cli/options/retry_failed_catalog.rb
368
368
  - lib/octocatalog-diff/cli/options/safe_to_delete_cached_master_dir.rb
369
+ - lib/octocatalog-diff/cli/options/save_catalog.rb
369
370
  - lib/octocatalog-diff/cli/options/storeconfigs.rb
370
371
  - lib/octocatalog-diff/cli/options/suppress_absent_file_details.rb
371
372
  - lib/octocatalog-diff/cli/options/to_from_branch.rb
@@ -391,6 +392,7 @@ files:
391
392
  - lib/octocatalog-diff/util/parallel.rb
392
393
  - lib/octocatalog-diff/util/puppetversion.rb
393
394
  - lib/octocatalog-diff/util/scriptrunner.rb
395
+ - lib/octocatalog-diff/util/util.rb
394
396
  - lib/octocatalog-diff/version.rb
395
397
  - scripts/env/env.sh
396
398
  - scripts/git-extract/git-extract.sh